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

Ähnliche Dokumente
Embedded Hardware Getting Started

Einführung in Mikrokontroller Benutzung mit dem Arduino Board. Ramon Hofer ICVR

Die WiFI Library( bei dem meisten recent?

Technische Dokumentation

Netduino Mikroprozessor für.net Entwickler

Was ist Arduino? Historie Der Kern Entwicklungsumgebung Hardware Software Und wozu das Ganze? Workshop Mikrorechner 2012 A.

Railuino Hacking your Märklin

Making the Internet of Things

Railuino Hacking your Märklin

XT - NANO - XXL XT-NANO-XXL

XBee Funkmodule. Daten kabellos übertragen Markus Ulsaß, attraktor Hamburg,

ESP8266 unter Linux. Doku-Repo:

Ringlicht-v3 - Frei konfigurierbares Ringlicht mit RS232 Anbindung. Kurzbeschreibung

Embedded Linux gnublin Board Programmieren Sonstiges. Embedded Linux am Beispiel des Gnublin-Boards

Quanton Manual (de) Datum: URL: )

Open Hardware Workshop - Chemnitzer Linux-Tage

EX x RS-232 zu Ethernet / IP. Bedienungsanleitung. 6. Anschlüsse. 7. Technische Daten. Seriell 9 Pin D-SUB Stecker (Port 1 und 2) :

VINCULUM Adapter für USB-Sticks Getting Started

Android + Arduino Hardware steuern mit Android. Entwicklertag Karlsruhe, Sebastian Wastl

Abbildung 1: XBee Funkmodul: Chipantenne (hellblau), 20 Pins für Stromversorgung und Kommunikation (Unterseite)

Vario Projekt Kobo und Bluetooth

Codatex Hainzlmaier GmbH & Co.KG Ischlerbahnstraße 15 A-5020 Salzburg. ZE03 Configurator

Kurzbeschreibung RS-XMODUL-IP 3,3 Volt

Einführung in das Programmieren in der Sekundarstufe 1. mit einem Arduino und der Physical-Computing-Plattform

INFOBLATT 433MHz-FM-Mehrkanal-Transceiver RT433F4

IR6x1 Serie / UMTS/HSPA+ Router mit WLAN NETWORKS. WLAN nach IEEE b/g/n. HSPA+ mit 21 Mbit/s Downloadrate. IPSec/PPTP/ L2TP/GRE/Open VPN

Vorläufiges. Handbuch

TIA Portal V13 Kommunikation mit S7-1500

Konfiguration ebus Koppler Ethernet

Teile und Herrsche. Themen heute. Eigene Funktionen Parameter Fallunterscheidungen Fehlersuche. Programmieren für Ingenieure Sommer 2015

Bluetooth Low Energy Demo mit dem Apple iphone 4s

Erste Schritte. Das Arduino-Board. Ihr Fundino-Board. Programmieren für Ingenieure Sommer Andreas Zeller, Universität des Saarlandes

GmbH, Stettiner Str. 38, D Paderborn

METTLER TOLEDO ETHERNET-Option

Deckblatt. VPN-Tunnel über Internet. SCALANCE S61x und SOFTNET Security Client Edition FAQ August Service & Support. Answers for industry.

PCLoad32.exe funktioniert nicht, Daten werden nicht übertragen. AT+CSQ:Signal Qualität reicht nicht für Rufaufbau: +csq kleiner 7

Cyexplorer Handbuch Stand: Januar 2011 Convision Systems GmbH

Anwendung und Programmierung von Mikrocontrollern. Anwendung und Programmierung von Mikrocontrollern

Atmel AVR für Dummies

Der Mikrocontroller beinhaltet auf einem Chip einen kompletten Mikrocomputer, wie in Kapitel

Hier ist die Anleitung zum Flashen des MTK GPS auf der APM 2.0. Prinzipiell funktioniert es auch auf der APM 2.5 und APM 1.

EX RS-232 zu Ethernet / IP. Bedienungsanleitung. 7. Anschlüsse. 8. Technische Daten. Seriell 9 Pin D-SUB Stecker

Rechnernetze. 6. Übung

AVR Web Server. Version 1.1. erstellt von. Ulrich Radig

Vorlesung SS 2001: Sicherheit in offenen Netzen

XT - FEMTO - SXL XT-FEMTO-SXL

Fachbereich Medienproduktion

Das Saia PCD Kommunikationskonzept "Einführung"

Drahtlose Verbindung über Bluetooth

IR6x5 Serie / UMTS/HSPA+ Router mit WLAN NETWORKS. WLAN nach IEEE b/g/n. HSPA+ mit 21 Mbit/s Downloadrate. IPSec/PPTP/ L2TP/GRE/Open VPN

Compuprint SP40plus. Das SP40plus Remote Setup Programm. Restore MFG. Send Setup. Send Setup. Restore MFG

Fernanzeige V25, V60, V100

(W)LAN Tutorial. Einstellen der Karte: IP-Adresse, bei der WLAN-Karte zusätzlich auch SSID und Netzwerktopologie

In den Preisen ist ein passendes Netzteil enthalten!

PrioComP vdx. Manual alpha 2000 GmbH

Embedded Touch Panel PC OTP/57V

AVR UART. ELV Modul: ch=&marke=

ATMega2560Controllerboard

Kurzanleitung Com-Server

Projekt Nr. 15: Einen elektronischen Würfel erstellen

Mark VHS Augsburg Einführung in die Mikrocontroller-Programmierung. mark@mark-fink.de

Naim-Streamingplayer Update auf Firmware-Version 3.22

EX RS-232 zu Ethernet / IP. Din Rail Kit (EX-6099) Bedienungsanleitung. 7. Anschlüsse. 8. Technische Daten

8.0 Erweiterung mit dem 8 Bit D/A Maxim MAX5382

Systemanforderungen Verlage & Akzidenzdruck

Das Pollin Atmel Evaluationboard Ver unter Verwendung von MyAVR_Prog Tool und der Arduino IDE ein Kurztutorial

Bedienung des Infineon Evaluationboards XC167

Systemanforderungen Verlage & Akzidenzdruck

Interface Definitionen zu E-LAB ICP-V24 Portable

Arduino. Die gesteuerte Open Design Revolution. UserCon Januar 2012, MfK /AXL für Hackerspace FFM

Informationen zur Firmware Release 4.32 für FPS-WDSL Router

Naim-Streamingplayer Update auf Firmware-Version 4.4

ARDUINO Basics, Teil 2. Serielle Kommunikation und analoge Schnittstellen Markus Ulsaß, attraktor Hamburg,

GMM WLAN-Transmitter

D-Star Hotspot einrichten unter Windows (Soundkartenlösung)!

Informationen zum Open SDK Treiber von FACTORY I/O

FOPT 5: Eigenständige Client-Server-Anwendungen (Programmierung verteilter Anwendungen in Java 1)

Systemanforderungen Verlage & Akzidenzdruck

Serielle Kommunikation mit dem Arduino. Teil 1: Das Serial Peripheral Interface (SPI)

Firmware. Dokument-Version 1

microsrcp Photo by Nicholas Zambetti, Modelleisenbahnsteuerung auf Basis von standarddisierten Microcontrollerboards

Ein Gemeinschaftsprojekt. Vorwort...1 Anforderungen...2 Billig... 2 Energieeffizient... 2 Einfache Installation... 2 Benutzerfreundlichkeit...

Montageanleitung Konverter RS422 - USB

TBE332 Controller. Produktbeschreibung

SOLUCON GATEWAY WLAN. Artikel-Nr.: PRODUKTEIGENSCHAFTEN TECHNISCHE EIGENSCHAFTEN LOGISTISCHE EIGENSCHAFTEN

VarioTAP Einführung Hosea L. Busse

Produktinformationen. Basis Set Atmel Atmega8 & ISP Programmer. Lieferumfang :

Embedded Webserver. Einleitung. Jürgen Pauritsch und Stefan Thonhofer

Systemanforderungen Verlage & Akzidenzdruck

Applikationsbeispiel für VPN Verbindung mit dem ZR150G und Net-Net Router

Device Server Console Server Terminal Server

Embedded GNU/Linux mit Gnublin

I 2 C. ANALYTICA GmbH

Funktionsmodule / Gateways. KNX-GW-RS232-RS485 Warengruppe 1

Vom Smart Dust zum Smart Phone: Verfügbare SensingPlattformen. Adrian Friedli


Wetterdaten online GND 3,3V VIN CLK MISO MOSI CS VBEN IRQ GND V D13 D12 D11 D10 D5 D3. Arduino

Anleitung zur Aktualisierung der 1-Wire Controller 1 Software. Firmware Upgrade 1-Wire Controller 1

Für den Zugriff vom PC aus die TCP/IP Netzwerkeinstellung des PC auf DHCP bzw. automatisch stellen,

Transkript:

Programmieren in C / C++ Internet der Dinge Mikrocontroller ESP8266 Hochschule Fulda FB AI Wintersemester 2017/18 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 2

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

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 4

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

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

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

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

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

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

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 11

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

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

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

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 15

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

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

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 18

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 19

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 (hoffentlich) Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI 20

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

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 #define TXPin 3 // D2 -> TX ESP-01 // D3 -> RX ESP-01 // Instantiierung eines Objekts SoftwareSerial espserial = SoftwareSerial(RXPin, TXPin); Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI 22

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 23

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: AT Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI 24

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 Aufbau von AT-Kommandos zum Abfragen von Einstellungen AT+KOMMANDO? z.b. Abfragen des Betriebsmodus des ESP-Moduls AT+CWMODE? +CWMODE:2 Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI 25

AT-Kommandos 2 Einige wichtige AT-Kommandos und ihre Bedeutung ESP-Modul und Verbindung prüfen AT 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 Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI 26

AT-Kommandos 3 ESP-Modul resetten, das Modul ist bereits mit dem WLAN verbunden AT+RST 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 27

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

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

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) Verbindung zum WLAN aufbauen (join) AT+CWJAP="ssid","password" +CWJAP:"ssid","password",5,-72 WIFI CONNECTED WIFI GOT IP Programmieren in C / C++ - Peter Klingebiel - HS Fulda - FB AI 30

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

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

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 33

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 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 34

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 35

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/4aesp8266_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 36

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 37

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

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

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 40