Turinys:
- 1 žingsnis: mini orų stotis su „Attiny85“: siųstuvas
- 2 veiksmas: mini orų stotis su „Attiny85“: imtuvas
- 3 žingsnis: mini orų stotis su „Attiny85/45“: ekranas
- 4 žingsnis: mini orų stotis su „Attiny85/45“: galimybės/išvados
- 5 žingsnis: „Mini Weather Station“: antena
- 6 veiksmas: pridėkite BMP180
Video: Mini oro stotis su „Attiny85“: 6 žingsniai (su nuotraukomis)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:46
Neseniai nurodytame „Indigod0g“aprašė mini orų stotį, kuri veikia gana gerai, naudojant du „Arduinos“. Galbūt ne visi nori paaukoti 2 „Arduinos“, kad gautų drėgmės ir temperatūros rodmenis, ir aš pakomentavau, kad turėtų būti įmanoma atlikti panašią funkciją su dviem „Attiny85“. Manau, kalbėti lengva, todėl geriau padedu pinigus ten, kur mano burna.
Tiesą sakant, jei sujungsiu dvi ankstesnes instrukcijas, kurias parašiau:
Dviejų laidų skystųjų kristalų sąsaja, skirta „Arduino“arba „Attiny“ir Duomenų priėmimas ir siuntimas tarp „Attiny85“(„Arduino IDE 1.06“), tada didžioji dalis darbo jau atlikta. Reikia tik šiek tiek pritaikyti programinę įrangą.
Aš pasirinkau dviejų laidų LCD sprendimą su pamainų registru, o ne I2C LCD, nes „Attiny“pamainų registrą lengviau įdiegti nei I2C magistralę. Tačiau … jei, pavyzdžiui, norite skaityti BMP180 arba BMP085 slėgio jutiklį, jums vis tiek reikia I2C, kad taip pat galėtumėte naudoti I2C skystųjų kristalų ekraną. „TinyWireM“yra gera „I2C“biblioteka „Attiny“(tačiau tam reikia papildomos vietos).
BOM Siųstuvas: DHT11 Attiny85 10 k rezistoriaus 433MHz siųstuvo modulis
Imtuvo Attiny85 10k rezistoriaus 433 MHz imtuvo modulis
Ekranas 74LS164 poslinkio registras 1N4148 diodas 2x1k rezistorius 1x1k kintamas rezistorius LCD ekranas 2x16
1 žingsnis: mini orų stotis su „Attiny85“: siųstuvas
Siųstuvas yra labai paprasta „Attiny85“konfigūracija su ištraukimo rezistoriumi atstatymo linijoje. Siųstuvo modulis yra prijungtas prie skaitmeninio kaiščio „0“, o DHT11 duomenų kaištis pritvirtintas prie 4 skaitmeninio kaiščio. Kaip anteną prijunkite 17,2 cm laidą (jei norite gauti geresnę anteną, žr. 5 veiksmą). Programinė įranga yra tokia:
// veiks „Attiny“// RF433 = D0 kaištis 5
// DHT11 = D4 pin 3 // bibliotekos #include // Iš Rob Tillaart #include dht DHT11; #define DHT11PIN 4 #define TX_PIN 0 // kaištis, kur yra prijungtas jūsų siųstuvas // kintamieji float h = 0; plūdė t = 0; int perduoti_t = 0; int perduoti_h = 0; int perduoti_datai = 0; void setup () {pinMode (1, INPUT); man.setupTransmit (TX_PIN, MAN_1200); } void loop () {int chk = DHT11.read11 (DHT11PIN); h = DHT11. drėgmė; t = DHT11. temperatūra; // Aš žinau, aš čia naudoju 3 sveikuosius kintamuosius // kur galėčiau naudoti 1 //, bet tai tik todėl, kad būtų lengviau sekti transfer_h = 100* (int) h; perduoti_t = (int) t; perduoti_datai = perduoti_h+perduoti_t; vyras.transmit (perduoti_datus); vėlavimas (500); }
Programinė įranga naudoja Mančesterio kodą duomenims siųsti. Jis nuskaito DHT11 ir saugo temperatūrą bei drėgmę 2 atskirose plūdėse. Kadangi Mančesterio kodas siunčia ne plūdes, o sveiką skaičių, turiu keletą variantų: 1- padalinkite plūdes į du sveikus skaičius ir išsiųskite jas2- nusiųskite kiekvieną plūdę kaip sveiką skaičių 3- nusiųskite dvi plūdes kaip vieną sveiką skaičių. sveikuosius skaičius vėl ima plūduriuoti imtuve, ir aš turiu nustatyti, kuris sveikasis skaičius yra toks, todėl kodas ilgas Negaliu eiti vien tik seka, jei vienas sveikasis skaičius prarandamas perduodant, todėl turėčiau išsiųsti identifikatorių, pridėtą prie sveikojo skaičiaus. Naudojant 3 parinktį, galiu siųsti tik vieną sveikąjį skaičių. Akivaizdu, kad tai daro rodmenis šiek tiek mažiau tikslius - 1 laipsnio ribose - ir negalima siųsti žemesnės nei nulio temperatūros, tačiau tai tik paprastas kodas ir yra būdų, kaip tai padaryti. Kol kas tai tik principas. Taigi ką aš darau, tai plūdes paversiu sveikais skaičiais, o drėgmę padauginu iš 100. Tada pridedu temperatūrą prie padaugintos drėgmės. Atsižvelgiant į tai, kad drėgmė niekada nebus 100% Maksimalus skaičius, kurį gausiu, yra 9900. Atsižvelgiant į tai, kad temperatūra taip pat nebus aukštesnė nei 100 laipsnių, maksimalus skaičius bus 99, todėl didžiausias skaičius, kurį siunčiu, yra 9999 ir jį lengva atskirti imtuvo pusėje. Žinoma mano skaičiavimas, kuriame naudoju 3 sveikuosius skaičius, yra per didelis, nes tai būtų galima lengvai padaryti naudojant 1 kintamąjį. Aš tiesiog norėjau, kad kodą būtų lengviau sekti. Kodas dabar sudaromas taip:
Dvejetainio eskizo dydis: 2, 836 baitai (iš 8, 192 baitų), kad tilptų į „Attiny 45“arba 85. Ši biblioteka taip pat tinka DHT22. Aš naudoju 1.08 versiją. Tačiau „Attiny85“gali kilti problemų skaitant DHT22 su žemesnėmis bibliotekos versijomis. Man buvo patvirtinta, kad 1.08 ir 1.14, nors ir dirba su įprastu „Arduino“, turi problemų skaitydami DHT22 „Attiny85“. Jei „Attiny85“norite naudoti DHT22, naudokite šios bibliotekos versiją 1.20. Viskas priklauso nuo laiko. 1.20 bibliotekos versija yra greičiau skaitoma. (Ačiū Jeroen už tokią naudotojo patirtį)
2 veiksmas: mini orų stotis su „Attiny85“: imtuvas
Vėlgi, „Attiny85“naudojama pagrindinėje konfigūracijoje, kai atstatymo kaištis yra ištrauktas aukštai su 10 k rezistoriumi. Imtuvo modulis yra prijungtas prie 1 skaitmeninio kaiščio (6 lustas mikroschemoje). Skystųjų kristalų ekranas pritvirtintas prie 0 ir dviejų skaitmeninių kaiščių. Kaip anteną pritvirtinkite 17,2 cm ilgio laidą. Kodas yra toks:
#įtraukti
#include LiquidCrystal_SR lcd (0, 2, TWO_WIRE); #define RX_PIN 1 // = fizinis kaištis 6 void setup () {lcd.begin (16, 2); lcd.home (); man.setupRecept (RX_PIN, MAN_1200); man.beginRecept (); } void loop () {if (man.receptComplete ()) {uint16_t m = man.getMessage (); man.beginRecept (); lcd.print ("Drėgnas:"); LCD spausdinimas (m/100); lcd.setCursor (0, 1); lcd.print ("Temp"); lcd.print (m%100); }}
Kodas yra gana paprastas: perduotas sveikasis skaičius gaunamas ir saugomas kintamajame „m“. Jis padalintas iš 100, kad būtų gauta drėgmė, o 100 modulis - temperatūrą. Taigi tarkime, kad gautas sveikasis skaičius buvo 33253325/100 = 333325 % 100 = 25 Šis kodas sudaromas kaip 3380 baitų, todėl jį galima naudoti tik su attiny85, o ne su 45
3 žingsnis: mini orų stotis su „Attiny85/45“: ekranas
Ekranui geriausia, kad aš remiuosi savo instrukcija dviejų laidų ekrane. Trumpai tariant, bendras 16x2 ekranas naudoja perjungimo registrą, todėl gali veikti dviem skaitmeniniais kaiščiais. Žinoma, jei norite naudoti I2C paruoštą ekraną, tai yra taip pat įmanoma, tačiau tada „Attiny“turite įdiegti I2C protokolą. „Tinywire“protokolas tai gali padaryti. Nors kai kurie šaltiniai sako, kad tikimasi 1 Mhz laikrodžio, aš neturėjau jokių problemų (kitame projekte) naudoti jį 8Mhz. Bet kokiu atveju aš čia nesivarginau ir naudoju pamainų registrą.
4 žingsnis: mini orų stotis su „Attiny85/45“: galimybės/išvados
Kaip minėta, aš padariau tai pamokoma parodyti, kad galima sukurti mini oro stotį su dviem attiny85 (net ir su vienu attiny85+ 1 attiny45). Jis siunčia tik drėgmę ir temperatūrą, naudojant DHT11. Tačiau „Attiny“turi 5 skaitmeninius kaiščius, 6 net ir su tam tikra gudrybe. Todėl galima siųsti duomenis iš daugiau jutiklių. Mano projekte- kaip matyti nuotraukose ant juostos ir profesionalioje PCB (OSHPark)- siunčiu/gaunu duomenis iš DHT11, iš LDR ir iš PIR Tačiau apribojimas naudojant „attiny85“kaip imtuvą yra duomenų pateikimas prašmatniu stiliumi. Kadangi atmintis yra ribota: tokie tekstai kaip „Temperatūra, drėgmė, šviesos lygis, artėjantis objektas“gana greitai užpildys vertingą atminties vietą. Vis dėlto nėra jokios priežasties naudoti du „Arduino“tik norint siųsti/gauti temperatūrą ir drėgmę. Be to, galima kad siųstuvas užmigtų ir tik atsibustų, kad kas 10 minučių siųstų duomenis ir taip paduotų juos iš mygtuko langelio. Akivaizdu, kad galima siųsti ne tik temperatūros ar drėgmės duomenis, bet gali būti siunčiama daugybė mažų siųstuvų dirvožemio drėgmės rodmenis arba pridėkite anemometrą arba lietaus matuoklį
5 žingsnis: „Mini Weather Station“: antena
Antena yra svarbi bet kurios 433Mhz nustatytos dalies dalis. Aš eksperimentavau su standartine 17,2 cm „lazdelės“antena ir trumpai flirtavau su ritės antena. Atrodė, kad geriausiai veikia ritės pakrauta antena, kurią lengva padaryti. Dizainas yra Beno Schuelerio ir, matyt, buvo paskelbtas žurnale „Elektor“. PDF su šios „oro aušinimo 433 MHz antenos“aprašymu lengva sekti. (Nuoroda dingo, patikrinkite čia)
6 veiksmas: pridėkite BMP180
Norite pridėti barometrinio slėgio jutiklį, pvz., BMP180? patikrinkite kitus mano nurodymus šiuo klausimu.
Rekomenduojamas:
„Hanging Gear“oro stotis: 7 žingsniai (su nuotraukomis)
„Hanging Gear Weather Station“: šioje instrukcijoje aš jums parodysiu, kaip sukurti savo pakabinamų įrankių oro stotį, pagamintą iš CNC lazeriu pjaustytų MDF dalių. Žingsninis variklis varo kiekvieną pavarą, o „Arduino“matuoja temperatūrą ir drėgmę, naudojant DHT
„Tweeting“oro stotis: 8 žingsniai (su nuotraukomis)
„Tweeting“oro stotis: ar kada nors norėjote stebėti dabartines jūsų miesto oro sąlygas, anglies pėdsaką, triukšmą ir taršą? Ar norite būti klimato kaitos kryžiuočiu ar įsteigti savo „Tweeting“orų stotį ir pasidalyti savo vietinėmis oro sąlygomis su
„NaTaLia“orų stotis: „Arduino“saulės energija varoma oro stotis padaryta teisingai: 8 žingsniai (su nuotraukomis)
„NaTaLia“orų stotis: „Arduino Solar Powered Weather Station“padaryta teisingai: Po vienerių metų sėkmingo veikimo 2 skirtingose vietose dalinuosi saulės kolektorių projektų planais ir paaiškinu, kaip ji išsivystė į sistemą, kuri tikrai gali išgyventi ilgą laiką laikotarpius nuo saulės energijos. Jei sekate
„Pasidaryk pats“oro stotis ir „WiFi“jutiklių stotis: 7 žingsniai (su nuotraukomis)
„Pasidaryk pats“oro stotis ir „WiFi“jutiklių stotis: Šiame projekte parodysiu, kaip sukurti orų stotį kartu su „WiFi“jutiklių stotimi. Jutiklių stotis matuoja vietos temperatūros ir drėgmės duomenis ir siunčia juos per „WiFi“į orų stotį. Tuomet orų stotis rodo t
Dalelių fotonų daiktų interneto asmeninė oro stotis: 4 žingsniai (su nuotraukomis)
Dalelių fotonų daiktų interneto asmeninė oro stotis: