Inhaltstypen
Pages
Posts
15.12.2015

Internet of Things: Von Arduino zum ESP8266

Spielwiese für Internet-Entwickler

IoT, oder eben das Internet der Dinge, ist bekanntlich in aller Munde. Gerade uns Software-Entwickler mit viel Internet-Erfahrung eröffnen sich hier spannende neue Gebiete: Das Entwickeln von Hardwarekomponenten als Start- oder Endpunkte für unsere vernetzen Internetanwendungen eröffnet uns ganz neue Möglichkeiten.

Wo typischerweise Bildschirm und Tastatur die Schnittstelle zum Benutzer und damit der Endpunkt der Anwendungen war, kommen heute potentiell diverse neue Geräte in Frage: diverse Sensoren als Datenlieferanten, Motoren, Maschinensteuerungen, Heimelektronik als Datenempfänger.

Startpunkt Arduino

Sehr oft beginnt das Prototyping dabei auf der Arduino-Plattform. Vor 10 Jahren an einer Universität in Italien ins Leben gerufen, ermöglicht sie den raschen Einstieg und die effiziente Umsetzung von Ideen.

Um die Plattform hat sich ein umfangreiches Ökosystem an Software-Bibliotheken für alle möglichen Elektronikkomponenten, vom Temperatursensor bis zum LiDAR (laserbasierte Distanzmessung, wird z.B. in Google’s autonomen Fahrzeugen verwendet), Motoren, Pumpen usw. etabliert.

Arduino

Die traditionellen Arduino-Boards beeindruckt heute nicht mehr mit ihren Leistungsdaten: 8 Bit ATmega 328P CPU, getaktet mit 16 MHz, 32 kB Flash, 2 Kb SRAM. V.a. letzteres lässt einem Software-Entwickler zuerst einmal die Nackenhaare zu Berg stehen. Trotzdem reicht dies für erstaunlich viele Mess- und Steuerungseinsätze problemlos und erledigt dies dort, wo Echtzeitsysteme gefragt sind, meist besser als ausgewachsener Computer (Bsp: Motorsteuerung für CNC- oder 3D Drucker).

Neuere Boards wie das Arduino Due setzen inzwischen auf eine 32-Bit ARM Cortex CPU – die Kompatibilität zu bestehenden Software-Bibliotheken und Hardware-Zusätzen (Shields) ist aber noch nicht immer optimal.

Arduino Uno R3

Vom spielerischen Einstieg zum professionellen Einsatz

Arduino versucht dabei trickreich, die Komplexität der hardwarenahen Entwicklung vor dem Einsteiger zu verbergen. Von C/C++, Memory management, Interruptsteuerung ist selten die Rede, compilieren heisst “verifizieren”, Programme werden “Sketches” genannt. Über den Sinn dieser Tarnung kann diskutiert werden, für gestandene Entwickler wirken sie komisch, dem Neuling mag damit durchaus die Angst genommen werden.

Ein Ärgernis allerdings ist die mitgelieferte Entwicklungsumgebung, die Arduino IDE. Wer richtige Entwicklungswerkzeuge und IDEs wie Eclipse oder die IntelliJ Tools kennt, wird sich kaum mit den spärlichen Funktionen der Arduino IDE zufrieden geben wollen. Zum Glück gibt es Alternativen, wie die hervorragende Arduino Eclipse – Integration, welche auf allen gängigen Betriebssystemen einsetzbar ist.

Soll nicht eine Individuallösung, sondern ein Massenprodukt entwickelt werden, so wird nach dem Prototyping-Zyklus auf das Arduino-Entwicklungsboard verzichtet: Zum Einsatz kommt dann eine auf die Anwendung optimierte Platine, welche typischerweise in Fernost produziert und bestückt wird.

Heute ist die Arduino-Plattform rsp. der zugrunde liegende Atmega-Mikroprozessor in vielen Produkten im Einsatz – insbesondere in den verschiedensten 3D Druckern und CNC-Fräsen aus dem Maker-Bereich.

Grbl – die Open-Source Maschinen-Steuersoftware für den Arduino Uno oder Arduino Mega – kommt in vielen 3D-Druckern und CNC-Fräsern zum Einsatz. Sie wandelt G-Code in Motoren-Steuersignale um.

Mit Eclipse machts deutlich mehr Spass als mit der Arduino IDE

Moderne Hardware

In den letzten Jahren sind verschiedene neue Player im Arduino-Umfeld aufgetaucht, wie z.B. Intel’s Versuch mit dem Intel Edison, in diesem Markt Fuss zu fassen. Mit 500 MHz, 1 GB RAM und 4 GB SD ist der Edison mit Abstand die leistungsfähigste Arduino-Plattform.

Allerdings ist sie mit rund CHF 70.- Stück auch rund 10x so teuer wie ein Arduino Nano und für die meisten für Arduino typischen Lösungen ein Overkill: In diesem Leistungsbereich wäre auch ein Raspberry Pi, welcher bereits eine ausgewachsene Computerplattform ist und nochmals wesentlich mehr Leistung mitbringt, eine gute Wahl.

Seit rund 2 Jahren ist auch der ESP8266 der chinesischen Firma Espressif auf dem Markt. Ursprünglich primär als Wifi-Schnittstelle für Arduino-Boards gedacht, wurde schnell erkannt, dass der ESP8266, ein SoC (System on Chip mit CPU, Ram, Flash-Speicher, Wifi etc) sich prima als Entwicklungsplattform eigent – ohne Umweg über einen klassischen Arduino.
Die ESP8266 Leistungsdaten sind beachtlich:

  • CPU: 80 MHz, 32 bit RISC
  • RAM: 96kB
  • Flash: 4 MB
  • WiFi (Client, AccessPoint Mode oder beides gleichzeitig)
  • 10 digital IO pins, 1 ADC (10 bit)

Der ESP8266 ist bereits ab $3 erhältlich, Entwickler-Boards wie das ESP-12E ab $7.

Der ESP8266 auf dem ESP 12E Entwicklerboard.

Arduino meets ESP!

Den ESP8266 kann man mit dem von Espressif zur Verfügung gestellten SDK in C++ programmieren. Interessant ist auch die NodeMCU Variante, bei welcher LUA-Scripts zum Einsatz kommen. Für uns besonders spannend ist aber die Ardino-Integration des ESP8266 Arduino Core Projektes, welches den ESP mit den Arduino-Sprachfunktionen ausrüstet.

Damit können wir auf sehr viele bestehende Software-Bibliotheken zurückgreifen (lediglich jene, welche spezifisch für die AVR-Plattform optimiert wurden, werden nicht 1:1 funktionieren können). Mit dem integrierten SPIFFS ist sogar ein Dateisystem im Core dabei!

Die Integration in die Arduino IDE ist, seit diese zusätzliche Board Manager unterstützt, denkbar einfach – eine JSON-Url als “Additional Board” eintragen – fertig! Danach steht dieses Board in der Arduino IDE wie auch in Eclipse Arduino zur Verfügung. ESP Arduino Core bringt auch eine Menge Beispiele mit, welche die Verwendung der ESP-spezifischen Funktionen wie Wifi, Webserver, DNS etc. aufzeigen.

ESP8266 in der Arduino IDE

Hands-on im insign Lab: Steckdosen übers Web fernsteuern!

Bei der insign Webagentur testen wir im Rahmen der insign Labs öfter neue Technologien, und prüfen, ob diese bereits für reale Kundenprojekte verwendet werden können.

Vor einigen Tagen habe ich darum einen Hackathon für unsere Entwickler organisiert, um ihnen den ESP8266 näher zu bringen. Dabei haben wir mittels ESP und Funksendern Steckdosen kabellos und via selbstentwickelter und auf dem ESP gespeicherter Web-Oberfläche oder via API aus anderen Apps geschaltet.


Fazit: Wir hatten viel Spass mit dem ESP und würden diesen sofort in realen Projekten einsetzen! Mehr über die praktische Anwendung gibt es im zweiten Teil: Geräte übers Internet steuern mit dem ESP8266.

insign Labs: ESP8266 Hackathon