IoT-cursus/IoT-knopen/Achtergrond/DHZ IoT-knoop met ESP8266: verschil tussen versies
(→Schema) |
|||
(16 tussenliggende versies door dezelfde gebruiker niet weergegeven) | |||
Regel 2: | Regel 2: | ||
We bouwen een IoT-knoop met de volgende onderdelen: | We bouwen een IoT-knoop met de volgende onderdelen: | ||
{| class="wikitable" | |||
! Onderdeel !! functie !! datasheet e.d. || shop | |||
|- | |||
| Wemos D1 Pro | |||
| Microcontroller, WiFi | |||
| [https://wiki.wemos.cc/products:d1:d1_mini_pro Wemos page] | |||
| [https://www.tinytronics.nl/shop/nl/arduino/wemos/wemos-d1-mini-pro-esp8266-cp2104] | |||
|- | |||
| BMP280 | |||
| Temperatuur- en luchtdrukmeter (barometer) | |||
| [https://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BMP280-DS001-18.pdf Bosch BMP280] | |||
| [https://www.tinytronics.nl/shop/nl/sensoren/temperatuur-lucht-vochtigheid/bmp280-digitale-barometer-druk-sensor-module] | |||
|- | |||
| DHT22 | |||
| Temperatuur- en luchtvochtigheidsmeter | |||
| [https://cdn-shop.adafruit.com/datasheets/Digital+humidity+and+temperature+sensor+AM2302.pdf DHT22] | |||
| [https://www.tinytronics.nl/shop/nl/sensoren/temperatuur-lucht-vochtigheid/dht22-thermometer-temperatuur-en-vochtigheids-sensor] | |||
|- | |||
| LDR | |||
| lichtmeting | |||
| [http://lib.store.yahoo.net/lib/yhst-131078630530567/GL55-Cds-Photocell.pdf GL5537] | |||
| [https://www.tinytronics.nl/shop/nl/sensoren/gl5537-ldr-lichtgevoelige-weerstand] | |||
|- | |||
| pushbuttons || || | |||
| [https://www.tinytronics.nl/shop/nl/componenten/schakelaars/breadboard-tactile-pushbutton-switch-momentary-2pin-6*6*5mm] | |||
|- | |||
| weerstanden, 10 kOhm, 0.25W || pull-down/pull-up weerstand || || | |||
[https://www.tinytronics.nl/shop/nl/componenten/weerstanden/10k%CF%89-weerstand-(standaard-pull-up-of-pull-down-weerstand)] | |||
|- | |||
| breadboard || || || [https://www.tinytronics.nl/shop/nl/prototyping/breadboards/breadboard-400-points] | |||
|- | |||
| breadboard-draden (of montagedraden) || || | |||
| [https://www.tinytronics.nl/shop/nl/kabels/prototype-draden/breadboard-draden-65-stuks-verschillende-maten] of | |||
[https://www.tinytronics.nl/shop/nl/kabels/prototype-draden/breadboard-draden-140-stuks-verschillende-maten-in-doosje] | |||
|} | |||
Je moet wel enkele onderdelen solderen, bijvoorbeeld de headers (pootjes) van de Wemos D1 en van de BMP280. | Je moet wel enkele onderdelen solderen, bijvoorbeeld de headers (pootjes) van de Wemos D1 en van de BMP280. | ||
Regel 23: | Regel 43: | ||
== Schema == | == Schema == | ||
[[Bestand:IoT-knoop_v0_schema.png| | |||
[[Bestand:IoT-knoop_v0_schema.png|800px|IoT knoop schema]] | |||
* DHT22-data heeft een pull-up weerstand van 10kOhm nodig (naar Vcc) | |||
* BMP280 CSB verbinden we met Vcc (3V3), om het I2C interface te selecteren (i.p.v. SPI) | |||
** je kunt deze ook open laten: CSB heeft een interne pull-up weerstand, waardoor deze default met Vcc verbonden is. | |||
* BMP280 SDO verbinden we met GND (0V), om het laagste I2C-adresbit te zetten (i2c adres: binair 1110110 = 0x76 = 118) | |||
* de schakelaar(s) heeft een pull-down weerstand nodig (10kOhm) | |||
* de LDR vormt samen met een weerstand van 10kOhm een ''spanningsdeler''; hiermee zetten we de variabele weerstand van de LDR om in een variabele spanning, die we dan met de analoge input meten (A/D omzetting). | |||
=== Verbindingen === | === Verbindingen === | ||
Regel 34: | Regel 62: | ||
| GPIO5 - Pin(5) || D1 || BMP280-SCL || I2C clock | | GPIO5 - Pin(5) || D1 || BMP280-SCL || I2C clock | ||
|- | |- | ||
| A0 - | | A0 - ADC(0) || A0 || LDR out || LDR out | ||
|- | |- | ||
| GPIO14 - Pin(14) || D5 || DHT22 data || DHT22 data | | GPIO14 - Pin(14) || D5 || DHT22 data || DHT22 data | ||
|- | |- | ||
| | | GPIO0 - Pin(0) || D3 || button 1 || button 1 | ||
|- | |||
| GPIO2 - Pin(2) || D4 || button 2 || button 2 (en ingebouwde LED) | |||
|- | |||
| GPIO7 - Pin(13) || D6 || LED 1 || LED 1 | |||
|- | |||
| GPIO8 - Pin(15) || D7 || LED 2 || LED 2 | |||
|- | |- | ||
! hardware only: !! !! !! | |||
|- | |- | ||
| | | Vcc (3V) || 3V3 || BMP280-CSB || select I2C interface | ||
|- | |- | ||
| | | GND (0V) || GND || BMP280-SD0 || I2C lowest address bit (0) | ||
|} | |} | ||
== Software (MicroPython) == | == Software (MicroPython) == | ||
Voor het programmeren van de IoT-knoop gebruiken we MicroPython (http://micropython.org). Dit is een eenvoudige versie van Python met speciale voorzieningen voor microcontroller-toepassingen. Er is een speciale versie voor de ESP8266. | |||
* download de software via http://micropython.org/download | |||
* voor het installeren zie: https://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/intro.html | |||
** je gebruikt hierbij het Python-programma <code>esptool</code> op de host. | |||
De documentatie voor MicroPython op de ESP8266 vind je op: https://docs.micropython.org/en/latest/esp8266/ | |||
De MicroPython | === Node-code === | ||
De MicroPython-code voor de node vind je op GitHub: https://github.com/infvo/iot-node-esp8266 | |||
* kopieer deze code naar je eigen systeem via de knop "Clone or download". | |||
* kopieer <code>config.py.example</code> naar <code>config.py</code>, en pas deze aan voor je eigen configuratie (WiFi netwerk, MQTT-server). | |||
=== Software-tools === | |||
De volgende combinatie van tools werkt handig: | |||
* '''GitHub''' (en git): voor de code (versiebeheer). Als je wilt experimenteren met de code, is ''GitHub fork'' handig: https://help.github.com/articles/fork-a-repo/ N.B. er is ook een GitHub Desktop-tool: niet essentieel, wel handig. | |||
* '''Atom''': een platte-tekst editor met o.a. git en GitHub integratie. Zie: https://atom.io/ | |||
* '''Pymakr'''-plugin voor Atom: hiermee kun je de REPL van ESP8266-Python bereiken, en direct Python programma's uitvoeren op de ESP8266. Deze plugin kun je laden vanuit Atom: menu Packages->Settings View->Instal Packages/Themes. | |||
* <code>ampy</code> - voor het kopiëren van bestanden tussen de host en de ESP8266. zie: https://learn.adafruit.com/micropython-basics-load-files-and-run-code/install-ampy | |||
== Software (Arduino) == | == Software (Arduino) == |
Huidige versie van 26 sep 2017 om 07:49
Bouw zelf je eigen IoT-knoop met een ESP8266
We bouwen een IoT-knoop met de volgende onderdelen:
Onderdeel | functie | datasheet e.d. | shop |
---|---|---|---|
Wemos D1 Pro | Microcontroller, WiFi | Wemos page | [1] |
BMP280 | Temperatuur- en luchtdrukmeter (barometer) | Bosch BMP280 | [2] |
DHT22 | Temperatuur- en luchtvochtigheidsmeter | DHT22 | [3] |
LDR | lichtmeting | GL5537 | [4] |
pushbuttons | [5] | ||
weerstanden, 10 kOhm, 0.25W | pull-down/pull-up weerstand | ||
breadboard | [7] | ||
breadboard-draden (of montagedraden) | [8] of |
Je moet wel enkele onderdelen solderen, bijvoorbeeld de headers (pootjes) van de Wemos D1 en van de BMP280. Er zijn allerlei variaties mogelijk: je kunt een ander microcontroller-bordje gebruiken, of andere sensoren.
Schema
- DHT22-data heeft een pull-up weerstand van 10kOhm nodig (naar Vcc)
- BMP280 CSB verbinden we met Vcc (3V3), om het I2C interface te selecteren (i.p.v. SPI)
- je kunt deze ook open laten: CSB heeft een interne pull-up weerstand, waardoor deze default met Vcc verbonden is.
- BMP280 SDO verbinden we met GND (0V), om het laagste I2C-adresbit te zetten (i2c adres: binair 1110110 = 0x76 = 118)
- de schakelaar(s) heeft een pull-down weerstand nodig (10kOhm)
- de LDR vormt samen met een weerstand van 10kOhm een spanningsdeler; hiermee zetten we de variabele weerstand van de LDR om in een variabele spanning, die we dan met de analoge input meten (A/D omzetting).
Verbindingen
software (GPIO) | Wemos D1-pin | onderdeel-pin | betekenis |
---|---|---|---|
GPIO4 - Pin(4) | D2 | BMP280-SDA | I2C data |
GPIO5 - Pin(5) | D1 | BMP280-SCL | I2C clock |
A0 - ADC(0) | A0 | LDR out | LDR out |
GPIO14 - Pin(14) | D5 | DHT22 data | DHT22 data |
GPIO0 - Pin(0) | D3 | button 1 | button 1 |
GPIO2 - Pin(2) | D4 | button 2 | button 2 (en ingebouwde LED) |
GPIO7 - Pin(13) | D6 | LED 1 | LED 1 |
GPIO8 - Pin(15) | D7 | LED 2 | LED 2 |
hardware only: | |||
Vcc (3V) | 3V3 | BMP280-CSB | select I2C interface |
GND (0V) | GND | BMP280-SD0 | I2C lowest address bit (0) |
Software (MicroPython)
Voor het programmeren van de IoT-knoop gebruiken we MicroPython (http://micropython.org). Dit is een eenvoudige versie van Python met speciale voorzieningen voor microcontroller-toepassingen. Er is een speciale versie voor de ESP8266.
- download de software via http://micropython.org/download
- voor het installeren zie: https://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/intro.html
- je gebruikt hierbij het Python-programma
esptool
op de host.
- je gebruikt hierbij het Python-programma
De documentatie voor MicroPython op de ESP8266 vind je op: https://docs.micropython.org/en/latest/esp8266/
Node-code
De MicroPython-code voor de node vind je op GitHub: https://github.com/infvo/iot-node-esp8266
- kopieer deze code naar je eigen systeem via de knop "Clone or download".
- kopieer
config.py.example
naarconfig.py
, en pas deze aan voor je eigen configuratie (WiFi netwerk, MQTT-server).
Software-tools
De volgende combinatie van tools werkt handig:
- GitHub (en git): voor de code (versiebeheer). Als je wilt experimenteren met de code, is GitHub fork handig: https://help.github.com/articles/fork-a-repo/ N.B. er is ook een GitHub Desktop-tool: niet essentieel, wel handig.
- Atom: een platte-tekst editor met o.a. git en GitHub integratie. Zie: https://atom.io/
- Pymakr-plugin voor Atom: hiermee kun je de REPL van ESP8266-Python bereiken, en direct Python programma's uitvoeren op de ESP8266. Deze plugin kun je laden vanuit Atom: menu Packages->Settings View->Instal Packages/Themes.
ampy
- voor het kopiëren van bestanden tussen de host en de ESP8266. zie: https://learn.adafruit.com/micropython-basics-load-files-and-run-code/install-ampy
Software (Arduino)
Je kunt de ESP8266 ook met de Arduino IDE programmeren. Daarvoor moet je eerst de ESP8266 als processor toevoegen, zie: