• Keine Ergebnisse gefunden

IoT-Werkstatt Das Internet der Dinge anfassbar machen

N/A
N/A
Protected

Academic year: 2022

Aktie "IoT-Werkstatt Das Internet der Dinge anfassbar machen"

Copied!
16
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

IoT-Werkstatt

Das Internet der Dinge anfassbar machen

Klaus-Uwe Gollmer und Guido Burger

Algorithmisches

Denken

(2)

Vorbereitung

1. Octopus Board mit USB-Kabel verbinden 2. Arduino (IoT-Werkstatt) starten

3. Unter „Werkzeuge“ das Board kontrollieren (NodeMCU) und den Port einstellen (i.d.R. der letzte COM-Port)

USB

Übersetzen (C-Compiler)

Serieller Monitor (Terminal am PC) Upload auf Octopus (Maschinecode)

Editor

Status

(3)

1. Unter „Werkzeuge“ die grafische Oberfläche Ardublock starten

Ardublock

Hauptprogramm

Werkzeugkasten mit Puzzleteilen

Initialisierung Endlosschleife

Upload auf den Octopus

Speichern des Ardublock Programms

(4)

Hardware ESP: System

15 GND A0

ADC I2C I/O SPI UART

2

12 14 I2C

A0

(5)

Der Octopus hat verschiedene Sensoren auf der Platine. Der analoge Spannungseingang kann über die Bananensteckerkontakte auf der linken Seite gespeist werden. Der Bosch- Sensor BME280/680 liefert

Umweltmesswerte.

Sensoren

Analog Input

Eine Spannung von 0 - 3.3 V entspricht einem ADC-Wert von 0 – 1023 (Integer)

Bosch BME

Der Sensor liefert physikalische Größen. Temperatur in Grad Celsius, Druck in hPa, Feuchte in %

Analog Input

Je nach Version BME280 (oder BME680 (Bestückung dann links daneben)

Sensoren

(6)

Der Octopus hat eine LED sowie zwei Neopixel (RGB-Leuchtdioden) zur farblichen Visualisierung an Board

Anzeigen

Linker Neopixel Rechter Neopixel

LED

Beachte: das menschliche Auge ist träge, und kann schnelle Farbänderungen nicht auflösen. Hier hilft eine Wartezeit mit dem Warte-Befehl.

Anzeigen/Aktoren

(7)

Zählschleife (for)

Wiederholt einen Block genau index Mal Index als Schleifenzähler

Wiederholungen

// C-Programm

for (int index = 1;index<=5;index++) { // Befehlsblock

}

% Matlab

for index = 1:5

% Befehlsblock end

Bedingte Wiederholung (while)

Testet eine logische Bedingung und wiederholt den Block solange diese Bedingung erfüllt ist

// C-Programm

while (Bedingung) { // Befehlsblock }

% Matlab

while Bedingung

% Befehlsblock end

Name der Zählvariable Anzahl der Durchläufe Befehlsblock

Befehlsblock

Logischer Ausdruck

Kontrollstrukturen

(8)

Bedingte Anweisung (if)

Testet eine logische Bedingung und führt den Block nur aus, wenn diese erfüllt ist (Ausführung nur ein einziges mal)

Fallunterscheidungen

// C-Programm if (Bedingung) {

// Befehlsblock }

% Matlab if Bedingung

% Befehlsblock end

% Matlab if Bedingung

% Befehlsblock 1 else

% Befehlsblock 2 end

Befehlsblock

Logischer Ausdruck

// C-Programm if (Bedingung) {

// Befehlsblock 1 } else {

// Befehlsblock 2 }

Befehlsblock 1

Befehlsblock 2

Bedingte Anweisung mit Alternative (if/else)

Testet eine logische Bedingung

Und führt Befehlsblock 1 aus, wenn eine diese erfüllt ist , andernfalls den Block 2

Kontrollstrukturen

Logischer Ausdruck

(9)

Warte (delay)

Stoppt die Programmausführung für eine gewisse Zeitdauer

Warteanweisung

// C-Programm

delay (Millisekunden);

% Matlab

pause(Sekunden);

Wartezeit in ms

Kontrollstrukturen

(10)

Ausgabe von Ergebnissen auf dem Bildschirm erfolgt über print-Befehle.

Beim Octopus wird auf PC-Seite ein serieller Monitor (Terminal) genutzt.

Ein- / Ausgabe

% Matlab

fprintf('Mein auszugebender text');

fprintf('%f',sin(1));

Ausgabe von Ergebnissen

// C

Serial.println("Mein auszugebender Text");

Serial.println(sin(1.0));

Eingabe über Tastatur

Beim Ardublock gibt es nur

Textausgaben, ggf. muss der Datentyp über einen Verbinder gewandelt

werden (Typecast).

Hinweis: Führende / Endende Leerzeichen lassen sich durch die Zeichenfolge “<&space>“ erzeugen.

Das Puzzleteil gibt eine Eingabe-

aufforderung auf dem Terminal aus und erwartet eine Texteingabe an der

Tastatur. Diese wird ans Programm zurück-geliefert

% Matlab

input('aa=','s')

Kommunikation (M2M)

(11)

Vergleichsoperationen

Vergleicht zwei Zahlen und liefert einen Wahrheitswert zurück (wahr / falsch)

Logische Operatoren

% Matlab und C Zahl1 > 10 Zahl1 == Zahl2

Logische Verknüpfung

Verknüpft zwei Wahrheitswerte, liefert einen Wahrheitswert zurück

// C-Programm

Bedingung1 && Bedingung2 Bedingung1 || Bedingung2

!Bedingung1

% Matlab

Bedingung1 && Bedingung2 Bedingung1 || Bedingung2

~Bedingung1

UND ODER NICHT

Bedingung1 Bedingung2 UND ODER

0 0 (falsch) 0 0

0 1 (wahr) 0 1

1 0 0 1

1 1 1 1

Log. Operatoren

(12)

Führt eine mathematische Operation aus Ergebnis ist wieder eine Zahl.

Mathematische Operatoren

% Matlab und C Zahl1+1

sqrt(9)

Komplexe mathematische Ausdrücke

Auch geschachtelte Ausdrücke sind möglich.

% Matlab und C Zahl1+(5*sqrt(9))

Math. Operatoren

(13)

Logische Variablen sind Speicherbehälter für Wahrheitswerte.

Die Inhalte können nur zwei Werte annehmen (wahr/falsch bzw. 1/0) Logische Ausdrücke besitzen ein rundes Puzzlestück

Logische Variablen

% Matlab

NameLogischeVariable = 1;

Deklaration und Initialisierung

Vor der ersten Verwendung muss

Speicher reserviert und mit einem Wert initialisiert werden

// C

bool NameLogischeVariable = true;

Lesender Zugriff

Danach kann auf den Inhalt der Variable lesend zugegriffen werden

% Matlab und C

NameLogischeVariable

Variablen/Konst.

(14)

Für Zahlen gibt es verschiedene Datentypen.

Man unterscheidet ganze Zahlen (Integer) und Kommazahlen (float) Zahlen besitzen ein dreieckiges Puzzlestück

Zahlvariablen

% Matlab

NameIntegerVariable = 4711;

NameFloatVariable = 3.14;

Deklaration und Initialisierung

Vor der ersten Verwendung muss

Speicher reserviert und mit einem Wert initialisiert werden

// C

int NameIntegerVariable = 4711;

float NameFloatVariable = 3.14;

Lesender Zugriff

Danach kann auf den Inhalt der Variable lesend zugegriffen werden

% Matlab und C

NameZahlVariable = NameZahlVariable+1

Variablen/Konst.

(15)

Texte besitzen ein dreieckiges Puzzlestück

Textvariablen

% Matlab

NameTextVariable = 'Mein erster Text';

Deklaration und Initialisierung

Vor der ersten Verwendung muss Speicher reserviert und mit einem Wert initialisiert werden

// C

string nameTextVariable = "Mein erster Text";

Lesender Zugriff

Danach kann auf den Inhalt der Variable lesend zugegriffen werden

Variablen/Konst.

(16)

Unterprogrammdeklaration

Definiert die in einem Unterprogramm zusammengefassten Befehle. Gibt dem Unterprogramm einen eindeutigen Namen

Unterprogramme

// C-Programm

void UnterprogrammName(void) { // Unterprogrammrumpf

}

% Matlab

function UnterprogrammName()

% Unterprogrammrumpf

Befehlsblock (Rumpf)

Unterprogrammaufruf

Führt das Unterprogramm aus, d.h.

das Programm verzweigt und arbeitet die im Befehlsblock des Unterprogrammes

angegebenen Befehle ab. Anschließend beim nächsten Programmbefehl weiter gemacht

// C-Programm

UnterprogrammName();

% Matlab

UnterprogrammName();

Bezeichner, Name des Unterprogrammes (Beginnt mit Buchstaben, keine

Leerzeichen, keine Sonderzeichen, keine Umlaute,+,- )

Kontrollstrukturen

Referenzen

ÄHNLICHE DOKUMENTE

Die Kosten für Zulassung, Transport und Überführung erfahren Sie von Ihrem MINI Partner.. Angebot gültig für Gewerbetreibende und juristische

Das Auslösen von Datenübertragungen, das Neustarten der Hardware des IoT-Geräts oder seiner Subkomponenten (wie beispielsweise des Kommunikationsmoduls/des Chipsatzes) und

Doch immer mehr Alltagsgegenstände sind mit dem Internet verbunden, lassen sich darüber steuern oder liefern Daten ins

Mit anderen Worten: Wenn Unternehmen die Daten tei- len müssen, sinken ihre Investitions- und die Innovationsanreize zur Datenerzeugung und zur Qualitätsverbesserung – dafür wür-

Mithilfe von Streaming Analytics werden diese Daten kontinuierlich analysiert und mit Prognosemodellen kombiniert und dienen als Grundlage für Predictive Maintenance.

Abonniert das angegebene Topic beim Broker Broker sendet eine Nachricht, wenn sich der Inhalt ändert. Im Ardublock wird dann automatisch in eine callback-Funktion verzweigt und der

Eine solche GET Nachricht läßt sich per entsprechendem Ardublock auch einfach durch unser IoT-Kit absenden.. 16: Cloud-Datenlogger zur Erfassung von Umweltinformationen

• Software für Internet der Dinge Knoten.. • Persistierung