Sisukord:
- 1. samm: väike ilmajaam Attiny85 -ga: saatja
- 2. samm: väike ilmajaam Attiny85 -ga: vastuvõtja
- 3. samm: väike ilmajaam Attiny85/45 abil: ekraan
- 4. samm: väike ilmajaam Attiny85/45: võimalused/järeldused
- 5. samm: väike ilmajaam: antenn
- 6. samm: BMP180 lisamine
Video: Mini ilmajaam Attiny85 -ga: 6 sammu (piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:47
Hiljuti juhendatud Indigod0g kirjeldas väikest ilmajaama, mis töötab päris hästi, kasutades kahte Arduinot. Võib -olla ei taha kõik ohverdada 2 Arduinot, et saada niiskus ja temperatuur ning ma kommenteerisin, et sarnast funktsiooni peaks olema võimalik teha ka kahe Attiny85 seadmega. Ma arvan, et rääkida on lihtne, nii et panen parem oma raha sinna, kus mu suu on.
Tegelikult, kui ühendan kaks varasemat juhendit, kirjutasin:
2-juhtmeline LCD-liides Arduino või Attiny jaoks ning andmete vastuvõtmine ja saatmine Attiny85 vahel (Arduino IDE 1.06), siis on suurem osa tööst juba tehtud. Vaja on ainult tarkvara veidi kohandada.
Valisin kahejuhtmelise LCD -lahenduse, millel on vahetusregister, mitte I2C -LCD, sest Attiny -s on vahetusregistrit lihtsam rakendada kui I2C -bussi. Kuid… kui soovite näiteks lugeda BMP180 või BMP085 rõhuandurit, vajate selle jaoks I2C -d, nii et võite kasutada ka I2C LCD -d. TinyWireM on hea raamatukogu I2C jaoks Attiny'is (kuid see nõuab lisaruumi).
BOM Saatja: DHT11 Attiny85 10 k takisti 433MHz saatja moodul
Vastuvõtja Attiny85 10k takisti 433 MHz vastuvõtja moodul
Ekraan 74LS164 nihkeregister 1N4148 diood 2x1k takisti 1x1k muutuv takisti LCD -ekraan 2x16
1. samm: väike ilmajaam Attiny85 -ga: saatja
Saatja on Attiny85 väga põhikonfiguratsioon, millel on nullimisjoonel tõmmatav takisti. Saatemoodul on kinnitatud digitaalse tihvtiga „0” ja DHT11 andmeklemm kinnitatakse digitaalse tihvtiga 4. Ühendage antennina 17,2 cm juhe (palju parema antenni saamiseks vaadake 5. sammu). Tarkvara on järgmine:
// töötab Attinyga // RF433 = D0 pin 5
// DHT11 = D4 pin 3 // raamatukogud #include // Rob Tillaartilt #include dht DHT11; #define DHT11PIN 4 #define TX_PIN 0 // pin, kuhu teie saatja on ühendatud // muutujad float h = 0; ujuk t = 0; int edastus_t = 0; int edastus_h = 0; int edastusandmed = 0; void setup () {pinMode (1, INPUT); man.setupTransmit (TX_PIN, MAN_1200); } void loop () {int chk = DHT11.read11 (DHT11PIN); h = DHT11. niiskus; t = DHT11. temperatuur; // Ma tean, ma kasutan siin 3 täisarvulist muutujat // kus ma võiksin kasutada 1 //, kuid see on lihtsalt nii, et edastamist on lihtsam jälgida_h = 100* (int) h; edastama_t = (int) t; edastama_andmed = edastama_h+edastama_t; man.transmit (edastusandmed); viivitus (500); }
Tarkvara kasutab andmete saatmiseks Manchesteri koodi. See loeb DHT11 ja salvestab temperatuuri ja niiskuse kahe eraldi ujukina. Kuna Manchesteri kood ei saada ujukit, vaid täisarvu, on mul mitu võimalust: 1- jagage ujukid kaheks täisarvuks ja saatke need 2- saatke iga ujuk täisarvuna 3- saatke kaks ujukit ühe täisarvuna Valikuga 1 pean kombineerima täisarvud ujuvad vastuvõtjas uuesti ja pean tuvastama, milline täisarv on mis, muutes koodi pikaks. Valikuga 2 pean ikkagi kindlaks tegema, milline täisarv on niiskuse ja milline temperatuuri jaoks. Kui üks täisarv on edastamisel kadunud, ei saa ma üksi jada minna, seega peaksin saatma täisarvule lisatud identifikaatori. Valiku 3 korral saan saata ainult ühe täisarvu. Ilmselgelt muudab see näidud mõnevõrra ebatäpsemaks - 1 kraadi piires - ja temperatuuri alla nulli saata ei saa, kuid see on lihtsalt lihtne kood ja selle ümber on mitmeid viise. Praegu on see põhimõte. Nii et ma muudan ujukid täisarvudeks ja korrutan niiskuse 100 -ga. Seejärel lisan korrutatud niiskusele temperatuuri. Arvestades asjaolu, et niiskus ei ole kunagi 100% Maksimaalne arv, mille ma saan, on 9900. Arvestades asjaolu, et temperatuur ei ületa ka 100 kraadi, on maksimaalne arv 99, seega on kõrgeim number, mille ma saadan, 9999 ja seda on lihtne vastuvõtja poolel eraldada. minu arvutus, milles ma kasutan 3 täisarvu, on üleliigne, kuna seda saaks hõlpsasti teha ühe muutujaga. Tahtsin lihtsalt koodi hõlpsamini jälgida. Kood kompileeritakse nüüd järgmiselt:
Binaarjoonise suurus: 2, 836 baiti (maksimaalselt 8, 192 baiti), nii et see mahuks Attiny 45 või 85 -sse. See raamatukogu sobib ka DHT22 jaoks. Kasutan versiooni 1.08. Siiski võib Attiny85 -l olla probleeme teeki madalamate versioonidega DHT22 lugemisega. Mulle on kinnitatud, et 1.08 ja 1.14 - kuigi töötavad tavalise Arduinoga - on raskused DHT22 lugemisega Attiny85 -l. Kui soovite Attiny85 -l kasutada DHT22, kasutage selle teegi versiooni 1.20. See kõik on seotud ajastusega. Raamatukogu 1.20 versioonil on kiirem lugemine. (Aitäh selle kasutuskogemuse eest Jeroen)
2. samm: väike ilmajaam Attiny85 -ga: vastuvõtja
Jällegi kasutatakse Attiny85 põhikonfiguratsioonis, lähtestusnupp tõmmatakse kõrgele 10 k takistiga. Vastuvõtja moodul on kinnitatud digitaalse tihvti 1 külge (kiip 6 tihvt). LCD on kinnitatud digitaalsete tihvtide 0 ja 2 külge. Ühendage antennina 17,2 cm pikkune juhe. Kood on järgmine:
#kaasake
#include LiquidCrystal_SR lcd (0, 2, TWO_WIRE); #define RX_PIN 1 // = füüsiline pin 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 ("Niiske:"); lcd.print (m/100); lcd.setCursor (0, 1); lcd.print ("Temp"); lcd.print (m%100); }}
Kood on üsna lihtne: edastatud täisarv võetakse vastu ja salvestatakse muutujaga „m”. Niiskuse saamiseks jagatakse see 100 -ga ja temperatuur 100. Modulo 100 annab temperatuuri. Oletame, et saadud täisarv oli 33253325/100 = 333325 % 100 = 25 See kood kompileerib 3380 baiti ja seetõttu saab seda kasutada ainult koos atiny85 -ga, mitte 45 -ga
3. samm: väike ilmajaam Attiny85/45 abil: ekraan
Ekraani jaoks on kõige parem, kui ma viitan oma juhistele kahe juhtmega ekraanil. Lühidalt, tavaline 16x2 ekraan kasutab vahetusregistrit, nii et see saab töötada kahe digitaalse tihvtiga. Muidugi, kui eelistate kasutada I2C -valmidusega ekraani, st võimalik ka, kuid siis peate Attiny'is rakendama I2C protokolli. Tinywire protokoll suudab seda teha. Kuigi mõned allikad ütlevad, et see eeldab 1 Mhz kella, ei olnud mul (teises projektis) probleeme selle 8Mhz -ga kasutamisel. Igatahes ma lihtsalt ei viitsinud siin ja kasutasin vahetuste registrit.
4. samm: väike ilmajaam Attiny85/45: võimalused/järeldused
Nagu öeldud, tegin selle juhendatavaks, et näidata, et saab teha väikese ilmajaama kahe attiny85 -ga (isegi ühe attiny85+ 1 attiny45 -ga). See saadab ainult niiskust ja temperatuuri, kasutades DHT11. Kuid Attiny -l on kasutada 5 digitaalset tihvti, 6 isegi mõningate trikkidega. Seetõttu on võimalik andmeid saata rohkematelt anduritelt. Minu projektis- nagu näha ribalaual ja professionaalsel trükkplaadil (OSHPark) olevatel piltidel- saadan/võtan vastu andmeid DHT11-lt, LDR-ilt ja PIR-ilt, kasutades Piirangud attiny85 vastuvõtjana kasutamisel on andmete esitamine toretsevas stiilis. Kuna mälu on piiratud: sellised tekstid nagu „Temperatuur, niiskus, valgustase, objekt läheneb” täidavad väärtusliku mäluruumi üsna kiiresti. Sellegipoolest pole põhjust kasutada kahte Arduino -d lihtsalt temperatuuri ja niiskuse saatmiseks/vastuvõtmiseks. Lisaks on võimalik et saatja magama jääks ja ärkaks alles siis, et saata andmeid iga 10 minuti tagant ja seega toita neid nupurakust. Ilmselt ei saa saata mitte ainult temperatuuri või niiskuse andmeid, vaid võib saata ka hulga väikeseid saatjaid mulla niiskuse näitu või lisage anemomeeter või vihmamõõtur
5. samm: väike ilmajaam: antenn
Antenn on mis tahes 433Mhz seadistuse oluline osa. Olen katsetanud standardset 17,2 cm "varraste" antenni ja mul oli lühike flirt mähisantenniga. Tundus, et see töötab kõige paremini, mähisega antenn, mida on lihtne valmistada. Kujundus on pärit Ben Schuelerilt ja ilmus ilmselt ajakirjas "Elektor". Selle õhkjahutusega 433 MHz antenni kirjeldusega PDF -faili on lihtne jälgida. (Link kadus, vaata siit)
6. samm: BMP180 lisamine
Kas soovite lisada õhurõhu andurit nagu BMP180? vaadake minu teisi juhiseid selle kohta.
Soovitan:
Professionaalne ilmajaam ESP8266 ja ESP32 DIY abil: 9 sammu (piltidega)
Professionaalne ilmajaam, kasutades ESP8266 ja ESP32 isetegemist: LineaMeteoStazione on täielik ilmajaam, mida saab ühendada Sensirioni professionaalsete anduritega ja mõne Davise instrumendi komponendiga (vihmamõõtur, anemomeeter). Projekt on mõeldud DIY ilmajaamana, kuid nõuab lihtsalt
Fanair: teie toa ilmajaam: 6 sammu (piltidega)
Fanair: teie toa ilmajaam: Praeguse ilma teada saamiseks on lugematuid viise, kuid siis teate ainult väljas olevat ilma. Mis saab siis, kui soovite teada, milline ilm on teie majas, konkreetses toas? Seda ma üritan selle projektiga lahendada. Fanair kasutab mul
Lihtne ilmajaam ESP8266 abil: 6 sammu (piltidega)
Lihtne ilmajaam ESP8266 abil: selles juhendis jagan, kuidas kasutada ESP8266 -d selliste andmete saamiseks nagu temperatuur, rõhk, kliima jne. Ja YouTube'i andmeid, näiteks tellijaid & Vaatamiste koguarv. ja kuvada andmed jadamonitoril ning kuvada need LCD -ekraanil. Andmed on f
Hanging Geari ilmajaam: 7 sammu (piltidega)
Hanging Gear Weather Station: Selles juhendis näitan teile, kuidas ehitada oma rippuva varustusega ilmajaam, mis on valmistatud CNC laserlõigatud MDF-osadest. Sammumootor juhib iga käiku ja Arduino mõõdab temperatuuri ja niiskust DHT abil
NaTaLia ilmajaam: Arduino päikeseenergial töötav ilmajaam on õigesti tehtud: 8 sammu (piltidega)
NaTaLia ilmajaam: Arduino päikeseenergial töötav ilmajaam on õigesti tehtud: pärast 1 -aastast edukat tegutsemist kahes erinevas kohas jagan oma päikeseenergiaga töötavate ilmajaamade projektiplaane ja selgitan, kuidas see arenes süsteemiks, mis võib pika aja jooksul tõesti ellu jääda perioodid päikeseenergiast. Kui järgite