Obsah:

Mini meteorologická stanice s Attiny85: 6 kroků (s obrázky)
Mini meteorologická stanice s Attiny85: 6 kroků (s obrázky)

Video: Mini meteorologická stanice s Attiny85: 6 kroků (s obrázky)

Video: Mini meteorologická stanice s Attiny85: 6 kroků (s obrázky)
Video: Wemos D1 mini meteorologická stanice 2024, Červenec
Anonim
Mini meteorologická stanice s Attiny85
Mini meteorologická stanice s Attiny85
Mini meteorologická stanice s Attiny85
Mini meteorologická stanice s Attiny85
Mini meteorologická stanice s Attiny85
Mini meteorologická stanice s Attiny85

V nedávné instruktivní Indigod0g popsal mini meteorologickou stanici, která funguje docela dobře, pomocí dvou Arduinos. Možná ne každý chce obětovat 2 Arduino, aby získal hodnoty vlhkosti a teploty, a já jsem poznamenal, že by mělo být možné dělat podobnou funkci se dvěma Attiny85. Myslím, že mluvit je snadné, takže jsem raději dal své peníze tam, kde mám pusu.

Ve skutečnosti, když zkombinuji dva dřívější instruktáže, napsal jsem:

2vodičové LCD rozhraní pro Arduino nebo Attiny a Přijímání a odesílání dat mezi Attiny85 (Arduino IDE 1.06), pak je většina práce již hotová. Stačí jen trochu přizpůsobit software.

Vybral jsem si pro dvouvodičové řešení LCD s posuvným registrem než I2C LCD, protože na Attiny je posuvný registr implementovatelnější než sběrnice I2C. Nicméně … pokud například chcete číst snímač tlaku BMP180 nebo BMP085, potřebujete k tomu stejně I2C, takže můžete také použít I2C LCD. TinyWireM je dobrá knihovna pro I2C na Attiny (ale vyžaduje více místa).

Kusovník Vysílač: modul vysílače DHT11 Attiny85 10 k odpor 433 MHz

Přijímač Attiny85 10k odporový modul 433 MHz přijímač

Posuvný registr displeje 74LS164 1N4148 dioda 2x1k odpor 1x1k variabilní odpor a LCD displej 2x16

Krok 1: Mini meteorologická stanice s Attiny85: vysílačem

Mini meteorologická stanice s Attiny85: vysílač
Mini meteorologická stanice s Attiny85: vysílač
Mini meteorologická stanice s Attiny85: vysílač
Mini meteorologická stanice s Attiny85: vysílač
Mini meteorologická stanice s Attiny85: vysílač
Mini meteorologická stanice s Attiny85: vysílač
Mini meteorologická stanice s Attiny85: vysílač
Mini meteorologická stanice s Attiny85: vysílač

Vysílač je velmi základní konfigurací Attiny85 s vytahovacím odporem na resetovací lince. Modul vysílače je připojen k digitálnímu pinu „0“a datový kolík DHT11 je připojen k digitálnímu pinu 4. Připojte anténu 17,2 cm jako anténu (mnohem lepší anténu viz krok 5). Software je následující:

// bude fungovat na Attiny // RF433 = D0 pin 5

// DHT11 = D4 pin 3 // knihovny #include // Od Rob Tillaart #include dht DHT11; #define DHT11PIN 4 #define TX_PIN 0 // pin, kde je připojen váš vysílač // proměnné float h = 0; float t = 0; int vysílání_t = 0; int vysílání_h = 0; int přenosová_data = 0; void setup () {pinMode (1, INPUT); man.setupTransmit (TX_PIN, MAN_1200); } void loop () {int chk = DHT11.read11 (DHT11PIN); h = DHT11. vlhkost; t = DHT11.teplota; // Vím, používám zde 3 celočíselné proměnné // kde bych mohl používat 1 //, ale to je jen proto, že je snazší sledovat transmit_h = 100* (int) h; transmit_t = (int) t; vysílací_data = vysílat_h+vysílat_t; man.transmit (data_přenosu); zpoždění (500); }

Software k odeslání dat používá Manchester kód. Čte DHT11 a ukládá teplotu a vlhkost do 2 samostatných plováků. Protože kód Manchester neposílá plováky, ale celé číslo, mám několik možností: 1- rozdělte plováky na dvě celá čísla a pošlete ty 2- odešlete každý plovák jako celé číslo 3- odešlete dva plováky jako jedno celé číslo S možností 1 potřebuji zkombinovat celá čísla do plováků znovu v přijímači a musím identifikovat, které celé číslo je co, takže kód je dlouhý. S možností 2 stále potřebuji identifikovat, které celé číslo je pro vlhkost a které pro teplotu. V případě ztráty celého čísla v přenosu nemohu postupovat sám, takže bych potřeboval poslat identifikátor připojený k celému číslu. S možností 3 mohu poslat pouze jedno celé číslo. Očividně to činí údaje o něco méně přesné - do 1 stupně - a nelze odesílat teploty pod nulou, ale je to jen jednoduchý kód a existují způsoby, jak toho dosáhnout. Prozatím je to jen o principu. Takže to, co dělám, je, že plováky změním na celá čísla a vlhkost vynásobím 100. Potom přidám teplotu k násobené vlhkosti. Vzhledem k tomu, že vlhkost nikdy nebude 100%, maximální číslo, které dostanu, je 9900. Vzhledem k tomu, že teplota také nebude vyšší než 100 stupňů, maximální číslo bude 99, proto nejvyšší číslo, které pošlu, je 9999 a to se dá snadno oddělit na straně přijímače. můj výpočet, ve kterém používám 3 celá čísla, je přehnaný, protože to lze snadno provést pomocí 1 proměnné. Chtěl jsem jen usnadnit sledování kódu. Kód se nyní kompiluje jako:

