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

Slides:



Advertisements
Ähnliche Präsentationen
Entwicklung des Attiny-Boards Version 1.0 – 2.1 Prototyp.
Advertisements

Hochschule Fulda – FB ET Sommersemester 2010
Wiederholung Betriebssystem bietet eine Abstraktion der Hardware an:
Atmel AVR JTAG Einführung
Vorlesung 3: Verschiedenes Universität Bielefeld – Technische Fakultät AG Rechnernetze und verteilte Systeme Peter B. Ladkin
Aufgabe Hardwarenahe Programmierung Bluetooth/Lan-Gateway Frank Reichenbach LAN/WLAN Bluetooth Kommunikation zwischen zwei Clients über Client 1 verbindet.
Einführung in die Technik des Internets
1 Vorlesung 3 Verschiedenes Peter B. Ladkin
Produktmanagement RimatriX & Software Solutions / Fabian Schäfer / 12
Programmieren in C Zeichen-/Stringfunktionen Dynamischer Speicher
PSI - Überblick und Szenarien
Saia® Systemkatalog Kapitel B2-Kommunikation & Interaktion
DYNTEST –Control Systems -Probleme beim Auslesen-
Internet und SMS Internet und SMS Daniel Rickenbacher Jeremy Deuel.
Eine Fernsteuerung für den Lego EV3 Roboter
Hardlock Server Setup Ein MCPS Messdatenerfassungs - PC kann auch als
Programmieren in C Dynamische Listen / Bäume
Μ Version 1.0Seite 1µVision Start Debugger Set Breakpoint µVision Debugger.
Informatik II Grundlagen der Programmierung Programmieren in C Benutzerinteraktion / Ein- und Ausgabe Hochschule Fulda – FB ET Sommersemester
Meldungen über Ethernet mit FINS/UDP
iMAS Schnittstellen - Übersicht
» Ende-Ende Durchsatztest
Entwicklung des Attiny-Boards
Was wäre wenn….. SNMP (Simple Network Managment Protocol)
Mikrocomputertechnik Jürgen Walter
Entfernungsmessung mit Ultraschall
Aktueller Stand der Technik. Auf dem Markt sind heute bereits 64-Bit Mikrocontroller. Die meiste Verwendung finden allerdings noch immer die 8-Bit Modelle.
Herzlich Willkommen Roland Kistler Sales Engineer
von Lukas Spiegel & Alexander Dür
NiederwangenWinterthurBaselMünchenFrankfurt Ralf Fachet Das M2M Kochbuch Fernzugriff mit Mobilfunk.
EchoLink/SVXLink DK5TRB, Thomas Behr, EchoLink Funktionsprinzip Station A Rechner mit EchoLink Software Station B Rechner mit EchoLink Software.
Markus Heller, M.A. (DL8RDS)Datum: Folie Nummer 1 File: Einsatz von Mikrocontrollern in Amateurfunkprojekten Microcontroller in Selbstbauprojekten.
IP-ADRESSIERUNG ● IP = Internet Protokoll ● dient zur Kommunikation zwischen Netzwerkteilnehmern ● zwei Versionen ● ipV4: 32 bits ● ipV6: 128 bits.
Hardware.
Netzwerke - Protokolle
Hardware.
Hardware Ordne die Begriffe den Bildern zu!
Programmieren in C / C++ ESP8266-Boards und das Internet der Dinge
C / C++ für das Internet der Dinge und Hausautomatisierung Arduino Uno / Nano / … Input, Interrupts, Timer, Sleepmode Hochschule Fulda – FB AI Sommersemester.
Crashkurs Computernetzwerke
Mikrocontroller programmieren
Modulfest am International Departement in Karlsruhe
Power Point Präsentationsvorlagen
Marsroboter fernsteuern
ABB i-bus® KNX IP Schnittstelle IPS/S 2.1 IP Router IPR/S 2.1
Programmieren in C Dynamische Listen / Bäume
Programmieren in C Zeichen-/Stringfunktionen Dynamischer Speicher
Projektmodul DM Wearables
Programmieren in C Grundlagen C 2
Programmieren in C / C++ Software Serial, Bluetooth
Inhaltsverzeichnis Was ist Arduino? Hardwarekomponenten
>> Analogwerte senden über serielle Schnittstelle
Web-Interface for Multi-FPGA Board Pamette
LCD-Display HD44780 kompatibles Display
Unser Mikrocontroller – Der Arduino
Arbeiten mit dem Terminal
Hochschule Fulda – FB AI Sommersemester 2017
Programmieren in C Wie speichert C
Die I/O-Register des Attiny
Schnittstellen und Datenaustausch / Inputs und Outputs
Bauprojekt Feinstaubsensor
Projektmodul DM Kurze Einführung Arduino und Arduino-Programmierung
Projektmodul DM Wearables
Programmieren in C Module und Bibliotheken
Verbindung mit einem Netzwerk
Den Bus erkunden ….
Ich brauche eine Web-Seite vom Server im Internet
ESP32 Arduino Herzlich willkommen zum Edison Quickie. „ESP32-Blink“
Hardware.
Überblick zur Protokoll-/ Verbindungswahl zwischen Backend-Server und Gateway ITC-MEETING Tobias Hänel.
 Präsentation transkript:

Programmieren in C / C++ Internet der Dinge Mikrocontroller ESP8266 Hochschule Fulda – FB AI Sommersemester 2017 http://c.rz.hs-fulda.de Peter Klingebiel, HS Fulda, FB AI

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

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

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

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

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

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

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

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

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

Espressif ESP8266 1 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

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

Espressif ESP8266 3 Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

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

Espressif ESP8266 5 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

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

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

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

ESP-01 3 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

ESP-01 4 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, 115200, evtl. auch 57600 oder 74880, Linedisziplin einstellen: meist CR und NL Kommando AT eingeben, Antwort OK (hoffentlich) Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

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

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-01 // Instantiierung eines Objekts SoftwareSerial espSerial = SoftwareSerial(RXPin, TXPin); Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI

ESP-01 7 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

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

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

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

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

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

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

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

AT-Kommandos 7 Verbindung zum WLAN abfragen (join) AT+CWJAP? +CWJAP:"ssid","macaddr",5,-70 OK IP-Adresse abfragen AT+CIFSR +CIFSR:STAIP,"192.168.1.13" +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

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

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

AT-Kommandos 10 IP-Adresse abfragen AT+CIFSR +CIFSR:STAIP,"192.168.1.23" +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

AT-Kommandos 11 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

AT-Kommandos 12 mehr AT-Kommandos und mehr zu AT-Kommandos finden sich auf den Seiten der Hersteller im Internet Kurze und knappe Übersicht von Pridopia: ESP8266ATCommandsSet (http://www.pridopia.co.uk/pi-doc/ESP8266ATCommandsSet.pdf) Referenz von Espressif ESP8266 AT Instruction Set: (https://www.espressif.com/sites/default/files/documentation/4a-esp8266_at_instruction_set_en.pdf) 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

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

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

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

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 (https://espressif.com/en/support/download/other-tools) Firmware aus dem Netz, z.B von AI-Thinker z.B. Firmware For ESP8266 (http://wiki.aprbrother.com/wiki/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