====== Komponenten Arduino ====== Hier finden Sie alle wichtigen Komponenten für die Verarbeitung und Ausgabe von Sensor-Daten. ===== Arduino Nano ===== [{{:katalog:hauptkomponenten:kmk_7367_erster_bananduino.jpg?400 |Arduino Nano auf Steckbrett für Bananenstecker}}] [{{:katalog:img_7972.jpg?250x250|Arduino Nano auf Shield für Jumper-Kabel}}] ? Modell: : Arduino Nano {{ :katalog:a000005-datasheet.pdf |Datenblatt}} ? Prozessor: : atmega328 {{ :katalog:atmel-7810-automotive-microcontrollers-atmega328p_datasheet.pdf |Datenblatt}} ? Sensitivität des AD-Wandlers: : FIXME mV ? Linearität des AD-Wandlers: : FIXME mV https://www.makershop.de/plattformen/arduino-shields/io-sensor-shield-nano/ ===== LC-Display 20x4 ===== {{:katalog:img_7961.jpg?250|}} ? Modell: : HD44780U {{ :katalog:lcd20x4_datasheet.pdf |Datenblatt }} ? Beispielprogramm: : {{ :katalog:lcd_display_20x4.ino |Beispielprogramm}} ^ Anschlussbelegung ^^ | Arduino | Display | | | | | 5V | VCC | | GND | GND | | A4 | SDA | | A5 | SCL | ? * Für den Betrieb ist die LiquidCrystal I2C Bibliothek notwendig. Bitte im Library Manager (Sketch - Include Library - Manage Librarys - Installed) überprüfen, ob diese installiert ist, andersfalls LiquidCrystal I2C im Library Manager in der Suche eingeben und die Bibliothek installieren. * Falls die Hintergrundbeleuchtung leuchtet, aber kein Text zu sehen ist, kann dies am zu niedrig eingestellten Kontrast liegen. Der Regler zur Einstellung des Konstrasts befindet sich auf der Rückseite des Displays und kann mit einem kleinen Schraubendreher eingestellt werden. ===== SD-Karten Adapter ===== {{:katalog:hauptkomponenten:img_0051_02.jpg?250|}} {{:katalog:img_0050.jpg?250|}} ? Beispielprogramm: : {{ :katalog:sdcard.ino |Beispielprogramm}} ^ Anschlussbelegung ^^ | Arduino | Adapter | | | | | 5V | VCC | | GND | GND | | MOSI | PIN 11 | | MISO | PIN 12 | | CLK | PIN 13 | | CS | PIN 10 | ? * Für den Betrieb ist die SD- Bibliothek notwendig, diese muss unter dem Librarymanager (Adafruit SD) installiert werden. Die Zuleitungen vom Adapter zum Arduino sollten die Länge von 40cm nicht überschreiten. Mit langen Zuleitungen funktioniert die Datenübertragung nicht zuverlässig oder auch gar nicht. ===== Batterienhalter 4x AA ===== {{:katalog:hauptkomponenten:img_20231010_182902_01.jpg?250|}} * Vier AA-Batterien mit 1,5V reichen für den Betrieb eines Arduino Nano ====== Sensoren ====== Hier finden Sie alle Sensoren, die wir im Praktikum für die M-Pool Versuche zur Verfügung stellen. ==== GPS-Empfänger MT3339 ==== {{:katalog:img_20231107_200806_1.jpg?250|}} {{:katalog:img_20231107_200821_2.jpg?250|}} ? Modell: : MT3339 {{ :katalog:hauptkomponenten:globaltop-fgpmmopa6h-datasheet-v0a.pdf |Datenblatt}} ? Beispielprogramm: : {{ :katalog:gps_mit_adafruit.ino |Beispielprogramm mit der Bibliothek von Adafruit}} ? Ortsauflösung: : FIXME ? Streuung der Positionsdaten: : von Messpunkt zu Messpunkt bei guten Empfangsbedingungen - FIXME ? Standardabweichung der Positionsangabe: : FIXME Dieser Sensor überträgt permanent die Geo-Position, die er aus dem Empfang von Signalen verschiedener GNSS-Satelliten ermittelt hat. Die übertragenen Datensätze haben das Format [[wpde>NMEA_0183|NMEA 0183]]. Diese Rohdaten lassen sich über USB auf den seriellen Monitor des Arduino-IDE übertragen. ^ Anschlussbelegung für Rohdaten ^^ | Arduino | GPS-Modul | | | | | +5 V | VIN | | GND | GND | | D0(RX0) | RX | | D1(TX1) | TX | Damit der Prozessor bei der Übertragung der Rohdaten nicht ständig neu bootet, muss er mit einem nahezu leeren Programm beschäftigt werden: void setup() {} void loop() {} Auf [[https://learn.adafruit.com/adafruit-ultimate-gps/direct-computer-wiring|diese Webseite von Adafruit]] ist beschrieben, wie die NMEA-Rohdaten zu interpretieren sind. Es ist meist sinnvoll, die Rohdaten direkt vom Arduino auswerten zu lassen. Ein Beispiel dafür ist das oben verlinkte Beispielprogramm. Das Beispielprogramm nutzt dafür eine von Adafruit bereit gestellte Bibliothek → Installation mit dem Library-Manager unter dem Namen "Adafruit GPS Library". Welche Funktionen diese Bibliothek enthält, kann in der Datei [[https://github.com/adafruit/Adafruit_GPS/blob/master/src/Adafruit_GPS.h|Adafruit_GPS.h]] nachgeschlagen werden. Etwa ab Zeile 163 finden sich die abfragbaren Werte. In diesem Fall soll der Sensor nur mit dem Arduino "reden". Der Arduino kommuniziert dann das Ergebnis seiner Analyse über USB an den seriellen Monitor des angeschlossenen Computers. Alternativ, oder auch parallel, können Sie sich das Ergebnis auf einem an den Arduiono angeschloessen LCD-Display anzeigen lassen. ^ Anschluss für Auswertung durch Arduino ^^ | Arduino | GPS-Modul | | | | | 5V | VIN | | GND | GND | | D3 | TX | | D4 | RX | === Trouble-Shooting === ??? Problem: Fehlermeldung ''Adafruit_GPS.h: No such file or directory'' !!! Ursache: Die GPS-Library von Adafruit wurde nicht in das Arduino-IDE geladen !!! Lösung: Im Library-Manager die Library "Arduino_GPS" suchen und installieren. ??? Problem: Keine Positionsdaten !!! Ursache: Zu schwacher Empfang der GPS-Satelliten !!! Mögliche Lösungen: Fenster öffnen, GPS-Sensor unter freiem Himmel betreiben, externe Antenne verwenden ??? Problem: NMEA, GPRMC, GPGGA, GPGLL, GPVTG, GP-was??? !!! Lösung: Auf [[https://www.rfwireless-world.com/Terminology/GPS-sentences-or-NMEA-sentences.html|dieser Webseite]] sind die wichtigsten Abkürzungen im Zusammenhang mit globaler Satellitennavigation zusammengestellt. ==== Temperatursensor DS18B20 ==== {{:katalog:img_7976.jpg?250|}} ? Sensor: : DS18B20 {{ :katalog:ds18b20z-dal.pdf |Datenblatt}} ? Sensitivität: : laut Datenblatt: IN-ARBEIT mK, gemessen: IN-ARBEIT mK ? Systematische Abweichung: : laut Datenblatt: FIXME, gemessen: FIXME ==== Temperatursensor TS103F3950R, 10 kΩ NTC ==== {{:katalog:sensoren:img_7975_01.jpg?250|}} ? Sensor: : TS103F3950R {{ :katalog:dsa0039225.pdf |Datenblatt}} ? Sensitivität: : laut Datenblatt: FIXME mK, gemessen: FIXME mK ? Systematische Abweichung: : laut Datenblatt: FIXME, gemessen: FIXME ==== Temperatursensor PT106051, PT100 ==== BILD-FEHLT ? Sensor: : PT106051 {{ :katalog:pt10605x.pdf |Datenblatt}} ? Sensitivität: : laut Datenblatt: FIXME mK, gemessen: FIXME mK ? Systematische Abweichung: : laut Datenblatt: FIXME mK, gemessen: FIXME mK ==== Temperatursensor B57703M, 10 kΩ NTC ==== BILD-FEHLT ? Sensor: : B57703M {{ :katalog:b57703-m703.pdf |Datenblatt}} ? Sensitivität bei unterschiedlichen Temperaturen: : laut Datenblatt: FIXME, gemessen: FIXME ? Systematische Abweichung: : laut Datenblatt: FIXME, gemessen: FIXME ==== Luftfeuchtigkeits- und Temperatursensor DHT-22 ==== {{:katalog:img_9438.jpg?250|}} ? Sensor-IC: : DHT-22 {{ :katalog:dht22_datasheet.pdf |Datenblatt}} ? Sensitivität Luftfeuchtigkeit : : laut Datenblatt: FIXME, gemessen: FIXME ? Sensitivität Temperatur : : laut Datenblatt: FIXME, gemessen: FIXME ? Systematische Abweichungen: : laut Datenblatt: FIXME, gemessen: FIXME ? Beispielprogramm: : {{ :katalog:temperatursensor_luftfeuchtigkeit_dht22.ino |Beispielprogramm}} ? Bibliothek: :{{ :katalog:dht-sensor-library-master.zip |}} : ^ Anschlussbelegung ^^ | Arduino | Sensor | | | | | 5V | Pin 1 (VCC) | | Pin 2 (D2) | Pin 2 | | GND | Pin 3 | ? * Damit das Beispielprogramm funktioniert, muss die DHT-Sensor-Library eingebunden sein. Diese kann über den Library-Manager (Adafruit DHT22 Library) oder mit der oben verlinkten ZIP-Datei "Bibliothek:" eingebunden werden. Beide Möglichkeiten führen zum selben Ergebnis. * Pin 2 wird mit Pin 2 am Arduino verbunden **und** über einen 10 kΩ Widerstand an VCC (5V) am Arduino angeschlossen. * Alternativ: Pin 2 und Pin 3 am Sensor verbinden **und** über einen 10 kΩ Widerstand mit VCC (5V) am Arduino verbinden. ==== Luftdruck- und Temperatursensor BMP 280 ==== {{:katalog:img_9436.jpg?250|}} ? Sensor: : BMP 280 {{ :katalog:bmp280_2_datasheet.pdf |Datenblatt}} ? Sensor-IC: : {{ :katalog:bmp280_1_datasheet.pdf |Datenblatt}} ? Sensitivität Luftdruck: : laut Datenblatt: FIXME mbar, : gemessen: FIXME mbar ? Sensitivität Temperatur: : laut Datenblatt: FIXME mbar, : gemessen: FIXME mbar ? Beispielprogramm: : {{ :katalog:luftdrucksensor-temperatursensor_bmp280.ino |Beispielprogramm}} ^ Anschlussbelegung ^^ | Arduino | Sensor | | | | | 5V | VCC | | GND | GND | | A4 | SCL | | A5 | SDA | ? * Damit der Sensor funktioniert, muss die "Adafruit BMP 280 Library" eingebunden sein. (Funktioniert über der Suche im Library-Manager (Tools → Manage Libraries..)). * Die Wire.h Bibliothek wird für den I²C Bus benötigt. ==== Luftdruck- und Temperatursensor MS5611 ==== {{:katalog:img_0047.jpg?250|}} {{:katalog:img_0048.jpg?250|}} ? Sensor: : MS5611 {{ :katalog:eng_ds_ms5611-01ba03_b3.pdf |Datenblatt}} ? Sensitivität Luftdruck: : laut Datenblatt: FIXME mbar, : gemessen: FIXME mbar ? Sensitivität Temperatur: : laut Datenblatt: FIXME mbar, : gemessen: FIXME mbar ? Beispielprogramm: : {{ :katalog:ms5611.ino |Beispielprogramm}} ? Beispielprogramm micropython: : {{ :katalog:ms5611_example.txt |Beispielprogramm}} ^ Anschlussbelegung ^^ | Arduino | Sensor | | | | | 5V | VCC | | GND | GND | | A4 | SCL | | A5 | SDA | ? * Damit der Sensor im Arduino-IDE funktioniert, muss die MS5611 Library (von Rob Tillaart) eingebunden sein. (Funktioniert über der Suche im Library-Manager (Tools → Manage Libraries..)). * Damit der Sensor in Micropython funktioniert, muss die MS5611 library ([[https://github.com/jposada202020/MicroPython_MS5611/tree/master]]) eingebunden sein. Anleitung entweder dort (verschiedene Wege) oder {{ :katalog:micropython_ms5611.zip | dieses Verzeichnis}} auf dem Arduino speichern. * Die wire.h Bibliothek wird für den I²C Bus benötigt. ==== CO2-Sensor MH-Z19C ==== {{:katalog:img_20231108_200300.jpg?250|}} {{:katalog:img_20231108_200323.jpg?250|}} {{:katalog:img_20231108_200334.jpg?250|}} ? Sensor: : MH-Z19C {{ :katalog:mh-z19c.pdf |Datenblatt}} ? Sensitivität CO2: : laut Datenblatt: FIXME ppm, : gemessen: FIXME ppm ? Beispielprogramm: : {{ :katalog:hauptkomponenten:co2sensor_v2.ino.ino |Beispielprogramm}} ^ Anschlussbelegung ^^ | Arduino | Sensor | | | | | 5V | +5 V | | GND | GND | | D10 (TX) | RX | | D11 (RX) | TX | ? * Es gibt zwei Möglichkeiten, den Sensor auszulesen: Digital über serielle Schnittstelle (Beispielprogramm) oder analog über PWM[[https://de.wikipedia.org/wiki/Pulsdauermodulation|]]. * TX und RX werden kreuzweise angeschlossen (siehe Anschlussplan). * Funktioniert das Programm nicht, kann es hilfreich sein, die beiden Anschlüsse am Arduino zu tauschen. * Sind die Werte unplausibel, kann eine Kalibrierung helfen. Das Datenblatt enthält Hinweise zur Kalibrierung. ==== CO2-Sensor Sensirion SCD30 ==== {{:katalog:hauptkomponenten:1709060595846.jpg?250|}} ? Sensor: : Sensirion SCD30 {{ :katalog:hauptkomponenten:sensirion_co2_sensors_scd30_datasheet.pdf |Datenblatt}} ? Sensitivität CO2: : laut Datenblatt: FIXME ppm, : gemessen: FIXME ppm ? Beispielprogramm: : {{ :katalog:hauptkomponenten:hx711.ino |Beispielprogramm}} ^ Anschlussbelegung ^^ | Arduino | Sensor | | | | | 5V | +5 V | | GND | GND | | D7 | SCK | | D6 | DT (Dout) | ? * Für die Funktion muss die "Adafruit SP30" Bibliothek eingebunden sein, unter Sketch -> Include Library -> Manage Library. ==== Gyroskop und Temperatursensor L3G4200D ==== {{:katalog:img_9430.jpg?250|}} {{:katalog:img_0054.jpg?250}} ? Modul: : GY-50 ? Sensor-IC : L3G4200D {{ :katalog:l3g4200d_1012.pdf |Datenblatt}} ? Sensitivität für x-, y-, z-Achse: : laut Datenblatt: FIXME, gemessen: FIXME ? Sensitivität Temperatursensor: : laut Datenblatt: FIXME, gemessen: FIXME ? Systematische Abweichungen: : laut Datenblatt: FIXME, gemessen: FIXME ? Beispielprogramm: : {{ :katalog:gyroskop_temperatursensor_gy50.ino |Beispielprogramm}} ? Bibliothek: :{{ :katalog:arduino-l3g4200d-master.zip |}} ^ Anschlussbelegung ^^ | Arduino | Sensor | | | | | 5V | VIN | | GND | GND | | A5 | SCL | | A4 | SDA | ? *Für den Betrieb muss die L3G4200D-Bibliothek eingebunden werden. ==== Gyroskop-, Beschleunigungs- und Temperatursensor MPU-6050 ==== {{:katalog:img_9431.jpg?250|}} ? Modul: : GY-521 {{ :katalog:gy521_datasheet.pdf |Datenblatt}} ? Sensor-IC : MPU-6050 {{ :katalog:mpu-6000-datasheet1.pdf |Datenblatt}} ? Sensitivität vom Gyroskop für x-, y-, z-Achse: : laut Datenblatt: FIXME, gemessen: FIXME ? Sensitivität Beschleunigung für x-, y-, z-Achse: : laut Datenblatt: FIXME, gemessen: FIXME ? Sensitivität Temperatursensor: : laut Datenblatt: FIXME, gemessen: FIXME ? Systematische Abweichungen: : laut Datenblatt: FIXME, gemessen: FIXME ? Beispielprogramm: : {{ :katalog:gy-521_gyroskop-_beschleunigungs-_temperatursensor.ino |Beispielprogramm}} ^ Anschlussbelegung ^^ | Arduino | Sensor | | | | | 5V | VIN | | GND | GND | | A5 | SCL | | A4 | SDA | ? * Für die Funktion muss die I²C Bibliothek eingebunden sein (wire.h). ==== Magnetfeld-, Beschleunigungs- und Temperatursensor LSM303DLHC ==== {{:katalog:img_7964.jpg?250|}} ? Modul: : GY-511 {{ :katalog:gy511_datasheet.pdf |Datenblatt}} ? Sensor-IC: : LSM303DLHC {{ :katalog:modul_datenblatt_lsm303dlhc.pdf |Datenblatt}} ? Sensitivität Magnetfeld x-, y-, z-Achse: : laut Datenblatt: IN-ARBEIT, gemessen: IN-ARBEIT ? Sensitivität Beschleunigung x-, y-, z-Achse: : laut Datenblatt: FIXME, gemessen: FIXME ? Sensitivität Temperatursensor: : laut Datenblatt: FIXME, gemessen: FIXME ? Systematische Abweichungen: : laut Datenblatt: FIXME, gemessen: FIXME ? Beispielprogramm: : {{ :katalog:kompass-temperatursensor_gy-511.ino |Beispielprogramm}} ? Bibliothek: : {{ :katalog:lsm303-arduino-master.zip |}} ^ Anschlussbelegung ^^ | Arduino | Sensor | | | | | 5V | VIN | | GND | GND | | A5 | SCL | | A4 | SDA | * Die weiteren Anschlüsse am Sensor werden für das Testprogramm nicht benötigt. * Für den Betrieb wird wire.h und lsm303.h benötigt. Die Library LSM303 von Pololu muss im Arduino IDE installiert sein. Diese finden Sie im Arduino Library Manager (Tools → Manage Libraries..) Es gibt mehrere Varianten des LSM303-Sensors und mehrere Varianten der Library, die leider nicht untereinander austauschbar sind. Die im Praktikum vorgehaltene Variante des Sensors arbeitet gut mit der Library von [[https://Pololu.com|Pololu]] zusammen. ==== Beschleunigungssensorsensor ADXL 345 ==== {{:katalog:img_9433.jpg?250|}} ? Sensor: : ADXL 345 {{ :katalog:adxl345_datasheet.pdf |Datenblatt}} ? Sensitivität für x-, y-, z-Achse: : laut Datenblatt: FIXME, gemessen: FIXME ? Systematische Abweichung: : laut Datenblatt: FIXME, gemessen: FIXME ? Beispielprogramm: :{{ :katalog:adxl345_beschleunigungssensor.ino |Beispielprogramm}} ? Bibliothek: :{{ :katalog:adxl345_we-main.zip |}} ^ Anschlussbelegung || | Arduino | Sensor | | | | | 5V | VCC | | GND | GND | | A4 | SDA | | A5 | SCL | | 5V | CS | | PIN2(D2) | INT2 | ? * Damit das Programm funktioniert, muss die ADXL Library installiert werden * Damit der Upload funktioniert, muss darauf geachtet werden, das der Sensor Pin VCC erst **nach** dem Programmupload mit den 5V Pin vom Arduino verbunden wird, da der Sensor sonst schon zu viel Strom braucht. ==== Ultraschall-Entfernungssensor HCSR04=== {{:katalog:img_9429.jpg?250|}} ? Sensor: : HCSR04 {{ :katalog:hcsr04_datasheet.pdf |Datenblatt}} ? Sensitivität: : laut Datenblatt: IN-ARBEIT, gemessen: IN-ARBEIT ? Kennlinie: : Abhängigkeit von realem Abstand zu Messwert: IN-ARBEIT ? Beispielprogramm: : {{ :katalog:ultraschall-entfernungssensor_hc-sr04.ino |Beispielprogramm}} ^ Anschlussbelegung ^^ | Arduino | Sensor | | | | | VCC | VCC | | GND | GND | | PIN 2 (D2) | TRIG | | PIN 3 (D3) | ECHO | ==== Induktiver Abstandssensor 32086-HD === {{:katalog:hauptkomponenten:img_20231010_182924_01.jpg?200|}} {{:katalog:img_20231010_182938.jpg?250|Induktiver Abstandssensor}} Ein elektronischer Schalter, der auf Metall reagiert. Wenn ein Stück Metall in die Nähe der Spitze des Sensors kommt, dann sinkt sein Widerstand und er kann Strom in Richtung Masse ableiten. ? Sensor: : 32086-HD {{ :katalog:32086hd.pdf |Datenblatt}} ? Arbeitsabstand: : Laut Datenblatt: 4mm, gemessen: FIXME : Streuung von Messung zu Messung (Wiederholbarkeit): FIXME : Streuung von Exemplar zu Exemplar: FIXME ? Kennlinie Abstand gegen Widerstand: : laut Datenblatt: keine Angabe, gemessen: FIXME ? Beispielprogramm: : FIXME ^ Anschlussbelegung ^^ | Arduino | Sensor | | | | | 5V | V+ | | GND | GND | | D2/A0 | Signal | * Eine rote LED am Sensor informiert über den Zustand des Ausgangs. * Je nach Anwendung ist entweder ein analoger (etwa A0) oder ein digitaler Eingang (etwa D2) vom Arduino am besten geeignet. ==== IR-Abstandssensor GP2Y0A21YKF ==== {{:katalog:img_9434.jpg?250|}} ? Sensor: : GP2Y0A21YKF {{ :katalog:ir_abstandssensor_datasheet.pdf |Datenblatt}} ? Sensitivität der Entfernungskennlinie : : laut Datenblatt: IN-ARBEIT, gemessen: IN-ARBEIT ? Systematische Abweichung: : laut Datenblatt: FIXME, gemessen: FIXME ? Beispielprogramm: : {{ :katalog:ir_abstandssensor.ino |Beispielprogramm}} ? Bibliothek: :{{ :katalog:average-master.zip |}} ^ Anschlussbelegung ^^ | Arduino | Sensor | | | | | 5V | 5V | | GND | GND | | A0 | V0 | ? * Damit das Programm funktioniert, muss die Average-master Library eingebinden werden. * Damit es beim Upload des Programms in den Programmer keine Fehler gibt, **muss** zwischen dem Plus-Anschluss (5V) am Eingang und der Masse (GND) am Ausgang ein 1000 µF ELKO-Kondensator eingebaut werden, da beim Upload Stromspitzen entstehen, die durch den Kondensator reduziert werden. Ohne den 1000µF Kondensator funktioniert der Upload des Programms nicht, deswegen sollte man den Kondensator nicht vergessen einzubauen. ==== Piezo-Scheibe ==== {{:katalog:hauptkomponenten:img_37352.jpg?250|}} ? Kapazität: : gemessener Mittelwert: : Streuung zwischen verschiedenen Scheiben: {{indexmenu_n>105}} /* im Index nach den Inklusionsversuchen sortiert */