Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Programmieren in C / C++ Internet der Dinge Mikrocontroller ESP8266

Ähnliche Präsentationen


Präsentation zum Thema: "Programmieren in C / C++ Internet der Dinge Mikrocontroller ESP8266"—  Präsentation transkript:

1 Programmieren in C / C++ Internet der Dinge Mikrocontroller ESP8266
Hochschule Fulda – FB AI Sommersemester 2017 Peter Klingebiel, HS Fulda, FB AI

2 Internet der Dinge 1 Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

3 Internet der Dinge 2 Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

4 Internet der Dinge 3 für das Internet der Dinge ist die Anbindung von Sensoren, Aktoren, Microkontrollern usw. an das Internet erforderlich und notwendig eher selten ist die direkte Anbindung der Komponenten an das Internet meist: Betrieb der Komponenten in speziellen Subnetzen und Verbindung mit dem Internet über dedizierte Server innerhalb der IoT-Netze: Verbindungen über WiFi, Bluetooth oder andere Funktechniken kabelgebundene Komponenten sind eher selten oftmals werden für das IoT Clouddienste verwendet Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

5 Internet der Dinge 4 drei Anwendungsbeispiele (Quelle: Bosch)
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

6 Arduino Lösungen 1 Arduino Ethernet Shield
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

7 Arduino Lösungen 2 Arduino WiFi Shield
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

8 Arduino Lösungen 3 Adafruit Wifi-Modul mit dem TI CC3000
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

9 Arduino Lösungen 4 Sparkfun ESP8266 Wifi-Shield
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

10 Arduino Lösungen 5 Arduino ESP8266 WiFi Shield
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

11 Espressif ESP eine kostengünstige Lösung ist der Mikrocontroller ESP8266 der chinesischen Firma Espressif Ultra-low-power-32-Bit Mikrocontroller Kern: Xtensa LX106 von Tensilica 80 bis 160 MHz Taktfrequenz 512 Kbyte bis mehrere Megabyte Speicher integriertes WiFi 2,4 GHz arbeitet nur mit 3.3 Volt ! direkt programmierbar (z.B. mit Arduino IDE) steuerbar mit AT-Kommandos LUA-Interpreter, Micropython-Interpreter u.v.a.m. Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

12 Espressif ESP8266 2 Blockschaltbild des ESP8266
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

13 Espressif ESP Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

14 Espressif ESP8266 4 Nodemcu-Board Wemos D1 Mini
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

15 Espressif ESP es gibt eine Vielzahl verschiedener ESP8266-Module und auf dem ESP8266 basierender Boards Unterschiede i.w.: Speicherausbau (512KB bis 4 MB und auch mehr) WiFi-Antennen bzw. Antennenanschlüsse herausgeführte und damit nutzbare Pins, insbesondere GPIO-Pins Ausbau der Module z.B. mit USB Minimalmodule für IoT-Komponenten Entwicklungsboards wie Nodemcu und Wemos D1 Wichtig: ESP8266 kann im WiFi als Station, als Accesspoint oder als beides fungieren Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

16 Espressif ESP8266 6 Beispiel: ESP-01
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

17 ESP-01 1 Aufbau des ESP-01-Moduls Externe Anschlüsse Memory Antenne
CPU Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

18 ESP-01 2 Verbindung Arduino - ESP-01-Modul
Achtung: Level von 3.3-Volt beachten (VCC und RX) Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

19 ESP ESP-01-Adapter: 5 Volt-Level, nur 4 Anschlüsse: VCC, GND, RX und TX damit ist WiFi über eine serielle Verbindung möglich Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

20 ESP Ansteuerung direkt über die serielle Schnittstelle des Arduino (RX0 und TX1) 1. Schritt: Arduino-Sketch, der nichts tut, laden void setup() { } void loop() { } 2. Schritt ESP-Adapter mit Arduino verbinden RX<->RX0, TX<->TX1, VCC<->5V, GND<->GND 3. Schritt: seriellen Monitor starten, Baudrate einstellen: 9600, , evtl. auch oder 74880, Linedisziplin einstellen: meist CR und NL Kommando AT eingeben, Antwort OK (hoffentlich) Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

21 ESP Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

22 ESP-01 6 besser ist die Nutzung der Klasse SoftwareSerial
wie bei den BT-Modulen HC-05 und HC-06 z.B. über die Pins D2 und D3 #include <SoftwareSerial.h> #define RXPin 2 // D2 -> TX ESP-01 #define TXPin 3 // D3 -> RX ESP // Instantiierung eines Objekts SoftwareSerial espSerial = SoftwareSerial(RXPin, TXPin); Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

23 ESP einfacher Sketch zur Kommunikation #include <SoftwareSerial.h> #define RXPin 2 // D2 <-> RX ESP-01 #define TXPin 3 // D3 <-> TX ESP-01 SoftwareSerial espSerial = SoftwareSerial(RXPin, TXPin); void setup() { Serial.begin(9600); espSerial.begin(9600); } void loop() { // von serial lesen, auf esp schreiben while(Serial.available() > 0) espSerial.write(Serial.read()); // von esp lesen, auf serial schreiben while(espSerial.available() > 0) Serial.write(espSerial.read()); } Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

24 ESP-01 8 Sketch laden und seriellen Monitor öffnen
Baudrate 9600 und Linedisziplin CR+NL einstellen die Ansteuerung geschieht mit AT-Kommandos es gibt verschiedene ESP-01-Module verschiedener Hersteller mit unterschiedlichen Firmwareversionen, die sich leider ein wenig voneinander unterscheiden Die Kommandos in Großbuchstaben Kommandosyntax muss exakt eingehalten werden Bsp: Kommando AT – Funktion prüfen, Antwort: OK AT OK Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

25 AT-Kommandos 1 Aufbau von AT-Kommandos zum Einstellen von ESP-Eigenschaften AT+KOMMANDO=PARAM1,PARAM2 z.B. Einstellen des Betriebsmodus des ESP-Moduls AT+CWMODE=2 OK Aufbau von AT-Kommandos zum Abfragen von Einstellungen AT+KOMMANDO? z.B. Abfragen des Betriebsmodus des ESP-Moduls AT+CWMODE? +CWMODE:2 OK Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

26 AT-Kommandos 2 Einige wichtige AT-Kommandos und ihre Bedeutung
ESP-Modul und Verbindung prüfen AT OK Firmwareversion abfragen AT+GMR AT version: (Jul :04:45) SDK version: (39cb9a32) Ai-Thinker Technology Co. Ltd. Dec :21:16 OK Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

27 AT-Kommandos 3 ESP-Modul resetten, das Modul ist bereits mit dem WLAN verbunden AT+RST OK WIFI DISCONNECT bBÖ†QR…ÑÂÝ¥RNÃȤRNÃI�ÜNÌ¡c ... (und noch mehr unleserliche Zeichen, die wegen der nicht übereinstimmenden Baudrate unlesbar sind ) Ai-Thinker Technology Co. Ltd. Ready WIFI CONNECTED WIFI GOT IP Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

28 AT-Kommandos 4 Baudrate des ESP-Moduls einstellen (Vorsicht!) AT+CIOBAUD=baudrate OK Betriebsmodus des ESP-Moduls einstellen (1 = Station, 2 = Accesspoint, 3 = beides) AT+CWMODE=mode OK Beispiel: Modus auf Station einstellen AT+CWMODE=1 OK Modus abfragen AT+CWMODE? +CWMODE:1 OK Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

29 AT-Kommandos 5 Anzahl gleichzeitiger Verbindungen einstellen 1 = mehrere Verbindungen zulassen, bei Servern sinnvoll, 0 = eine Verbindung zulassen, bei Clients sinnvoll AT+CIPMUX=connections OK Beispiel: auf eine Verbindung einstellen AT+CIPMUX=0 OK Anzahl Verbindungen abfragen AT+CIPMUX? +CIPMUX:0 OK Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

30 AT-Kommandos 6 erreichbare WLANs ausgeben (list) Hinweis: funktioniert nur bei Station-Modus AT+CWLAP +CWLAP:(4,"ssid1",-89,"macaddr1",1,23,0) +CWLAP:(3,"ssid2",-64,"macaddr2",5,55,0) +CWLAP:(2,"ssid3",-56,"macaddr3",3,34,0) +CWLAP:(7,"ssid4",-45,"macaddr4",4,29,0) OK Verbindung zum WLAN aufbauen (join) AT+CWJAP="ssid","password" +CWJAP:"ssid","password",5,-72 WIFI CONNECTED WIFI GOT IP OK Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

31 AT-Kommandos 7 Verbindung zum WLAN abfragen (join) AT+CWJAP? +CWJAP:"ssid","macaddr",5,-70 OK IP-Adresse abfragen AT+CIFSR +CIFSR:STAIP," " +CIFSR:STAMAC,"aa:bb:cc:dd:ee:ff" OK Verbindung zum WLAN beenden (quit) AT+CWQAP OK WIFI DISCONNECT Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

32 AT-Kommandos 8 Clientverbindung zu Server aufbauen, Protokoll = TCP oder UDP AT+CIPSTART="protocol","server",port CONNECT OK dann Daten senden, zunächst Anzahl Zeichen AT+CIPSEND=length OK > nach dem Prompt > Daten an ESP senden data Recv length bytes SEND OK Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

33 AT-Kommandos 9 nach dem Senden Daten lesen IPD,length:data from server CLOSED Zusammenfassung: AT-Kommandos für TCP-Clients AT+CWMODE=1 AT+CIPMUX=0 AT+CWJAP="ssid","password" AT+CIPSTART="TCP","server",port AT+CIPSEND=len data danach Daten vom Server lesen und verarbeiten wichtig: das Protokoll muss genau eingehalten werden, insbesondere beim Senden von Daten Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

34 AT-Kommandos IP-Adresse abfragen AT+CIFSR +CIFSR:STAIP," " +CIFSR:STAMAC,"a0:20:a6:08:71:e2" eventuell auch mehrere Adressen (z.B. im Modus 3) TCP-Server starten AT+CIPSERVER=1,port OK Nach Verbindung durch Client Daten senden AT+CIPSEND=connection,length data Verbindung schliessen AT+CIPCLOSE=connection Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

35 AT-Kommandos Zusammenfassung: AT-Kommandos für TCP-Server AT+CWMODE=1 AT+CIPMUX=1 AT+CWJAP="ssid","password" AT+CIFSR AT+CIPSERVER=1,port AT+CIPSEND=length data AT+CIPCLOSE=connection danach Daten vom Sever lesen und verarbeiten Wichtig: das Protokoll muss genau eingehalten werden, insbesondere beim Senden von Daten Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

36 AT-Kommandos mehr AT-Kommandos und mehr zu AT-Kommandos finden sich auf den Seiten der Hersteller im Internet Kurze und knappe Übersicht von Pridopia: ESP8266ATCommandsSet ( Referenz von Espressif ESP8266 AT Instruction Set: ( es gibt weitere gute Tutorials über die Verwendung von AT-Kommandos beim ESP8266 in Netz die Programmierung mit AT-Kommandos ist allerdings ein wenig frickelig und mühsam Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

37 Flashen des ESP 1 ESP-01 ist notwendig,
wenn der ESP standalone verwendet werden soll wenn eine neue Firmware aufgespielt werden soll dazu notwendig USB-TTL-Converter, am besten mit 3.3 Volt-Level oder ein Arduino mit leeren Sketch (s.o.) Anschluß des ESP-01 an USB-TTL-Converter, z.B. FTDI-Board oder Arduino: VCC – 3.3 V, GND – GND CH_PD – 3.3 V, GPIO0 – GND USB-TTL: RX – TX, TX – RX Arduino: RX – RX0, TX – TX1 (s.o.) Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

38 Flashen des ESP 2 ESP-01 an FTDI-Board (USB – TTL)
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

39 Flashen des ESP 3 ESP-01 an Arduino, serielle Schnittstelle
Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

40 Flashen des ESP 4 ESP kann in der Arduino IDE programmiert werden
dazu: Erweiterung der IDE um ESP8266 nötig Flashen dann aus der IDE (wie beim Arduino) oder Flashen mit entsprechender Flash-Software insbesondere beim Flashen von Firmware z.B. Espressif Flash Download Tools ( Firmware aus dem Netz, z.B von AI-Thinker z.B. Firmware For ESP8266 ( Flashprogramme und Firmware gibt es in vielfältieger Form, z.B. LUA- oder Python-Interpreter u.v.a.m. Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI


Herunterladen ppt "Programmieren in C / C++ Internet der Dinge Mikrocontroller ESP8266"

Ähnliche Präsentationen


Google-Anzeigen