sensoren & aktoren programmieren in c / c++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020....

60
Sensoren & Aktoren Programmieren in C / C++ Einführung Mikrokontroller und ESP32 Hochschule Fulda – FB AI Sommersemester 2021 http://c.rz.hs-fulda.de Peter Klingebiel, HS Fulda, FB AI

Upload: others

Post on 25-Nov-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren & AktorenProgrammieren in C / C++

Einführung Mikrokontroller und ESP32

Hochschule Fulda – FB AISommersemester 2021http://c.rz.hs-fulda.de

Peter Klingebiel, HS Fulda, FB AI

Page 2: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2

Mikrokontrollerprogrammierung 1

• Besonderheiten– Kombination von Microkontroller, Sensoren, Aktoren und

Software Physical Computing– Kommunikation mit externen Geräten erfordern (viele)

digitale und analoge Ein- und Ausgänge– Vielfalt von Protokollen zum Ansteuern von und zur

Kommunikation mit externen Geräten (z.B. 1 Wire, I2C, SPI)– Mikrokontrollersysteme haben oft kein Betriebssystem, die Programme laufen direkt auf der Hardware

– bei der Softwareentwicklung: meist Trennung von Entwicklungs- und Zielsystem, z.B. Programmentwicklung auf PC und dann Herunterladen (Flashen) auf Zielsystem

– Fehlersuche und Debugging oft sehr schwierig

2

Page 3: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI

Mikrokontrollerprogrammierung 2

Problem

Hochsprachen(z.B. C, C++, Java, LUA, Python, …)

Assemblersprachen(für reale oder virtuelle Maschine)

Maschinensprachen(Bitcode, Bytecode, Microcode)

Hardware

3

Page 4: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 4

Analoges Regelsystem 1

4

Page 5: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 5

Analoges Regelsystem 3

• Schematischer Aufbau

5

Page 6: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 6

Analoges Regelsystem 3

• Wirkungsplan / Regelkreis

6

Page 7: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 7

Analoges Regelsystem 4

• Temperaturverlauf

7

Page 8: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 8

Digitalisierung 1

• starke Tendenz zur Digitalisierung• analoge Steuerungs- und Regelsysteme digitale, programmierbare, durch Mikrokontroller gesteuerte Systeme

• Vorteile:– kostengünstiger– flexibler– leichter erweiterbar und wartbar

• Vernetzbar !?!?– Bügeleisen mit Internetanschluß???

8

Page 9: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI

Arduino 1

• Wikipedia:https://de.wikipedia.org/wiki/Arduino_(Plattform)

• Arduino (seit März 2015 auch Genuino)• Open Source Hardware- und Software-Plattform• entwickelt von Massimo Banzi und David Cuartielles

für künstlerischen Einsatz von IT-Komponenten• benamst nach Arduin von Ivrea, der 1002-1014

italienischer König war• Programmierung in C und C++ in einer eigenen

Processing-basierten IDE• Homepage: https://www.arduino.cc

9

Page 10: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI

Arduino 2

• Vielzahl an Boards, darunter auch für Wearables• Vielzahl an Herstellern von Boards / Komponenten• Vielzahl an Shields, z.B. Ethernet, WiFi, Sensoren, …• Unmenge an Zusatzkomponenten wie LEDs,

Sensoren, Aktoren, Motoren, …• Unmenge an Einsatzfeldern, z.B. Robotics, Internet

of Things, Hausautomatisierung, Wearables, …• Viele Anleitungen in Literatur und besonders Internet:

– Arduino: https://www.arduino.cc/en/Guide/HomePage– Funduino: http://funduino.de/vorwort– Netzmafia: http://www.netzmafia.de/skripten/hardware/Arduino/index.html– Randomnerdtutorials: https://randomnerdtutorials.com

10

Page 11: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 11

Arduino Uno R3 1

USB-Anschluß

CPU: AtmelATmega328

Mikrocontroller

Reset-Schalter

ExterneStrom-

versorgung

GNDMasse

Serielle PinsIn und Out

Digitale Ein-/AusgängePin 2 bis Pin 13

GND Analoge Ein-/AusgängePin A0 bis Pin A5

5V 3.3V

11

Page 12: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 12

Arduino Uno R3 2

12

Page 13: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 13

Mikrocontroller Atmel ATmega 328 1

13

Page 14: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 14

Arduino Nano V3.0 1

14

Page 15: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 15

Attiny 85 1

15

Page 16: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI

Programmierung 1

• Programmierung der Arduinosysteme bzw. der Atmel-Mikrocontroller i.d.R. mit– Assembler– C/C++ (eigentlich C++ !)

• Enwicklungsumgebungen – AVR-Entwicklungsumgebungen von Atmel– Arduino IDE

• Arduino IDE– AVR-GCC/G++-Compiler– minimalistische Oberfläche– sehr leicht erweiterbar, z.B. für ESP8266, ESP32 u.a.– viele Bibliotheken für Hardware und Software

16

Page 17: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI

Programmierung 2

17

Page 18: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI

Programmierung 3

• Beispielprogramm, Sketch genannt:// blink-led.ino// klin, 28.10.2016// LED im Sekundentakt blinkenconst int led = 10; // LED an Pin/GPIO 10void setup() // Initialisierung {pinMode(led, OUTPUT); // LED-Pin als Ausgang

}void loop() // Arbeitsschleife {digitalWrite(led, HIGH); // LED ein delay(1000); // 1 Sekunde wartendigitalWrite(led, LOW); // LED ausdelay(1000); // 1 Sekunde warten

}

18

Page 19: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI

Programmierung 4

• C-main() muss nicht eigens programmiert werden int main(){setup(); // Initialisierungwhile(1) // Endlosschleifeloop();

}

• Funktion setup()– Initialisierungen des Programms und der Komponenten

• Funktion loop()– Hauptschleife des Anwendungsprogramms, läuft endlos– Funktionsaufrufe von eigenen und Bibliotheksfunktionen– Code des Algorithmus des Programms

19

Page 20: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI

Programmierung 5

• einige wichtige Funktionen:– void pinMode(int p, int m)

• Pin/GPIO p auf Modus INPUT oder OUTPUT einstellen– void digitalWrite(int p, int w)

• Wert w auf Digitalausgang p schreiben– int digitalRead(int p)

• Wert von Digitaleingang p lesen– void analogWrite(int p, int w)

• Wert w auf Analogausgang p schreiben– int analogRead(int p)

• Wert von Analogeingang p lesen– void delay(unsigned long p)

• Pause von p Millisekunden

– Referenz: https://www.arduino.cc/en/Reference/HomePage 20

Page 21: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 21

Adafruit Flora 1

21

Page 22: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 22

Adafruit Flora 2

22

Page 23: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 23

CJMCU Lilypad 1

23

Page 24: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 24

ESP-01 1

24

Page 25: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 25

Wemos D1 mini 1

25

Page 26: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 26

Wemos D1 mini 2

26

Page 27: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 27

ESP32 Wemos Lolin32 Lite 1

27

Page 28: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI

ESP32 Wemos Lolin32 Lite 2

28

Page 29: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI

Atmel Mikrokontroller Memory 1

29

Page 30: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI

Atmel Mikrokontroller Memory 2

• der ATmega328 und damit auch die Arduinos, die den Atmega328 verbaut haben (Uno, Nano u.a.) bieten drei Speicherbereiche an:

• 32 kB Flash-Speicher für Programmcode– Programmcode bleibt erhalten– davon ca. 2KB für Bootlader

• 2 kB SRAM-Speicher für Daten– Speicher ist flüchtig, Daten gehen verloren– im unteren Speicherbereich liegen General Purpose und IO-

Register• 1 kB EEPROM zum Speichern von Daten

30

Page 31: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI

IO bei Mikrokontrollern 1

• Mikrokontroller (und allgemein CPUs) kennen zwei Arten, IO-Geräte anzusprechen, d.h. zu lesen und zu schreiben:

• Port-mapped IO– IO-Geräte werden extern angeschlossen und über spezielle

Befehle gelesen und geschrieben– Bsp: Z80 mit den Befehlen IN und OUT

• Memory-mapped IO– Register und Speicherbereiche von IO-Geräten werden in

den Speicherbereich der CPU gelegt– Lesen und Schreiben ist damit ein Zugriff auf eine

Speicheradresse, z.B. beim ATmega328

31

Page 32: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI

IO beim ATmega328 1

• der ATmega328 besitzt drei sog. Ports: Port B, Port C und Port D

• andere Atmel-Prozessoren haben mehr oder weniger dieser Ports (der Attiny85 z.B. hat nur Port B)

• jedem Port sind drei 8-Bit-Register zugeordnet:– DDR – Data Direction Register – legt Richtung des IO fest,

d.h. Lesen (Input) oder Schreiben (Output)– PIN – Port Input Register – enhält zu lesenden Wert– PORT – Port Output Register – erhält zu schreibenden Wert

• (fast) jedes Bit in diesen Registern ist einem digitalen oder analogen Pin/GPIO zugeordnet

32

Page 33: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI

IO beim ATmega328 2

• Zuordnung der Bits der Ports zu den Pins des ATmega328

• die Zuordnung gilt für jeden Port jeweils für DDR-, PIN- und PORT-Register

33

Page 34: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI

IO beim ATmega328 3

• Lage der Port-Register für die drei Ports B, C und D des ATmega328 im SRAM-Speicher:

• damit ist ein direkter Zugriff auf die Pins möglich: Bitzugriff über Bitoperationen von C/C++

34

Page 35: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 35

Bitoperationen auf Integertypen 1

• Bitoperatoren ~ & | ^

• expr1 op expr2 bzw. ~expr

Page 36: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 36

Bitoperationen auf Integertypen 2

• Bitshiftoperatoren << >>• expr1 op expr2• Bits in expr1 um expr2 Bits verschieben

– Bsp. 1 << 2 1 um 2 Bits nach links – Bsp: n >> 5 n um 5 Bits nach rechts

Page 37: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI

Direkter Portzugriff 1

• Beispielprogramm - ähnlich Sketch blink-led.ino// blink-port.ino// klin, 28.10.2016// LED an Pin 10 im Sekundentakt blinken// direkter Zugriff ueber Bit 2 an Portregister PORT Bvoid setup() // Initialisierung {DDRB |= B00000100; // LED-Pin 10 als Ausgang

}void loop() // Arbeitsschleife {PORTB |= B00000100; // LED an Pin 10 ein delay(1000); // 1 Sekunde wartenPORTB &= ~B00000100; // LED an Pin 10 ausdelay(1000); // 1 Sekunde warten

}

37

Page 38: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 38

Espressif ESP32 1

• ESP32 CAM – u.a. mit Gesichtserkennung …38

Page 39: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 39

Espressif ESP32 2

• TTGO T-Beam mit GPS und LoRa-Funk und …39

Page 40: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 40

Espressif ESP32 3

• Heltec ESP32 mit Oled-Bildschirm40

Page 41: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 41

Espressif ESP32 4

• Wemos Lolin3241

Page 42: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 42

Espressif ESP32 5

• LOLIN D3242

Page 43: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 43

Espressif ESP32 6

• LOLIN D32 PRO43

Page 44: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 44

Espressif ESP32 7

• Espressif ESP32 Development Board44

Page 45: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 45

Espressif ESP32 8

• Pinout des Espressif ESP32 Development Board45

Page 46: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 46

Espressif ESP32 9

• Pinout ESP3246

Page 47: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 47

Espressif ESP32 10

• ESP32 Funktionsblockschaltbild47

Page 48: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 48

Espressif ESP32 11

• ESP32-WROOM-32 Pinout 48

Page 49: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 49

Espressif ESP32 12

• ESP32-WROVER Pinout49

Page 50: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 50

ESP32 Überblick 1

• Hardware / Features des ESP32– Dual-Core Tensilica LX6 Mikroprozessor– bis zu 240 MHz Taktfrequenz– 520 kB internes SRAM– integrierter 802.11bgn WiFi Transceiver– integrierter dual-mode Bluetooth Stack (Classic und BLE)– Spannungsbereich von 2.2 V bis 3.6 V– 2.5 µA Stromverbrauch im deep sleep– 32 GPIO– 10 kapazitive Touch Pins– interner Hallsensor, Temperatursensor, Infrarot u.a.m– Hardware Verschlüsselung (AES, SHA2, ECC, RSA-4096)

50

Page 51: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 51

ESP32 Überblick 2

• Peripherie und IO des ESP32– 18 ADC-Kanäle– 15 analoge PWM-Ausgänge– 2 DAC-Kanäle– 2 I2C-Schnittstellen– 2 I2S-Schnittstellen– 3 SPI-Schnittstellen– 3 UART-Schnittstellen – CAN-Bus-Schnittstelle– u.a.m.– die meisten Kanäle und Schnittstellen sind frei auf GPIOs

programmierbar

51

Page 52: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI

ESP32 Überblick 3

52

Page 53: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 53

ESP32 Überblick 4

• Programmierung des ESP32– C/C++ mit dem Xtensa GCC/G++ Compilesystem– Python– JavaScript– LUA– ganz witzig: im Chip eingebauter Basic-Interpreter

• Entwicklungsumgebungen– Espressif IDE esp-idf (C/C++)– Arduino IDE (C/C++)– Eclipse– u.a.m., z.B. für Python oder LUA

53

Page 54: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 54

ESP32 Arduino 1

• Integration des ESP32 in die Arduiono IDE

• Voraussetzung: die Arduino IDE ist bereits installiert– sonst: www.arduino.cc Software Downloads

• im Arduino-Menü auf Datei Voreinstellungen • dort Zusätzliche Boardverwalter-URLs öffnen• und den URL

https://dl.espressif.com/dl/package_esp32_index.jsoneintragen

54

Page 55: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 55

ESP32 Arduino 2

55

Page 56: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 56

ESP32 Arduino 3

• danach im Arduino-Menü auf Werkzeuge Board• dort auf Boardverwalter … gehen (ganz oben)

• im Boardverwalter nach ESP32 suchen oder oben im Suchfeld eintragen

• Paket esp32 by Espressif Systems anwählen, Version auswählen und installieren

• die Installation dauert ein wenig …

56

Page 57: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 57

ESP32 Arduino 4

57

Page 58: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 58

ESP32 Arduino 5

• installiert sind dann eine Unmenge ESP32-Boards …58

Page 59: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 59

ESP32 Arduino 6

• … und eine große Menge Beispielsketches …

59

Page 60: Sensoren & Aktoren Programmieren in C / C++maya.rz.hs-fulda.de/c/folien/c-cpp-03.pdf · 2020. 5. 6. · Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 2 Mikrokontrollerprogrammierung

Sensoren&Aktoren - C / C++ - Peter Klingebiel - HS Fulda - FB AI 60

ESP32 Arduino 6

• z.B. Led blinken mit RTOS-Tasks …

60