Tabla de contenido:
- Suministros
- Paso 1: Paso 1: Instalación del sistema operativo RPi, configuración de SSH y acceso a Internet
- Paso 2: Paso 2: Instalación del software en el RPi
- Paso 3: Paso 3: Conexión a la base de datos MySQL, creación de la base de datos
- Paso 4: Paso 4: Filezilla
- Paso 5: Paso 5: Creación del sitio web
- Paso 6: Paso 6: Creación del backend (frasco)
- Paso 7: Paso 7: Hardware
- Paso 8: Paso 8: Explicación del código
- Paso 9: Paso 9: Creación de un caso
- Paso 10: Pasos finales
Video: ColorPicker: 10 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:41
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.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
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
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
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
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
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:
Cómo hacer una antena 4G LTE Doble BiQuade Pasos sencillos: 3 pasos
Cómo hacer una antena 4G LTE Doble BiQuade Pasos sencillos: La mayoría de las veces que me enfrenté, no tengo una buena intensidad de señal para mis trabajos diarios. Entonces. Busco y pruebo diferentes tipos de antena pero no trabajo. Después de perder el tiempo, encontré una antena que espero hacer y probar, porque es un principio de construcción, no
Diseño de juegos en Flick en 5 pasos: 5 pasos
Diseño de juegos en Flick en 5 pasos: Flick es una forma realmente sencilla de hacer un juego, especialmente algo como un rompecabezas, una novela visual o un juego de aventuras
Detección facial en Raspberry Pi 4B en 3 pasos: 3 pasos
Detección de rostros en Raspberry Pi 4B en 3 pasos: En este Instructable vamos a realizar la detección de rostros en Raspberry Pi 4 con Shunya O / S usando la Biblioteca Shunyaface. Shunyaface es una biblioteca de reconocimiento / detección de rostros. El proyecto tiene como objetivo lograr la velocidad de detección y reconocimiento más rápida con
¿Cómo hacer un contador de pasos ?: 3 pasos (con imágenes)
¿Cómo hacer un contador de pasos ?: Solía desempeñarme bien en muchos deportes: caminar, correr, andar en bicicleta, jugar al bádminton, etc. Me encanta andar en bicicleta para viajar en poco tiempo. Bueno, mira mi corpulento vientre … Bueno, de todos modos, decido volver a hacer ejercicio. ¿Qué equipo debo preparar?
Espejo de tocador de bricolaje en sencillos pasos (usando tiras de luces LED): 4 pasos
Espejo de tocador de bricolaje en sencillos pasos (usando tiras de luces LED): En esta publicación, hice un espejo de tocador de bricolaje con la ayuda de las tiras de LED. Es realmente genial y debes probarlos también