Buenas tardes, hoy compartiré instrucciones sobre cómo hacer un reloj con un termómetro de habitación. El reloj funciona Arduino La pantalla gráfica UNO, WG12864B se utiliza para mostrar el tiempo y la temperatura. Como sensor de temperatura - ds18b20. A diferencia de la mayoría de los otros relojes, no usaré RTS (Reloj de tiempo real), pero intentaré prescindir de este módulo adicional.
Para esto hecho en casa Se requieren los siguientes componentes:
- Arduino UNO (o cualquier otra placa compatible con Arduino)
- Pantalla gráfica WG12864B
- sensor de temperatura ds18b20
- Resistencia 4.7 Kom 0.25 W
- Resistencia 100 ohm 0.25 W
- Compartimento para 4 pilas AA "tipo dedo"
- Caja adecuada
- archivo pequeño
- Esmalte de uñas (negro o color de cuerpo)
- Un poco de plástico delgado o cartón
- cinta aislante
- cables de conexión
- placa de circuito
- Botones
- soldador
- Soldadura, colofonia
- cinta de doble cara
Paso 1 Preparando el gabinete.
Por lo tanto, nuestros relojes deben ubicarse en algún lugar. Necesitas encontrar una caja adecuada. Lo principal es que la pantalla WG12864B, Arduino y una pequeña placa de circuito para botones caben en ella. El tamaño mínimo de la caja es de 7 x 7 x 10 cm. Si usa una placa Arduino pequeña, puede meterla en una caja y una más pequeña, pero describiré el proceso usando el Arduino UNO como ejemplo. El material del que está hecha la caja es preferiblemente plástico, si, como el mío, es de hierro, vale la pena cuidar el aislamiento para que no haya nada que "rodee" dentro. El plástico es preferible porque es más fácil de cortar. Con una caja, él es el caso de nuestros relojes, decidió. Ahora es necesario cortar una ventana debajo de la pantalla que mide 6.5x4 cm. Si la caja es de hierro, es extremadamente difícil hacerlo con cuidado. No importa cómo lo intentes, habrá pintura desconchada y aspereza cerca del corte. Por lo tanto, primero lo cortamos, para esto puede usar el "amoladora", un taladro con una boquilla para cortar o una fresa, en general, de su elección, con lo que tiene a mano. Después de eso, limpiamos los bordes con un archivo. Pintamos toda la pintura desconchada con esmalte de uñas, color adecuado. El resultado debería ser el siguiente:
Paso 2 Prepare la pantalla gráfica.
Con la conexión de la pantalla, a primera vista, surgen muchos problemas y dificultades. Pero si primero trata con sus tipos, será mucho más fácil y más comprensible. Existen muchas variaciones y tipos de pantallas en el controlador ks0107 / ks0108.Todas las pantallas generalmente se dividen 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
La lista no está completa, hay muchos de ellos. El más común y, en mi opinión, conveniente WG12864B3 V2.0. La pantalla se puede conectar al Arduino a través de un puerto serie o paralelo. Cuando se usa con Arduino UNO, es mejor elegir una conexión de puerto serie; luego, solo necesitamos 3 salidas del microcontrolador, en lugar de un mínimo de 13 líneas cuando se conecta a través de un puerto paralelo. Todo está conectado de manera bastante simple. Hay un matiz más, se pueden encontrar dos tipos de pantallas a la venta, con un potenciómetro incorporado (para ajustar el contraste) y sin él. He elegido, y te aconsejo que hagas lo mismo con el incorporado.
Esto reduce el número de piezas y el tiempo de soldadura. También vale la pena poner una resistencia limitadora de corriente de 100 ohmios para la luz de fondo. Al conectar 5 voltios directamente, existe el riesgo de quemar la luz de fondo.
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 la resistencia - + 5V
20 (BLK) - GND
Lo más conveniente es recoger todo lo que hay detrás de la pantalla y sacar 5 cables para conectarlo al Arduino UNO. El resultado debería ser algo como esto:
Para aquellos que aún eligen una conexión paralela, les daré una tabla de conexiones.
Y el diseño de las pantallas de la opción B:
Paso 3 Conecte el sensor de temperatura.
Como dije, usaremos el sensor integrado DS18B20 para medir la temperatura. Lo elegí por su alta precisión de medición, el error no es más de 0.5 ° C. El sensor está calibrado en el momento de la fabricación; no se requieren configuraciones adicionales. Rango de medición de temperatura -55 ... + 125 ° C. Hay dos modos de operación: con una fuente de alimentación externa y "potencia espuria". Cuando se opera en modo de alimentación externa, la conexión es la siguiente:
Cuando se usa "energía espuria", el sensor recibe energía de la línea de comunicación. En este modo, dos cables son suficientes para conectar el ds18b20 al microcontrolador. El condensador interno del sensor se carga debido a la energía en la línea de comunicación a un nivel bajo en el bus. El modo de "nutrición parasitaria" tiene muchas características y, por lo tanto, no recomiendo usarlo. Pero si aún decide usarlo, aquí está el diagrama:
O puede usar un diagrama de cableado mejorado cuando usa "potencia espuria":
Se pueden incluir varios sensores en una línea de comunicación. Para nuestros relojes uno es suficiente. Conectamos el cable del pin "DQ" ds18b20 al "pin 5" Arduino UNO.
Paso 4 Preparar un tablero con botones.
Para configurar la hora y la fecha en el reloj, utilizaremos tres botones. Para mayor comodidad, suelde los tres botones en la placa de circuito y cablee.
Nos conectamos de la siguiente manera: el cable común a los tres botones está conectado al Arduino "GND". El primer botón, sirve para ingresar al modo de configuración de la hora y cambiar la hora y la fecha, conectarse al "Pin 2". El segundo, el botón para aumentar el valor, es "Pin 3", y el tercero, el botón para disminuir el valor, es "Pin 4".
Paso 5 Poniendo todo junto.
Para evitar un cortocircuito, aísle la pantalla. En un círculo, lo envolvemos con cinta adhesiva y, en la parte posterior, lo sujetamos a una cinta de doble cara, cortada a medida, una tira de material aislante. El cartón grueso o el plástico delgado son adecuados. Usé plástico de una tableta de papel. Resultó lo siguiente:
En la parte frontal de la pantalla, a lo largo del borde, pegamos una cinta de doble cara a base de espuma, preferiblemente negra.
Conectamos la pantalla a Arduino:
Además, nos conectamos desde el compartimento de la batería al Arduino "VIN", menos al "GND". Lo colocamos detrás del Arduino. Antes de instalar en el estuche, no olvide conectar el sensor de temperatura y la placa con botones.
Paso 6 Prepare y complete el boceto.
Un sensor de temperatura necesita la biblioteca OneWire.
La salida a la pantalla es a través de la biblioteca U8glib:
Para editar y completar el boceto, instale estas dos bibliotecas. Hay dos formas de hacer esto. Simplemente descomprima estos archivos y coloque los archivos descomprimidos en la carpeta "bibliotecas" ubicada en la carpeta con el IDE Arduino instalado.O la segunda opción es instalar la biblioteca directamente en el entorno de programación. Sin desempaquetar los archivos descargados, en el IDE de Arduino, seleccione el menú Sketch - Connect Library. En la parte superior de la lista desplegable, seleccione el elemento "Agregar biblioteca .Zip". En el cuadro de diálogo que aparece, seleccione la biblioteca que desea agregar. Abra el menú Boceto - Conectar biblioteca nuevamente. Al final de la lista desplegable, debería ver una nueva biblioteca. Ahora la biblioteca se puede usar en programas. No olvide reiniciar el IDE de Arduino después de todo esto.
El sensor de temperatura funciona de acuerdo con el protocolo One Wire y tiene una dirección única para cada dispositivo: un código de 64 bits. Cada vez, buscar este código no es práctico. Por lo tanto, primero debe conectar el sensor al Arduino, complete el boceto ubicado en el menú Archivo - Ejemplos - Temperatura de Dallas - OneWireSearch. A continuación, ejecute Herramientas - Monitor de puerto. Arduino debe encontrar nuestro sensor, escribir su dirección y lecturas de temperatura actuales. Copiamos o simplemente escribimos la dirección de nuestro sensor. Abra el boceto Arduino_WG12864B_Term, busque la línea:
byte addr [8] = {0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97}; // dirección de mi sensor
Anotamos la dirección de su sensor entre llaves, reemplazando la dirección de mi sensor.
Stock:
//u8g.setPrintPos (44, 64); u8g.print (sek); // Imprime segundos para verificar la corrección del curso
Muestra segundos al lado de "Datos". Esto es necesario para establecer con precisión el curso del tiempo.
Si el reloj tiene prisa o está retrasado, debe cambiar el valor en la línea:
if (micros () - prevmicros> 494000) {// cambiar a otro para el ajuste fue 500,000
Determiné experimentalmente el número en el que el reloj funciona con bastante precisión. Si su reloj tiene prisa, debe aumentar este número; si estoy retrasado, disminuya. 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.