Velikost binárního náčrtu: 2 836 bajtů (maximálně 8 192 bajtů), takže se vejde do knihovny Attiny 45 nebo 85 UPOZORNĚNÍ, kterou používám knihovnu dht.h od Roba Tillaarta. Tato knihovna je také vhodná pro DHT22. Používám verzi 1.08. Attiny85 však může mít problémy se čtením DHT22 s nižšími verzemi knihovny. Bylo mi potvrzeno, že 1.08 a 1.14 - přestože pracují na běžném Arduinu - mají potíže se čtením DHT22 na Attiny85. Pokud chcete použít DHT22 na Attiny85, použijte verzi této knihovny 1.20. Všechno to má co do činění s načasováním. Verze knihovny 1.20 má rychlejší čtení. (Díky za tuto uživatelskou zkušenost, Jeroen)

Krok 2: Mini meteorologická stanice s Attiny85: přijímač

Mini meteorologická stanice s Attiny85: přijímač
Mini meteorologická stanice s Attiny85: přijímač

Attiny85 se opět používá v základní konfiguraci s vytaženým pinem Reset s odporem 10 k. Modul přijímače je připojen k digitálnímu kolíku 1 (kolík 6 na čipu). LCD je připojen k digitálním pinům 0 a dvěma. Připojte anténu 17,2 cm jako anténu. Kód je následující:

#zahrnout

#include LiquidCrystal_SR lcd (0, 2, TWO_WIRE); #define RX_PIN 1 // = fyzický 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 ("Vlhký:"); lcd.print (m/100); lcd.setCursor (0, 1); lcd.print ("Temp"); lcd.print (m%100); }}

Kód je poměrně jednoduchý: přenesené celé číslo je přijato a uloženo v proměnné 'm'. Děleno 100 je udávána vlhkost a modulo 100 udává teplotu. Předpokládejme tedy, že celé přijaté číslo bylo 33253325/100 = 333325 % 100 = 25 Tento kód je kompilován jako 3380 bajtů, a proto jej lze použít pouze s attiny85, nikoli s 45

Krok 3: Mini meteorologická stanice s Attiny85/45: displej

Mini meteorologická stanice s Attiny85/45: displej
Mini meteorologická stanice s Attiny85/45: displej
Mini meteorologická stanice s Attiny85/45: displej
Mini meteorologická stanice s Attiny85/45: displej

Pro displej je nejlepší, když se obrátím na můj instruktáž na dvouvodičovém displeji. Stručně řečeno, běžný displej 16x2 používá posuvný registr, takže může pracovat se dvěma digitálními piny. Samozřejmě, pokud dáváte přednost použití displeje připraveného pro I2C, tj. možné také, ale pak musíte na Attiny implementovat protokol I2C. Protokol Tinywire to dokáže. Ačkoli některé zdroje uvádějí, že to očekává hodiny 1 Mhz, neměl jsem potíže (v jiném projektu) použít to na 8Mhz

Krok 4: Mini meteorologická stanice s Attiny85/45: Možnosti/závěry

Mini meteorologická stanice s Attiny85/45: Možnosti/závěry
Mini meteorologická stanice s Attiny85/45: Možnosti/závěry
Mini meteorologická stanice s Attiny85/45: Možnosti/závěry
Mini meteorologická stanice s Attiny85/45: Možnosti/závěry
Mini meteorologická stanice s Attiny85/45: Možnosti/závěry
Mini meteorologická stanice s Attiny85/45: Možnosti/závěry

Jak již bylo řečeno, vytvořil jsem tento instruktáž, abych ukázal, že lze vytvořit mini meteorologickou stanici se dvěma Attiny85 (dokonce s jedním Attiny85+ 1 Attiny45). Odesílá pouze vlhkost a teplotu pomocí DHT11. Attiny má však 5 digitálních pinů, které lze použít, 6 dokonce s nějakým podvodem. Proto je možné odesílat data z více senzorů. V mém projektu- jak je vidět na obrázcích na stripboardu a na profesionální PCB (OSHPark)- odesílám/přijímám data z DHT11, z LDR a z PIR, vše pomocí dva attiny85's Omezení v používání attiny85 jako přijímače je však prezentace dat v okázalém stylu. Jelikož je paměť omezená: Texty jako „Teplota, Vlhkost, úroveň světla, blížící se téma“zaplní cenný paměťový prostor poměrně rychle. Není však důvod používat dvě zařízení Arduino pouze k odesílání/přijímání teploty a vlhkosti. Navíc je možné nechat vysílač usnout a nechat ho probudit, aby odesílal data, řekněme každých 10 minut, a tak je napájel z knoflíkové buňky. Očividně lze odesílat nejen data o teplotě nebo vlhkosti, ale lze odeslat řadu malých vysílačů odečty vlhkosti půdy také, nebo přidejte anemometr nebo dešťový měřič

Krok 5: Mini meteorologická stanice: anténa

Mini meteorologická stanice: anténa
Mini meteorologická stanice: anténa

Anténa je důležitou součástí jakéhokoli nastavení 433 MHz. Experimentoval jsem se standardní 17,2 cm „tyčovou“anténou a krátce jsem flirtoval s cívkovou anténou. Zdálo se, že nejlépe funguje anténa s cívkou a snadno se vyrábí. Návrh pochází od Bena Schuelera a zjevně byl publikován v časopise „Elektor“. PDF s popisem této „vzduchem chlazené antény 433 MHz“lze snadno sledovat. (Odkaz zmizel, zkontrolujte zde)

Krok 6: Přidání BMP180

Přidání BMP180
Přidání BMP180

Chcete přidat snímač barometrického tlaku jako BMP180? podívejte se na můj další návod k tomu.

Doporučuje: