Praktische Smart Home und Internet der Dinge Anwendungen mit Arduino und ESP Microcontrollern -  Daniel Perl

Praktische Smart Home und Internet der Dinge Anwendungen mit Arduino und ESP Microcontrollern (eBook)

(Autor)

eBook Download: EPUB
2024 | 1. Auflage
286 Seiten
epubli (Verlag)
978-3-7598-0013-8 (ISBN)
Systemvoraussetzungen
6,99 inkl. MwSt
  • Download sofort lieferbar
  • Zahlungsarten anzeigen
Viele Bücher über Microcontroller behandeln sehr viel Theorie über deren Anschlüsse, technische Daten und Möglichkeiten. Wenn es ihnen geht wie mir und sie keine Lust auf graue Theorie und Erklärungen von Funktionen haben, deren Sinn sie anfangs sowieso nicht verstehen, dann ist dieses Buch genau das Richtige für sie, denn darauf verzichtet dieses Buch komplett. Bei diesem Buch handelt es sich um ein Buch von einem Bastler für Bastler. Sie werden in diesem Buch über die Programmierung und Konstruktion von Anwendungen mit den Microcontrollern der Arduino- und ESP-Reihe ab dem ersten Kapitel direkt in die Praxis einsteigen. Dies bedeutet für sie, dass sie in jedem Kapitel eine Anwendung konstruieren und programmieren in der Programmiersprache C++. Die Funktionen eines Microcontrollers sowie die Theorie zu jedem Projekt werden ihnen während der Konstruktion vermittelt. Außerdem werden die Grundkonzepte der Programmiersprache C++ und der Programmcode Stück für Stück erläutert. Insgesamt beinhaltet das Buch 12 Anwendungen von einer einfachen Temperaturmesstation und einer Musikbox bis hin zu einem kleinen Smart Home, einem Teebeutelheber, einer Bewässerungsstation, einer WLAN-gesteuerten Musikbox und einer WLAN-fähigen Messstation für den von einer Solaranlage erzeugten Strom, dessen Daten auch mit dem Handy per Telegram-Messenger abgerufen werden können. Der Höhepunkt zum Schluss wird die Kontruktion und Programmierung einer automatisierten Kühlschrankspeichersteuerung zur Erfassung und Organisation von Lebensmitteln mit Hilfe der RFID-Technologie erklärt, die ich während meiner Weiterbildung zum Mechatroniktechniker entwickelt habe.

Als Vater von zwei Kindern muss ich mir oft Geschichten ausdenken, um die Kinder zum Schlafen zu bringen. Da es für meine Kinder nichts schöneres als selbst erfundene Geschichten gibt, habe ich mich dazu entschlossen, diese aufzuschreiben und als Familienprojekt mit meinen Kindern diese Geschichten als Kinderbücher zu gestalten und zu veröffentlichen, um auch anderen Kindern eine Freude zu machen. Außerdem beschäftige ich mich seit meiner Kindheit mit übernatürlichen Themen wie etwa Gläser rücken, Karten legen und Außerirdischen und verfasse auch dazu Bücher. Ein weiteres Hobby von mir ist die Programmierung von Microcontrollern, was ich auch abseits meiner Ausbildung zum Techniker in Mechatronik mache und verfasse auch zu diesem Thema Bücher.

Anwendung 5: Der Teebeutelheber


 

 

 

Die nächste Anwendung ist für den Alltag sehr praktisch, da jeder wahrscheinlich schon einmal in der Situation war, dass er sich einen Tee machen wollte und diesen dann vergisst. Bis man sich wieder daran erinnert ist der Tee schon kalt und der Beutel war viel zu lange im Wasser. Um dies zu vermeiden wird die nächste Anwendung ein automatischer Teebeutelheber mit einstellbarer Zeitdauer.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Gesteuert wird die gesamte Anwendung von einem Arduino Uno. Mit Hilfe des Keypads kann man die Dauer in Minuten eingeben, bis der Teebeutel aus der Tasse gehoben werden soll. Sobald die Zeit abgelaufen ist, aktiviert der Arduino den Servomotor und dieser hebt den Teebeutel aus der Tasse hoch. Ein kleiner Lautsprecher sorgt mit einem grellen Ton für die Benachrichtigung, dass der Tee fertig ist.

 

 

Der Lautsprecher wird an der mit + gekennzeichneten Seite an den Pin D11 angeschlossen und an der unteren Seite an Ground des Arduino Uno.

 

 

Das Keypad hat insgesamt acht Anschlüsse. Diese werden der Reihe nach an die digitalen Pins D2 bis D9 angeschlossen an den Arduino

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Es gäbe auch noch die Möglichkeit, ein Keypad mit 3 x 3 Tasten zu benutzen. Bei einem größeren Projekt, bei dem jeder Anschluss des Arduino benötigt wird, wäre dies auch ratsamer, aber für diese Anwendung sind beide Keypads geeignet.

Auch in dieser Anwendung verwenden wir ein LCD-Display mit 4 Zeilen und 20 Spalten und vorgelötetem Anschluss an der Rückseite für den Anschluss an den I2C-Bus.

 

 

 

 

 

 

 

 

 

 

 

 

Der Anschluss des Servomotors ist auch sehr simpel. Das rote Kabel wird an den 5-Volt-Anschluss des Arduino angeschlossen, das orange Kabel an den Pin D10 und das schwarze Kabel an Ground.

 

 

 

 

 

 

 

 

 

 

 

 

 

Zum Schluss muss noch der Anschluss A0 mit dem Reset-Anschluss des Arduino verbunden werden, damit man den Arduino mit Hilfe des Keypads neu starten kann. Damit ist die Konstruktion des Teebeutelhebers abgeschlossen und es folgt wie immer der komplette Programmcode.

 

 

#include <Servo.h>

Servo servo;

 

int i = 0;

 

#include <Wire.h>

 

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 20, 4);

 

#include <Keypad.h>

 

const byte Spalten = 4;

const byte Zeilen = 4;

 

char Hexaschluessel[Zeilen][Spalten]=

{

  {'D', '#', '0', '*'},

  {'C', '9', '8', '7'},

  {'B', '6', '5', '4'},

  {'A', '3', '2', '1'}

};

 

byte Spaltenpins[Spalten] = {2,3,4,5};

byte Zeilenpins[Zeilen] = {6,7,8,9};

char Taste;

 

Keypad Tastenfeld = Keypad(makeKeymap(Hexaschluessel), Zeilenpins, Spaltenpins, Zeilen, Spalten);

 

int Zeit[2] = {0,0};

int u = 18;

String Zeitdauer;

int Zeitdauerint;

#define Lautsprecher 11

#define Resetknopf A0

 

void setup() {

 

Serial.begin(9600);

 

servo.attach(10);

servo.write(0);

 

Wire.begin();

 

lcd.init();

lcd.backlight();

 

lcd.clear();

lcd.setCursor(0,0);

lcd.print("    Der Teeheber    ");

lcd.setCursor(0,1);

lcd.print("Dauer in Minuten:");

lcd.setCursor(0,2);

lcd.print("L/xEFschen mit * ");

lcd.setCursor(0,3);

lcd.print("Starten mit # ");

lcd.setCursor(18,1);

 

pinMode(Lautsprecher, OUTPUT);

}

void loop() {

 

Taste = Tastenfeld.getKey();

if(Taste){

int Tastenwert = int(Taste) - 48;

 

if(Tastenwert != -6 && Tastenwert != -13){

 

lcd.setCursor(u,1);

lcd.print(Tastenwert);

 

Zeit[u-18] = Tastenwert;

if(u<19){

u+= 1;

}

Zeitdauer = String(Zeit[0]) + String(Zeit[1]);

Zeitdauerint = Zeitdauer.toInt();

}

if (Tastenwert == -6 ){

 

  lcd.setCursor(18,1);

  lcd.print(0);

  lcd.setCursor(19,1);

  lcd.print(0);

  lcd.setCursor(18,1);

  Zeit[0] = 0;

  Zeit[1] = 0;

  Zeitdauer = String(Zeit[0]) + String(Zeit[1]);

  Zeitdauerint = Zeitdauer.toInt();

  u = 18;

}

if (Tastenwert == -13){

 

  Zeitdauerint = Zeitdauerint * 60;

  lcd.clear();

  lcd.setCursor(0,1);

  lcd.print("Verbleibende Zeit: ");

  lcd.setCursor(6,2);

  lcd.print("Sekunden");

int zeitint = Zeitdauerint;

  

while (Zeitdauerint >= 0)

  {

    if (Zeitdauerint < 10){

    if (zeitint > 10){

    lcd.setCursor(2,2);

    lcd.print(" ");

    }

    lcd.setCursor(3,2);

    lcd.print(Zeitdauerint);

    delay(1000);

    Zeitdauerint -= 1;

    }

else if (Zeitdauerint < 100){

    if (zeitint > 100){

    lcd.setCursor(1,2);

    lcd.print(" ");

    }

    lcd.setCursor(2,2);

    lcd.print(Zeitdauerint);

    delay(1000);

    Zeitdauerint -= 1;

    }

else if (Zeitdauerint < 1000){

    if (zeitint > 1000){

    lcd.setCursor(0,2);

    lcd.print(" ");

    }

    lcd.setCursor(1,2);

    lcd.print(Zeitdauerint);

    delay(1000);

    Zeitdauerint -= 1;

    }

 else{

    lcd.setCursor(0,2);

    lcd.print(Zeitdauerint);

    delay(1000);

    Zeitdauerint -= 1;

    }

   }

  digitalWrite(Lautsprecher, HIGH);

  delay(400);

  digitalWrite(Lautsprecher, LOW);

  delay(400);

  digitalWrite(Lautsprecher, HIGH);

  delay(400);

  digitalWrite(Lautsprecher, LOW);

 

while (i<121){

servo.write(i);

  i+=1;

  delay(50);

  }

lcd.clear();

  lcd.setCursor(2,1);

  lcd.print("Neustart mit D");

}

  if (Tastenwert == 20){

  pinMode(Resetknopf, OUTPUT);

  digitalWrite(Resetknopf, HIGH);

  }

}

}

 

 

In der Vordefinition müssen wir die Bibliothek  Servo.h einbinden und dann mit dem Befehl Servo servo ein Objekt der Klasse Servo erstellen. Wie man das LCD-Display definiert ist bereits bekannt, deswegen geht es gleich weiter mit dem Keypad. Zuerst binden wir mit #include <Keypad.h> die benötigte Bibliothek ein. Danach werden die Zeilen und Spalten angegeben mit const byte Spalten = 4 und const byte Zeilen = 4. Außerdem wird eine char-Matrix benötigt, in der die Zeichen auf dem Keypad aufgelistet sind. Diese wird mit dem Befehl char Hexaschluessel[Zeilen][Spalten]= {{'D', '#', '0', '*'},{'C', '9', '8', '7'},{'B', '6', '5', '4'},{'A', '3', '2', '1'}} erstellt.

Als nächstes werden die Anschlüsse für die Zeilen und Spalten dem Arduino mitgeteilt. Dies geschieht mit zwei byte-Arrays mit den Befehlen byte Spaltenpins[Spalten] = {2,3,4,5} und byte Zeilenpins[Zeilen] = {6,7,8,9}. Nun wird noch eine char Variable benötigt, in der die auf dem Keypad gedrückte Taste gespeichert wird. Wenn das alles erledigt ist, wird das Objekt Tastenfeld der Klasse Keypad erstellt mit dem Befehl Keypad Tastenfeld = Keypad(makeKeymap(Hexaschluessel), Zeilenpins, Spaltenpins, Zeilen, Spalten), der die Anzahl der Zeilen und Spalten sowie deren Anschlüsse und die Matrix für die Tasten übergeben wird.

Ein weiteres Interger Array wird benötigt, in dem die Zeit gespeichert wird. Dieses wird anfangs auf Null gesetzt mit dem Befehl int Zeit[2] = {0,0}. Um die Position der Zeiteingabe auf dem Display verändern zu können, wird eine Integervariable u mit dem Wert 18 definiert mit int u = 18. Die Variable u muss mit 18 initialisiert werden, da ja die Zeit in Minuten an die 18. Stelle in der Zeile auf dem Display ausgegeben werden muss. Danach wird eine Stringvariable Zeitdauer und eine Integervariable Zeitdauerint definiert, in die die Zeitdauer gespeichert wird.

Zum Schluss werden die Anschlüsse für den Lautsprecher und die Resetfunktion mit #define Lautsprecher 11 und #define Resetknopf A0 vordefiniert. Im Setup wird wie immer die serielle Schnittstelle gestartet und der Anschluss des Servomotors angegeben mit servo.attach(10) und mit dem Befehl servo.write(0) in die Nullstellung gefahren.

Die I2C-Schnittstelle wird gestartet mit Wire.begin() und das LCD-Display wird mit lcd.init() gestartet und die Hintergrundbeleuchtung mit lcd.backlight() aktiviert. Damit das Display gleich von Anfang an die Befehle und Informationen ausgibt,...

Erscheint lt. Verlag 10.4.2024
Sprache deutsch
Themenwelt Mathematik / Informatik Informatik Programmiersprachen / -werkzeuge
ISBN-10 3-7598-0013-0 / 3759800130
ISBN-13 978-3-7598-0013-8 / 9783759800138
Haben Sie eine Frage zum Produkt?
EPUBEPUB (Ohne DRM)
Größe: 3,2 MB

Digital Rights Management: ohne DRM
Dieses eBook enthält kein DRM oder Kopier­schutz. Eine Weiter­gabe an Dritte ist jedoch rechtlich nicht zulässig, weil Sie beim Kauf nur die Rechte an der persön­lichen Nutzung erwerben.

Dateiformat: EPUB (Electronic Publication)
EPUB ist ein offener Standard für eBooks und eignet sich besonders zur Darstellung von Belle­tristik und Sach­büchern. Der Fließ­text wird dynamisch an die Display- und Schrift­größe ange­passt. Auch für mobile Lese­geräte ist EPUB daher gut geeignet.

Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür die kostenlose Software Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür eine kostenlose App.
Geräteliste und zusätzliche Hinweise

Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.

Mehr entdecken
aus dem Bereich
Entwicklung von GUIs für verschiedene Betriebssysteme

von Achim Lingott

eBook Download (2023)
Carl Hanser Verlag GmbH & Co. KG
39,99
Das umfassende Handbuch

von Johannes Ernesti; Peter Kaiser

eBook Download (2023)
Rheinwerk Computing (Verlag)
44,90
Mit über 150 Workouts in Java und Python

von Luigi Lo Iacono; Stephan Wiefling; Michael Schneider

eBook Download (2023)
Carl Hanser Verlag GmbH & Co. KG
29,99