creativecommons

Introductie "IoT"

Een uitgebreide introductie van "IoT" staat op de Wikipedia: Internet der dingen: Het internet der dingen (Engels: Internet of Things (IoT)) refereert aan de situatie dat door mensen bediende computers (desktops, laptops, tablets, smartphones) in de minderheid zullen zijn op het internet.
De meerderheid van de internetgebruikers zal in deze visie bestaan uit semi-intelligente apparaten, zogenaamde embedded systems. Alledaagse voorwerpen worden hierdoor een entiteit op het internet, die kunnen communiceren met personen en met andere objecten, en die op grond hiervan autonome beslissingen kunnen nemen.

smiley-sad

Aanvankelijk was ik vol goede moed begonnen om met Arduino en de Wemos ervaring op te doen.
Met Arduino wordt het programma steeds gecompileerd en naar de Wemos chip ge-upload.

smiley Bij nader inzien lijkt het me handiger om "ESP-Easy" te gebruiken!   pijl   geen code ... maar configuratie!

     Zie resultaat, een begin van een nieuw hoofdstuk voor de IoT: ESP Easy

Een belangrijke ontwikkeling voor de IoT was in 2005 de ontwikkeling van de zogenaamde Arduino boards en software.

Een uitgebreide introductie van "Arduino" staat op de Wikipedia: Arduino_(computerplatform): Arduino is een opensource-computerplatform bedoeld om microcontrollers eenvoudig te maken.
Dit platform is bedoeld voor hobbyisten, artiesten, kunstenaars en iedereen die geïnteresseerd is in het maken en ontwerpen van slimme en creatieve objecten.
Zie ook: Wikipedia: Microcontroller A microcontroller contains one or more CPUs (processor cores) along with memory and programmable input/output peripherals. (Engels!)

Wikipedia: Geschiedenis: Rond 2004 ontwikkelde een team in Italië onder leiding van Massimo Banzi een compact, goedkoop en eenvoudig te gebruiken bord, voortbordurend op het Wiringplatform van Hernando Barragán. Het schema en de broncode is open source, waardoor iedereen de hardware en software kan aanpassen met standaardversies die online beschikbaar zijn.
De eerste Arduino kwam uit in 2005 en dit was het begin van het Arduino-platform. De Arduino werd in korte tijd populair en was een opstap voor andere projecten die later volgden.

Waar de Arduino oorspsronkelijk bedoeld was voor lokale kleine projecten, zijn de oorspronkelijke prints naderhand uitgebreid met netwerk faciliteiten. Een enorme stap vooruit wat betreft de connectivity is de ontwikkeling van boards met ingebouwde wifi en bluetooth netwerk mogelijkheden.
De keywords voor de combinatie van Arduino met wifi zijn de ESP8266 en de (nieuwere) ESP32 chips met ook bluetooth.
De gebruikte "processors" zijn zogenaamde "system on a chip", waarbij ROM en RAM is toegevoegd aan de processor.

Een interessante vergelijking tussen de twee typen chips staat op de pagina: makeradvisor.com: ESP32 vs ESP8266 – Pros and Cons [June 1, 2021]
Both chips have a 32-bit processor. The ESP32 is a dual-core 160MHz to 240MHz CPU, whereas the ESP8266 is a single-core processor that runs at 80MHz.
These modules come with GPIOs that support various protocols like SPI, I2C, UART, ADC, DAC, and PWM.
The best part is that these boards come with wireless networking included, which makes them apart from other microcontrollers like the Arduino.
This means that you can easily control and monitor devices remotely via Wi-Fi or Bluetooth (in the case of ESP32) for a very low price.

... Ook interessant: MicroPython Firmware – ESP32 vs ESP8266: Another popular way of programming the ESP32 and ESP8266 boards is using MicroPython firmware.

Kenmerkend voor deze IoT devices is de werking. NB: in de Engelse Wikipedia pagina's staat veel meer informatie!

Raspberry Pi hardware setup voor software ontwikkeling

smiley Opmerking: De setup met de Raspberry Pi gebruikte ik in hoofdzaak tot juni 2021.
Sindsdien gebruik ik in hoofdzaak de Asus Chromebook, zie het volgende hoofdstuk!

De eerste setup voor de IoT bestaat uit: Op de onderstaande foto:

pi4

Chromebook hardware setup voor software ontwikkeling

Goed nieuws: met de nieuwe versie 91 van het ChromeOS [mei/juni 2021] is de Linux (Debian) officieel, en geen "bèta" (test) versie meer! smiley

Ook is de software voor de USB in ChromeOS aangepast, waardoor nu de Arduino IDE verbinding kan maken met bij voorbeeld een Wemos D1 mini board.
Tot voor kort gebruikte ik hier voor de Raspberry Pi

CB Voor het opstarten van de Asus was de Wemos mini aangesloten.
De Chromebook detecteert een nieuw apparaat.

Melding:

USB

Een eerste test met de Arduino IDE is het "blink" programma, waarbij de standaard ingebouwde led gaat knipperen.
Om het programma te up-loaden naar de Wemos wordt de USB kabel gebruikt.

De Chromebook komt met de melding:

serial-port

Opmerking: Op de Wemos mini is nog een BME280 sensor aangesloten, zie ook: IoT: Hardware Pi

IoT Software: ontwikkeling, client en server

De IoT software kan gesplitst worden in drie takken:

Een artikel over de verschillen tussen Arduino en PlatformIO software staat op de site:
MakeUseOf.com: better-arduino-coding-vs-code-platformio Want an easy way to start coding Arduino? With PlatformIO and VS Code, you can simplify Arduino projects and learn faster.

Een artikel over de verschillen tussen bovenstaande "controller" software staat op de site:
SmartHomeBlog.net: openhab-home-assistant-domoticz Today I want to compare three of the main platforms out there

De controller en peripheral, "randapparatuur" combinaties zijn:

Kenmerkend voor ESP-Easy en ESP-home is de configuratie via een simpele webserver, er is géén programmeer ervaring nodig!

Ik had aanvankelijk gekozen voor de Arduino software voor de ontwikkeling van de huis-automatisering.
Hier mee kan met de talrijke voorbeelden op het internet de temperatuur gemeten worden of een relais bekrachtigd.
Voor de presentatie gebruik ik Domoticz software.
Domoticz heeft een web-interface, en kan bekeken worden op een laptop of een mobile telefoon.

Commerciele software:

Arduino

Voor het maken van programma's is er de "Arduino IDE" het (Wikipedia:) Integrated Development Environment
Een "integrated development environment" of IDE is computersoftware die een softwareontwikkelaar ondersteunt bij het ontwikkelen van computersoftware. Het bestaat uit een aantal onderdelen die samen een software suite vormen.

Een uitgebreide geschiedenis van de ontwikkeling van Arduino staat ook op de pagina: Github: Arduino History (Engels!)

Om te starten met IoT kan men bij voorbeeld de Arduino software gebruiken.
Een belangrijk onderdeel van de ontwikkelomgeving is dat er veel "libraries" beschikbaar zijn die het programmeren vereenvoudigen.

The Arduino environment can be extended through the use of libraries, just like most programming platforms. Libraries provide extra functionality for use in sketches, e.g. working with hardware or manipulating data. To use a library in a sketch, select it from Sketch > Import Library.
A number of libraries come installed with the IDE, but you can also download or create your own. See these instructions for details on installing libraries. There's also a tutorial on writing your own libraries. See the API Style Guide for information on making a good Arduino-style API for your library.

Zie ook: Arduino: Installing Additional Arduino Libraries Once you are comfortable with the Arduino software and using the built-in functions, you may want to extend the ability of your Arduino with additional libraries.

Het feitelijke programma in Arduino jargon heet "schets".

Arduino Veel informatie staat op de website van Arduino.cc, met onder andere de onderwerpen: adafruit

Ook aanbevolen:
Learn Adafruit: If you're here, it's because you want to learn how to build and make stuff with electronics! These guides will help you get started with the wonderful world of Arduino.

Power... inleiding

Vanzelfsprekend hebben alle nuttige apparaatjes een voeding nodig!
Ieder voordeel heeft ook een nadeel...

Voordeel:

Handig is, dat de meeste ESP8266 en ESP32 boards via een USB kabel worden aangesloten.
Ook een voordeel is de ingebouwde seriële interface van de USB aansluiting naar de chip.
Hierdoor komt via deze interface de voeding en kan de chip geprogrammeerd worden.

Nadeel:

De I/O aansluitingen van de meeste ESP8266 en ESP32 chips zijn geschikt voor 3,3 Volt.
Dit gaat goed, als bij voorbeeld temperatuur, vochtigheid of druk opnemers ook met 3,3 Volt werken.
Dit geeft wel een probleem bij LCD displays, die op 5 Volt werken... zie hoofdstuk I2C Praktijk !

Voor het dimensioneren van de net voeding van de Wemos chips is het handig om in de testfase via de USB de stroom te meten.
Hiervoor kocht ik een "KWS-MX17": USB Stroom- en Spanningsanalyzer met LCD display: 4-30V, 5A.

Specificaties:
  1. Ingangsspanning: 4-30 Volt
  2. Stroom: 0-5 Ampère
  3. Cumulatieve capaciteit bereik: 0-99999 mAh precisie: 0.001 Ah
  4. Charge accumulatie scope: 0-999999 MWh precisie: 0.001 Wh
  5. Cumulatieve power range: 0-299.999 W precisie: 0.001 W
  6. Timing de maximale bereik: 0-999 uur 59 minuut 59 seconden

analyzer

Een pluspunt Lolin / Wemos van de documentatie is, dat een PDF kan worden gedownload van het schema.
Website: Wemos.cc: LOLIN D1 mini Documentation: "sch_d1_mini_v3.0.0.pdf"
Hier uit blijkt, dat er een ME6211 spannings regelaar wordt gebruikt voor de aanpassing van de 5 Volt USB naar de 3,3 Volt voor de ESP8266 chip.

smily smiley Een uitgebreid artikel over de Wemos Mini staat op de pagina:  diyi0t.com: ESP8266 WeMos D1 Mini Tutorial

The ESP8266 WeMos D1 Mini is one of my favorite IoT microcontroller when I need a microcontroller for a battery powered project, because the ESP8266 has an integrated WiFi module and an exceptionally low power consumption. Therefore, I want to share my knowledge and experience with the ESP8266 WeMos D1 Mini in this tutorial.

Het schema van het voedings ciruit is:

power power

Om de ESP8266 (Wemos) chips te voeden, kunnen we oude netadapters gebruiken van mobile phones!
Voor zover ze niet ergens in een la rondslingeren, zijn deze adapters voor een habbekrats bij de kringloop te koop!

Even met Google zoeken naar de specificaties van de ME6211 chip geeft:
datasheet.lcsc.com: High Speed LDO Regulators, High PSRR, Low noise, ME6211 Series [PDF]
The ME6211 series are highly accurate, low noise, CMOS "LDO" Voltage (low-dropout) Regulators.
Offering low output noise, high ripple rejection ratio, low dropout and very fast turn-on times

Features:

Uit de specificaties blijkt, dat ook (oudere) mobiele telefoon laders (zonder USB connector) met een spanning tussen 4,3 en 6,0 Volt gebruikt kunnen worden!
Uitzondering: als bijvoorbeeld ook een LCD display 5 Volt nodig heeft, is een standaard USB adapter aan te bevelen!

Power... handig: recycle mobiele telefoon laders!

Zoals uit het bovenstaande blijkt, kunnen de telefoon laders uitstekend gebruikt worden.
Veel ESP8266 en ESP32 chips hebben een USB aansluiting voor de voeding en de communicatie.

Voorbeelden:

Power... andere opties.

Ook met traditionele, of moderne onderdelen, kan een goede voeding gemaakt worden.
De keus wordt bepaald door de benodigde stroom, en de beschikbare ruimte.

Voorbeeld componenten:

voeding

Onderdelen van links naar rechts:

Toelichting:

Relevante informatie: buck converter of linear voltage regulator...

YouTube

Opmerkingen:

Theorie: Arduino, Python

Naast de documentatie op de Arduino.cc website zijn de volgende handleidingen ook nuttig: In plaats van lezen kan je ook video's bekijken!
Opmerking: De programmeertaal Python wordt ook vaak gebruikt in IoT projecten!

Dit volgende links geven wat informatie over de gebruikte verbindingen tussen de verschillende IoT apparaten.
De meeste mensen zijn wel bekend met WiFi netwerken, en in mindere mate met BlueTooth verbindingen. De WiFi verbinding is er tussen een centrale computer en de verschillende rand apparatuur.

Theorie: I2C bus ("Inter-IC-bus")

I2C Naast de netwerk verbinding zijn de verbindingen met de sensors (temperatuur, druk) / actuaters (relais, lampen) van belang.
De meest gebruikte verbinding is met het I2C protocol.

smiley Note: You may be familiar with the terms "master" and "slave" to represent the relationship between devices on an I2C bus. [Sparkfun]
The terms are considered obsolete and are now replaced with the terms "controller" and "peripheral" respectively.

Opmerking: vrij recent: "Qwiic Connect System" ... is an ecosystem of I2C sensors, actuators, shields, cables and more, that make prototyping faster and less prone to error.

De details van dit protocol, en oudere protocollen staan uitstekend beschreven in de volgende PDF:
NPX.com: AN10216-01 Abstract: The I2C Manual provides a broad overview of the various serial buses, why the I2C bus should be considered, technical detail of the I2C bus and how it works.
NB: NXP (in 2006) is is de voormalige halfgeleiderdivisie van Philips, die de I2C bus heeft ontwikkeld.


I2C - Praktijk - Logic Level Converter, I/O aanpassing 5 Volt en 3,3 Volt

In tegenstelling tot veel "Arduino" boards werkt de Input/Output van ESP8266 en de Wemos met 3,3 Volt maximum I/O spanning.
Dit is van belang bij het aansluiten van LCD displays. Deze werken met 5 Volt voeding voor de display en de besturing.

Zie ook: espeasy.readthedocs: Level converter ...
Level-converters, aka level-shifters, aka voltage dividers, are used to adapt between a 3.3V device like the ESP8266 and devices using 5V or more internally.

esp-logo Dit wordt ook beschreven op (onder andere!) de volgende sites:

Opmerking: In het bovenstaande artikel van hackaday staat: If the 3.3V part is an output and the 5V one an input, the lower voltage part can hardly damage the higher voltage one with overvoltage.
In het geval van de 3,3 Volt output van de Wemos, zal dit geen probleem geven voor de 5 Volt input van een LCD display.
Het is alleen de vraag of deze interface dan goed werkt!

De level converters worden onder andere geleverd door:
  Bi-directional Logic Level Converters:
AdafruitSparkfun
Adafruit Sparkfun

De praktijk instructie voor het aansluiten staat op: Sparkfun: Bi-Directional Logic Level Converter Hookup Guide
Level shifting is a dilemma so common we designed a simple PCB assembly to make interfacing devices a little easier: the Bi-Directional Logic Level Converter.

Links: websites over IoT

Met de juiste sleutel woorden zijn met Google talloze informatieve pagina's te vinden.
Een mooi overzicht van de Raspberry Pi en de mogelijke randapparatuur is te zien op:
Tutorials.Raspberry: 50 of the most important Raspberry Pi Sensors and Components
This article describes and summarizes over 50 of the most important sensors and components for Raspberry Pi’s as well as Arduinos and provides you with a full Raspberry Pi sensor list.

Een aantal Engels talige sites zijn:

domoticx domoticx Een interessante Nederlandse site is (onder andere!): Domoticx.com
Naast het "Knowledge Center" met een flink aantal onderwerpen...
Is er ook een: Domoticx webshop

Ook nuttig: Domoticx programmeren nb: nog geen https!
Met veel voorbeelden: Arduino, Python, BASH, PHP, Java, Lua etc.
Programmeren is het schrijven van een computerprogramma, een concrete reeks instructies die een computer uitvoert.

Epiloog: leermomentje

Een leermomentje, wat kan er fout gaan!

De installatie van de Arduino ging prima in Debian op de Asus Chromebook, alleen de upload van de 'schets' naar de Wemos D1 mini lukte niet... helaas! ... in 2020!
Dit wordt in juni 2021 verholpen, zie: aboutchromebooks.com Google I/O 2021: 9 new Chromebook features on the way Een pluspunt van Arduino is, dat het op veel verschillende typen computers werkt, Linux en Windows. Doorgaans gaat de installatie zonder problemen.
Een aandachtspunt is, dat veel ESP8266 een USB-seriële chip hebben, waarvoor een speciale driver nodig is...
De computer op het board wordt via een seriële verbinding geprogrammeerd, de USB interface is handig om de Arduino of ESP8266 op een moderne PC of laptop aan te sluiten.
Zie de relevante informatie:

Door de serie interface naar de microcontroller chip wordt bespaard op het aantal input/output aansluitingen.

Een goede handleiding voor de installatie van de benodigde 'driver' staat op de website: learn.sparkfun How to Install CH340 Drivers
Introduction: In this tutorial, we'll show you how to install CH340 drivers on multiple operating systems if you need.

Opmerking: Er zijn twee typen Serial-USB converters, zie: forum.arduino CP2102 V.S CH340 There are two different types which are the CP2102 and the CH340...
NB: vanzelfsprekend ... check welke chip er op het board zit!

W3Ccss valid-html401

top