Sisukord:

Mini ilmajaam Attiny85 -ga: 6 sammu (piltidega)
Mini ilmajaam Attiny85 -ga: 6 sammu (piltidega)

Video: Mini ilmajaam Attiny85 -ga: 6 sammu (piltidega)

Video: Mini ilmajaam Attiny85 -ga: 6 sammu (piltidega)
Video: Digispark attiny 85 WEATHER STATION DHT 11 ssd1306 2024, Juuli
Anonim
Mini ilmajaam Attiny85 -ga
Mini ilmajaam Attiny85 -ga
Mini ilmajaam Attiny85 -ga
Mini ilmajaam Attiny85 -ga
Mini ilmajaam Attiny85 -ga
Mini ilmajaam Attiny85 -ga

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

Mini ilmajaam Attiny85 -ga: saatja
Mini ilmajaam Attiny85 -ga: saatja
Mini ilmajaam Attiny85 -ga: saatja
Mini ilmajaam Attiny85 -ga: saatja
Mini ilmajaam Attiny85 -ga: saatja
Mini ilmajaam Attiny85 -ga: saatja
Mini ilmajaam Attiny85 -ga: saatja
Mini 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

Mini ilmajaam Attiny85 -ga: vastuvõtja
Mini 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

Mini ilmajaam Attiny85/45: ekraan
Mini ilmajaam Attiny85/45: ekraan
Mini ilmajaam Attiny85/45: ekraan
Mini ilmajaam Attiny85/45: 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

Mini ilmajaam Attiny85/45: võimalused/järeldused
Mini ilmajaam Attiny85/45: võimalused/järeldused
Mini ilmajaam Attiny85/45: võimalused/järeldused
Mini ilmajaam Attiny85/45: võimalused/järeldused
Mini ilmajaam Attiny85/45: võimalused/järeldused
Mini 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

Mini ilmajaam: antenn
Mini 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

BMP180 lisamine
BMP180 lisamine

Kas soovite lisada õhurõhu andurit nagu BMP180? vaadake minu teisi juhiseid selle kohta.

Soovitan: