INHOUDSOPGAWE:
- Stap 1: Mini -weerstasie met Attiny85: die sender
- Stap 2: Mini -weerstasie met Attiny85: die ontvanger
- Stap 3: Mini -weerstasie met Attiny85/45: die skerm
- Stap 4: Mini -weerstasie met Attiny85/45: moontlikhede/gevolgtrekkings
- Stap 5: Mini Weerstasie: die antenna
- Stap 6: Voeg 'n BMP180 by
Video: Mini weerstasie met Attiny85: 6 stappe (met foto's)
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:25
In 'n onlangse instruksies het Indigod0g 'n mini -weerstasie beskryf wat redelik goed werk met twee Arduino's. Miskien wil nie almal 2 Arduino's opoffer om humiditeit en temperatuurmetings te kry nie, en ek het opgemerk dat dit moontlik sou wees om 'n soortgelyke funksie met twee Attiny85's te doen. Ek dink praat is maklik, so ek moet my geld beter sit waar my mond is.
Trouens, as ek twee vorige instruksies kombineer, het ek geskryf:
2-draads LCD-koppelvlak vir Arduino of Attiny en data ontvang en stuur tussen Attiny85 (Arduino IDE 1.06), dan is die meeste werk reeds gedoen. U hoef slegs die sagteware 'n bietjie aan te pas.
Ek het gekies vir 'n tweedraad -lcd -oplossing met 'n skofregister, eerder as 'n I2C LCD, want op die Attiny is die skofregister makliker om te implementeer as die I2C -bus. Maar … as u byvoorbeeld 'n BMP180- of BMP085 -druksensor wil lees, benodig u in elk geval I2C daarvoor, sodat u net sowel 'n I2C LCD kan gebruik. TinyWireM is 'n goeie biblioteek vir I2C op 'n Attiny (maar dit verg ekstra ruimte).
BOM Die sender: DHT11 Attiny85 10 k weerstand 433MHz sender module
Die ontvanger Attiny85 10k weerstand 433 MHz ontvanger module
Die skerm 74LS164 skuifregister 1N4148 diode 2x1k weerstand 1x1k veranderlike weerstand en LCD skerm 2x16
Stap 1: Mini -weerstasie met Attiny85: die sender
Die sender is 'n baie basiese opset van die Attiny85 met 'n optrekweerstand op die resetlyn. 'N Sendermodule word aan die digitale pen' 0 'gekoppel en die DHT11 -datapen word aan die digitale pen 4 geheg. Heg 'n draad van 17,2 cm as antenna aan (sien stap 5 vir 'n baie beter antenna.) Die sagteware is soos volg:
// sal werk op Attiny // RF433 = D0 pen 5
// DHT11 = D4 pin 3 // biblioteke #include // Van Rob Tillaart #include dht DHT11; #define DHT11PIN 4 #define TX_PIN 0 // pin waar u sender gekoppel is // veranderlikes float h = 0; dryf t = 0; int transmit_t = 0; int transmit_h = 0; int transmit_data = 0; ongeldige opstelling () {pinMode (1, INVOER); man.setupTransmit (TX_PIN, MAN_1200); } leemte -lus () {int chk = DHT11.read11 (DHT11PIN); h = DHT11. humiditeit; t = DHT11.temperatuur; // Ek weet, ek gebruik hier drie heelgetal veranderlikes // waar ek 1 // kan gebruik, maar dit is net so dat dit makliker is om transmit_h = 100* (int) h te volg; transmit_t = (int) t; transmit_data = transmit_h+transmit_t; man.transmit (transmit_data); vertraging (500); }
Die sagteware gebruik Manchester -kode om die data te stuur. Dit lees die DHT11 en stoor die temperatuur en humiditeit in 2 afsonderlike vlotte. Aangesien die Manchester-kode nie vlotte stuur nie, maar 'n heelgetal, het ek verskeie opsies: 1- verdeel die vlotte in twee heelgetalle elk en stuur diegene2- stuur elke vlot as 'n heelgetal3- stuur die twee vlotte as een heelgetal Met opsie 1 moet ek kombineer die heelgetalle dryf weer in die ontvanger en ek moet identifiseer watter heelgetal wat is, wat die kode langdraaiend maak Met opsie 2 moet ek nog steeds identifiseer watter heelgetal vir humiditeit en watter vir temperatuur is. Ek kan nie volgens volgorde alleen gaan as een heelgetal verlore gaan in die oordrag nie, so ek moet 'n identifiseerder stuur wat aan die heelgetal geheg is. Met opsie 3 kan ek net een heelgetal stuur. Dit maak die lesings duidelik minder akkuraat - binne 1 graad - en 'n mens kan nie onder nul temperature stuur nie, maar dit is slegs 'n eenvoudige kode en daar is maniere om dit te vermy. Vir nou gaan dit net oor die beginsel. So wat ek doen, verander ek die vlotte in heelgetalle en vermenigvuldig ek die humiditeit met 100. Dan voeg ek die temperatuur by die vermenigvuldigde humiditeit. Aangesien die humiditeit nooit 100% sal wees nie maksimum getal wat ek kry, is 9900. Aangesien die temperatuur ook nie bo 100 grade sal wees nie, sal die maksimum getal 99 wees, daarom is die hoogste getal wat ek sal stuur 9999 en dit is maklik om aan die ontvangerkant te skei. my berekening waarin ek 3 heelgetalle gebruik, is te veel, aangesien dit maklik met 1 veranderlike gedoen kan word. Ek wou net die kode makliker maak om te volg. Die kode word nou saamgestel as:
Binêre sketsgrootte: 2, 836 grepe (van 'n maksimum van 8, 192 byte), sodat dit in 'n Attiny 45 of 85 pas OPMERKING die dht.h -biblioteek wat ek gebruik, is die van Rob Tillaart. Die biblioteek is ook geskik vir 'n DHT22. Ek gebruik weergawe 1.08. Die Attiny85 kan egter probleme ondervind met die lees van 'n DHT22 met laer weergawes van die biblioteek. Dit is aan my bevestig dat die 1.08 en 1.14 - hoewel hulle op 'n gewone Arduino werk - probleme ondervind met die lees van 'n DHT22 op die Attiny85. As u 'n DHT22 op die Attiny85 wil gebruik, gebruik die 1.20 weergawe van hierdie biblioteek. Dit het alles te doen met tydsberekening. Die 1.20 weergawe van die biblioteek kan vinniger gelees word. (Dankie vir die gebruikerservaring Jeroen)
Stap 2: Mini -weerstasie met Attiny85: die ontvanger
Die Attiny85 word weereens gebruik in 'n basiese konfigurasie met die Reset -pen wat hoog getrek is met 'n 10 k -weerstand. Die ontvanger -module is aan die digitale pen 1 (pen 6 op die skyfie) gekoppel. Die LCD is gekoppel aan digitale penne 0 en twee. Heg 'n draad van 17,2 cm as antenna aan. Die kode is soos volg:
#insluit
#sluit LiquidCrystal_SR lcd (0, 2, TWO_WIRE) in; #define RX_PIN 1 // = fisiese pen 6 leemte opstelling () {lcd.begin (16, 2); lcd.home (); man.setupReceive (RX_PIN, MAN_1200); man.beginReceive (); } void lus () {if (man.receiveComplete ()) {uint16_t m = man.getMessage (); man.beginReceive (); lcd.print ("Humid:"); lcd.print (m/100); lcd.setCursor (0, 1); lcd.print ("Temp"); lcd.print (m%100); }}
Die kode is redelik eenvoudig: die oorgedra heelgetal word ontvang en gestoor in veranderlike 'm'. Dit word gedeel deur 100 om die humiditeit te gee en die modulo van 100 gee die temperatuur. Gestel dus dat die heelgetal ontvang is 33253325/100 = 333325 % 100 = 25 Hierdie kode word saamgestel as 3380 grepe en kan dus slegs met 'n attiny85 gebruik word, nie met 'n 45 nie
Stap 3: Mini -weerstasie met Attiny85/45: die skerm
Vir die vertoning is dit die beste dat ek na my instruksies verwys op 'n tweedraads -skerm. Kortom, 'n gewone 16x2 -skerm gebruik 'n shiftregister, sodat dit met twee digitale penne kan werk. ook moontlik, maar dan moet u 'n I2C -protokol op die Attiny implementeer. Die Tinywire -protokol kan dit doen. Alhoewel sommige bronne sê dat dit 'n 1 Mhz -horlosie verwag, het ek (in 'n ander projek) geen moeite gehad om dit op 8Mhz te gebruik nie, maar ek het my net nie hier gepla nie en 'n skofregister gebruik.
Stap 4: Mini -weerstasie met Attiny85/45: moontlikhede/gevolgtrekkings
Soos gesê, het ek dit opdrag gegee om aan te toon dat 'n mens 'n mini -weerstasie kan maak met twee attiny85's (selfs met een attiny85+ 1 attiny45). Dit stuur slegs humiditeit en temperatuur met 'n DHT11. Die Attiny het egter 5 digitale penne om te gebruik, 6 selfs met 'n bietjie bedrog. Daarom is dit moontlik om data van meer sensors te stuur. In my projek- soos gesien op die foto's op strookbord en op 'n professionele PCB (OSHPark)- stuur/ontvang ek data van 'n DHT11, van 'n LDR en van 'n PIR, alles gebruik twee attiny85's Die beperking in die gebruik van 'n attiny85 as ontvanger is egter die weergawe van die data in 'n spoggerige styl. Aangesien die geheue beperk is: tekste soos 'temperatuur, humiditeit, ligvlak, onderwerp nader', sal redelik vinnig waardevolle geheue vul, maar daar is geen rede om twee Arduino's te gebruik om temperatuur en humiditeit te stuur/ontvang nie. om die sender te laat slaap en net te laat wakker word om data elke 10 minute te stuur en dit dus uit 'n knoppiesel te voer. Uiteraard kan nie net temperatuur- of humiditeitsdata gestuur word nie, maar ook 'n verskeidenheid klein senders grondvogmetings ook, of voeg 'n windmeter, of 'n reënmeter by
Stap 5: Mini Weerstasie: die antenna
Die antenna is 'n belangrike deel van enige 433Mhz -opstelling. Ek het met die standaard 17,2 cm 'staaf' -antenne geëksperimenteer en 'n kort flirt met 'n spoelantenne gehad. Die ontwerp is van Ben Schueler en is blykbaar in die tydskrif 'Elektor' gepubliseer. 'N PDF met die beskrywing van hierdie' lugverkoelde 433 MHz -antenne 'is maklik om te volg. (Skakel verdwyn, kyk hier)
Stap 6: Voeg 'n BMP180 by
Wil u barometriese druksensor soos die BMP180 byvoeg? kyk na my ander instruksies daaroor.
Aanbeveel:
Professionele weerstasie met behulp van ESP8266 en ESP32 DIY: 9 stappe (met foto's)
Professionele weerstasie met behulp van ESP8266 en ESP32 DIY: LineaMeteoStazione is 'n volledige weerstasie wat met professionele sensors van Sensirion sowel as 'n Davis -instrumentkomponent (reënmeter, windmeter) verbind kan word
Eenvoudige weerstasie met behulp van ESP8266 .: 6 stappe (met foto's)
Eenvoudige weerstasie met behulp van ESP8266 .: In hierdie instruksies sal ek deel hoe ek ESP8266 kan gebruik om data soos temperatuur, druk, klimaat ens te kry. En YouTube -data soos intekenare en amp; Totale aantal kyke. en vertoon die data op Serial monitor en vertoon dit op LCD. Die data sal f
NaTaLia Weerstasie: Arduino -sonkrag -weerstasie op die regte manier: 8 stappe (met foto's)
NaTaLia Weerstasie: Arduino -sonkrag -weerstasie op die regte manier: Na 1 jaar suksesvolle werking op 2 verskillende plekke deel ek my projekplanne met sonkrag -aangedrewe weerstasies en verduidelik hoe dit ontwikkel het tot 'n stelsel wat werklik oor 'n lang tyd kan voortbestaan tydperke van sonkrag. As jy volg
Volledige DIY Raspberry Pi weerstasie met sagteware: 7 stappe (met foto's)
Volledige DIY Raspberry Pi -weerstasie met sagteware: Eind Februarie het ek hierdie pos op die Raspberry Pi -webwerf gesien. http://www.raspberrypi.org/school-weather-station-… Hulle het Raspberry Pi weerstasies vir skole geskep. Ek wou heeltemal een hê! Maar op daardie tydstip (en ek glo nog steeds soos dit geskryf is
Weerstasie met Arduino, BME280 en skerm om die neiging binne die afgelope 1-2 dae te sien: 3 stappe (met foto's)
Weerstasie Met Arduino, BME280 & Display om die neiging binne die afgelope 1-2 dae te sien: Hallo! Hier is instruksies weerstasies reeds bekendgestel. Dit wys die huidige lugdruk, temperatuur en humiditeit. Wat hulle tot dusver ontbreek, was 'n aanbieding van die kursus binne die afgelope 1-2 dae. Hierdie proses sal 'n