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

Uit Inf2019
Naar navigatie springen Naar zoeken springen
 
(7 tussenliggende versies door dezelfde gebruiker niet weergegeven)
Regel 66: 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: !! !! !!
Regel 82: 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 MicroPython software vind je op GitHub.
De documentatie voor MicroPython op de ESP8266 vind je op: https://docs.micropython.org/en/latest/esp8266/


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.
=== 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

[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: