C / C++ für das Internet der Dinge und Hausautomatisierung Einführung

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

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

Atmel AVR für Dummies

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

Making the Internet of Things

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

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

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

Programmieren in C Teil 3: Mikrocontrollerprogrammierung

Parallel-IO. Ports am ATmega128

Wer möchte, kann sein Programm auch auf echter Hardware testen

Einführung in die Welt der Microcontroller

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

Makros sind Textersetzungen, welche vom Präprozessor aufgelöst werden. Dies Passiert bevor der Compiler die Datein verarbeitet.

Rechnerarchitektur Atmega Vortrag Atmega 32. Von Urs Müller und Marion Knoth. Urs Müller Seite 1 von 7

BLIT2008-Board. Uwe Berger

Autonome Mobile Systeme. Dr. Stefan Enderle

Netduino Mikroprozessor für.net Entwickler

Mikrocontroller - Schnelleinstieg

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

Physical-Computing mit der Arduino Plattform

Serie 8: Microcontroller 17./

8.1 Grundsätzlicher Aufbau der Beispiele

Arduino ist eine Mikrocontrollerplattform,

Microcontroller Kurs Microcontroller Kurs/Johannes Fuchs 1

Highspeedaufnahmen mit dem Arduino Uno Board

Projekt 25 ASURO ARX-03

Python macht Embedded Linux angenehmer

Microcontroller Kurs Programmieren Microcontroller Kurs/Johannes Fuchs 1

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

Mikrocontroller von Markus Koch April 2011

CU-R-CONTROL. Beschreibung zur Schaltung ATMega16-32+ISP MC-Controller Steuerung auf Basis ATMEL Mega16/32. Autor: Christian Ulrich

Um überhaupt produktiv arbeiten zu können, sind eine Reihe grundlegender Vorbereitungen notwendig:

Funkamateure. Unterlagen zur Aus- und Weiterbildung für. Ein Projekt von Reinhard DL3BR und Hubert DG4GAH. Skript von Joachim DL6JS.

Teil I: Wat isse ne Mikrokontroller?

AndroidRCCar & Physical Computing mit Android

Zuse-Computer: Z1. erster Rechner mit binären Zahlen. Entwicklung der computergerechten. (Grundlage für IEEE-754) funktionierte leider nie zuverlässig

Assembler in der Arduino-IDE: ein Einblick

Fortbildungsmodule >> Elektrotechnik. Modulpräzisierung zu Modul 22 >> µc. Teilmodul 22.1 Grundlagen µcontroller 8051

Tutorial. Microcontroller. Grundlagen µc. Kapitel 1

Assembler und Hochsprachen

Die WiFI Library( bei dem meisten recent?

RN-Control ARDUINO Bibliothek ATMEL 32 Version 0.2

Projekt Nr. 15: Einen elektronischen Würfel erstellen

32 So funktioniert s. Arduino Teil 1.

Eclipse. für die kleinen Dinge des (modernen) Lebens

Einführung in AVR-Assembler

Was unterscheidet Microcontroller von einem PC ( Laptop ) oder einem Handy

Einführung in die Programmierung von Mikrocontrollern mit C/C++

Prozessoren für mobile und. eingebettete Systeme II: Die AVR-Architektur. EMES: Eigenschaften mobiler und eingebetteter Systeme

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

Embedded Touch Panel PC OTP/57V

Stefan Hoffmann. Leichter Start mit BASCOM und myavr

Bedienung des Infineon Evaluationboards XC167

AVR-Mikrocontroller mit dem GCC programmieren

Programmierung von Mikrocontrollern am Beispiel des ATMEL ATmega32

Microcontroller. Seminararbeit zum Thema. Microcontroller. bei Prof. Dr. K.O. Linn. von Benjamin Zanke 1/12

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

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

CCS Compiler Tutorial mit Beispielen

mytinyprog MK2 USB Stefan Hoffmann

Mikrocontroller Grundlagen. Markus Koch April 2011

Quanton Manual (de) Datum: URL: )

Embedded Hardware Getting Started

C und C++ für Embedded Systems

TBE332 Controller. Produktbeschreibung

Technische Informatik 2: Addressierung und Befehle

Roboter programmieren im Unterricht der Sekundarstufe I

Roberta - Tutorial Unterschiede EV3/NXT. Fraunhofer IAIS. v0.1_ TL, BJ

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

AVR-Mikrocontrollertechnik

ARDUINO Übung. Inhalt:

I2C-Echtzeituhr am Atmel AVR

StarterKit Embedded Control SC13 + DK51. From the electronic to the automation

Single Side AVR Experimentier Board. Version 1.4. erstellt von. Ulrich Radig

Grundlagen der Programmierung II BMI Bakk.

Open- Source embedded GNU/Linux Plattformen

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

Übung zur Vorlesung Echtzeitsysteme

ATMEGA Mikrocontroller Einführung TEIL 1. 4.November 2009 Mönchengladbach

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

Railuino Hacking your Märklin

Projektarbeit: Roulette Spiel

AVR Net-IO. Der originale von Pollin vertriebene Bausatz hat folgende Eckdaten:

Installation & Verwendung. Version 1.0. WinAVR

B1 Stapelspeicher (stack)

DTMF Sender. Es können 252 Zeichen maximal am Stück übertragen werden; die Länge des Strings wird mit einem Byte übertragen.

Informationen zum Open SDK Treiber von FACTORY I/O

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

Spezifikation VARAN Demo-Board VEB 021

EyeCheck Smart Cameras

XT - NANO - XXL XT-NANO-XXL

Einführung (0) Erster funktionsfähiger programmgesteuerter Rechenautomat Z3, fertiggestellt 1941 Bild: Nachbau im Deutschen Museum München

Microsoft.NET Gadgeteer: Ein raffinierter Weg zum Embedded-Produkt. ECC 2013 Marcel Berger

Microcontroller Programmierung. Ein PDV-Vertiefungsprojekt von: Chr. Schulz, P. Simon und D. Stein Sommersemester 2005 Version 1.0

eblock, SD-Kartenleser Projektteam: Henrik Esche Tobias Albers Michael Heßling Daniel Lütfrenk Jonas Wieschmann

V3 WEB BASED AUTOMATION

Installation & Verwendung. Version 1.0. WinAVR & AVR Studio 4

Transkript:

C / C++ für das Internet der Dinge und Hausautomatisierung Einführung Hochschule Fulda FB AI Sommersemester 2017 http://c.rz.hs-fulda.de Peter Klingebiel, HS Fulda, FB AI

Zur Veranstaltung 1 Peter Klingebiel Dipl. Ing. Maschinenbau 10/1995 bis 9/2016 Leiter DVZ HS Fulda Seit 4/2016 FB AI Lehrkraft für besondere Aufgaben Raum 43.008 (C008) Telefon 0661/9640-3024 Sprechstunde: dienstags 12:30 bis 14:00 nach Vereinbarung http://www.hs-fulda.de/~klingebiel mailto:klingebiel@hs-fulda.de Webseite der Veranstaltung Folien, Aufgaben, Demoprogramme, Links usw. http://c.rz.hs-fulda.de C / C++ - Peter Klingebiel - HS Fulda - FB AI 2

Zur Veranstaltung 2 Ziele der Veranstaltung Einführung in Mikrocontroller und ihre Programmierung mit C und C++ am Beispiel der Mikrocontrollersysteme der Arduino-Familie und des ESP8266 Techniken und Programmierung der Steuerung von externen Geräten am Beispiel von Funktechniken (z.b. Bluetooth, 433 MHz-Funk) und WiFi Selbstständiges Erarbeiten von Lösungen im Umfeld des Internet der Dinge und der Hausautomatisierung Erstellen einer Hausarbeit zum selbstgewählten Problem aus dem Umfeld der Veranstaltung in schriftlicher Form mit anschließender Präsentation C / C++ - Peter Klingebiel - HS Fulda - FB AI 3

Mikrocontrollerprogrammierung 1 Besonderheiten Kombination von Controller, 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, ISP) Microkontrollersysteme 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 C / C++ - Peter Klingebiel - HS Fulda - FB AI 4

Mikrocontrollerprogrammierung 2 Problem Hochsprachen (z.b. C, C++, Java, LUA, Python, ) Assemblersprachen (für reale oder virtuelle Maschine) Maschinensprachen (Bitcode, Bytecode, Microcode) Hardware C / C++ - Peter Klingebiel - HS Fulda - FB AI 5

Analoges Regelsystem 1 C / C++ - Peter Klingebiel - HS Fulda - FB AI 6

Analoges Regelsystem 3 Schematischer Aufbau C / C++ - Peter Klingebiel - HS Fulda - FB AI 7

Analoges Regelsystem 3 Wirkungsplan / Regelkreis C / C++ - Peter Klingebiel - HS Fulda - FB AI 8

Analoges Regelsystem 4 Temperaturverlauf C / C++ - Peter Klingebiel - HS Fulda - FB AI 9

Digitalisierung 1 Tendenz zur Digitalisierung analoge Steuerungs- und Regelsysteme digitale, programmierbare, durch Microkontroller gesteuerte Systeme Vorteile: kostengünstiger flexibler leichter erweiterbar und wartbar vernetzbar Bügeleisen mit Internetanschluß??? C / C++ - Peter Klingebiel - HS Fulda - FB AI 10

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 C / C++ - Peter Klingebiel - HS Fulda - FB AI 11

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 Internet: Arduino: https://www.arduino.cc/en/guide/homepage Funduino: http://funduino.de/vorwort Netzmafia: http://www.netzmafia.de/skripten/hardware/arduino/index.html Franzis: http://www.elo-web.de/elektronik/angebot/praxisbuch-arduino-aktion C / C++ - Peter Klingebiel - HS Fulda - FB AI 12

USB- Anschluß Arduino Uno R3 1 Reset- Schalter GND Masse Digitale Ein-/Ausgänge Pin 2 bis Pin 13 Serielle Pins In und Out Externe Stromversorgung CPU: Atmel ATmega328 Mikrocontroller 3.3V 5V GND Analoge Ein-/Ausgänge Pin A0 bis Pin A5 C / C++ - Peter Klingebiel - HS Fulda - FB AI 13

Arduino Uno R3 2 C / C++ - Peter Klingebiel - HS Fulda - FB AI 14

Mikrocontroller Atmel ATmega 328 1 C / C++ - Peter Klingebiel - HS Fulda - FB AI 15

Arduino Nano V3.0 1 C / C++ - Peter Klingebiel - HS Fulda - FB AI 16

Arduino Nano V3.0 2 C / C++ - Peter Klingebiel - HS Fulda - FB AI 17

Arduino Nano V3.0 3 C / C++ - Peter Klingebiel - HS Fulda - FB AI 18

Attiny 85 1 C / C++ - Peter Klingebiel - HS Fulda - FB AI 19

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 viele Erweiterungsbibliotheken für Hard- und Software C / C++ - Peter Klingebiel - HS Fulda - FB AI 20

Programmierung 2 C / C++ - Peter Klingebiel - HS Fulda - FB AI 21

Programmierung 3 Beispielprogramm, Sketch genannt: // blink-led10.ino // klin, 28.10.2016 // LED im Sekundentakt blinken const int led = 10; void setup() { pinmode(led, OUTPUT); } void loop() { digitalwrite(led, HIGH); delay(1000); digitalwrite(led, LOW); delay(1000); } // LED an Pin D10 // Initialisierung // LED-Pin als Ausgang // Arbeitsschleife // LED ein // 1 Sekunde warten // LED aus // 1 Sekunde warten C / C++ - Peter Klingebiel - HS Fulda - FB AI 22

Programmierung 4 C-main() muss nicht programmiert werden int main() { } setup(); while(1) loop(); Funktion setup() // Initialisierung // Endlosschleife Initialisierungen des Programms und der Komponenten Funktion loop() Hauptschleife des Anwendungsprogramms, läuft endlos Funktionsaufrufe von eigenen und Bibliotheksfunktionen Code des Algorithmus des Programms C / C++ - Peter Klingebiel - HS Fulda - FB AI 23

Programmierung 5 einige wichtige Funktionen: void pinmode(int p, int m) Eingang p auf Modus INPUT oder OUTPUT einstellen void digitalwrite(int p, int w) Wert v auf Digitalausgang p schreiben int digitalread(int p) Wert von Digitaleingang p lesen void analogwrite(int p, int w) Wert v 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 C / C++ - Peter Klingebiel - HS Fulda - FB AI 24

Adafruit Flora 1 C / C++ - Peter Klingebiel - HS Fulda - FB AI 25

Adafruit Flora 2 C / C++ - Peter Klingebiel - HS Fulda - FB AI 26

CJMCU Lilypad 1 C / C++ - Peter Klingebiel - HS Fulda - FB AI 27

ESP-01 1 C / C++ - Peter Klingebiel - HS Fulda - FB AI 28

Wemos D1 mini 1 C / C++ - Peter Klingebiel - HS Fulda - FB AI 29

Wemos D1 mini 2 C / C++ - Peter Klingebiel - HS Fulda - FB AI 30

Atmel Mikrocontroller Memoy 1 C / C++ - Peter Klingebiel - HS Fulda - FB AI 31

Atmel Mikrocontroller 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 C / C++ - Peter Klingebiel - HS Fulda - FB AI 32

IO bei Mikrocontrollern 1 Microkontroller (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 gemapt Lesen und Schreiben ist damit ein Zugriff auf eine Speicheradresse, z.b. beim ATmega328 C / C++ - Peter Klingebiel - HS Fulda - FB AI 33

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 zugeordnet C / C++ - Peter Klingebiel - HS Fulda - FB AI 34

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 C / C++ - Peter Klingebiel - HS Fulda - FB AI 35

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 bitweiser Zugriff auf die Pins möglich C / C++ - Peter Klingebiel - HS Fulda - FB AI 36

Bitoperationen auf Integertypen 1 Bitoperatoren ~ & ^ expr1 op expr2 bzw. ~expr C / C++ - Peter Klingebiel - HS Fulda - FB AI 37

Bitoperationen auf Integertypen 2 Bitshiftoperatoren << >> expr1 op expr2 Bits in expr1 um expr2 Bits verschoben Bsp. 1 << 2 1 um 2 Bits nach links Bsp: n >> 5 n um 5 Bits nach rechts C / C++ - Peter Klingebiel - HS Fulda - FB AI 38

Direkter Portzugriff 1 Beispielprogramm ähnlich Sketch auf Folie 22 // blink-port.ino // klin, 28.10.2016 // LED an Pin 10 im Halbsekundentakt blinken // direkter Zugriff ueber Bit 2 an Portregister PORT B void setup() // Initialisierung { DDRB = B00000100; // LED-Pin 10 als Ausgang } void loop() // Arbeitsschleife { PORTB = B00000100; // LED an Pin 10 ein delay(500); // 1/2 Sekunde warten PORTB &= ~B00000100; // LED an Pin 10 aus delay(500); // 1/2 Sekunde warten } C / C++ - Peter Klingebiel - HS Fulda - FB AI 39

Und los geht s C / C++ - Peter Klingebiel - HS Fulda - FB AI 40