Værstasjon fra en datamaskin. DIY desktop værstasjon på esp8266 med wifi-støtte

Jeg presenterer et annet prosjekt basert på AVR Atmega8 mikrokontroller. Denne gangen skal vi bygge en innendørs værstasjon. Enheten bruker to sensorer - DHT11 og BMP180. Vi vil bruke den første som en luftfuktighetsmåler, og den andre som en atmosfærisk trykkmåler, og også, siden den har en mer nøyaktig temperatursensor, som et termometer for å måle temperaturen i rommet. Som et resultat kan du ved å bruke denne ordningen overvåke de viktigste værparametrene, så å si. Hvis du legger til hastighets- og retningssensorer luftstrøm, Det dette diagrammet kan omkvalifiseres som utendørs værstasjon. Nå vil vi imidlertid bare vurdere innendørsalternativet.

Enhetsdiagram:

Som du kan se ovenfor, er hjertet av kretsen Atmega8-mikrokontrolleren. Denne kontrolleren kan brukes i hvilken som helst pakke - DIP-28 eller TQFP-32, det spiller ingen rolle, bare dine egne preferanser eller egenskapene til den produserte trykt kretskort. Motstand R3, som trekker opp strømforsyningen positivt til pinne PC6, forhindrer spontan omstart av mikrokontrolleren i tilfelle utilsiktet forstyrrelse av kretsen. Deretter brukes en flytende krystallskjerm med to linjer med seksten tegn hver - SC1602 - som en indikator på de målte parametrene. Denne LCD-skjermen er laget på grunnlag av HD44780-kontrolleren, så denne modellen kan erstattes med en annen på samme kontroller eller kan være kompatibel med den. Bakgrunnsbelysningen i denne versjonen av kretsen på LCD-skjermen er organisert gjennom terminalene "A" og "K" (det vil si anoden og katoden til bakgrunnsbelysningen - skjermen har ekstra terminaler for tilkobling av bakgrunnsbelysningen). Imidlertid vil det ikke være riktig å koble strøm til disse pinnene, du må koble til 5 volt gjennom en strømbegrensende motstand for ikke å brenne ut bakgrunnsbelysningen. I følge diagrammet er dette motstanden R1, verdien er 22 ohm, jo ​​høyere verdien er, jo mindre sterkt vil skjermen bli opplyst. Jeg anbefaler ikke å bruke en vurdering på mindre enn 22 Ohm, da det kan være fare for å skade skjermens bakgrunnsbelysning ved langvarig bruk.

Hele kretsen drives av en enkel kraftmodul på en krafttransformator. Vekselspenningen utjevnes av fire 1N4007 dioder VD1 - VD4, krusningene jevnes ut av kondensatorene C1 og C2. Verdien av kondensator C2 kan økes til 1000 - 4700 µF. Fire likeretterdioder kan erstattes med én diodebro. Transformator brukt merkeBV EI 382 1189 - konverterer 220 volt AC til 9 volt AC. Kraften til transformatoren er 4,5 W, som er ganske nok og med litt reserve. En slik transformator kan erstattes med hvilken som helst annen krafttransformator, passer for deg. Eller bytt ut denne strømmodulen til kretsen med pulskilde spenning, kan du sette sammen en flyback-omformerkrets eller bruke en ferdiglaget strømforsyning fra en telefon, for eksempel - alt er et spørsmål om smak og behov. Den likerettede spenningen fra transformatoren er stabilisert på L7805 lineær stabilisatorbrikke, kan den erstattes med en innenlandsk analog av den fem-volts lineære stabilisatoren KR142EN5A, eller du kan bruke en annen spenningsstabilisatorbrikke i samsvar med tilkoblingen i kretsen (for eksempel LM317 eller byttestabilisatorer LM2576, LM2596, MC34063, og så på). Deretter stabiliseres 5 volt av en annen mikrokrets - AMS1117 i en versjon som gir en utgang på 3,3 volt. Denne spenningen brukes til å drive BMP180 atmosfærisk trykksensor i henhold til dokumentasjonen. Spenningsstabilisatoren AMS1117 kan også erstattes med ADJ-versjonen (AMS1117ADJ) - det vil si en justerbar versjon, du må stille inn den nødvendige spenningen med dette valget ved hjelp av to motstander koblet til mikrokretsen i samsvar med databladet. Det mest økonomiske alternativet for å erstatte denne stabilisatorbrikken ville være å erstatte den med en zenerdiode for den nødvendige spenningen (parametrisk stabilisator på en zenerdiode). Verdiene til kondensatorer i kretsene til skan varieres innenfor vide grenser innenfor en gitt størrelsesorden.

Som nevnt ovenfor ble DHT11 og BMP180 brukt som sensorer:

DHT11 brukes i kretsen bare som en luftfuktighetssensor sensoren overfører data til kontrolleren gjennom den andre pinnen, koblet med motstand R8, til den positive strømforsyningen. Verdien på denne motstanden kan varieres opp til 10 kOhm. Bildet bruker to 2,7 kOhm motstander koblet i serie. Pinne 3 på sensoren brukes ikke i det hele tatt. Pinne 1 og 4 brukes til å koble til strøm. DHT11-sensoren ble valgt i henhold til det optimale forholdet pris/funksjonalitet - for romforhold mest det beste alternativet, for utendørs bruk ville vært bedre egnet DHT21 i et hus mer egnet for utendørs bruk.

BMP180-sensoren brukes både som termometer og som atmosfærisk trykksensor. Den er valgt for temperaturmåling fordi den i motsetning til DHT11 måler temperatur miljø med en nøyaktighet på 0,1 grader. BMP180 krever en 3,3 volt strømforsyning, mens mikrokontrolleren drives av 5 volt. Det er for å drive denne sensoren at den ekstra VR2-stabilisatoren på AMS1117 brukes. For pålitelig dataoverføring fra sensoren til kontrolleren må du også bli enige om nivåene til I2C-overføringsprotokollen som brukes. Til dette formålet brukes PCA9517 nivåtilpasningsbrikken fra NXP. Motstander R4 - R7 er nødvendige for driften av I2C-grensesnittene til mikrokretsene. Med deres hjelp dannes logiske null- og ett-signaler ved pinnene til mikrokretser.

Pull-up-motstander holder logikk 1 på I2C-datalinjene til enhver tid. I løpet av den logiske nullperioden faller mikrokretsen spenningen skapt av pull-up-motstanden til bakken, og følgelig blir spenningen på linjen et logisk nullnivå. Verdiene til disse motstandene bør ikke være for små, ellers kan mikrokretsen eller sensoren ikke takle linjen som faller til null. Det er heller ikke tilrådelig å sette veldig store verdier slik at det logiske potensialet settes pålitelig på I2C-datalinjene.

Bildet ovenfor viser et diagram over driften av I2C-grensesnittet til BMP180 atmosfærisk trykksensor.

Rangeringer kan variere fra 2,2 kOhm til 10 kOhm. Ved montering av kretsen ble det brukt en kinesisk modul basert på BMP180-sensoren. En slik modul inneholder alt som er nødvendig for å jobbe med sensoren - en 3,3-volts spenningsstabilisator, kondensatorer som er nødvendige for å koble til sensoren og stabilisatoren, samt pull-up motstander (pull-up til strømforsyningen positiv) som er nødvendig for å jobbe via I2C .

Kretsen gir også en tilbakestillingsknapp for mikrokontrolleren koblet til PC6 - tilbakestillingspinnen, som lukker denne pinnen til jord når en tilbakestilling er nødvendig. Alle konstant motstandsmotstander i kretsen brukes med en effekt på 0,25 W eller kan brukes i SMD-versjonen av størrelse 1206. Dessuten kan kondensatorer med en kapasitet på 100 nF brukes i SMD-størrelse 0805 eller 1206.

Enheten, satt sammen i henhold til tradisjonen på et prototype kretskort for Atmega8-mikrokontrolleren på bildet nedenfor:

For å programmere Atmega8-mikrokontrolleren for denne enheten, må du kjenne til konfigurasjonen av sikringsbitene:

Mikrokontrolleren opererer fra intern generator ved 8 MHz. For programmering ble en programmerer blinket i AVR doper (STK500) brukt.

Artikkelen inkluderer fastvare for en mikrokontroller for en innendørs værstasjon, dokumentasjon for BMP180 atmosfærisk trykksensor, kildekode for mikrokontrollerens fastvare, samt kort video, som demonstrerer funksjonaliteten til kretsen (en endring i avlesningene på skjermen er forårsaket av en våt klut som dekker fuktighetssensoren og berører trykk- og temperatursensoren med en finger).

Liste over radioelementer

Betegnelse Type Valør Mengde MerkButikkNotisblokken min
IC1 MK AVR 8-bit

ATmega8

1 Til notisblokk
IC2 I2C-grensesnitt IC

PCA9517

1 Til notisblokk
IC3 Atmosfærisk trykksensorBMP1801 Til notisblokk
IC4 temperatur sensor

DHT11

1 Til notisblokk
VR1 Lineær regulator

L7805AB

1 Til notisblokk
VR2 Lineær regulator

AMS1117-3.3

1 Til notisblokk
VD1-VD4 Likeretterdiode

1N4007

4 Til notisblokk
C1, C3-C5, C7, C8 Kondensator100 nF6 Til notisblokk
C2, C6, C9 Elektrolytisk kondensator220 µF3 Til notisblokk
R1 Motstand

22 Ohm

1 Til notisblokk
R3-R7 Motstand

10 kOhm

5 Til notisblokk
R2 Trimmermotstand10 kOhm1 3296W-1-103LF

Jeg ønsket å ha min egen værstasjon, som overfører målinger fra sensorer til et offentlig overvåkingskart (søkt på Google på 5 sekunder). Det viste seg at det ikke er så vanskelig som det ser ut til. La oss se på hva som er gjort.

For denne handlingen tok jeg en Arduino Uno og en Ethernet Shield w5100 for den. Alt dette ble bestilt fra Kina på Aliexpress.

Jeg bestilte også sensorer der: DHT22, DHT11, DS18B20, BMP280 (gass- og røyksensorer er også planlagt...)

Etter å ha søkt fora, Google, Yandex, fant jeg godt alternativ skisse - https://student-proger.ru/2014/11/meteostanciya-2-1/

Der, i kommentarfeltet, la en person ut en ferdig skisse med lys- og gasssensorer. Jeg tok dem som grunnlag.

I disse skissene var det ingen støtte for den 280. trykksensoren, vi snakket med forfatteren, han erstattet 180 med 280. Alt fungerte perfekt (takk til ham for dette)

Nedenfor er et eksempel på den endelige skissen som jeg kom opp med.

For øyeblikket har jeg koblet til sensorer:
DHT22 - 1 stk.
DHT11 - 1 stk.
BMP280 - 1 stk.
DS18B20 - 2 stk.

MERK FØLGENDE! Før du laster opp skissen, ikke glem å endre MAC-adressen til enheten for ikke å forstyrre andre (ta for eksempel Mac-adressen til mobiltelefon og endre de siste bokstavene/tallene i den, som ikke "forstyrret" ditt lokale nettverk!

Omtrentlig koblingsskjema (bildet hentet fra denne skissen på Internett):

Av tekniske årsaker kan jeg ikke legge ut skissen direkte her. Jeg la den i arkivet. Linken til den er på linjen over.

Som du kan se, er det avlesninger og de fungerer som de skal, for eksempel vil jeg legge ut et par skjermbilder fra sensorene mine:

Ser igjennom ulike prosjekter værstasjoner, la jeg merke til en trend. Dette er enten en temperatur- og fuktighetssensor, som oftest alles favoritt kinesiske DHT-11 eller DHT-22, som de legger til enten en lyssensor (Værstasjon på Arduino med datavisualisering) eller en trykksensor (Ethernet værstasjon), eller en fancy en kjøpt for mange hundre dollar (automatisk værstasjon på dacha)

Siden for meg personlig er en værstasjon uten å måle vindens retning og hastighet ikke en værstasjon, og jeg ikke er klar til å bruke rundt 700 USD på i utgangspunktet et leketøy, ble det besluttet å lage noe som ligner på "dyre og sofistikert", men til en lav pris.

Elektronikk


Nå om å måle vindretningen. Det var mange alternativer, fra optiske kodere - fabrikklagde (dyre) eller hjemmelagde i form av flere par lysdioder og fotodioder, og en disk med grå kode (kompleks og mange komponenter), til en magnet og 4-8 sivbrytere (for enkle og unøyaktige). Som et resultat falt valget på AS5040 - en magnetisk koder. Siden spesiell nøyaktighet ikke er nødvendig, kobles den analoge utgangen til koderen til ADC-en til mikrokontrolleren.

Mikrokontroller - PIC16F88. Utgang - RS485 internt nettverk smarthus, som denne artikkelserien handler om. Hele den elektroniske delen er satt sammen på tre brett.

Det er alt med elektronikken, ingen nyanser, ingenting interessant, alt er i henhold til databladene. La oss gå videre til mekanikk.

Mekanikk

Dessverre er det ikke mulig å skrive ut et etui på en 3D-printer, og nesten alle fabrikkkofferter har problemer med vanntetthet. I tillegg er lagre og alt annet rotasjonslegemer, noe som betyr at et rundt hus vil være det mest logiske valget. Jeg måtte rette oppmerksomheten mot andre områder - til vannforsyning. Huset er en "32" kobling for kloakk, og to rør for plassering av lagerenheter i dem. To plugger ble maskinert av messing, som to 626-lagre ble presset inn i.

Magneter... Nesten hvilken som helst magnet for en hastighetssensor vil gjøre det, men med en retningssensor var det vanskeligere. Han trenger en rund magnet med magnetisering fra kant til kant

Mens hoveddelen av de som selger har forskjellige stolper på forskjellige sider.

Men det viste seg at de nødvendige magnetene er plassert på spindlene til CD/DVD-drivmotorene.

I sammensatt form lagerenheter se slik ut

Etter produksjon og montering av platene tar vindhastighets- og retningssensorene sin endelige form

Siden værstasjonen fortsatt er laget av skrapmaterialer, skjærer vi opp tennisballer til løpehjulet, og vi lager også en værvinge av det vi kan få tak i. Vi maler det radikalt svart, og det blir slik.

Som regnsensor bruker vi også en halv tennisball, der to kontakter er plassert mellom to lag med geotekstil

Vi monterer, kobler og skruer den høyere

Grensesnitt

Som jeg allerede har fortalt deg (Et annet smart hjem, i tre deler. Del tre, brukergrensesnitt) er det to typer grensesnitt. Den første visningen, der nesten alle dataene fra enheten vises på skjermen, ser slik ut

Gjeldende temperatur, minimum, maksimum, endringsretning. Trykket er det samme. Luftfuktighet. Vind - retning og vindrose. Tallene trengs mer for feilsøking de viser hvor lang værvingen var i hvilken sektor. Vindhastighet, tid, lyssensoravlesninger (uten kalibrering, hva ADC målte) og regnsensor. All data og prosessering utføres i mikrokontrolleren til værstasjonen.

Den andre typen grensesnitt er widget-basert. Det er mindre data her: temperatur, fuktighet, trykk, vindhastighet og retning

Og hvor ville vi vært uten Android Wear – på klokken?

På grunn av det faktum at alle kontrollører en gang i minuttet blir pollet og registrert i databasen, er alle værdata tilgjengelige for analyse eller visning i form av grafer

Du vil trenge

  • - Arduino-brett eller tilsvarende;
  • - temperatur- og fuktighetssensor DHT11;
  • - trykksensor BMP085;
  • - sensor karbondioksid MQ135;
  • - LCD-skjerm 1602;
  • - potensiometer 10 kOhm;
  • - bolig for værstasjonen;
  • - et stykke folieglassfiber;
  • - skruer for å feste komponenter;
  • - datamaskin;
  • - tilkoblingsledninger;
  • - strømforsyningskontakt;
  • - loddebolt.

Bruksanvisning

Først må du velge en passende sak. Alle komponentene til den fremtidige innendørs værstasjonen skal passe der. Slike kofferter selges i mange radioelektronikkbutikker. Eller bruk en annen sak du kan finne.
Finn ut hvordan alle komponentene skal plasseres inne. Klipp ut et vindu for å feste LCD-skjermen hvis du ikke har en. Hvis du plasserer en karbondioksidsensor inni, som blir ganske varm, plasser den på motsatt side av andre sensorer eller fjern den. Sørg for et hull for strømkontakten.

Noen få ord om komponentene som brukes.
1602 LCD-skjermen bruker 6 Arduino-pinner + 4 for strøm (bakgrunnsbelysning og karaktersynthesizer).
DHT11 temperatur- og fuktighetssensor kobles til en hvilken som helst digital pinne. For å lese verdiene bruker vi DHT11.rar-biblioteket, som for eksempel kan lastes ned her: https://yadi.sk/d/1LiFmQWITGPAY
BMP085-trykksensoren er koblet via I2C-grensesnittet til to Arduino-pinner: SDA - til analog pinne A4 og SCL - til analog pinne A5. Vær oppmerksom på at +3,3 V leveres til sensoren for å drive den.
MQ135 karbondioksidsensor kobles til én analog pinne.
For å vurdere værsituasjonen er det i prinsippet nok å ha data om temperatur, fuktighet og atmosfærisk trykk, og en karbondioksidsensor er valgfritt.
Men ved å bruke alle 3 sensorene, vil vi bruke 7 digitale og 3 analoge Arduino-pinner. Vel, mat, selvfølgelig.

Værstasjonsdiagrammet er vist på figuren. Alt er klart her.

La oss skrive en skisse for Arduino. Teksten til programmet, på grunn av dens betydelige størrelse, er gitt som en lenke i vedlegget til artikkelen i delen "Kilder". All kode er utstyrt med detaljerte og tydelige kommentarer.
La oss laste skissen inn i minnet til Arduino-kortkontrolleren.

Vi vil lage et trykt kretskort for å plassere komponentene inne i saken - dette er den mest praktiske løsningen for å arrangere og koble til sensorer. For å lage et kretskort hjemme bruker jeg "laser-stryking" -teknologi (vi beskrev det i detalj i tidligere artikler) og etsing ved hjelp av sitronsyre. Vi vil sørge for plasser på brettet for hoppere ("jumpers") for å kunne deaktivere sensorene. Dette vil være nyttig hvis du trenger å omprogrammere mikrokontrolleren når du vil endre programmet.
Ved hjelp av lodding vil vi installere trykk- og gasssensorer.
For å installere Arduino Nano-kortet er det praktisk å bruke spesielle adaptere eller stikkontakter med en pitch på 2,54. Men i mangel av disse delene og på grunn av å spare plass inne i dekselet, vil jeg også installere Arduino ved å lodde.
Temperatursensoren vil være plassert i en viss avstand fra brettet og vil være termisk isolert fra det indre av værstasjonen ved hjelp av en spesiell isolerende pakning.
Vi vil sørge for steder for tilkobling av ekstern strøm til vårt hjemmelagde brett. Jeg skal bruke en vanlig 5V-lader fra en gammel ødelagt ruter. Pluss 5 volt fra lader vil bli levert til Vin-pinnen på Arduino-brettet.
LCD-skjermen skrus direkte til dekselet, foran. Den kobles til ved hjelp av ledninger med hurtigkoblinger av Dupont-typen.



«Så, la oss bli enige med en gang: du kommer ikke til å lage en film for Hollywood. Selv i Eventyrland er ikke mer enn fem prosent av alle manus godkjent, og bare én prosent går i produksjon... Så i stedet for alt dette, skal du lage ditt eget Hollywood.»
Ed Gaskell "Skyter digital kino, eller Hollywood hjemme"

Forord

Hva, en annen værstasjon på Arduino?! Ja, en annen og, noe sier meg, ikke den siste i tingenes internett.


Akkurat som hver programmerer er pålagt å skrive et "Hello World!"-program, så må alle Arduino-utviklere ha erfaring med å bygge en enkel eller ikke så enkel værstasjon.
Et betydelig antall allerede opprettede værstasjonsprosjekter er beskrevet på Internett. Leseren kan velge hvilken som helst av dem for implementering. Jeg vil ikke lyve, jeg studerte nøye om et dusin lignende prosjekter og en haug med relaterte. Derfor kan det ikke sies at jeg skapte alt fra bunnen av, selvfølgelig "stod jeg på skuldrene til kjemper."


Jeg vil si med en gang at planene mine ikke inkluderte bruk av tredjepartstjenester for lagring og visning av data. Jeg ønsket personlig å berøre og forstå hvordan det hele fungerer fra innsiden fra begynnelse til slutt, fra A til Å.


Så for de som raskt vil sette sammen noe ut av ingenting, er denne artikkelserien mest sannsynlig ikke egnet. Det er lettere å gå og kjøpe et ferdig byggesett med monteringsanvisning. Mikroelektronikkfagfolk har absolutt ingenting å gjøre her, kanskje le og huske seg selv i begynnelsen av reisen.
Men for de som virkelig vil forstå, tror jeg de vil like det. Kanskje vil materialet være nyttig som læremiddel.



Dette prosjektet ble implementert tilbake i 2016, men jeg håper det fortsatt er aktuelt.

Teknologi sett

Vi skal studere og jobbe med enkle og komplekse ting:

  • temperatur- og fuktighetssensorer type DHT22, DHT11
  • barometertrykksensor type BMP180
  • WiFi-modul ESP8266
  • radiomodul type nRF24 2,4 GHz
  • familie av Arduino Pro Mini, Arduino Mega
  • solcellebatteri og batterier
  • programmeringsspråket C/C++
  • PHP programmeringsspråk
  • MySQL-databasestyringssystem
  • Java-programmeringsspråk og Android-rammeverk (oppretter en applikasjon for Adnroid for å vise værdata på en smarttelefon).

Noen av emnene som er oppført er ikke verdt en jævla, men noen kan studeres i årevis. Derfor vil vi berøre komplekse ting kun i den delen som er direkte relatert til dette prosjektet, slik at du forstår hvordan det hele fungerer.


Men vi starter helt fra begynnelsen Ikke sant. Nemlig fra beskrivelsen og utformingen av den fremtidige enheten "på papir" slik at hver murstein til slutt faller på plass.

Prototyping

Som Wikipedia korrekt forteller oss, prototyping er en rask grovimplementering av et fungerende system. Som, ja, ikke vil fungere helt ineffektivt og med noen feil, men vil gi en idé om håndverket bør utvikles til et industrielt design. Prototyping-prosessen trenger ikke å være lang. Prototypingstadiet etterfølges av systemanalyse og foredling.


Men dette er i en bransje hvor arbeidere er ansatt på heltid.


Alle som nagler kjæledyrprosjektet sitt for "tingenes internett" om kveldene, må være klar over at de lager akkurat en prototype, et halvfabrikat. Det er veldig langt fra nivået til et normalt industriprodukt. Derfor Våre amatørhåndverk bør ikke betros noen kritiske områder for livsstøtte og håper at de ikke vil svikte oss.


Et industriprodukt er bygget på en industriell elementbase og går deretter gjennom mange flere stadier, inkludert feilsøking, testing og vedlikehold, før det blir en bestselger.


Så, i stedet for alt dette slitet, vil vi lage vårt eget leketøy, men ikke et enkelt. Med elementer av teknisk kreativitet, begynnelsen av programmering og kunnskap (i ferd med å skape) om mange andre relaterte ting.


Selvfølgelig vil elektroniske ingeniører ha det vanskelig på programmeringsstadiet, og programmerere vil måtte jobbe hardt med kretsdesign, men forfatteren vil prøve å presentere alt så tilgjengelig som mulig og tydelig beskrive hvorfor visse løsninger ble brukt.

Krav

Vanligvis hoppes dette trinnet over. Bestemmer seg for å gjøre noe sånt akkurat nå, og så blir små detaljer tydelige som setter hele prosjektet i en blindvei eller til og med gjør det overveldende. Alle våre ønsker må skrives ned, jeg bruker Google Drive til dette, det er tilgjengelig fra PC og mobilenhet.


Så værstasjonen vår bør:

  • måle temperatur og luftfuktighet ute
  • måle temperatur og luftfuktighet i huset
  • måle atmosfærisk trykk
  • vise de angitte verdiene på skjermen
  • overføre data til en server på Internett, hvor dataene vil bli lagret i en database og vist på en nettside, eller brukt i en mobilapplikasjon.

Sensorene som brukes er de enkleste og billigste. For eksempel når jeg ser fremover vil jeg si at DHT22 måler temperaturen ganske nøyaktig, men med fuktighet er den litt unøyaktig. Men igjen, jeg gjentar, dette spiller ingen rolle, siden dette er en prototype, og en spredning på 5% fuktighet vil ikke påvirke noe viktig i livene våre.


Systemarkitektur, maskinvare og programvare skal tillate ytterligere utvidelse av systemet for å legge til nye sensorer og nye muligheter.

Jern. Komponentvalg

Dette er den viktigste delen, og ikke lodding eller programmering i det hele tatt. Etter å ha bestemt kravene til systemet, er det nødvendig å bestemme nøyaktig hvordan de skal implementeres.


Det er her det er én nyanse. For å velge komponenter må du kjenne deres evner godt, du må kjenne til selve teknologiene. Det vil si at her må du med andre ord være langt fra en nybegynner elektronikkingeniør og programmerer. Så hvorfor nå bruke et par år på å studere hele spekteret av mulige enheter?


Ond sirkel? Men onde sirkler eksisterer med det formål å bryte dem.


Det er en utgang. Du kan ganske enkelt ta og gjenta noen andres prosjekt. Jeg har studert eksisterende værstasjonsprosjekter og håper jeg har tatt et steg videre.


Så. Arkitekturen til værstasjonen er basert på Arduino. Fordi Arduino har en liten inngangsbarriere, og jeg har allerede taklet dette. Da er det lettere å velge.


Det ble umiddelbart klart at værstasjonen ville inkludere en ekstern sensor utenfor vinduet og en sentral modul.


Den sentrale, hovedblokken vil bli plassert innendørs. Det er viktig å fastslå dette det første stadiet, dette får disse menneskene til å "danse" viktige egenskaper Hvordan temperaturregime arbeid og mat.


Fjernsensoren (eller sensorene) vil være uten "hjerne" dens oppgave er å periodisk ta målinger og overføre data til den sentrale hjemmeenheten. Sentralenheten mottar data fra alle sensorer, viser dem på skjermen og sender dem til Internett i en database. Vel, det er mye enklere der, så snart dataene er i databasen, kan du gjøre hva du vil med dem, til og med tegne grafer.


For forhold til verden utenfor Internett, ESP8266 WiFi-modulen ble tydelig valgt uten praktisk talt noe alternativ (ca. Kanskje slike alternativer har dukket opp nå). Ethernet-utvidelseskort er tilgjengelige for Arduino, men jeg ønsket ikke å bli knyttet til en kabel.



Et interessant spørsmål var hvordan sikre kommunikasjon mellom utvendig sensor (eller sensorer, husker du kravet om systemutvidbarhet?) og senteret. 433 MHz beacons er definitivt ikke egnet (de egner seg ikke til noe i det hele tatt).


Bør jeg bruke ESP8266 igjen?


Ulemper med denne løsningen:

    du trenger stabil WiFi utenfor hjemmet

    Kommunikasjonsrekkevidden vil ikke være lang

    Pålitelighet vil lide; hvis Internett går ut, vil vi ikke se våre fjernsensorer

    større energiforbruk.

    Strømforbruk til ESP8266:

    ved overføring av 120-170 mA

    ved mottak av 50-56 mA

    i dyp hvilemodus 10 µA (µA)

    i av-tilstand 5 µA (µA).

Til slutt, for å koble eksterne sensorer til hovedhjemmeenheten, ble nRF24L01+-brikken valgt med en 2,4 GHz-sender og mottaker i én flaske, med en ekstra ekstern antenne, slik at den helt sikkert ville "bryte gjennom" veggene.



Strømforbruk nRF24L01+ 2,4 GHz:

  • ved mottak av 11 mA
  • når du sender med en hastighet på 2Mbps - 13 mA
  • i standby-I-modus - 26 μA (μA)
  • i av-tilstand 900 nA (nA).

Både ESP8266 og nRF24L01+ har et passende driftstemperaturområde: fra -40℃ til +80℃.


Du kan kjøpe nRF24L01+ for rundt $1, eller med en ekstern antenne for $3. Du kan kjøpe ESP8266-01 for rundt $4. Les produktbeskrivelsen nøye! Ellers, kjøp en antenne.


Kjernen i systemet dukket opp. La oss gå videre til selve sensorene.


På gaten, som du vet, kan temperaturen nå negative verdier, så DHT11-sensoren er ikke egnet, men DHT22 er helt riktig.



Kjennetegn på DHT22/AM2302:

  • Strømforsyning 3,3V til 5V, 5V anbefales
  • forbruk 2,5mA maksimum, på tidspunktet for måling og dataoverføring
  • Fuktighetsmåleområde 0-100 % med en feil på 2-5 %
  • temperaturmåleområde fra -40 til +125°C med en feil på ±0,5°C
  • forespørsel om måling ikke mer enn 0,5 Hz - en gang hvert 2. sekund.

Inne i huset håper jeg negative temperaturer vil ikke, så du kan bruke DHT11, spesielt siden jeg allerede hadde det.


DHT11 funksjoner:

  • strømforsyning 3,3V til 5V
  • forbruk maks 2,5 mA, ved måling og dataoverføring
  • Fuktighetsmåleområde 20-80 % med en feil på 5 %
  • temperaturmåleområde fra 0 til +50°C med en feil på ±2°C
  • forespørsel om måling ikke mer enn 1 Hz - en gang per sekund.

Du kan kjøpe DHT22 for ca $3. DHT11 er billigere - $1, men den er også mindre nøyaktig.


Nå går vi tilbake til Arduino igjen. Hvilket brett bør jeg velge?


Jeg testet individuelle deler av systemet på Arduino UNO. De. Jeg koblet ESP-modulen til unoen og studerte den, koblet den fra, koblet så til nRF24 osv. For den endelige implementeringen av vindussensoren valgte jeg Arduino Pro Mini som den nærmeste miniatyren til Uno.



Når det gjelder strømforbruk, ser Arduino Pro Mini også bra ut:

  • det er ingen USB-TTL-omformer, som i seg selv "spiser" mye,
  • LED er koblet til gjennom en 10k motstand.

For avansert energisparing var det planlagt:

  • fjern LED-strømindikatoren på Arduino Pro Mini (jeg angret, jeg skadet ikke brettet)
  • eller bruk en "bar" enhet på en Atmel ATmega328 mikroprosessor (brukte ikke)
  • bruk Low Power Library eller JeeLib.

Fra bibliotekene jeg valgte Low Power Library er det enkelt og inneholder kun det som trengs.


For sentralenheten ble Arduino Mega-kortet valgt, siden det var planlagt å koble en rekke eksterne enheter til den. I tillegg er den fullt kompatibel med UNO og har mer minne. Når jeg ser fremover, vil jeg si at dette valget var helt berettiget.


Du kan kjøpe en Arduino Mega for rundt $8.

Strøm og energiforbruk

Nå om strøm og energiforbruk.


Arduino Pro Mini kommer i to typer:

  • for forsyningsspenning 5V og frekvens 16MHz
  • for en forsyningsspenning på 3,3V og en frekvens på 8MHz.

Siden nRF24L01+ radiomodulen krever 3,3 V for strømforsyning, og hastighet ikke er viktig her, så kjøp en Arduino Pro Mini med 8 MHz og 3,3 V.


I dette tilfellet er forsyningsspenningsområdet til Arduino Pro Mini:

  • 3,35-12V for 3,3V-modell
  • 5-12V for 5V-modell.

Jeg hadde allerede en Arduino Pro Mini på 5V, det er derfor jeg brukte den. Du kan kjøpe en Arduino Pro Mini for rundt $4.


Sentralenheten vil få strøm fra et 220 V-nettverk gjennom en liten strømforsyning som gir en effekt på 12 V, 450 mA, 5 W. Slik for $5. Det er også en egen 5V pinne.



Og hvis dette ikke er nok, kan du installere noe kraftigere. Det gir med andre ord ikke mye mening å spare strøm for sentralenheten. Men for en ekstern trådløs sensor er energisparing den viktigste delen. Men jeg vil heller ikke miste funksjonalitet.


Derfor vil Arduino Pro Mini og nRF24-radiomodulen drives av en haug med 4 Ni-Mh-batterier.


Og husk maksimal kapasitet til et moderne batteri omtrent 2500-2700mAh, noe mer er enten markedsføringsgimmicker (Ansmann 2850) eller bedrag (UltraFire 3500).


Jeg bruker ikke Li-Ion-batterier av flere grunner:

  • veldig dyrt
  • når omgivelsestemperaturen synker under 0°C, reduseres kraften til litiumion-batteriet til 40-50 %
  • de som er billige er produsert uten beskyttelse og er utrygge (under kortslutning eller utladning kan de eksplodere og brenne, se en haug med videoer på YouTube)
  • bli gammel, selv om den ikke brukes (dette kan imidlertid sies om alle kjemiske elementer), etter 2 år mister Li-Ion-batteriet omtrent 20 % av kapasiteten.

For prototypen er det fullt mulig å klare seg med høykvalitets Ni-MH AA- eller AAA-batterier. Dessuten trenger vi ikke store strømmer. Den eneste ulempen med Ni-MH-batterier er deres lange ladetid.

Generelt diagram over værstasjonen

La oss oppsummere. Her generell ordning hvordan alt fungerer.



Fortsettelse følger.

Dele