- Detaljer
- Skrevet av: Per Sigbjørn
- Kategori: Internet of Things - et lite eksempel
- Treff: 2849
I dette eksempelet skal vi se på hvordan vi kan bruke en Wemos D1 Mini med innebygd WiFi (basert på ESP8266) til å måle temperatur (og evt. luftfuktighet) og både sende dette til Thingspeak og lagre verdiene i en database på en egen webserver. Vi skal se på to populære moduler for å måle temperatur: DHT22 og DS18B20.
Du kan finne mye informasjon om ESP8266 på denne siden: https://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/readme.html |
Bildet viser en D1 mini pro |
Oppsett
Installere støtte for ESP8266 For å installere støtte for ESP8266-kortene i Arduino IDE må du først lime inn følgende link i feltet "Flere 'Boards Manager' URLer" : Dette angir hvor programmet skal laste ned støtte både for standard ESP8266-kort og ESP32-kortene (32-bits versjoner) Gå inn på Fil -> Innstillinger: (Engelsk versjon File -> Preferences)
Når dette er utført vil du få opp veldig mange kort i menyen. Det vi er ute etter i dette eksempelet heter LOLIN(WEMOS) D1 R2 & mini
|
Teste WiFi-tilkobling
For å teste at vi får koblet til det trådløse nettverket kan vi bruke eksempel-kode fra siden som er nevnt i ingressen. Erfaringsvis er det en del routere som ikke fungerer sammen med ESP8266-modulene, slik at du ikke får koblet til. I så fall kan det være greit å ta et Google-søk med ESP8266 og navnet på routeren din. #include <ESP8266WiFi.h> void setup(){ Serial.begin(115200); Serial.println(); WiFi.begin("network-name", "pass-to-network"); Serial.print("Connecting"); while (WiFi.status() != WL_CONNECTED){ delay(500); Serial.print("."); } Serial.println(); Serial.print("Connected, IP address: "); Serial.println(WiFi.localIP()); } void loop() {} |
DHT22
Her skal vi bruke modulen DHT22, som vist på bildet under, til å måle temperatur og relativ luftfuktighet. Dette er en modul som er veldig mye brukt, og det finnes mange fungerende biblioteker for Arduino for den. Det ligger en egen side om denne sensoren her: DHT22 Her bruker vi biblioteket SimpleDHT. Dette biblioteket er godt dokumentert og har flere enkle eksempler som vi kan ta utgangspunkt i.
|
|
Tilkoblingen av sensoren er veldig enkel. Alt vi trenger er GND, VCC (bruker 3,3V) og en datapinne. Eksempelet fra SimpleDHT bruker Arduino-pinne 2, og på D1 mini tilsvarer dette D4. Koden under er satt sammen av ett eksempel fra SimpleDHT og eksempelet under ESP8266HTTPClient->BasicHttpClient. Koden kommuniserer med min private webserver, som for anledningen er satt opp med et lite PHP-script som leser målingene. Har oversatt det meste til norsk og lagt til en del kommentarer. // Denne koden basert på eksempelet under ESP8266HTTPClient->BasicHttpClient |
DS18B20
En annen mye brukt komponent er DS18B20 fra Dallas. Denne måler bare temperatur og bruker en "OneWire"-buss. Sensoren finnes i mange forskjellige innplakninger, men den vi bruker her er i en TO-92 pakke, og er til forveksling lik en transistor. Bildet under viser sensorens størrelse i forhold til en mynt og en motstand. Også her er det mange biblioteker å velge i, men vi bruker det som heter DallasTemperature, sammen med OneWire.
|
|
Tilkoblingen av sensoren er veldig enkel. Alt vi trenger er GND, VCC (bruker 3,3V) og en datapinne. Eksempelet fra SimpleDHT bruker Arduino-pinne 2, og på D1 mini tilsvarer dette D4. Koden under er satt sammen av ett eksempel fra SimpleDHT og eksempelet under ESP8266HTTPClient->BasicHttpClient. Koden kommuniserer med min private webserver, som for anledningen er satt opp med et lite PHP-script som leser målingene. Har oversatt det meste til norsk og lagt til en del kommentarer. // Denne koden basert på eksempelet under ESP8266HTTPClient->BasicHttpClient |
Server-kode:
Koden som skal ta i mot målingene er skrevet i script-språket PHP. Så langt leses bare verdiene fra lenken, og returneres til klienten, vel og merke hvis debug-parameteren er satt. Parameterene vi sender med via linken hentes ut via den "hyper-globale" variabelen $_GET (referanse: https://topic.alibabacloud.com/a/php-hyper-global-array_1_34_10115588.html ) <?php |
Oppgaver:
Vi avslutter denne bolken med et par enkle oppgaver: Kommer...
|