IoT-cursus/IoT-knopen/Achtergrond/DHZ IoT-knoop met ESP8266: verschil tussen versies

Uit Inf2019
Naar navigatie springen Naar zoeken springen
 
(13 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:
* Wemos D1 mini Pro
 
** bijv. https://www.tinytronics.nl/shop/nl/arduino/wemos/wemos-d1-mini-pro-esp8266-cp2104
{| class="wikitable"
* Temperatuur- en luchtdrukmeter (barometer): BMP280
! Onderdeel !! functie !! datasheet e.d. || shop
** bijv. https://www.tinytronics.nl/shop/nl/sensoren/temperatuur-lucht-vochtigheid/bmp280-digitale-barometer-druk-sensor-module
|-
* Temperatuur- en luchtvochtigheidsmeter: DHT22
| Wemos D1 Pro
** bijv. https://www.tinytronics.nl/shop/nl/sensoren/temperatuur-lucht-vochtigheid/dht22-thermometer-temperatuur-en-vochtigheids-sensor?search=dht22
| Microcontroller, WiFi
* LDR
| [https://wiki.wemos.cc/products:d1:d1_mini_pro Wemos page]
** bijv. https://www.tinytronics.nl/shop/nl/sensoren/gl5537-ldr-lichtgevoelige-weerstand
| [https://www.tinytronics.nl/shop/nl/arduino/wemos/wemos-d1-mini-pro-esp8266-cp2104]
* breadboard (met voedingslijnen)
|-
** bijv. https://www.tinytronics.nl/shop/nl/prototyping/breadboards/breadboard-400-points
| BMP280
* breadboard-draden (of montagedraden)
| Temperatuur- en luchtdrukmeter (barometer)
* pushbuttons
| [https://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BMP280-DS001-18.pdf Bosch BMP280]
** bijv. https://www.tinytronics.nl/shop/nl/componenten/schakelaars/breadboard-tactile-pushbutton-switch-momentary-2pin-6*6*5mm
| [https://www.tinytronics.nl/shop/nl/sensoren/temperatuur-lucht-vochtigheid/bmp280-digitale-barometer-druk-sensor-module]
* pull-down/pull-up weerstanden, 10 kOhm
|-
** 0,25W
| DHT22
** bijv. https://www.tinytronics.nl/shop/nl/componenten/weerstanden/10k%CF%89-weerstand-(standaard-pull-up-of-pull-down-weerstand)
| 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 24: Regel 44:
== Schema ==
== Schema ==


[[Bestand:IoT-knoop_v0_schema.png|600px|IoT knoop schema]]
[[Bestand:IoT-knoop_v0_schema.png|800px|IoT knoop schema]]


* DHT22-data heeft een pull-up weerstand van 10kOhm nodig (naar Vcc)
* 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 schakelaar(s) heeft een pull-down weerstand nodig (10kOhm)
* de LDR vormt samen met een weerstand van 10kOhm een ''spanningsdeler''
* 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 43: Regel 66:
| GPIO14 - Pin(14) || D5 || DHT22 data || DHT22 data
| GPIO14 - Pin(14) || D5 || DHT22 data || DHT22 data
|-
|-
| GPIOx - Pin(x) || D3 || button 1 || button 1
| GPIO0 - Pin(0) || D3 || button 1 || button 1
|-
|-
| GPIOy - pin(y) || D4 || button 2 || button 2
| GPIO2 - Pin(2) || D4 || button 2 || button 2 (en ingebouwde LED)
|-
|-
| GPIOa - Pin(a) || D6 || LED 1 || LED 1
| GPIO7 - Pin(13) || D6 || LED 1 || LED 1
|-
|-
| GPIOb - Pin(b) || D7 || LED 2 || LED 2
| GPIO8 - Pin(15) || D7 || LED 2 || LED 2
|-
|-
! hardware only: !! !! !!
! hardware only: !! !! !!
|-
|-
| Vcc (3V) || 3V3 || BMP280-CSB || select I2C (i.s.o. SPI)
| Vcc (3V) || 3V3 || BMP280-CSB || select I2C interface
|-
|-
| GND (0V) || GND ||  BMP280-SD0 || I2C lowest address bit (0)
| GND (0V) || GND ||  BMP280-SD0 || I2C lowest address bit (0)
Regel 59: Regel 82:


== 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 software vind je op GitHub.
=== 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).


Een handige manier van werken voor de MicroPython/ESP8266-combinatie is de platte-teksteditor Atom met de Pymakr-plugin. Je kunt dan vanuit de editor de Python REPL van de ESP8266 bereiken, en losse Python-programma's daarop uitvoeren.
=== 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

[6]

breadboard [7]
breadboard-draden (of montagedraden) [8] of

[9]

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

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

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.

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 naar config.py, en pas deze aan voor je eigen configuratie (WiFi netwerk, MQTT-server).

Software-tools

De volgende combinatie van tools werkt handig:

Software (Arduino)

Je kunt de ESP8266 ook met de Arduino IDE programmeren. Daarvoor moet je eerst de ESP8266 als processor toevoegen, zie: