Sisällysluettelo:
- Vaihe 1: Minisääasema, jossa Attiny85: lähetin
- Vaihe 2: Minisääasema, jossa Attiny85: vastaanotin
- Vaihe 3: Minisääasema, jossa Attiny85/45: näyttö
- Vaihe 4: Minisääasema, jossa Attiny85/45: Mahdollisuudet/Johtopäätökset
- Vaihe 5: Mini Weather Station: antenni
- Vaihe 6: BMP180: n lisääminen
Video: Mini sääasema Attiny85: 6 askelta (kuvilla)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:01
Äskettäin ohjeistettavassa Indigod0g kuvasi pientä sääasemaa, joka toimii melko hyvin käyttäen kahta Arduinoa. Ehkä kaikki eivät halua uhrata 2 Arduinoa saadakseen kosteus- ja lämpötilalukemat, ja kommentoin, että samanlaisen toiminnon pitäisi olla mahdollista kahdella Attiny85: llä. Luulen, että puhuminen on helppoa, joten minun on parempi laittaa rahani suuhuni.
Itse asiassa, jos yhdistän kaksi aikaisempaa ohjetta, kirjoitin:
2-johtiminen LCD-liitäntä Arduinoa tai Attinyä varten ja tietojen vastaanottaminen ja lähettäminen Attiny85: n välillä (Arduino IDE 1.06), jolloin suurin osa työstä on jo tehty. Ohjelmistoa tarvitsee vain hieman muokata.
Valitsin kaksijohtimisen lcd -ratkaisun, jossa on siirtorekisteri, eikä I2C -nestekidenäyttöä, koska Attiny -järjestelmässä siirtorekisteri on helpompi toteuttaa kuin I2C -väylä. Kuitenkin… jos esimerkiksi haluat lukea BMP180- tai BMP085 -paineanturia, tarvitset siihen I2C: tä joka tapauksessa, joten voit myös käyttää I2C -nestekidenäyttöä. TinyWireM on hyvä kirjasto I2C: lle Attinyssä (mutta se vaatii lisätilaa).
BOM Lähetin: DHT11 Attiny85 10 k vastuksen 433MHz lähetinmoduuli
Vastaanotin Attiny85 10k vastus 433 MHz vastaanotinmoduuli
Näyttö 74LS164 siirtorekisteri 1N4148 diodi 2x1k vastus 1x1k muuttuva vastus LCD -näyttö 2x16
Vaihe 1: Minisääasema, jossa Attiny85: lähetin
Lähetin on Attiny85: n hyvin peruskokoonpano, jossa on ylösvetovastus nollauslinjalla. Lähetinmoduuli on kiinnitetty digitaaliseen nastaan '0' ja DHT11 -datatappi kiinnittyy digitaaliseen nastaan 4. (katso paljon parempi antenni, katso vaihe 5) Ohjelmisto on seuraava:
// toimii Attiny // RF433 = D0 nasta 5
// DHT11 = D4 pin 3 // kirjastot #include // Rob Tillaartilta #include dht DHT11; #define DHT11PIN 4 #define TX_PIN 0 // nasta, johon lähetin on kytketty // muuttujat float h = 0; kellua t = 0; int lähetys_t = 0; int lähetys_h = 0; int lähetystiedot = 0; void setup () {pinMode (1, INPUT); man.setupTransmit (TX_PIN, MAN_1200); } void loop () {int chk = DHT11.read11 (DHT11PIN); h = DHT11. kosteus; t = DHT11 lämpötila; // Tiedän, käytän tässä 3 kokonaislukumuuttujaa // missä voisin käyttää 1 //, mutta se on vain niin, että on helpompaa seurata lähetystä_h = 100* (int) h; lähettää_t = (int) t; lähetystiedot = lähetys_h+lähetys_t; mies.lähetys (lähetystiedot); viive (500); }
Ohjelmisto käyttää tietojen lähettämiseen Manchester -koodia. Se lukee DHT11 ja tallentaa lämpötilan ja kosteuden kahteen erilliseen kellukkeeseen. Koska Manchester-koodi ei lähetä kellukkeita, vaan kokonaisluku, minulla on useita vaihtoehtoja: 1- jaa kellukkeet kahteen kokonaislukuun ja lähetä ne2- lähetä jokainen uimuri kokonaislukuna3- lähetä kaksi kelluketta yhdeksi kokonaisluvuksi Vaihtoehdolla 1 minun on yhdistettävä kokonaisluvut kelluvat jälleen vastaanottimessa ja minun on tunnistettava, mikä kokonaisluku on mikä, jolloin koodi on pitkä. Vaihtoehdolla 2 minun on vielä tunnistettava, mikä kokonaisluku on kosteus ja mikä lämpötila. En voi mennä yksin järjestyksessä, jos yksi kokonaisluku häviää lähetyksessä, joten minun on lähetettävä kokonaislukuun liitetty tunniste. Vaihtoehdolla 3 voin lähettää vain yhden kokonaisluvun. On selvää, että tämä tekee lukemista hieman epätarkempia - 1 asteen sisällä - eikä nollan lämpötiloja voi lähettää, mutta se on vain yksinkertainen koodi ja siihen on olemassa tapoja. Toistaiseksi kyse on periaatteesta, joten muutan kellukkeet kokonaisluvuiksi ja kerron kosteuden 100: lla. Sitten lisään lämpötilan kerrottuun kosteuteen. Maksimiluku, jonka saan, on 9900. Koska lämpötila ei myöskään ole yli 100 astetta, enimmäislukema on 99, joten suurin lähettämäni numero on 9999 ja se on helppo erottaa vastaanottimen puolelta. laskelmani, jossa käytän 3 kokonaislukua, on yliarvostettu, koska se voitaisiin helposti tehdä yhdellä muuttujalla. Halusin vain helpottaa koodin seuraamista. Koodi kootaan nyt seuraavasti:
Binääriluonnoksen koko: 2, 836 tavua (enintään 8, 192 tavua), joten se mahtuu Attiny 45: een tai 85: een. HUOMAUTUS käyttämäni dht.h -kirjasto on Rob Tillaart. Tämä kirjasto soveltuu myös DHT22: lle. Käytän versiota 1.08. Attiny85: llä voi kuitenkin olla ongelmia DHT22: n lukemisessa kirjaston alempien versioiden kanssa. Minulle on vahvistettu, että 1.08: lla ja 1.14: llä - vaikka ne työskentelevät tavallisen Arduinon parissa - on ongelmia DHT22: n lukemisessa Attiny85: ssä. Jos haluat käyttää DHT22 -laitetta Attiny85 -laitteessa, käytä tämän kirjaston versiota 1.20. Kaikki liittyy ajoitukseen. Kirjaston 1.20 -version luku on nopeampaa. (Kiitos tästä käyttäjäkokemuksesta Jeroen)
Vaihe 2: Minisääasema, jossa Attiny85: vastaanotin
Jälleen Attiny85: tä käytetään peruskonfiguraatiossa, kun Reset -tappi vedetään korkealle 10 k: n vastuksella. Vastaanotinmoduuli on kiinnitetty digitaaliseen nastaan 1 (sirun nasta 6). Nestekidenäyttö on kiinnitetty digitaalisiin nastoihin 0 ja 2.
#sisältää
#include LiquidCrystal_SR lcd (0, 2, TWO_WIRE); #define RX_PIN 1 // = fyysinen nasta 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 ("Kostea:"); lcd -tulostus (m/100); lcd.setCursor (0, 1); lcd.print ("Lämpötila"); lcd.print (m%100); }}
Koodi on melko yksinkertainen: lähetetty kokonaisluku vastaanotetaan ja tallennetaan muuttujaan 'm'. Se jaetaan 100: lla kosteuden antamiseksi ja 100: n modulo antaa lämpötilan. = 25Tämä koodi on 3380 tavua, joten sitä voidaan käyttää vain attiny85: n kanssa, ei 45
Vaihe 3: Minisääasema, jossa Attiny85/45: näyttö
Näytön kannalta on parasta, että viittaan ohjeeseeni kaksijohtimisessa näytössä. Lyhyesti sanottuna, yhteinen 16x2 -näyttö käyttää siirtorekisteriä, joten se voi toimia kahdella digitaalisella nastalla. mahdollista, mutta sitten sinun on otettava käyttöön I2C -protokolla Attinyssä. Tinywire -protokolla voi tehdä sen. Vaikka jotkut lähteet sanovat, että se odottaa 1 Mhz: n kelloa, minulla ei ollut vaikeuksia (toisessa projektissa) käyttää sitä 8Mhz: ssä. Joka tapauksessa en vain vaivautunut täällä ja käytin vuororekisteriä.
Vaihe 4: Minisääasema, jossa Attiny85/45: Mahdollisuudet/Johtopäätökset
Kuten sanottu, tein tämän ohjeelliseksi osoittaakseni, että voidaan tehdä mini -sääasema, jossa on kaksi attiny85: tä (jopa yhdellä attiny85+ 1 attiny45). Se lähettää vain kosteutta ja lämpötilaa DHT11: n avulla., 6 jopa pienellä temppelillä. Siksi on mahdollista lähettää tietoja useista antureista. Projektissani- kuten kuvista stripboardilla ja ammattimaisella piirilevyllä (OSHPark)- lähetän/vastaanotan tietoja DHT11: stä, LDR: stä ja PIR: stä Kaksi attiny85: tä Rajoitusta käytettäessä attiny85: tä vastaanottimena on kuitenkin tietojen esittäminen räikeässä tyylissä. Koska muisti on rajallinen: tekstit, kuten 'Lämpötila, kosteus, valotaso, kohde lähestyy', täyttävät arvokkaan muistitilan melko nopeasti. Ei kuitenkaan ole syytä käyttää kahta Arduinoa vain lämpötilan ja kosteuden lähettämiseen/vastaanottamiseen. Jos haluat lähettimen menevän nukkumaan ja herättämään sen vain lähettämään tietoja sanomalla 10 minuutin välein ja syöttämällä sen siten napin solusta. myös maaperän kosteuslukemat tai lisää tuulemittari tai sademittari
Vaihe 5: Mini Weather Station: antenni
Antenni on tärkeä osa 433 MHz: n kokoonpanoa. Olen kokeillut 17,2 cm: n vakiomallista antennia ja flirttailin kela -antennin kanssa. Parhaiten näytti toimivan kelalla ladattu antenni, joka on helppo valmistaa. Malli on Ben Schuelerilta ja ilmeisesti julkaistu Elektor -lehdessä. Tämän ilmajäähdytteisen 433 MHz: n antennin kuvauksen sisältävä PDF -tiedosto on helppo seurata. (Linkki kadonnut, katso täältä)
Vaihe 6: BMP180: n lisääminen
Haluatko lisätä ilmanpaineanturin, kuten BMP180? tarkista muut ohjeeni siitä.
Suositeltava:
Ammattimainen sääasema käyttäen ESP8266- ja ESP32 -DIY: 9 vaihetta (kuvilla)
Ammattimainen sääasema käyttämällä ESP8266- ja ESP32 -DIY: LineaMeteoStazione on täydellinen sääasema, joka voidaan liittää Sensirionin ammattitunnistimiin sekä joihinkin Davis -instrumenttikomponentteihin (sademittari, tuulimittari)
Suurempi ja parannettu joulutähti Neopixel Attiny85: 3 askelta (kuvilla)
Suurempi ja parannettu joulutähti Neopixel Attiny85: Viime vuonna tein pienen 3D-tulostetun joulutähden, katso https://www.instructables.com/id/Christmas-Star-LE..Tänä vuonna tein isomman tähden langasta 50 neopikseliä (5V WS2811). Tällä suuremmalla tähdellä oli enemmän kuvioita (lisään ja parannan edelleen
Pieni kompassi ATtiny85: 12 askelta (kuvilla)
Pieni kompassi ATtiny85: llä: Tämä on ensimmäinen projektimme ATtiny85: n kanssa; yksinkertainen taskukokoinen digitaalinen kompassi (yhteistyössä J. Arturo Espejel Báezin kanssa) .ATtiny85 on tehokas ja pienitehoinen mikrokontrolleri. Siinä on 8 kilotavua ohjelmoitavaa flash -muistia. Tästä johtuen Chal
NaTaLia -sääasema: Arduinon aurinkovoimalla toimiva sääasema tehty oikein: 8 vaihetta (kuvilla)
NaTaLia -sääasema: Arduino -aurinkovoimalla toimiva sääasema tehty oikein: 1 vuoden onnistuneen toiminnan jälkeen kahdessa eri paikassa jaan aurinkovoimalla toimivan sääaseman projektisuunnitelmani ja selitän, kuinka siitä kehittyi järjestelmä, joka voi todella selviytyä pitkään ajan aurinkoenergiasta. Jos seuraat
IoT -sääasema RPi: llä ja ESP8266: 10 askelta
IoT -sääasema RPi: n ja ESP8266: n avulla: Aiemmissa opetusohjelmissa olemme leikkineet NodeMCU: lla, antureilla ja oppineet keräämään ja kirjaamaan tietoja ThingSpeak (esineiden internet (IoT)) -alustalla, jonka avulla voit kerätä ja tallentaa anturitietoja pilveen ja kehittää IoT -sovelluksia): IOT