Tabla de contenido:

ColorPicker: 10 pasos
ColorPicker: 10 pasos

Video: ColorPicker: 10 pasos

Video: ColorPicker: 10 pasos
Video: How to activate and use Color Picker in Windows 10 PowerToys 2024, Octubre
Anonim
Selector de color
Selector de color

El objetivo de este proyecto es medir colores y traducirlos a otros sistemas de color. Usando solo los valores RGB proporcionados por el sensor, puede traducir a HSL, CYMK, HEX y también al código RAL más cercano (estándar utilizado para pintura). Este proyecto requiere un conocimiento básico de Python, MySQL, Linux y Javascript.

Si también está familiarizado con el marco Flask y SocketIO, entonces el código para este proyecto debería ser fácil de entender para usted.

Este proyecto puede ser utilizado por pintores, diseñadores de interiores o simplemente por cualquier persona que necesite medir colores.

Este proyecto no es tan caro, y tiene un costo estimado de _ euros, envío no incluido.

Suministros

Podemos dividir esta sección en dos partes:

  • Hardware
  • Software

Hardware

Usamos los siguientes componentes

  • HC04: sensor de distancia, qué tan lejos estamos midiendo del objeto
  • Pantalla LCD 2x16
  • Módulo LCD I2C (HW061)
  • Módulo sensor de color TCS34725 (Adafruit)
  • LED blanco
  • Raspberry Pi 3 (cualquier Raspberry Pi debería funcionar)
  • Resistencia de 5x 1k Ohm
  • 1x resistencia de 220 o 330 ohmios
  • Tarjeta SD de 16 GB (14,4 GB)

Software

  • Python IDE, como Visual Code o Pycharm (aquí se usa Pycharm)
  • Banco de trabajo MySQL
  • Putty (Descargar Putty)
  • Rufus o cualquier otro escritor de tarjetas SD (Descargar Rufus)

Precios

Este proyecto es bastante barato, si ya tienes una Rapsberry Pi.

  • HC04: Desde alrededor de € 2,5 euros (China) y hasta € 6 para más tiendas locales.
  • LCD: Alrededor de 6-8 euros.
  • Módulo I2C: tan barato por menos de 1 € (China), pero hasta 4 € para más tiendas locales.
  • TCS34725: Alrededor de € 9-12 euros. Pieza más cara (excluyendo RPi)
  • LED blanco: comprado a granel, 20 LED por tan solo 1 €
  • Raspberry Pi: Según versión, alrededor de 40 euros
  • Resistencias: 0,10 € por una resistencia
  • Tarjeta SD: alrededor de 8 €

El adaptador de corriente para la Raspberry Pi está excluido en el costo del precio, ya que este adaptador es bastante común.

Rango de precio general: alrededor de 70 €, si incluyes la Raspberry Pi y la carcasa del proyecto.

Para construir el estuche, utilicé madera delgada y liviana. Reciclé esta madera de los muebles. El material para el caso depende de usted.

Paso 1: Paso 1: Instalación del sistema operativo RPi, configuración de SSH y acceso a Internet

Paso 1: instalación del sistema operativo RPi, configuración de SSH y acceso a Internet
Paso 1: instalación del sistema operativo RPi, configuración de SSH y acceso a Internet
Paso 1: instalación del sistema operativo RPi, configuración de SSH y acceso a Internet
Paso 1: instalación del sistema operativo RPi, configuración de SSH y acceso a Internet
Paso 1: instalación del sistema operativo RPi, configuración de SSH y acceso a Internet
Paso 1: instalación del sistema operativo RPi, configuración de SSH y acceso a Internet
Paso 1: instalación del sistema operativo RPi, configuración de SSH y acceso a Internet
Paso 1: instalación del sistema operativo RPi, configuración de SSH y acceso a Internet

Paso 1.1: Instalar la imagen

Descarga la imagen del sitio oficial de Raspberry Pi. Realmente no importa qué imagen instale. Para este proyecto, no se necesita una GUI, ya que solo nos conectaremos usando SSH.

Escriba la imagen en la tarjeta SD (vacía) (se borrarán todos los archivos de la tarjeta).

Para escribir todo en la tarjeta SD, usaremos una herramienta llamada 'Rufus'. Después de descargar la imagen, abra Rufus y seleccione el archivo de imagen. Seleccione la unidad de destino y escriba la imagen en la unidad. Esto puede tomar un tiempo.

> Rufus

Paso 1.2: Instalación de SSH

El siguiente paso es crear una conexión a la tarjeta SD. Para hacer eso, necesitamos habilitar SSH.

Para hacerlo sin usar un monitor, abra su explorador de archivos y abra la partición de arranque de la tarjeta SD. Cree un archivo vacío llamado "ssh", sin extensión de archivo.

Además, abra "cmdline.txt"

Agregue "169.254.10.1" al final del archivo y guárdelo.

Desmonta la tarjeta SD e insértala en la Raspberry Pi.

Ahora podemos conectar la Raspberry Pi a una fuente de alimentación y arrancar y conectar mediante SSH.

Para conectarse mediante SSH, utilizamos el programa "Putty". Conecte su RPi y su PC con un cable ehternet antes de hacerlo. Abra Putty y vaya a la pestaña SSH, y complete esta IP: 169.254.10.1. Haga clic en 'conectar' y estará conectado.

> Masilla

El inicio de sesión predeterminado utilizado por Raspberry Pi es 'pi' como nombre de usuario y 'raspberry' como contraseña.

Paso 1.3: conexión inalámbrica

Tu Raspberry Pi ahora está encendida.

También queremos conectarnos al RPi mediante Wifi, de esa forma ya no necesitamos un cable ethernet.

Ejecute la siguiente línea:

'sudo nano /etc/wpa_supplicant/wpa_supplicant.conf'

Esto abrirá el editor de texto 'nano' con derechos elevados.

Agregue las siguientes líneas en el archivo:

red = {

ssid = "SSID"

psk = "Contraseña"

}

Reemplaza "SSID" con el SSID de tu red Wifi

Reemplace "Contraseña" con su contraseña.

Luego haga Ctrl + X y seleccione la opción 'sí'. El archivo ahora se guardará.

Ahora necesitamos reiniciar el servicio de red.

Ejecute los siguientes comandos:

  • 'sudo -i'
  • 'sudo systemctl reiniciar la red'

Puede probar su conexión a Internet usando el comando wget.

Ejemplo: 'wget google.com'

> Comando Wget

Paso 2: Paso 2: Instalación del software en el RPi

Para este proyecto, necesitamos instalar algunas bibliotecas.

  • Mariadb: base de datos MySQL (sudo apt-get install mariadb-server)
  • Biblioteca Adafruit para el sensor de color: medición de colores (pip3 install adafruit-circuitpython-tcs34725)
  • PHPmyAdmin: ('sudo apt install phpmyadmin', elija el servidor web apache)

También instale las siguientes bibliotecas pip:

  • flask_socketio
  • matraz
  • flask_cors
  • tablero
  • busio
  • netifaces

Paso 3: Paso 3: Conexión a la base de datos MySQL, creación de la base de datos

Paso 3: Conexión a la base de datos MySQL, creación de la base de datos
Paso 3: Conexión a la base de datos MySQL, creación de la base de datos
Paso 3: Conexión a la base de datos MySQL, creación de la base de datos
Paso 3: Conexión a la base de datos MySQL, creación de la base de datos
Paso 3: Conexión a la base de datos MySQL, creación de la base de datos
Paso 3: Conexión a la base de datos MySQL, creación de la base de datos

El siguiente paso es conectarse a la base de datos MySQL utilizando el banco de trabajo MySQL.

> IP a

Ejecute el comando 'ip a', como se muestra en la imagen de arriba (haga clic en el enlace)

En la mayoría de situaciones, se mostrarán 3 entradas. Necesitamos la entrada 'wlan0'. Copie la IP junto a 'inet', o en este ejemplo '192.168.1.44'

. >> Crear nueva conexión

Como se muestra en la imagen de arriba, cree una nueva conexión con los siguientes parámetros (Imagen de abajo para parámetros)

> Parámetros de conexión

Haga doble clic en la conexión recién creada para conectarse.

Si aparece un mensaje, haga clic en "Sí".

Esta sigue siendo una base de datos vacía, así que agreguemos algunas tablas.

Primero cree un esquema, para hacerlo, en el lado izquierdo, haga clic con el botón derecho y elija "crear esquema".

Asigne un nombre al esquema y confirme.

Ahora necesitamos agregar tablas. Expanda el esquema y haga clic con el botón derecho en tablas.

Cree los siguientes esquemas:

> Tabla 1: Colores RAL

> Tabla 2: Tipos de sensores

> Tabla 3: Medidas (en la imagen, se usa 'metingen', holandés para medidas)

> Tabla 4: Website_data || Parte inferior de la tabla 4

MySQL es un sistema de base de datos relacional, eso significa que podemos crear relaciones entre las tablas.

La primera relación que tenemos que crear es entre 'tipo_sensor' y 'medidas'.

Como se muestra en la imagen, vincule las dos claves.

> Editar una tabla y claves de enlace

No olvide guardar los cambios haciendo clic en "Aplicar" en la esquina inferior.

También edite la tabla 'website_data' y el enlace 'MetingID'.

Ahora hemos terminado con la creación de las tablas y las relaciones.

Añadiendo datos:

La tabla RALcolors es una tabla fija, donde los valores nunca cambiarán. Podemos agregar estos valores

muy facilmente.

> Descargar archivo de Excel

Descargue el archivo de Excel anterior y seleccione todos los datos y 'copiar'. Haz como en la imagen

> Mostrar tabla

'haga clic derecho' en la tabla y elija 'Pegar filas'. 'haga clic en' aplicar 'en la esquina inferior para agregar los datos.

Ahora todos los colores RAL se guardan en la base de datos.

Solo necesitamos agregar el sensor_type a la base de datos ahora.

> Datos de tipo sensor

Nota: la descripción del sensor está en 'holandés'

Paso 4: Paso 4: Filezilla

Paso 4: Filezilla
Paso 4: Filezilla

Para conectarnos fácilmente a la Raspberry Pi y transferir archivos, podemos usar Filezilla.

> Descargar Filezilla

Ingrese los detalles de la conexión y conéctese. En el lado derecho, ahora puede transferir archivos arrastrándolos.

> Fuente de Github

Descargue los archivos de la fuente de github anterior.

Paso 5: Paso 5: Creación del sitio web

Paso 5: creación del sitio web
Paso 5: creación del sitio web
Paso 5: creación del sitio web
Paso 5: creación del sitio web

Para el alojamiento del sitio web, utilizamos PHPmyAdmin y Apache2.

El servidor web de la Raspberry Pi utiliza el directorio '/ var / www / html' como raíz.

Si coloca sus archivos allí, se alojarán en la IP de la Raspberry Pi. (IP = ver 'ip a')

Puede descargar los archivos necesarios de mi repositorio de github (paso anterior)

En '/ var / www / html /', pegue todos los archivos de la carpeta 'Frontend'.

> / var / www / html /

Paso 6: Paso 6: Creación del backend (frasco)

El backend del sitio web se basa en Flask.

Todos los archivos se pueden encontrar en el repositorio de github.

Copie todos los archivos en cualquier directorio de la Raspberry Pi.

Por ejemplo, '/ home / pi / colorpicker.

Para crear un directorio, navegue hasta el directorio de destino usando 'cd' y luego ejecute 'mkdir'.

Eso es todo por ahora. El código se explicará en los siguientes pasos.

Paso 7: Paso 7: Hardware

> Descargar esquema

Cree el esquema como se muestra en el documento anterior.

NOTA: También agregue un LED blanco, con una resistencia (220 o 330 ohmios).

Explicando el hardware

HC04

El sensor HC04 emite ondas, que se reflejan y son recibidas nuevamente por el sensor.

Calculando el delta de tiempo entre la emisión y la recepción, podemos calcular la distancia.

Distancia = ((Timestamp_recieve - Timestamp_emit) / velocidad del sonido) / 2

Dividimos por dos porque la onda se refleja, lo que significa que recorre la distancia dos veces.

LCD

Usamos una pantalla LCD para mostrar el RGB y HEX, así como la IP cuando se inicia el programa.

Para esta pantalla LCD, compré un módulo I2C. Ahora solo necesitamos 4 cables. SDA, SCL, GND, VCC

Para usar esta pantalla LCD, escribí una clase de Python, para que sea más fácil de usar.

TCS34725

Este sensor le permite medir colores. Usamos una biblioteca para medir el valor RGB.

Paso 8: Paso 8: Explicación del código

Paso 8: Explicación del código
Paso 8: Explicación del código
Paso 8: Explicación del código
Paso 8: Explicación del código
Paso 8: Explicación del código
Paso 8: Explicación del código
Paso 8: Explicación del código
Paso 8: Explicación del código

La interfaz

La interfaz existe en tres partes principales.

Primero están los archivos html, que construyen la estructura de nuestro sitio web, pero no contienen un diseño mínimo.

En segundo lugar, tenemos los archivos css, o archivos de estilo, que diseñan y diseñan nuestro sitio web.

Los dos son bastante fáciles de leer y comprender, por lo que no los explicaré.

Por último tenemos Javascript, con dos bibliotecas.

Las dos bibliotecas utilizadas son SocketIO y URLSearchParams.

SocketIO le permite enviar mensajes desde el backend al frontend y viceversa.

Los mensajes se pueden enviar a un cliente, pero también a varios clientes (difusión)

> Socket IO Javascript

> Socket IO Python

En las imágenes de arriba, puede ver una de las conexiones de Socket realizadas en este proyecto.

El comando para enviar mensajes es 'emitir', la recepción se realiza mediante 'on'.

URLSearchParms le permite obtener valores de una cadena de consulta fácilmente.

Ejemplo de cadena de consulta: example.com/index.html?id=1

URLSearchParams le devolverá: {'id' = '1'}

> Ejemplo de URLSearchParams

El backend

El backend está completamente escrito en Python, con un montón de bibliotecas.

La primera biblioteca que importamos es 'Flask'. Esta biblioteca es necesaria para crear una API, para realizar todas las acciones CRUD para la base de datos MySQL. CRUD son las siglas de Create Read Update Delete.

> Matraz

La imagen de arriba muestra algunas 'rutas' de Flask. Al navegar a una ruta, automáticamente hará un método 'GET', el código se ejecutará y recibirá el valor del método de retorno. También hay otros métodos, como 'POST' y 'DELETE'. Para probar estos métodos, necesitará un programa como Postman.

La siguiente biblioteca de importación es SocketIO, que ya expliqué en la sección de interfaz.

El siguiente es GPIO.

Esto le permite controlar los pines GPIO de Rapsberry Pi.

Los comandos más importantes son:

  • GPIO.setmode (GPIO. BCM) Elija la configuración de los pines.
  • GPIO.output (, GPIO. LOW o GPIO. HIGH) Escribe un LOW o HIGH en un pin.
  • GPIO.setup (,) Define un PIN como entrada o salida, o pulldown o pullup

A continuación tenemos enhebrado.

Los únicos comandos que usamos son:

  • Hilo (objetivo =)
  • .comienzo()

Usando subprocesos, podemos ejecutar múltiples instancias de código al mismo tiempo. De esta manera podemos medir la distancia y, al mismo tiempo, escuchar los mensajes entrantes del socket io.

El primer comando Thread (target =) creará una clase Thread, que al comenzar a usar 'start ()', ejecutará la función en la palabra clave 'target', que se proporcionó al crear la clase.

A continuación, tenemos la biblioteca del sensor de color, que es bastante sencilla. No explicaré esta biblioteca, porque los métodos son muy claros y se explican en el código.

Por último tenemos netifaces. Esto nos permite recuperar la dirección IP que usamos para la conexión inalámbrica y por cable.

Por último hice algunas clases yo mismo para el sensor de distancia, el LED y el LCD.

No explicaré cómo funcionan.

Paso 9: Paso 9: Creación de un caso

Paso 9: creación de un caso
Paso 9: creación de un caso
Paso 9: creación de un caso
Paso 9: creación de un caso
Paso 9: creación de un caso
Paso 9: creación de un caso

Para este proyecto, creé una caja de madera.

La madera es ligera, fina y no cuesta mucho.

Como dimensiones utilicé:

  • Altura: 5 cm
  • Ancho: 10,5 cm
  • Largo: 12.5cm

Para los sensores, debe agregar 2 orificios y colocarlos uno al lado del otro.

Después de crear la carcasa, instale los sensores, LED y LCD.

Paso 10: Pasos finales

Todo está hecho básicamente.

Ahora solo tenemos que asegurarnos de que nuestro código se inicie, en el momento en que conectamos nuestra fuente de alimentación.

Hay muchos métodos para hacer esto.

> Ejemplos

Usaremos el primer método:

Ejecute esta línea: 'sudo nano /etc/rc.local'

Agregue su comando para ejecutar el código: 'sudo python3'

Guarde el archivo usando Ctrl-X.

Si tiene problemas para editar. Vuelva a hacer este paso, pero primero ejecute 'sudo -i'.

Recomendado: