Tabla de contenido:

Mini estación meteorológica con Attiny85: 6 pasos (con imágenes)
Mini estación meteorológica con Attiny85: 6 pasos (con imágenes)

Video: Mini estación meteorológica con Attiny85: 6 pasos (con imágenes)

Video: Mini estación meteorológica con Attiny85: 6 pasos (con imágenes)
Video: Construimos Un SMARTWATCH (Nada Fácil) 2024, Noviembre
Anonim
Mini estación meteorológica con Attiny85
Mini estación meteorológica con Attiny85
Mini estación meteorológica con Attiny85
Mini estación meteorológica con Attiny85
Mini estación meteorológica con Attiny85
Mini estación meteorológica con Attiny85

En un reciente instructable, Indigod0g describió una mini estación meteorológica que funciona bastante bien, usando dos Arduinos. Tal vez no todos quieran sacrificar 2 Arduinos para obtener lecturas de humedad y temperatura y comenté que debería ser posible hacer una función similar con dos Attiny85. Supongo que hablar es fácil, así que mejor pongo mi dinero donde está mi boca.

De hecho, si combino dos instructables anteriores, escribí:

Interfaz LCD de 2 cables para Arduino o Attiny y recepción y envío de datos entre Attiny85 (Arduino IDE 1.06) y la mayor parte del trabajo ya está hecho. Solo es necesario adaptar un poco el software.

Elegí una solución lcd de dos cables con un registro de desplazamiento, en lugar de un LCD I2C porque en el Attiny el registro de desplazamiento es más fácil de implementar que el bus I2C. Sin embargo … si, por ejemplo, desea leer un sensor de presión BMP180 o BMP085, necesita I2C para eso de todos modos, por lo que también podría usar una pantalla LCD I2C. TinyWireM es una buena biblioteca para I2C en un Attiny (pero requiere espacio adicional).

BOM El transmisor: DHT11 Attiny85 Módulo transmisor de 433 MHz con resistencia de 10 k

El receptor Attiny85 10k resistor 433 MHz módulo receptor

La pantalla 74LS164 registro de desplazamiento 1N4148 diodo 2x1k resistencia 1x1k resistencia variable una pantalla LCD 2x16

Paso 1: Mini estación meteorológica con Attiny85: el transmisor

Mini estación meteorológica con Attiny85: el transmisor
Mini estación meteorológica con Attiny85: el transmisor
Mini estación meteorológica con Attiny85: el transmisor
Mini estación meteorológica con Attiny85: el transmisor
Mini estación meteorológica con Attiny85: el transmisor
Mini estación meteorológica con Attiny85: el transmisor
Mini estación meteorológica con Attiny85: el transmisor
Mini estación meteorológica con Attiny85: el transmisor

El transmisor es una configuración muy básica del Attiny85 con una resistencia pull up en la línea de reinicio. Un módulo transmisor está conectado al pin digital '0' y el pin de datos DHT11 se conecta al pin digital 4. Conecte un cable de 17.2 cm como antena (para obtener una antena mucho mejor, consulte el paso 5). El software es el siguiente:

// funcionará en Attiny // RF433 = D0 pin 5

// DHT11 = D4 pin 3 // bibliotecas #include // De Rob Tillaart #include dht DHT11; #define DHT11PIN 4 #define TX_PIN 0 // pin donde está conectado su transmisor // variables float h = 0; flotar t = 0; int transmit_t = 0; int transmit_h = 0; int transmit_data = 0; configuración vacía () {pinMode (1, ENTRADA); man.setupTransmit (TX_PIN, MAN_1200); } bucle vacío () {int chk = DHT11.read11 (DHT11PIN); h = DHT11.humedad; t = DHT11.temperatura; // Lo sé, estoy usando 3 variables enteras aquí // donde podría usar 1 // pero eso es solo para que sea más fácil seguir transmit_h = 100 * (int) h; transmitir_t = (int) t; transmitir_datos = transmitir_h + transmitir_t; man.transmit (transmitir_datos); retraso (500); }

