Taula de continguts:

Mini estació meteorològica amb Attiny85: 6 passos (amb imatges)
Mini estació meteorològica amb Attiny85: 6 passos (amb imatges)

Vídeo: Mini estació meteorològica amb Attiny85: 6 passos (amb imatges)

Vídeo: Mini estació meteorològica amb Attiny85: 6 passos (amb imatges)
Vídeo: Обзор домашняя метеостанция с выносным беспроводным датчиком 2024, Juliol
Anonim
Mini estació meteorològica amb Attiny85
Mini estació meteorològica amb Attiny85
Mini estació meteorològica amb Attiny85
Mini estació meteorològica amb Attiny85
Mini estació meteorològica amb Attiny85
Mini estació meteorològica amb Attiny85

En una instrucció recent, Indigod0g va descriure una mini estació meteorològica que funciona força bé, mitjançant dos Arduinos. Potser no tothom vol sacrificar 2 Arduinos per obtenir lectures d’humitat i temperatura i vaig comentar que hauria de ser possible fer una funció similar amb dos Attiny85. Suposo que parlar és fàcil, així que és millor que posi els meus diners allà on tinc la boca.

De fet, si combino dues instruccions anteriors, vaig escriure:

Interfície LCD de 2 cables per a Arduino o Attiny i Rebre i enviar dades entre Attiny85 (Arduino IDE 1.06), la major part del treball ja està realitzada. Només cal adaptar una mica el programari.

Vaig escollir una solució LCD de dos fils amb un registre de desplaçament, en lloc d'una pantalla LCD I2C, ja que a l'Attiny el registre de desplaçament és més fàcil d'implementar que el bus I2C. Tanmateix … si, per exemple, voleu llegir un sensor de pressió BMP180 o BMP085, necessiteu I2C per a això, de manera que també podeu utilitzar una pantalla LCD I2C. TinyWireM és una bona biblioteca per a I2C en un Attiny (però requereix espai addicional).

BOM El transmissor: mòdul transmissor de resistència 10 k DHT11 Attiny85 de 433 MHz

El mòdul receptor Receptor Attiny85 10k de resistència de 433 MHz

La pantalla 74LS164 registre de desplaçament 1N4148 díode 2x1k resistència 1x1k resistència variable una pantalla LCD 2x16

Pas 1: Mini estació meteorològica amb Attiny85: el transmissor

Mini estació meteorològica amb Attiny85: el transmissor
Mini estació meteorològica amb Attiny85: el transmissor
Mini estació meteorològica amb Attiny85: el transmissor
Mini estació meteorològica amb Attiny85: el transmissor
Mini estació meteorològica amb Attiny85: el transmissor
Mini estació meteorològica amb Attiny85: el transmissor
Mini estació meteorològica amb Attiny85: el transmissor
Mini estació meteorològica amb Attiny85: el transmissor

El transmissor és una configuració bàsica de l’Attiny85 amb una resistència de tracció cap amunt a la línia de restabliment. Un mòdul transmissor està connectat al pin digital '0' i el pin de dades DHT11 al pin digital 4. Connecteu un cable de 17,2 cm com a antena. (Per obtenir una antena molt millor, consulteu el pas 5). El programari és el següent:

// funcionarà a Attiny // RF433 = D0 pin 5

// DHT11 = D4 pin 3 // libraries #include // De Rob Tillaart #include dht DHT11; #define DHT11PIN 4 #define TX_PIN 0 // pin on està connectat el vostre transmissor // variables flotants h = 0; flotador t = 0; int transmiti_t = 0; int transmiti_h = 0; int transmeteu_dades = 0; void setup () {pinMode (1, INPUT); man.setupTransmit (TX_PIN, MAN_1200); } bucle buit () {int chk = DHT11.read11 (DHT11PIN); h = DHT11.humitat; t = temperatura DHT11; // Ja ho sé, estic fent servir 3 variables senceres aquí // on podria utilitzar 1 // però això és així perquè sigui més fàcil seguir transmit_h = 100 * (int) h; transmetre_t = (int) t; transmeteu_dades = transmeteu_h + transmeteu_t; man.transmit (transmiti_dades); retard (500); }

El programari utilitza el codi Manchester per enviar les dades. Llegeix el DHT11 i emmagatzema la temperatura i la humitat en 2 flotadors separats. Com que el codi de Manchester no envia flotants, sinó un enter, tinc diverses opcions: 1- divideix els flotadors en dos enters cadascun i envia els 2- envia cada flotador com a enter3- envia els dos flotants com un enter Amb l’opció 1 he de combinar els enters a flota de nou al receptor i he d’identificar quin enter és què, fent que el codi sigui llarg amb l’opció 2, encara necessito identificar quin enter és humà i quin temperatura. No puc anar només per seqüència en cas que es perdi un enter en la transmissió, de manera que hauria d’enviar un identificador adjunt a l’enter. Amb l’opció 3, només puc enviar un enter. Obbviament, això fa que les lectures siguin una mica menys precises (dins d’un grau) i no es poden enviar temperatures per sota de zero, però només és un codi senzill i hi ha maneres d’aconseguir-ho. Ara per ara es tracta només del principi. Així que el que faig és convertir els flotadors en enters i multiplique la humitat per 100. Després afegeixo la temperatura a la humitat multiplicada. Donat que la humitat mai serà del 100% el nombre màxim que obtindré és de 9900. Tenint en compte que la temperatura tampoc no superarà els 100 graus, el nombre màxim serà de 99, per tant, el nombre més alt que enviaré és el 9999 i és fàcil separar-lo al costat del receptor. el meu càlcul en què faig servir 3 enters és excessiu, ja que es podria fer fàcilment amb una variable. Només volia fer el codi més fàcil de seguir. El codi ara es compila com:

Mida d'esbós binari: 2, 836 bytes (d'un màxim de 8, 192 bytes) de manera que encaixi en un Attiny 45 o 85 NOTA que la biblioteca dht.h que faig servir és la de Rob Tillaart. Aquesta biblioteca també és adequada per a un DHT22. Estic fent servir la versió 1.08. Tanmateix, Attiny85 pot tenir problemes per llegir un DHT22 amb versions inferiors de la biblioteca. M’han confirmat que l’1.08 i l’1.14, tot i que treballen en un Arduino normal, tenen problemes per llegir un DHT22 a l’Attiny85. Si voleu utilitzar un DHT22 a l’Attiny85, utilitzeu la versió 1.20 d’aquesta biblioteca. Tot té a veure amb el temps. La versió 1.20 de la biblioteca té una lectura més ràpida. (Gràcies per aquesta experiència d'usuari Jeroen)

Pas 2: Mini estació meteorològica amb Attiny85: el receptor

Mini estació meteorològica amb Attiny85: el receptor
Mini estació meteorològica amb Attiny85: el receptor

Una vegada més, l'Attiny85 s'utilitza en una configuració bàsica amb el pin Reset tirat amb una resistència de 10 k. El mòdul receptor està connectat al pin digital 1 (pin 6 del xip). La pantalla LCD es connecta als pins digitals 0 i 2. Connecteu un cable de 17,2 cm com a antena. El codi és el següent:

#incloure

#include LiquidCrystal_SR lcd (0, 2, TWO_WIRE); #define RX_PIN 1 // = pin físic 6 void setup () {lcd.begin (16, 2); lcd.home (); man.setupReceive (RX_PIN, MAN_1200); man.beginReceive (); } void loop () {if (man.receiveComplete ()) {uint16_t m = man.getMessage (); home.beginReceive (); lcd.print ("Humit:"); impressió lcd (m / 100); lcd.setCursor (0, 1); lcd.print ("Temp"); lcd.print (m% 100); }}

El codi és bastant senzill: l’enter transmès es rep i s’emmagatzema en la variable «m’. Es divideix per 100 per donar la humitat i el mòdul de 100 dóna la temperatura. Per tant, suposem que l’enter rebut va ser 33253325/100 = 333325% 100 = 25 Aquest codi es compila com a 3380 bytes i, per tant, només es pot utilitzar amb un attiny85, no amb un 45

Pas 3: Mini estació meteorològica amb Attiny85 / 45: la pantalla

Mini estació meteorològica amb Attiny85 / 45: la pantalla
Mini estació meteorològica amb Attiny85 / 45: la pantalla
Mini estació meteorològica amb Attiny85 / 45: la pantalla
Mini estació meteorològica amb Attiny85 / 45: la pantalla

Per a la pantalla, és millor fer referència a la meva instrucció en una pantalla de dos fils. En resum, una pantalla comuna de 16x2 utilitza un registre de comandaments perquè pugui funcionar amb dos pins digitals. també és possible, però cal implementar un protocol I2C a Attiny. El protocol Tinywire ho pot fer. Tot i que algunes fonts diuen que això espera un rellotge d'1 MHz, no he tingut cap problema (en un altre projecte) per utilitzar-lo a 8MhzAnyway, no m'he molestat aquí i he utilitzat un registre de torns.

Pas 4: mini estació meteorològica amb Attiny85 / 45: possibilitats / conclusions

Mini estació meteorològica amb Attiny85 / 45: possibilitats / conclusions
Mini estació meteorològica amb Attiny85 / 45: possibilitats / conclusions
Mini estació meteorològica amb Attiny85 / 45: possibilitats / conclusions
Mini estació meteorològica amb Attiny85 / 45: possibilitats / conclusions
Mini estació meteorològica amb Attiny85 / 45: possibilitats / conclusions
Mini estació meteorològica amb Attiny85 / 45: possibilitats / conclusions

Com he dit, ho vaig fer instructiu per demostrar que es pot fer una mini estació meteorològica amb dos attiny85 (fins i tot amb un attiny85 + 1 attiny45). Només envia humitat i temperatura mitjançant un DHT11. Tot i això, l’Attiny té 5 pins digitals per utilitzar, 6 fins i tot amb algun engany. Per tant, és possible enviar dades de més sensors. En el meu projecte, tal com es veu a les imatges del tauler de fusta i en un PCB professional (OSHPark), envio / rebo dades d’un DHT11, d’un LDR i d’un PIR, tot utilitzant dos attiny85 La limitació en utilitzar un attiny85 com a receptor és la presentació de les dades en un estil cridaner. Com que la memòria és limitada: textos com ara "Temperatura, humitat, nivell de llum, aproximació del tema" ompliran un espai de memòria força ràpid. No obstant això, no hi ha cap raó per utilitzar dos Arduino només per enviar / rebre temperatura i humitat. per fer dormir l’emissor i fer-lo despertar per enviar dades, digueu-ho cada 10 minuts i, per tant, alimentar-lo des d’una cel·la de botó. viouslybviament, no només es poden enviar dades de temperatura o humitat, sinó que es pot enviar una sèrie de transmissors petits. lectures d'humitat del sòl també, o afegiu un anemòmetre o un mesurador de pluja

Pas 5: Mini estació meteorològica: l'antena

Mini Estació Meteorològica: l'Antena
Mini Estació Meteorològica: l'Antena

L'antena és una part important de qualsevol configuració de 433 MHz. He experimentat amb l'antena estàndard de "barra" de 17,2 cm i tenia un flirteig curt amb una antena de bobina. El que semblava que funcionava millor és una antena carregada de bobina que és fàcil de fabricar. El disseny és de Ben Schueler i aparentment es va publicar a la revista 'Elektor'. És fàcil de seguir un PDF amb la descripció d'aquesta "antena refrigerada per aire de 433 MHz". (Enllaç desaparegut, comproveu aquí)

Pas 6: afegir un BMP180

Afegir un BMP180
Afegir un BMP180

Voleu afegir un sensor de pressió baromètrica com el BMP180? comprovar el meu altre instructable sobre això.

Recomanat: