Buenas tardes sigo haciendo Arduino en su tiempo libre, y esta vez escribió instrucciones para la fabricación de una pequeña estación meteorológica. Actuará como un reloj con una fecha y mostrará temperaturas dentro y fuera de la habitación. Como controlador principal, usaremos Arduino UNO, pero otra placa con Atmega328p a bordo servirá. Para la visualización usamos la pantalla gráfica WG12864B. También conectamos dos sensores de temperatura ds18b20. Uno adentro, sacamos el segundo afuera. Empecemos
En el proceso de fabricación hecho en casa necesitaremos:
- Arduino UNO (o cualquier otra placa compatible con Arduino)
- Pantalla gráfica WG12864B
- Sensor de temperatura ds18b20, 2 piezas
- Fuente de alimentación 6 - 12 V
- Resistencias 4.7 Kom 0.25 W, 2 piezas
- Resistencias 100 ohmios 0.25 W
- Compartimento de la batería para 4 baterías AAA "pinky"
- Caja del cartucho de la consola SEGA
- cinta aislante
- cables de conexión
- placa de circuito
- Botones
- cuchillo de papelería
- soldador
- Soldadura, colofonia
- cinta de doble cara
Paso 1 Preparando WG12864B3.
Aquellos que no han trabajado con pantallas anteriormente pueden estar asustados por una gran cantidad de modificaciones, que parecen ser las mismas, de las pantallas. Te explicaré un poco. La mayoría de las pantallas de este tipo funcionan en chips ks0107 / ks0108. Todas las pantallas se pueden dividir en 4 tipos:
Opción A: HDM64GS12L-4, Crystalfontz CFAG12864B, Sparkfun LCD-00710CM, NKC Electronics LCD-0022, WinStar WG12864B-TML-T
Opción B: HDM64GS12L-5, Lumex LCM-S12864GSF, Futurlec BLUE128X64LCD, AZ Displays AGM1264F, Displaytech 64128A BC, Adafruit GLCD, DataVision DG12864-88, Topway LM12864LDW, Digitron SG1286464J8 1, QY, QY, QY, QY
Opción C: Shenzhen Jinghua Displays Co Ltd. Jm12864
Opción D: Wintek-Cascades WD-G1906G, Wintek-GEN / WD-G1906G / KS0108B, Wintek / WD-G1906G / S6B0108A, TECDIS / Y19061 / HD61202, Varitronix / MGLS19264 / HD61202
Se ven casi iguales. Pero tienen diferentes pines de conexión. Elegí, y te recomiendo, WG12864B3 V2.0, pero si la pantalla apareció de manera diferente, o simplemente no la tienes a mano, puedes resolverla fácilmente usando la tabla:
Breves características:
Hay muchos esquemas de conexión diferentes en Internet, y todo parece estar funcionando. La cuestión es que no solo hay pantallas diferentes, sino también dos formas de conectarlas: en serie y en paralelo. Cuando se utiliza una conexión de puerto serie, solo necesitamos 3 salidas del microcontrolador. Con un mínimo paralelo de 13. La elección en este caso es obvia, Arduino tiene pocas conclusiones. Para la conexión en paralelo, el diagrama de conexión es el siguiente:
Para una conexión en serie, que usaremos, el esquema es el siguiente:
WG12864B - Arduino UNO
1 (GND) - GND
2 (VCC) - + 5V
4 (RS) - 10
5 (R / W) - 11
6 (E) - 13
15 (PSB) - GND
19 (BLA) - a través de una resistencia de 100 Ohm - + 5V
20 (BLK) - GND
Para ajustar el contraste, debe haber un potenciómetro en la pantalla. Hay pantallas sin él, pero ahora es una rareza:
Se necesita una resistencia de 100 ohmios para que un voltaje de 5 voltios no queme accidentalmente los diodos de luz de fondo.
Paso 2 Hacer el caso.
Para el caso, tome la caja del prefijo del cartucho Sega. Si no encuentra este cuadro a mano, puede usar otro caso. Lo principal es que la pantalla y el Arduino encajan en ella.
Corta la película transparente en la parte superior de la caja para que no queden piezas:
Luego, con un cuchillo de oficina, corte una ventana de 37x69 para la pantalla.
En el reverso, a lo largo del borde del corte, pegamos una cinta de doble cara, preferiblemente negra:
Retire el papel protector de la cinta adhesiva y pegue nuestra pantalla sobre él:
Desde el exterior debería verse así:
Debajo de la pantalla, también en cinta de doble cara, sujetamos el Arduino, haciendo recortes preliminares para el puerto USB y la toma de corriente:
Los recortes para los enchufes Arduino deben hacerse en ambos lados de la caja para que pueda cerrarse libremente:
Paso 3 Sensores de temperatura.
Utilizaremos sensores digitales de temperatura DS18B20. Utilizándolos obtenemos una gran precisión de medición, el error no es más de 0.5 ° C, en un amplio rango de temperatura -55 ... + 125 ° C. Además, el sensor digital realiza todos los cálculos por sí mismo, y el Arduino simplemente recibe lecturas preparadas. Al conectar este sensor, no se olvide de la resistencia pull-up, 4.7 kΩ, entre los contactos DQ y VDD. Varias opciones de conexión también son posibles. Con alimentación externa, en mi opinión, la mejor opción, la usaremos:
Si lo desea, puede usar el modo de poder parasitario:
O una opción mejorada de alimentos parásitos:
Con cualquier fuente de alimentación, los sensores están conectados en paralelo:
Colocaremos el sensor de medición de temperatura en la placa pequeña junto con dos botones, que utilizaremos para configurar la hora y la fecha del reloj:
El cable común de ambos botones está conectado a GND, el cable del primer botón está conectado a A0, del segundo a A1.
Sujete a una cinta de doble cara al lado del Arduino:
El sensor, que se supone que debe colocarse fuera de la habitación, es mejor elegir en una carcasa metálica, a prueba de polvo y humedad:
Calcule el cable de la longitud requerida para que el sensor pueda colgarse fuera de la ventana, lo principal es que no debe tener más de 5 metros, si necesita más longitud, deberá reducir el valor de la resistencia pull-up.
El cable del bus de datos DQ de ambos sensores está conectado al pin 5 del Arduino.
Vdd - +5 Arduino.
GND - GND Arduino.
Paso 4 Poder.
Para la alimentación, puede usar una fuente de alimentación con un voltaje de 6 a 12 voltios. Al final del cable de encendido, suelde el enchufe adecuado para la toma de corriente Arduino:
O puede colocar un compartimento de batería para cuatro baterías "AAA", "meñique" en el estuche. Y conecte el cable positivo del compartimento al Vin Arduino, y el negativo a GND.
Paso 5 Preparar el entorno de programación.
Primero necesitas descargar e instalar Arduino IDE con sitio oficial
Y también agregue a las dos bibliotecas necesarias para el boceto. OneWire: necesario para la comunicación con sensores ds18b20:
U8glib: se usa para mostrar información en la pantalla:
Descargue la biblioteca. Luego desempaquetamos los archivos y trasladamos el contenido de los archivos a la carpeta "bibliotecas" ubicada en la carpeta con el IDE de Arduino instalado. También puede agregar bibliotecas a través del IDE de Arduino. Para hacer esto, sin descomprimir los archivos, ejecute el IDE de Arduino, seleccione Sketch - Connect Library en el menú Sketch. En la parte superior de la lista desplegable, seleccione el elemento "Agregar biblioteca .Zip". Indicamos la ubicación de los archivos descargados. Después de todos los pasos, debe reiniciar el IDE de Arduino.
Paso 6 Editar el boceto.
Los sensores de temperatura funcionan con el protocolo One Wire y tienen una dirección única para cada dispositivo: un código de 64 bits. No es aconsejable agregar comandos de búsqueda de sensores al boceto. No hay necesidad de cargar sensores de hipo Arduino cada vez.Por lo tanto, primero, juntando todo, completa el boceto en Arduino, ubicado en el menú Archivo - Ejemplos - Temperatura de Dallas - OneWireSearch. Luego ejecute Herramientas - Monitor de puerto. Arduino debería encontrar nuestros sensores, escribir las direcciones y las lecturas de temperatura. Estas direcciones deben escribirse o copiarse en alguna parte. Ahora abra el boceto Ard_Tic_Tak_WG12864B_2_x_Term_Serial y busque las líneas:
byte addr1 [8] = {0x28, 0xFF, 0x75, 0x4E, 0x87, 0x16, 0x5, 0x63}; // dirección interna
byte addr2 [8] = {0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97}; // dirección del sensor externo
Reemplazamos las direcciones correspondientes a la ubicación de los sensores con nuestras direcciones.
Nuestros relojes no usan el módulo RTC (reloj en tiempo real), por lo que debe ajustar el reloj. Para mayor comodidad, descomente la línea (aparecerán segundos en la pantalla):
//u8g.setPrintPos (44, 50); u8g.print (sek); // Imprime segundos para verificar la corrección
Establezca la hora correcta a través del monitor de puerto. Para hacer esto, abra el monitor de puerto, espere hasta que se completen las mediciones iniciales de temperatura e ingrese la fecha y hora actuales en el formato "día, mes, año, horas, minutos, segundos". Sin espacios, divida los números con comas o puntos.
Si el reloj tiene prisa, cambie el valor a uno más grande, le recomiendo experimentar con incrementos de 100 unidades. Si está retrasado, disminuya el valor en la línea:
if (micros () - prevmicros & gt; 494000) {// cambiar a otro para el ajuste fue 500,000
Determine empíricamente el número en el que el reloj funciona con bastante precisión. Para determinar la precisión del curso y necesita una conclusión segundos. Después de calibrar con precisión el número, los segundos se pueden comentar y eliminar de la pantalla.
Rellena el boceto.