IoT-cursus/IoT-knopen/Achtergrond/DHZ IoT-knoop met ESP8266

Uit Inf2019
Naar navigatie springen Naar zoeken springen
De printervriendelijke versie wordt niet langer ondersteund en kan weergavefouten bevatten. Werk uw browserbladwijzers bij en gebruik de gewone afdrukfunctie van de browser.

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: