{"id":402,"date":"2021-06-10T09:26:33","date_gmt":"2021-06-10T07:26:33","guid":{"rendered":"https:\/\/www.iot-embedded.de\/iot-2021\/?p=402"},"modified":"2021-07-12T14:40:07","modified_gmt":"2021-07-12T12:40:07","slug":"aufsetzen-verschiedener-entwicklungsumgebungen-fuer-den-esp8266","status":"publish","type":"post","link":"https:\/\/www.iot-embedded.de\/iot-2021\/beverage-monitoring\/aufsetzen-verschiedener-entwicklungsumgebungen-fuer-den-esp8266\/","title":{"rendered":"Aufsetzen verschiedener Entwicklungsumgebungen f\u00fcr den ESP8266"},"content":{"rendered":"\n<p>In diesem Beitrag schauen wir uns verschieden Entwicklungsumgebungen f\u00fcr den ESP8266 in Verbindung mit dem Arduino Framework an. Ziel des Posts ist zu zeigen wie mit zwei verschiedenen Entwicklungsumgebung\/Tools ein Programm f\u00fcr den ESP8266 kompiliert und auf den Mikrocontroller geladen werden kann. Diese Entwicklungsumgebungen brauchen wir in sp\u00e4teren Blogbeitr\u00e4gen, in welchen wir eine Applikation entwerfend m\u00f6chten welche Over-The-Air Updates erlaubt.<\/p>\n\n\n\n<p>Wir behandeln im Folgenden zum einen die Arduino IDE als auch das PlatformIO CLI Tool. F\u00fcr beide Programme beschreiben wir die Installation, das Setup f\u00fcr den ESP8266 und wie ein Programm kompiliert und geladen wird. Hiernach zeigen wir, wie in beide Tools Bibliotheken installiert und Dateisysteme auf den ESP geladen werden k\u00f6nnen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"arduino-ide\">Arduino IDE<\/h2>\n\n\n\n<p>Die Arduino IDE kann f\u00fcr Windows, Linux und Mac von der offiziellen Arduino Website heruntergeladen werden.<\/p>\n\n\n\n<p>Je nach Linux Distribution ist die Arduino IDE vielleicht als ein Paket per Packet Manager zu erhalten.<\/p>\n\n\n\n<ul><li><a href=\"https:\/\/www.arduino.cc\/en\/guide\/windows\">Windows<\/a><\/li><li><a href=\"https:\/\/www.arduino.cc\/en\/guide\/macOSX\">macOSX<\/a><\/li><li><a href=\"https:\/\/www.arduino.cc\/en\/guide\/linux\">Linux<\/a><\/li><\/ul>\n\n\n\n<p>Nach der Installation der Arduino IDE muss der ESP8266 als spezifisches Board innerhalb der IDE installiert werden. (F\u00fcr ein Tutorial mit Bildern gibt es hier eine <a href=\"https:\/\/randomnerdtutorials.com\/how-to-install-esp8266-board-arduino-ide\/\">Zusatzquelle<\/a>.)<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"installation-des-boards\">Installation des Boards:<\/h4>\n\n\n\n<ol type=\"1\"><li>Datei &gt; Voreinstellungen &gt; Zus\u00e4tzliche Boardverwalter-URLs Ben\u00f6tigte URL: http:\/\/arduino.esp8266.com\/stable\/package_esp8266com_index.json Dr\u00fccke Knopf: OK<\/li><li>Werkzeuge &gt; Board: Boardverwalter\u2026 Suche nach: ESP8266 Dr\u00fccke Knopf: Installieren<\/li><\/ol>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"auswahl-des-richtigen-boards\">Auswahl des richtigen Boards:<\/h4>\n\n\n\n<p>(Wir nutzen den ESP8266 NodeMCU 1.0)<\/p>\n\n\n\n<p><code>Werkzeuge &gt; Board: NodeMCU 1.0 ESP-12E-Module<\/code><\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"auswahl-des-seriellen-ports\">Auswahl des seriellen Ports:<\/h4>\n\n\n\n<p>(Hierf\u00fcr muss der Mikrocontroller angeschlossen sein, auf Windows sollte bspw. COM3 oder COM5 als m\u00f6gliche Auswahl zu sehen sein)<\/p>\n\n\n\n<p><code>Werkzeuge &gt; Port: COM?<\/code><\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"um-ein-beispiel-programm-zu-laden\">Um ein Beispiel Programm zu laden:<\/h4>\n\n\n\n<p><code>Datei &gt; Beispiels &gt; 01. Basics &gt; Blink<\/code><\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"um-das-beispielprogramm-zu-kompilieren\">Um das Beispielprogramm zu Kompilieren:<\/h4>\n\n\n\n<p><code>Sketch &gt; \u00dcberpr\u00fcfen\/Kompilieren (STRG+R)<\/code><\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"um-ein-beispielprogramm-auf-den-esp-zu-laden-flashen\">Um ein Beispielprogramm auf den ESP zu laden (flashen):<\/h4>\n\n\n\n<p><code>Sketch &gt; Hochladen (STRG+U)<\/code><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"platformio\">PlatformIO<\/h2>\n\n\n\n<p>Eine andere M\u00f6glichkeit bietet das PlatformIO Toolset. Auch hier gibt es eine IDE, welche z.B. Compiler und Editor mit sich bringt. Wir stellen jedoch die CLI Variante vor. Die genaue Installation ist in der <a href=\"https:\/\/docs.platformio.org\/en\/latest\/\/core\/installation.html\">Dokumentation<\/a> gut beschrieben. In den meisten F\u00e4llen sollte es als pip Paket installiert werden k\u00f6nnen. Es wird meines Wissens mindestens Python 3.6 ben\u00f6tigt.<\/p>\n\n\n\n<p><code>pip3 install -U platformio<\/code><\/p>\n\n\n\n<p>Im <a href=\"https:\/\/docs.platformio.org\/en\/latest\/\/core\/quickstart.html\">Quick Start Guide<\/a> wird das Erstellen eines Projektes dargestellt. Folgend die Vorgehensweise f\u00fcr ein kleines \u201cHello World\u201d:<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"erstellen-eines-neuen-ordners-f\u00fcr-das-projekt\">Erstellen eines neuen Ordners f\u00fcr das Projekt:<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>$ mkdir blink_example\n$ cd blink_example<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"initialisieren-des-projektes\">Initialisieren des Projektes:<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>$ pio project init --board nodemcuv2\n$ tree\nblink_example\n\u251c\u2500\u2500 include\n\u2502  \u2514\u2500\u2500 README\n\u251c\u2500\u2500 lib\n\u2502  \u2514\u2500\u2500 README\n\u251c\u2500\u2500 platformio.ini\n\u251c\u2500\u2500 src\n\u2514\u2500\u2500 test\n   \u2514\u2500\u2500 README<\/code><\/pre>\n\n\n\n<p>Es k\u00f6nnen auch mehrere Boards angegeben werden <code>--board A --board B ...<\/code>, falls die Applikationen auf mehreren Ger\u00e4ten ben\u00f6tigt wird. Jedoch sollte man hier darauf beachten, dass manche Ger\u00e4te verschieden Eigenschaften haben, wie z.B. eingebaute LED oder unterschiedliche PIN-Belegungen. M\u00f6glicherweise sind hier Pr\u00e4prozessor Statements notwendig.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"schreiben-des-codes\">Schreiben des Codes:<\/h4>\n\n\n\n<p>Um Logik zu erstellen, muss die Datei src\/main.cpp erstellt und gef\u00fcllt werden. Ein Beispiel, welches die LED des ESP8266 blinken l\u00e4sst, sieht folgend aus:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ touch src\/main.cpp\n$ tree\nblink_example\n\u251c\u2500\u2500 include\n\u2502  \u2514\u2500\u2500 README\n\u251c\u2500\u2500 lib\n\u2502  \u2514\u2500\u2500 README\n\u251c\u2500\u2500 platformio.ini\n\u251c\u2500\u2500 src\n\u2502  \u2514\u2500\u2500 main.cpp &lt;--- HERE\n\u2514\u2500\u2500 test\n   \u2514\u2500\u2500 README\n$ cat src\/main.cpp<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ File src\/main.cpp\n\/**\n * Blink\n *\n * Turns on an LED on for one second,\n * then off for one second, repeatedly.\n *\/\n#include \"Arduino.h\"\n\n#ifndef LED_BUILTIN\n#define LED_BUILTIN 13\n#endif\n\nvoid setup()\n{\n  \/\/ initialize LED digital pin as an output.\n  pinMode(LED_BUILTIN, OUTPUT);\n}\n\nvoid loop()\n{\n  \/\/ turn the LED on (HIGH is the voltage level)\n  digitalWrite(LED_BUILTIN, HIGH);\n\n  \/\/ wait for a second\n  delay(1000);\n\n  \/\/ turn the LED off by making the voltage LOW\n  digitalWrite(LED_BUILTIN, LOW);\n\n   \/\/ wait for a second\n  delay(1000);\n}<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"kompilieren-des-codes\">Kompilieren des Codes:<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>$ pio run<\/code><\/pre>\n\n\n\n<p>Beim ersten Ausf\u00fchren werden die ben\u00f6tigten Werkzeuge heruntergeladen, daher wird es je nach Internetverbindung etwas dauern.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"flashen-des-kompilierten-codes\">Flashen des kompilierten Codes:<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>$ pio run --target upload<\/code><\/pre>\n\n\n\n<p>Wenn dieses Kommando beendet, sollte die LED des ESP8266 anfangen langsam zu blinken.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"weitere-funktionen-der-entwicklungsumgebungen\">Weitere Funktionen der Entwicklungsumgebungen<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"bibliotheken\">Bibliotheken<\/h3>\n\n\n\n<p>Beide Entwicklungsumgebung k\u00f6nnen zudem weiter Bibliotheken installieren, wie beispielsweise <a href=\"https:\/\/www.arduino.cc\/reference\/en\/libraries\/pubsubclient\/\">PubSubClient<\/a> f\u00fcr die Kommunikation mit einem MQTT Broker.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"arduino-ide-1\">Arduino IDE<\/h4>\n\n\n\n<p>Werkzeuge &gt; Bibliotheken verwalten Suche nach: PubSubClient Dr\u00fccke Knopf: Installieren<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"platformio-cli\">PlatformIO CLI<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>$ pio lib search pubsubclient\n\nPubSubClient\n============\n#ID: 89\nA client library for MQTT messaging. MQTT is a lightweight messaging protocol ideal for small devices. This library allows you to sen\n and receive MQTT messages. It supports the latest MQTT 3.1.1 protocol and can be configured to use the older MQTT 3.1 if needed. It\nupports all Arduino Ethernet Client compatible hardware, including the Intel Galileo\/Edison, ESP8266 and TI CC3000.\n...\n$ pio lib install 89<\/code><\/pre>\n\n\n\n<p>Falls die ID der Bibliothek bekannt ist, kann diese direkt per ID hinzugef\u00fcgt. werden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"erstellen-und-hochladen-von-dateisystemen\">Erstellen und Hochladen von Dateisystemen<\/h3>\n\n\n\n<p>Des Weiteren k\u00f6nnen mit beiden Umgebungen lokale Dateisysteme auf den ESP geladen werden. (SPIFFS und LittleFS)<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"arduino-ide-2\">Arduino IDE<\/h4>\n\n\n\n<p>Im momentane Projekt Ordner wird ein Ordner <code>data<\/code> erstellt, welcher mit Dateien gef\u00fcllt werden kann. Je nach gew\u00fcnschtem Datei System wird ein Werkzeug zum Erstellen und Hochladen ben\u00f6tigt in <a href=\"https:\/\/randomnerdtutorials.com\/install-esp8266-nodemcu-littlefs-arduino\/\">diesem Tutorial<\/a> hat ein Tutorial zum Installieren und Anwenden des LittleFS Tools.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"platformio-cli-1\">PlatformIO CLI<\/h4>\n\n\n\n<p>Das gew\u00fcnschte Filesystem muss definiert sein, wie in der <a href=\"https:\/\/docs.platformio.org\/en\/latest\/platforms\/espressif8266.html#selecting-appropriate-filesystem\">Dokumentation<\/a> beschrieben. Falls kein genaues Dateisystem definiert ist, wird ein SPIFFS Dateisystem erstellt.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ cat platform.ini\n\n&#091;env:nodemcuv2]\nplatform = espressif8266\nboard = nodemcuv2\nframework = arduino\nboard_build.filesystem = littlefs<\/code><\/pre>\n\n\n\n<p>Um das Dateisystem hochzuladen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ pio run --target uploadfs<\/code><\/pre>\n\n\n\n<p>Mit diesen zwei Entwicklungsumgebungen k\u00f6nnen wir nun anfangen uns um die Over-The-Air Updates zu k\u00fcmmern. Aber genaueres hierzu in weiteren Beitr\u00e4gen. Aller Code zu den erstellten Projekten findet man <a href=\"https:\/\/github.com\/buermarc\/iot-blog-posts\/tree\/main\/ide\">hier<\/a>. Bei Fragen, Verbesserungen, Erg\u00e4nzungen, etc. gerne ein Kommentar dalassen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In diesem Beitrag schauen wir uns verschieden Entwicklungsumgebungen f\u00fcr den ESP8266 in Verbindung mit dem Arduino Framework an. Ziel des Posts ist zu zeigen wie mit zwei verschiedenen Entwicklungsumgebung\/Tools ein Programm f\u00fcr den ESP8266 kompiliert und auf den Mikrocontroller geladen<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[6],"tags":[],"_links":{"self":[{"href":"https:\/\/www.iot-embedded.de\/iot-2021\/wp-json\/wp\/v2\/posts\/402"}],"collection":[{"href":"https:\/\/www.iot-embedded.de\/iot-2021\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.iot-embedded.de\/iot-2021\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.iot-embedded.de\/iot-2021\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.iot-embedded.de\/iot-2021\/wp-json\/wp\/v2\/comments?post=402"}],"version-history":[{"count":4,"href":"https:\/\/www.iot-embedded.de\/iot-2021\/wp-json\/wp\/v2\/posts\/402\/revisions"}],"predecessor-version":[{"id":616,"href":"https:\/\/www.iot-embedded.de\/iot-2021\/wp-json\/wp\/v2\/posts\/402\/revisions\/616"}],"wp:attachment":[{"href":"https:\/\/www.iot-embedded.de\/iot-2021\/wp-json\/wp\/v2\/media?parent=402"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.iot-embedded.de\/iot-2021\/wp-json\/wp\/v2\/categories?post=402"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.iot-embedded.de\/iot-2021\/wp-json\/wp\/v2\/tags?post=402"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}