Kazalo:
- Korak: Mini vremenska postaja z Attiny85: oddajnik
- Korak: Mini vremenska postaja z Attiny85: sprejemnik
- 3. korak: Mini vremenska postaja z Attiny85/45: Zaslon
- 4. korak: Mini vremenska postaja z attiny85/45: možnosti/zaključki
- 5. korak: Mini vremenska postaja: antena
- 6. korak: Dodajanje BMP180
Video: Mini vremenska postaja z Attiny85: 6 korakov (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:04
Nedavno je Indigod0g opisal mini vremensko postajo, ki deluje zelo dobro, z uporabo dveh Arduino. Morda ne želijo vsi žrtvovati 2 Arduina, da bi dobili odčitke vlažnosti in temperature, in komentiral sem, da bi bilo treba omogočiti podobno funkcijo z dvema Attiny85. Mislim, da je govorjenje enostavno, zato denar raje položim na usta.
Pravzaprav, če združim dva prejšnja navodila, sem napisal:
2-žični vmesnik LCD za Arduino ali Attiny in prejemanje in pošiljanje podatkov med Attiny85 (Arduino IDE 1.06), potem je večina dela že opravljena. Potrebno je le malo prilagoditi programsko opremo.
Za dvožično LCD rešitev s premičnim registrom sem se odločil namesto I2C LCD, ker je na Attinyju premični register lažje izvesti kot vodilo I2C. Če pa želite na primer prebrati senzor tlaka BMP180 ali BMP085, za to vseeno potrebujete I2C, tako da lahko uporabite tudi LCD I2C. TinyWireM je dobra knjižnica za I2C na Attinyju (vendar zahteva dodaten prostor).
BOM Oddajnik: DHT11 Attiny85 10 k upor 433MHz oddajni modul
Sprejemnik Attiny85 10k upor 433 MHz sprejemni modul
Zaslon 74LS164 premični register 1N4148 dioda 2x1k upor 1x1k spremenljiv upor LCD zaslon 2x16
Korak: Mini vremenska postaja z Attiny85: oddajnik
Oddajnik je zelo osnovna konfiguracija Attiny85 z izvlečnim uporom na liniji za ponastavitev. Oddajniški modul je priključen na digitalni zatič "0", podatkovni zatič DHT11 pa na digitalni zatič 4. Priključite žico 17,2 cm kot anteno (za veliko boljšo anteno glejte korak 5). Programska oprema je naslednja:
// bo delovalo na Attiny // RF433 = D0 pin 5
// DHT11 = D4 pin 3 // knjižnice #include // Od Roba Tillaarta #include dht DHT11; #define DHT11PIN 4 #define TX_PIN 0 // pin, kamor je priključen vaš oddajnik // spremenljivke plavajo h = 0; plovec t = 0; int transmit_t = 0; int transmit_h = 0; int prenos_podatkov = 0; void setup () {pinMode (1, INPUT); man.setupTransmit (TX_PIN, MAN_1200); } void loop () {int chk = DHT11.read11 (DHT11PIN); h = DHT11. vlažnost; t = temperatura DHT11; // Vem, tukaj uporabljam 3 celoštevilske spremenljivke // kjer bi lahko uporabil 1 // ampak to je samo zato, da je lažje slediti transmit_h = 100* (int) h; transmit_t = (int) t; prenos_podatkov = prenos_h+prenos_t; človeški prenos (prenos_podatkov); zamuda (500); }
Za pošiljanje podatkov programska oprema uporablja kodo Manchester. Odčitava DHT11 in shranjuje temperaturo in vlažnost v 2 ločenih plavajočih plovcih. Ker Manchester koda ne pošilja floats, ampak celo število, imam več možnosti: 1- razdelite floats na dve celi številki in jih pošljite2- vsak float pošljite kot celo število3- dva floatta pošljite kot eno celo število Z možnostjo 1 moram združiti cela števila spet plavajo v sprejemniku in moram ugotoviti, katero celo število je, zaradi česar je koda dolga. Z možnostjo 2 moram še ugotoviti, katero celo število je za vlažnost in katero za temperaturo. Ne morem iti sam po zaporedju, če se pri prenosu izgubi eno celo število, zato bi moral poslati celo identifikator, priložen celemu številu. Pri možnosti 3 lahko pošljem samo eno celo število. Očitno so zaradi tega odčitki nekoliko manj natančni - v 1 stopinji - in temperatur pod ničlo ni mogoče poslati, vendar je to preprosto koda in obstajajo načini za to. Zaenkrat gre le za načelo. Torej naredim, da spremenim plovce v cela števila in pomnožim vlažnost s 100. Nato pomnoženo vlago dodam temperaturo. Glede na dejstvo, da vlaga nikoli ne bo 100% največje število, ki ga bom dobil, je 9900. Glede na dejstvo, da temperatura prav tako ne bo višja od 100 stopinj, bo največje število 99, zato je najvišje število, ki ga bom poslal, 9999 in ga je enostavno ločiti na strani sprejemnika. moj izračun, v katerem uporabljam 3 cela števila, je preveč, saj bi ga bilo mogoče enostavno narediti z eno spremenljivko. Želel sem samo olajšati sledenje kodi. Koda se zdaj sestavi kot:
Velikost binarne skice: 2, 836 bajtov (od največ 8, 192 bajtov), tako da se prilega Attiny 45 ali 85 OPOMBA, knjižnica dht.h, ki jo uporabljam, je tista iz Roba Tillaarta. Ta knjižnica je primerna tudi za DHT22. Uporabljam različico 1.08. Vendar ima lahko Attiny85 težave pri branju DHT22 z nižjimi različicami knjižnice. Potrjeno mi je, da imata 1.08 in 1.14, čeprav delata na običajnem Arduinu, težave pri branju DHT22 na Attiny85. Če želite uporabiti DHT22 na Attiny85, uporabite 1.20 različico te knjižnice. Vse je treba narediti s časom. Različica knjižnice 1.20 omogoča hitrejše branje. (Hvala za to uporabniško izkušnjo Jeroen)
Korak: Mini vremenska postaja z Attiny85: sprejemnik
Spet se Attiny85 uporablja v osnovni konfiguraciji z zatičem za ponastavitev visoko z 10 k uporom. Sprejemniški modul je pritrjen na digitalni pin 1 (pin 6 na čipu). LCD je pritrjen na digitalni nožici 0 in 2. Priključite žico dolžine 17,2 cm kot anteno. Koda je naslednja:
#vključi
#include LiquidCrystal_SR lcd (0, 2, TWO_WIRE); #define RX_PIN 1 // = fizični pin 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 (); man.beginReceive (); lcd.print ("Vlažno:"); lcd.tisk (m/100); lcd.setCursor (0, 1); lcd.print ("Temp"); lcd.tisk (m%100); }}
Koda je dokaj preprosta: preneseno celo število je sprejeto in shranjeno v spremenljivki 'm'. Deljeno je s 100, da dobi vlažnost, po modulu 100 pa s temperaturo. Predpostavimo, da je bilo sprejeto celo število 33253325/100 = 333325 % 100 = 25Ta koda je sestavljena kot 3380 bajtov in jo je zato mogoče uporabiti samo z attiny85, ne pa s 45
3. korak: Mini vremenska postaja z Attiny85/45: Zaslon
Za zaslon je najbolje, da se obrnem na moje navodilo na dvožičnem zaslonu. Skratka, običajni zaslon 16x2 uporablja shift shift register, tako da lahko deluje z dvema digitalnima nožicama. Seveda, če želite uporabiti zaslon, pripravljen za I2C, to je mogoče tudi, potem pa morate na Attinyju implementirati protokol I2C. Protokol Tinywire lahko to stori. Čeprav nekateri viri pravijo, da to pričakuje uro 1 Mhz, nisem imel težav (v drugem projektu), da bi jo uporabil na 8 MHz.
4. korak: Mini vremenska postaja z attiny85/45: možnosti/zaključki
Kot rečeno, sem naredil to navodilo, da pokažem, da je mogoče narediti mini vremensko postajo z dvema atiny85 (tudi z enim attiny85+ 1 attiny45). Pošilja samo vlažnost in temperaturo z uporabo DHT11. Vendar ima Attiny 5 digitalnih zatičev za uporabo., 6 tudi z nekaj zvijače. Zato je mogoče pošiljati podatke iz več senzorjev. V mojem projektu- kot je razvidno iz slik na traku in na profesionalnem tiskanem vezju (OSHPark)- pošiljam/prejemam podatke iz DHT11, iz LDR in iz PIR, vse z uporabo Dva attiny85 -a Omejitev pri uporabi attiny85 kot sprejemnika je predstavitev podatkov v bleščečem slogu. Ker je pomnilnik omejen: besedila, kot sta »Temperatura, vlažnost, raven svetlobe, približevanje predmeta«, bodo zelo hitro zapolnila dragocen pomnilniški prostor. Kljub temu ni razloga za uporabo dveh Arduino samo za pošiljanje/sprejemanje temperature in vlažnosti. da oddajnik zaspi in da se le zbudi, da pošlje podatke, recimo vsakih 10 minut, in jih tako vnese iz celice z gumbom. Očitno je, da se ne morejo pošiljati samo podatki o temperaturi ali vlažnosti, ampak lahko imamo niz majhnih oddajnikov, ki pošiljajo odčitajte tudi vlažnost tal ali dodajte anemometer ali merilnik dežja
5. korak: Mini vremenska postaja: antena
Antena je pomemben del vsake nastavitve 433 MHz. Eksperimentiral sem s standardno 17,2 cm "palico" anteno in imel kratek spogled z anteno v tuljavi. Najbolj se je zdelo, da je anteno, ki je enostavna za izdelavo. Oblikovanje je prišlo od Ben Schuelerja in je bilo očitno objavljeno v reviji 'Elektor'. PDF -ju z opisom te "zračno hlajene 433 MHz antene" je enostavno slediti. (Povezava je izginila, preverite tukaj)
6. korak: Dodajanje BMP180
Želite dodati barometrični senzor tlaka, kot je BMP180? preverite moje druge napotke o tem.
Priporočena:
Profesionalna vremenska postaja z uporabo ESP8266 in ESP32 DIY: 9 korakov (s slikami)
Profesionalna vremenska postaja z uporabo ESP8266 in ESP32 DIY: LineaMeteoStazione je popolna vremenska postaja, ki jo je mogoče povezati s profesionalnimi senzorji podjetja Sensirion, pa tudi z nekaterimi komponentami instrumenta Davis (merilnik dežja, anemometer) Projekt je namenjen kot DIY vremenska postaja
Fanair: vremenska postaja za vašo sobo: 6 korakov (s slikami)
Fanair: Vremenska postaja za vašo sobo: Obstaja nešteto načinov, kako ugotoviti trenutno vreme, potem pa poznate le vreme zunaj. Kaj pa, če želite vedeti vreme v vaši hiši, v določeni sobi? To poskušam rešiti s tem projektom. Fanair uporablja več
Enostavna vremenska postaja z uporabo ESP8266 .: 6 korakov (s slikami)
Enostavna vremenska postaja z uporabo ESP8266 .: V tem navodilu bom delil, kako z ESP8266 pridobiti podatke, kot so temperatura, tlak, podnebje itd., In YouTube podatke, kot so naročniki & Skupno število ogledov. in prikaže podatke na serijskem monitorju in jih prikaže na LCD -prikazovalniku. Podatki bodo v
Vremenska postaja NaTaLia: Vremenska postaja Arduino s sončno energijo Na pravi poti: 8 korakov (s slikami)
Vremenska postaja NaTaLia: Vremenska postaja na sončni pogon Arduino je ravnala pravilno: Po enem letu uspešnega delovanja na dveh različnih lokacijah delim svoje načrte projektov vremenskih postaj na sončno energijo in razložim, kako se je razvila v sistem, ki lahko resnično preživi dolgo časa obdobja iz sončne energije. Če sledite
Vremenska postaja in senzorska postaja DIY: 7 korakov (s slikami)
Vremenska postaja in senzorska postaja DIY: V tem projektu vam bom pokazal, kako skupaj s senzorsko postajo WiFi ustvariti vremensko postajo. Senzorska postaja meri lokalne podatke o temperaturi in vlažnosti ter jih prek WiFi pošlje vremenski postaji. Vremenska postaja nato prikaže t