Innholdsfortegnelse:
- Trinn 1: Mini værstasjon med Attiny85: senderen
- Trinn 2: Mini værstasjon med Attiny85: mottakeren
- Trinn 3: Mini værstasjon med Attiny85/45: displayet
- Trinn 4: Mini værstasjon med Attiny85/45: muligheter/konklusjoner
- Trinn 5: Mini værstasjon: Antennen
- Trinn 6: Legge til en BMP180
Video: Mini værstasjon med Attiny85: 6 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
I en nylig instruerbar Indigod0g beskrev en mini værstasjon som fungerer ganske bra, ved hjelp av to Arduinos. Kanskje ikke alle ønsker å ofre 2 Arduinos for å få fuktighets- og temperaturavlesninger, og jeg kommenterte at det burde være mulig å gjøre en lignende funksjon med to Attiny85 -er. Jeg antar at det er enkelt å snakke, så jeg må sette pengene mine der munnen min er.
Faktisk, hvis jeg kombinerer to tidligere instrukser, skrev jeg:
2-tråds LCD-grensesnitt for Arduino eller Attiny og Motta og sende data mellom Attiny85 (Arduino IDE 1.06), da er det meste av arbeidet allerede utført. Trenger bare å tilpasse programvaren litt.
Jeg valgte en to -tråds lcd -løsning med et skiftregister, i stedet for en I2C LCD fordi skiftet på Attiny er lettere å implementere enn I2C -bussen. Men … hvis du for eksempel vil lese en BMP180 eller BMP085 trykksensor, trenger du I2C for det uansett, så du kan like godt bruke en I2C LCD da også. TinyWireM er et godt bibliotek for I2C på en Attiny (men det krever ekstra plass).
BOM Senderen: DHT11 Attiny85 10 k motstand 433MHz sendermodul
Mottakeren Attiny85 10k motstand 433 MHz mottakermodul
Displayet 74LS164 skiftregister 1N4148 diode 2x1k motstand 1x1k variabel motstand en LCD -skjerm 2x16
Trinn 1: Mini værstasjon med Attiny85: senderen
Senderen er en helt grunnleggende konfigurasjon av Attiny85 med en opptrekkmotstand på tilbakestillingslinjen. En sendermodul er festet til digital pin '0' og DHT11 -datapinnen festes til digital pin 4. Fest en ledning på 17,2 cm som antenne (for en mye bedre antenne, se trinn 5). Programvaren er som følger:
// vil fungere på Attiny // RF433 = D0 pin 5
// DHT11 = D4 pin 3 // biblioteker #include // From Rob Tillaart #include dht DHT11; #define DHT11PIN 4 #define TX_PIN 0 // pin hvor senderen er tilkoblet // variabler float h = 0; flyte t = 0; int transmit_t = 0; int transmit_h = 0; int transmit_data = 0; ugyldig oppsett () {pinMode (1, INPUT); man.setupTransmit (TX_PIN, MAN_1200); } void loop () {int chk = DHT11.read11 (DHT11PIN); h = DHT11. fuktighet; t = DHT11.temperatur; // Jeg vet, jeg bruker 3 heltallsvariabler her // hvor jeg kan bruke 1 // men det er bare så det er lettere å følge transmit_h = 100* (int) h; send_t = (int) t; transmit_data = transmit_h+transmit_t; man.transmit (transmit_data); forsinkelse (500); }
Programvaren bruker Manchester -kode for å sende dataene. Den leser DHT11 og lagrer temperatur og fuktighet i 2 separate flyter. Siden Manchester-koden ikke sender flyter, men et heltall, har jeg flere alternativer: 1- del flottørene i to heltall hver og send disse2- send hver flottør som et heltall3- send de to flyterne som ett heltall Med alternativ 1 må jeg kombinere heltallene flyter igjen i mottakeren, og jeg må identifisere hvilket heltall som er hva, noe som gjør koden langviket Med alternativ 2 må jeg fortsatt identifisere hvilket heltall som er for fuktighet og hvilket for temperatur. Jeg kan ikke gå etter sekvens alene hvis ett heltall går tapt i overføringen, så jeg må sende en identifikator knyttet til heltallet. Med alternativ 3 kan jeg sende bare ett heltall. Dette gjør tydeligvis avlesningene litt mindre nøyaktige - innen 1 grad - og man kan ikke sende under null temperaturer, men det er bare en enkel kode, og det er måter å omgå det på. For nå er det omtrent prinsippet. Så det jeg gjør er å gjøre flyterne til heltall og jeg multipliserer fuktigheten med 100. Deretter legger jeg til temperaturen til den multipliserte fuktigheten. Gitt at fuktigheten aldri vil være 100% maks nummer jeg får er 9900. Gitt det faktum at temperaturen heller ikke vil være over 100 grader, vil maks antall være 99, derfor er det høyeste nummeret jeg sender 9999 og det er lett å skille på mottakersiden. Selvfølgelig beregningen min der jeg bruker 3 heltall er overkill, da det enkelt kan gjøres med 1 variabel. Jeg ville bare gjøre koden lettere å følge. Koden kompileres nå som:
Binær skissestørrelse: 2, 836 byte (av et maksimum på 8, 192 byte) slik at det passer inn i en Attiny 45 eller 85 MERK dht.h -biblioteket jeg bruker er det fra Rob Tillaart. Det biblioteket er også egnet for en DHT22. Jeg bruker versjon 1.08. Attiny85 kan imidlertid ha problemer med å lese en DHT22 med lavere versjoner av biblioteket. Det har blitt bekreftet for meg at 1.08 og 1.14 - selv om de jobber med en vanlig Arduino - har problemer med å lese en DHT22 på Attiny85. Hvis du vil bruke en DHT22 på Attiny85, kan du bruke 1.20 -versjonen av dette biblioteket. Alt dette har med timing å gjøre. 1.20 -versjonen av biblioteket har en raskere lesing. (Takk for den brukeropplevelsen Jeroen)
Trinn 2: Mini værstasjon med Attiny85: mottakeren
Igjen brukes Attiny85 i en grunnleggende konfigurasjon med tilbakestillingspinnen trukket høyt med en 10 k motstand. Mottakermodulen er festet til digital pin 1 (pin 6 på brikken). LCD -skjermen er festet til digitale pinner 0 og to. Fest en ledning på 17,2 cm som antenne. Koden er som følger:
#inkludere
#include LiquidCrystal_SR lcd (0, 2, TWO_WIRE); #define RX_PIN 1 // = fysisk pin 6 ugyldig oppsett () {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 ("Fuktig:"); lcd.print (m/100); lcd.setCursor (0, 1); lcd.print ("Temp"); lcd.print (m%100); }}
Koden er ganske enkel: det overførte heltallet mottas og lagres i variabelen 'm'. Det divideres med 100 for å gi fuktigheten og moduloen på 100 gir temperaturen. Anta at det mottatte heltallet var 33253325/100 = 333325 % 100 = 25Denne koden kompileres som 3380 byte og kan derfor bare brukes med en attiny85, ikke med en 45
Trinn 3: Mini værstasjon med Attiny85/45: displayet
For displayet er det best at jeg refererer til instruksjonene mine på en totrådsskjerm. Kort sagt, en vanlig 16x2 skjerm bruker en shiftregister slik at den kan fungere med to digitale pinner. Selvfølgelig hvis du foretrekker å bruke en I2C -klar skjerm, det vil si mulig også, men da må du implementere en I2C -protokoll på Attiny. Tinywire -protokollen kan gjøre det. Selv om noen kilder sier at det forventer en 1 Mhz -klokke, hadde jeg ingen problemer (i et annet prosjekt) med å bruke den på 8Mhz. Uansett gadd jeg ikke her og brukte et skiftregister.
Trinn 4: Mini værstasjon med Attiny85/45: muligheter/konklusjoner
Som sagt, jeg gjorde dette instruerbart for å vise at man kan lage en miniværstasjon med to attiny85 (selv med en attiny85+ 1 attiny45). Den sender bare fuktighet og temperatur ved hjelp av en DHT11. Attiny har imidlertid 5 digitale pinner å bruke, 6 selv med litt lureri. Derfor er det mulig å sende data fra flere sensorer. I prosjektet mitt- som vist på bildene på stripboard og på en profesjonell PCB (OSHPark)- sender/mottar jeg data fra en DHT11, fra en LDR og fra en PIR, alt bruker to attiny85's Begrensningen i å bruke en attiny85 som mottaker er imidlertid presentasjonen av dataene i en prangende stil. Siden minnet er begrenset: Tekster som "Temperatur, fuktighet, lysnivå, motivet nærmer seg" vil fylle verdifull minneplass ganske raskt. Likevel er det ingen grunn til å bruke to Arduino bare for å sende/motta temperatur og fuktighet. Dessuten er det mulig for å få senderen til å sove og bare få den til å våkne for å sende data si hvert 10. minutt og dermed mate den fra en knappcelle. Tydeligvis kan ikke bare temperatur- eller fuktighetsdata sendes, men man kan også sende en rekke små sendere jordfuktighetsavlesninger også, eller legg til et vindmåler eller en regnmåler
Trinn 5: Mini værstasjon: Antennen
Antennen er en viktig del av ethvert 433Mhz -oppsett. Jeg har eksperimentert med standard 17,2 cm 'stang' -antenne og hatt en kort flørt med en spoleantenne. Det som så ut til å fungere best er en spoleladet antenne som er lett å lage. Designet er fra Ben Schueler og ble tilsynelatende publisert i magasinet Elektor. En PDF med beskrivelsen av denne 'luftkjølte 433 MHz -antennen' er lett å følge. (Lenken forsvant, sjekk her)
Trinn 6: Legge til en BMP180
Vil du legge til barometrisk trykksensor som BMP180? sjekk min andre instruerbare om det.
Anbefalt:
NaTaLia værstasjon: Arduino solcelledrevet værstasjon gjort den riktige måten: 8 trinn (med bilder)
NaTaLia værstasjon: Arduino solcelledrevet værstasjon gjort på riktig måte: Etter 1 års vellykket drift på 2 forskjellige steder deler jeg mine solcelledrevne værstasjonsprosjektplaner og forklarer hvordan det utviklet seg til et system som virkelig kan overleve over lang tid perioder fra solenergi. Hvis du følger
Komplett DIY Raspberry Pi værstasjon med programvare: 7 trinn (med bilder)
Komplett DIY Raspberry Pi værstasjon med programvare: I slutten av februar så jeg dette innlegget på Raspberry Pi -nettstedet. http://www.raspberrypi.org/school-weather-station-…De hadde opprettet Raspberry Pi værstasjoner for skoler. Jeg ville helt ha en! Men på det tidspunktet (og jeg tror fremdeles i skrivende stund
Værstasjon med Arduino, BME280 og display for å se trenden i løpet av de siste 1-2 dagene: 3 trinn (med bilder)
Værstasjon Med Arduino, BME280 og display for å se trenden i løpet av de siste 1-2 dagene: Hei! Her på instruksjonsbare værstasjoner har allerede blitt introdusert. De viser gjeldende lufttrykk, temperatur og fuktighet. Det de manglet så langt var en presentasjon av kurset i løpet av de siste 1-2 dagene. Denne prosessen vil ha en
Værstasjon med datalogging: 7 trinn (med bilder)
Værstasjon med datalogging: I denne instruksen vil jeg vise deg hvordan du lager værstasjonssystem selv. Alt du trenger er grunnleggende kunnskap innen elektronikk, programmering og litt tid. Dette prosjektet er fremdeles under utvikling. Dette er bare første del. Oppgraderinger blir
ESP32 WiFi værstasjon med en BME280 -sensor: 7 trinn (med bilder)
ESP32 WiFi værstasjon med en BME280 -sensor: Kjære venner, velkommen til en annen opplæring! I denne opplæringen skal vi bygge et WiFi -aktivert værstasjonsprosjekt! Vi skal bruke den nye, imponerende ESP32 -brikken for første gang sammen med en Nextion -skjerm. I denne videoen skal vi