El software utiliza el código Manchester para enviar los datos. Lee el DHT11 y almacena la temperatura y la humedad en 2 flotadores separados. Como el código de Manchester no envía flotantes, sino un número entero, tengo varias opciones: 1- dividir los flotantes en dos enteros cada uno y enviarlos 2- enviar cada flotante como un entero 3- enviar los dos flotantes como un entero Con la opción 1 necesito combinar los enteros en flotadores nuevamente en el receptor y tengo que identificar qué entero es qué, haciendo que el código sea largo. Con la opción 2 todavía necesito identificar qué entero es para la humedad y cuál para la temperatura. No puedo ir solo por secuencia en caso de que un número entero se pierda en la transmisión, por lo que necesitaría enviar un identificador adjunto al número entero. Con la opción 3, puedo enviar solo un número entero. Obviamente, esto hace que las lecturas sean un poco menos precisas, dentro de 1 grado, y no se pueden enviar temperaturas bajo cero, pero es solo un código simple y hay formas de evitarlo. Por ahora se trata solo del principio, así que lo que hago es convertir los flotadores en números enteros y multiplicar la humedad por 100, luego sumo la temperatura a la humedad multiplicada, dado que la humedad nunca será del 100% la El número máximo que obtendré es 9900. Dado que la temperatura tampoco estará por encima de los 100 grados, el número máximo será 99, por lo tanto, el número más alto que enviaré es 9999 y es fácil de separar en el lado del receptor. mi cálculo en el que utilizo 3 enteros es excesivo, ya que podría hacerse fácilmente con 1 variable. Solo quería que el código sea más fácil de seguir. El código ahora se compila como:

Tamaño del boceto binario: 2, 836 bytes (de un máximo de 8, 192 bytes) para que quepa en un Attiny 45 o 85 NOTA: la biblioteca dht.h que uso es la de Rob Tillaart. Esa biblioteca también es adecuada para DHT22. Estoy usando la versión 1.08. Sin embargo, el Attiny85 puede tener problemas para leer un DHT22 con versiones inferiores de la biblioteca. Se me ha confirmado que el 1.08 y el 1.14, aunque funcionan en un Arduino normal, tienen problemas para leer un DHT22 en el Attiny85. Si desea utilizar un DHT22 en el Attiny85, utilice la versión 1.20 de esta biblioteca. Todo tiene que ver con la sincronización. La versión 1.20 de la biblioteca tiene una lectura más rápida. (Gracias por esa experiencia de usuario Jeroen)

Paso 2: Mini estación meteorológica con Attiny85: el receptor

Mini estación meteorológica con Attiny85: el receptor
Mini estación meteorológica con Attiny85: el receptor

Nuevamente, el Attiny85 se usa en una configuración básica con el pin de reinicio en alto con una resistencia de 10 k. El módulo receptor está conectado al pin digital 1 (pin 6 en el chip). La pantalla LCD está conectada a los pines digitales 0 y dos. Conecte un cable de 17,2 cm como antena. El código es el siguiente:

#incluir

#include LiquidCrystal_SR lcd (0, 2, TWO_WIRE); #define RX_PIN 1 // = configuración vacía del pin 6 físico () {lcd.begin (16, 2); casa lcd (); man.setupReceive (RX_PIN, MAN_1200); man.beginReceive (); } bucle vacío () {if (man.receiveComplete ()) {uint16_t m = man.getMessage (); man.beginReceive (); lcd.print ("Húmedo:"); impresión lcd (m / 100); lcd.setCursor (0, 1); lcd.print ("Temp"); impresión lcd (m% 100); }}

El código es bastante simple: el número entero transmitido se recibe y almacena en la variable 'm', se divide por 100 para dar la humedad y el módulo de 100 da la temperatura, así que suponga que el número entero recibido fue 33253325/100 = 333325% 100 = 25 Este código se compila como 3380 bytes y, por lo tanto, solo se puede usar con un attiny85, no con un 45

Paso 3: Mini estación meteorológica con Attiny85 / 45: la pantalla

Mini estación meteorológica con Attiny85 / 45: la pantalla
Mini estación meteorológica con Attiny85 / 45: la pantalla
Mini estación meteorológica con Attiny85 / 45: la pantalla
Mini estación meteorológica con Attiny85 / 45: la pantalla

Para la pantalla es mejor que me refiera a mi instructable en una pantalla de dos cables. En resumen, una pantalla común de 16x2 usa un registro de cambios para que pueda operar con dos pines digitales. Por supuesto, si prefiere usar una pantalla lista para I2C, eso es también es posible, pero luego debe implementar un protocolo I2C en el Attiny. El protocolo Tinywire puede hacer eso. Aunque algunas fuentes dicen que eso espera un reloj de 1 Mhz, no tuve ningún problema (en otro proyecto) para usarlo en 8Mhz. De todos modos, no me molesté aquí y usé un registro de desplazamiento.

Paso 4: Mini estación meteorológica con Attiny85 / 45: Posibilidades / Conclusiones

Mini estación meteorológica con Attiny85 / 45: Posibilidades / Conclusiones
Mini estación meteorológica con Attiny85 / 45: Posibilidades / Conclusiones
Mini estación meteorológica con Attiny85 / 45: Posibilidades / Conclusiones
Mini estación meteorológica con Attiny85 / 45: Posibilidades / Conclusiones
Mini estación meteorológica con Attiny85 / 45: Posibilidades / Conclusiones
Mini estación meteorológica con Attiny85 / 45: Posibilidades / Conclusiones

Como dije, hice este instructable para mostrar que uno puede hacer una mini estación meteorológica con dos attiny85 (incluso con un attiny85 + 1 attiny45). Solo envía humedad y temperatura, usando un DHT11. Sin embargo, el Attiny tiene 5 pines digitales para usar., 6 incluso con algunos trucos. Por lo tanto, es posible enviar datos desde más sensores. En mi proyecto, como se ve en las fotos en stripboard y en un PCB profesional (OSHPark), envío / recibo datos desde un DHT11, desde un LDR y desde un PIR, todos usando dos attiny85's La limitación en el uso de un attiny85 como receptor es la presentación de los datos en un estilo llamativo. Como la memoria es limitada: Textos como 'Temperatura, Humedad, nivel de luz, sujeto acercándose' llenarán un valioso espacio de memoria bastante rápido Sin embargo, no hay razón para usar dos Arduino solo para enviar / recibir temperatura y humedad. Además, es posible hacer que el transmisor se duerma y solo se despierte para enviar datos, digamos cada 10 minutos y así alimentarlo desde una celda de botón. Obviamente, no solo se pueden enviar datos de temperatura o humedad, sino que se puede tener una matriz de pequeños transmisores enviando también lecturas de humedad del suelo, o agregue un anemómetro o un medidor de lluvia

Paso 5: Mini estación meteorológica: la antena

Mini estación meteorológica: la antena
Mini estación meteorológica: la antena

La antena es una parte importante de cualquier configuración de 433Mhz. He experimentado con la antena estándar de `` varilla '' de 17,2 cm y he tenido un breve coqueteo con una antena de bobina, lo que pareció funcionar mejor es una antena cargada en bobina que es fácil de hacer. El diseño es de Ben Schueler y aparentemente fue publicado en la revista 'Elektor'. Un PDF con la descripción de esta 'Antena de 433 MHz refrigerada por aire' es fácil de seguir. (El enlace desapareció, mira aquí)

Paso 6: Agregar un BMP180

Agregar un BMP180
Agregar un BMP180

¿Quiere agregar un sensor de presión barométrica como el BMP180? revisa mi otro instructable sobre eso.

Recomendado: