E-Book, Deutsch, 887 Seiten
Reihe: Rheinwerk Computing
Kühnel Arduino
3. Auflage 2024
ISBN: 978-3-367-10281-5
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection
Das umfassende Handbuch
E-Book, Deutsch, 887 Seiten
Reihe: Rheinwerk Computing
ISBN: 978-3-367-10281-5
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection
Die Arduino-Community stellt Makern eine ausgezeichnete Grundlage für eigene Projekte zur Verfügung. Die offene Mikrocontroller-Architektur und eine komfortable Entwicklungsumgebung machen den Arduino zum idealen Ausgangspunkt für die eigenen Bastelprojekte. Dass Sie mit dem Arduino aber noch viel mehr machen können als nur LEDs leuchten zu lassen, beweist dieses umfassende Handbuch: Von der Temperaturmessung bis zum maschinellen Lernen und der anspruchsvollen Auswertung von Daten finden Sie hier Beispiele und Erklärungen zu allen Fragen, die Elektronikbegeisterte interessieren.
Aus dem Inhalt:
- Modellübersicht: Mikrocontroller für Maker
- Breadboards, Löten, Stromversorgung
- Entwicklungsumgebung und Programmierung
- Schaltungsdesign mit Fritzing und Eagle
- Sensoren: Temperatur, Feuchtigkeit, Bewegung, Ultraschall, Luftqualität u. v. m.
- Displays: LED, LCD, OLED, Touchscreens
- Relais, Motoren, Schaltaktoren
- Speicher: EEPROM, FRAM
- WLAN, Bluetooth, BLE, GSM, LoRa, LoRaWAN, LTE-M, NB-IoT
- UART, SPI, I²C, 1-Wire
- IoT-Anwendungen in der Cloud: WQTT, Thingspeak, Pushover, Dweet.io
- Projektideen für Maker: von der Messung des Raumklimas und Radioaktivität bis zum Einsatz von Kameras
Dr. Claus Kühnel studierte Informationstechnik an der Technischen Universität Dresden und hat über viele Jahre Embedded Systems für die Labordiagnostik u.a. entwickelt. In diesem interdisziplinären Spannungsfeld kam er mit der Maker-Szene in Berührung. Er hat zahlreiche Artikel und Bücher zu Hard- und Software von Mikrocontrollern im In- und Ausland veröffentlicht. Von der Zeitschrift Elektronik erhielt sein Beitrag 'Arduino & Co' die Auszeichnung 'Artikel des Jahres 2011'. Mit Leidenschaft gibt er sein umfangreiches und fundiertes Wissen an interessierte Leser weiter.
Autoren/Hrsg.
Weitere Infos & Material
0. Materialien zum Buch ... 15 0. Geleitwort ... 17 1. Arduino -- was ist das? ... 19 1.1 ... Arduino -- etwas Hintergrund ... 19 1.2 ... Open Source: Die Lizenzen des Arduino-Projekts ... 20 1.3 ... Maker und die Arduino-Community ... 23 1.4 ... Arduino Uno Rev3 -- der Standard ... 25 1.5 ... Details zum Mikrocontroller ... 30 2. Die Arduino-Hardware ... 59 2.1 ... Die Produktfamilie Arduino ... 59 2.2 ... Arduino-kompatible Boards ... 100 2.3 ... Arduino-Shields ... 141 2.4 ... Expansionsboards ... 150 3. Das Experimentierumfeld ... 155 3.1 ... Elektronische Bauteile ... 155 3.2 ... Grundlagen zur Schaltungstechnik ... 173 3.3 ... Breadboards und Zubehör ... 178 3.4 ... Qwiic, Grove und mikroBUS Connection ... 183 3.5 ... Spannungsversorgung ... 187 3.6 ... Messtechnik ... 201 3.7 ... CAD-Software ... 211 4. Arduino-Software ... 217 4.1 ... Schritte bei der Programmerstellung ... 217 4.2 ... Die Arduino-Entwicklungsumgebung ... 218 4.3 ... Die Arduino-Create-Plattform ... 223 4.4 ... Arduino Create vs. Arduino IDE ... 227 4.5 ... Programmieren in C++ ... 228 4.6 ... Den Arduino programmieren ... 258 4.7 ... Arduino-Boards in Betrieb nehmen ... 285 4.8 ... Arduino-Debugging ... 305 4.9 ... MicroPython mit Arduino ... 319 4.10 ... Grafische Programmierung mit ArduBlock ... 322 4.11 ... Simulation mit Wokwi ... 326 5. Sensoren ... 329 5.1 ... Der Thermistor als Temperatursensor ... 329 5.2 ... Der Temperatursensor TMP36 ... 332 5.3 ... Der Temperatur- und Feuchtigkeitssensor DHTxx/AM23xx ... 336 5.4 ... Der Temperatur- und Feuchtigkeitssensor Si7021 ... 342 5.5 ... Der Temperatursensor DS18B20 ... 345 5.6 ... Die barometrischen Drucksensoren BMP180, BMP280 und BME280 ... 349 5.7 ... Sensoren zur Messung der Luftqualität ... 354 5.8 ... Der Grove-Feinstaubsensor PPD42NS ... 363 5.9 ... Der Umweltsensor SEN55 ... 367 5.10 ... Der Lichtstärkesensor GY-30 (BH1750FVI) ... 368 5.11 ... Das Farbsensormodul GY-TCS3200D ... 372 5.12 ... Ultraschall-Entfernungsmessung ... 377 5.13 ... ToF-Entfernungsmessung ... 382 5.14 ... Bewegungsdetektion mit PIR-Sensoren ... 385 5.15 ... Wetterdaten ... 388 6. Eingabeelemente ... 395 6.1 ... Taster und Schalter ... 395 6.2 ... Keypads ... 397 6.3 ... Joysticks ... 404 6.4 ... Drehgeber ... 407 6.5 ... Touch-Sensoren ... 411 6.6 ... Touch-Panels ... 412 6.7 ... RFID ... 416 6.8 ... NFC ... 425 7. Anzeigeelemente ... 439 7.1 ... LEDs und RGB-LEDs ... 439 7.2 ... Sieben-Segment-Anzeigen ... 445 7.3 ... LED-Dot-Matrix-Anzeigen ... 448 7.4 ... Seriell gesteuerte RGB-LEDs ... 452 7.5 ... LCDs ... 463 7.6 ... OLED-Displays ... 480 7.7 ... ePaper ... 490 7.8 ... M5Stack-Displays ... 491 7.9 ... Touchscreens ... 492 8. Aktoren ... 533 8.1 ... Relais ... 533 8.2 ... Motoren ... 538 9. Externe Speicher ... 571 9.1 ... Internes EEPROM ... 571 9.2 ... Externes EEPROM ... 574 9.3 ... FRAM ... 577
10. Kommunikation ... 581 10.1 ... Serielles Interface UART, der interne Monitor ... 581 10.2 ... SPI ... 587 10.3 ... Der I2C-Bus ... 593 10.4 ... Der 1-Wire-Bus ... 596 10.5 ... CAN ... 602 10.6 ... Bluetooth und BLE ... 610 10.7 ... Der Arduino im Netzwerk ... 624 10.8 ... LoRa bzw. LoRaWAN ... 642 10.9 ... GSM ... 669 10.10 ... LTE ... 675 10.11 ... 3GPP LPWAN ... 680
11. Mikrocontroller-Netzwerke ... 711 11.1 ... nRF24L01-Netzwerke ... 712 11.2 ... nRF24L01-Mesh ... 735 11.3 ... Meshtastic ... 735 11.4 ... ZigBee ... 751
12. Datenformate und Kommunikationsprotokolle ... 767 12.1 ... JSON ... 767 12.2 ... MQTT ... 770
13. Projektideen für den Arduino ... 777 13.1 ... Tragbare Elektronik (Wearables) ... 777 13.2 ... Überwachung des Raumklimas ... 780 13.3 ... OpenWeatherMap: Open Data aus dem Internet ... 798 13.4 ... Pushover-Statusmeldungen ... 804 13.5 ... Überwachung von Pflanzen ... 811 13.6 ... Messung von radioaktiver Strahlung ... 816 13.7 ... M5StickC ... 824 13.8 ... Kameraanwendungen ... 829 13.9 ... Batteriebetriebener und solargepufferter IoT-Knoten ... 839 13.10 ... Low-Power-IoT-Knoten mit Display ... 847 13.11 ... Approximation nichtlinearer Sensorkennlinien ... 855 13.12 ... Maschinelles Lernen ... 859 Anhang ... 863 A.1 ... Arduino-Distributoren ... 863 A.2 ... Internationale Beschaffung ... 863 A.3 ... Technische Daten im Vergleich ... 864 A.4 ... Spezifikation von Widerständen ... 868 Index ... 873
1.4 Arduino Uno Rev3 – der Standard
Arduino Uno ist das Arduino-Board, dessen Kern der von Atmel entwickelte Mikrocontroller ATmega328P ist. Auch nach der Übernahme von Atmel durch Microchip wird dieser verbreitete Controller unverändert gefertigt. Auf dem Board ist alles vorhanden, was zur Unterstützung des Mikrocontrollers benötigt wird. Abbildung 1.2 zeigt einen Arduino Uno Rev3.
Die spezielle Form des Arduino Uno Rev3, der Arduino-Uno-Formfaktor, ist praktisch standardisiert, sodass andere Boards, die sogenannten Arduino-Shields, egal von welchem Hersteller sie stammen, über die Arduino-Buchsenleisten kontaktiert werden können.
Abbildung 1.2 Arduino Uno Rev3
1.4.1 Ein- und Ausgangspins
Wie Sie in Abbildung 1.2 sehen können, verfügt der Arduino Uno über 20 digitale Eingangs- bzw. Ausgangspins, sechs analoge Eingänge, einen 16-MHz-Quarz, einen USB-Anschluss, eine Netzbuchse, einen ICSP-Header für das In-Circuit Serial Programming (ICSP) und eine Reset-Taste.
ICSP ist eine der verschiedenen Methoden zur Programmierung von Arduino-Boards. Normalerweise wird ein Arduino-Bootloader-Programm zum Programmieren eines Arduinos verwendet, der einen seriellen Programm-Upload ermöglicht. Wenn der Bootloader jedoch fehlt oder beschädigt ist, kann stattdessen ICSP verwendet werden.
Die nach außen hin verfügbaren Anschlüsse sind den beiden Buchsenleisten (Headern) zugeordnet 1. An der linken Seite des Arduino Uno sind oben eine USB-Buchse vom Typ B (USB Jack) 2 und darunter die Buchse zur Spannungsversorgung (Power Jack) 3 angeordnet.
Die Pinbelegung der nach außen führenden Buchsenleisten entnehmen Sie Abbildung 1.3. Deutlich zu sehen ist, dass jedem Anschluss mehrere Funktionen zugeordnet sind. Welche Funktion wirksam wird, bestimmt die vor dem Programmstart vorzunehmende Initialisierung.
Von den insgesamt 20 digitalen I/O-Pins können sechs als PWM-Ausgang und sechs als analoger Eingang fungieren. PWM bezeichnet die Pulsweitenmodulation (Pulse Width Modulation), bei der die Information im Tastverhältnis (Duty Cycle) gemäß Abbildung 1.4 liegt.
Abbildung 1.3 Pinbelegung beim Arduino Uno Rev3
Abbildung 1.4 PWM
PWM-Signale lassen sich sehr gut für die Helligkeitssteuerung von LEDs oder für die Steuerung der Drehzahl von DC-Motoren verwenden. Mit analogWrite(value) steht in Abbildung 1.4 auch bereits die zugehörige Anweisung zur Ausgabe – was es damit genau auf sich hat, erfahren Sie in Abschnitt 4.6.2.
1.4.2 Serielle Schnittstellen
Die Pinbelegung zeigt drei serielle Schnittstellen, die für den Einsatz des Arduino sehr wichtig sind:
Pins | Bedeutung |
---|
TX, RX | Serielle Schnittstelle für Programm-Upload und Kommunikation (UART) |
SCL, SDA | I2C-Bus |
SCK, MISO, MOSI | SPI-Bus |
Tabelle 1.1 Arduino Uno – serielle Schnittstellen
Mit diesen Kommunikationsschnittstellen werden Sie immer wieder in Kontakt kommen, denn neben den analogen und digitalen Ein-/Ausgängen stellen diese Schnittstellen Verbindungen zu anderen Komponenten oder Controllern her und ermöglichen erst den für Mikrocontroller-Anwendungen so wichtigen Datenaustausch.
1.4.3 Spannungsversorgung
Den Arduino Uno können Sie auf unterschiedlichen Wegen mit Spannung versorgen. Die Spannungsversorgung kann am einfachsten über den USB-Anschluss erfolgen, der ohnehin für den Programm-Upload benötigt wird. Bedenken Sie allerdings, dass die USB-2.0-Ports, die heute noch in vielen PCs verbaut werden, gemäß Spezifikation nur einen Strom von maximal 500 mA liefern. Der USB-Anschluss kann also den Strombedarf in vielen Fällen nicht decken.
Spannungsversorgung über USB
Die Spannungsversorgung über den USB-Anschluss eines Rechners kann nicht immer zuverlässig die benötigte Spannung bereitstellen. Zum Ausprobieren ist es ein guter Anfang, aber wenn Sie den Arduino mit Zusatzschaltungen erweitern, brauchen Sie ein richtiges Netzteil.
Bei der Spannungsversorgung über den Power Jack (Hohlstecker) sollte das eingesetzte Steckernetzteil eine Gleichspannung zwischen 7 und 12 V liefern. Die Stromaufnahme des Arduino Uno hängt stark von den angeschlossenen Lasten ab und kann ohne diese nicht zuverlässig angegeben werden.
Ein Steckernetzteil, das in der Lage ist, einen Strom von 1 A zu liefern, ist aber erst einmal ein sicherer Anfang. Reichelt bietet ein solches Netzteil unter der Bezeichnung HNP 12-120L6 für unter 10 € an (https://cdn-reichelt.de/documents/datenblatt/D400/HNP12.pdf).
Die Spannungszuführung kann aber auch über den Anschluss VIN erfolgen.
Wenn Sie den Arduino Uno über ein USB-Kabel mit einem Computer verbinden und die Spannungsversorgung über ein Netzteil oder einen Akku vornehmen, dann sind Sie bereits für das Abenteuer Arduino gerüstet.
1.4.4 Mikrocontroller ATmega328P
Der Mikrocontroller ATmega328P ist in einem klassischen DIL-Gehäuse (Dual-in-Line) auf dem Board gesockelt und kann daher ersetzt werden, wenn wirklich einmal alles schiefgegangen ist.
Für einen Austausch 1:1 müssen Sie einen ATmega328P mit programmiertem Bootloader verwenden. Den bekommen Sie für 5,40 € bei Reichelt. Der ATmega328P ohne Bootloader kostet bei Reichelt nur 3,33 €:
Wie Sie später noch sehen werden, gibt es auch einen Arduino Uno mit einem ATmega328P im SMD-Gehäuse. Da ist ein Wechsel aber nicht so einfach.
1.4.5 Warum eigentlich die Bezeichnung »Uno«?
Nachdem Sie einen ersten Eindruck von der Hardware des Arduino Uno gewinnen konnten und ich auch schon angedeutet habe, dass es weitere Arduinos gibt, möchte ich noch kurz etwas zur Namensgebung schreiben.
Vor dem Arduino Uno gab es bereits andere Arduinos. Mit dem Uno (»uno« bedeutet auf Italienisch »eins«) wurde die Bereitstellung der Arduino-Entwicklungsumgebung 1.0 (Arduino IDE 1.0) markiert. Arduino Uno und die Version 1.0 der Arduino IDE sind also die Referenzversionen von Arduino, die im Laufe der Jahre zu neueren Versionen weiterentwickelt wurden.
Heute existiert eine breite Palette von Arduino-Boards, von denen ich Ihnen wegen ihrer unterschiedlichen Ausstattungsmerkmale und Performance noch einige vorstellen werde. Die jetzt als Legacy Arduino bezeichnete Arduino IDE liegt in Version 1.8 für alle gängigen Betriebssysteme vor.
Der Arduino Uno bleibt damit immer noch die Hardware-Basis des Arduino-Universums und ist mit dem ATmega328P eine ausgezeichnete Ausgangsbasis für die Umsetzung von Programmideen in laufende Mikrocontroller-Anwendungen.
Wenn Sie bei der Arbeit mit dem Arduino Uno eine gewisse Sicherheit gewonnen haben, dann ist der Schritt hin zu komplexeren Arduinos wesentlich einfacher.
Keine Angst beim Umgang mit dem Arduino Uno!
Der Arduino Uno ist ein robustes Board, weshalb Sie keine Angst beim Ausprobieren von Neuem und...