====== Hardware / Module / Schnittstellen ====== ====== Hardware ====== Hier finden sich die Zusammenhänge zwischen den Arduino-Boards und den Mikrocontrollern. [[https://docs.arduino.cc/retired|Die alten Arduino Dokus]] waren übersichtlicher, aber da sind sie ja doch noch :) ---- **ATMega328** Für die folgenden Boards wird ein ATMega328 Mikrocontroller verwendet, [[https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf|hier das Handbuch zum ATMega328(PDF)]] (neu Microchip AVR, [[https://de.wikipedia.org/wiki/Microchip_AVR|vormals Atmel AVR (->Wikipedia))]]. Darin wird auf (alt:450 neu:)300 Seiten alles dokumentiert, was man zum Mikrocontroller wissen muss und damit, **was man beim Nutzen bzw. Hacken der Boards benötigt!** **Einige Boards mit ATMega328** Arduino Duemilanove (eine art Ur-Arduino): [[https://docs.arduino.cc/retired/boards/arduino-duemilanove|Documentation]] [[https://www.arduino.cc/en/uploads/Main/arduino-duemilanove-schematic.pdf|Schaltplan(PDF)2009]] Arduino UNO R3 (Weiterentwicklung): [[https://docs.arduino.cc/hardware/uno-rev3|Documentation(PDF)]] [[https://www.arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf|Schaltplan(PDF)]] [[https://docs.arduino.cc/resources/datasheets/A000066-datasheet.pdf|Datasheet + Pin-Layout(image)]] Arduino Pro Mini (Minimalboard ohne USB-Seriell-Wandler): [[https://docs.arduino.cc/retired/boards/arduino-pro-mini|Documentation]] [[https://www.arduino.cc/en/uploads/Main/Arduino-Pro-Mini-schematic.pdf|Schaltplan(PDF)]] [[https://europe1.discourse-cdn.com/arduino/original/4X/f/7/e/f7eda2a9afb7e1ea2c468630cafb4cf49954e127.jpeg|Pin-Layout(image)]] ([[https://forum.arduino.cc/t/arduino-pro-mini-pinout/148829|aus dem Forum]]) Arduino Nano (Minimalboard mit USB-Seriell-Wandler): [[https://www.arduino.cc/en/uploads/Main/ArduinoNanoManual23.pdf|Documentation+Schaltplan(PDF)]] [[https://docs.arduino.cc/hardware/nano|Pin-Layout(image)]] ---- **ATmega32u4** Mikrocontroller ATmega32u4 mit USB-Schnittstelle und der Möglichkeit, diese z.B. als HID Device (Human Interface Device wie z.B. Tastatur) zu programmieren, so daß man dann das Board z.B. als Tastatur an einen PC stecken kann! Mit einem Arduino-Programm kann man dann beliebige Tastendrücke auslösen. Analog mit Maus-/Joystick-Funktion. **Einige Boards mit ATmega32u4** Leonardo: https://docs.arduino.cc/hardware/leonardo Micro (kleine Version des Leonardo) ("Pro Micro" ist die Billigversion(?) davon): https://docs.arduino.cc/hardware/micro ====== Themen / Module / Schnittstellen ====== ====== Module ====== ===== Input / Sensoren ===== ==== Eingabe ==== Taster, Schalter \\ Poti (Drehwiederstand, Analog) \\ Drehgeber / Rotary Encoder \\ Sensortaste ==== G-Sensor 3-Achsen ==== Chip:mma7361 - Analogwert je Achse ==== G-Sensor + Gyro 6-Achsen ==== Chip:MPU-6050 (icl. Temp.) \\ Modul:GY-521 - 8Pins, I2C, incl. Spannungsregler 5v->3.3V #include const int MPU_addr=0x68; // I2C address of the MPU-6050 void setup() { Wire.begin(); // I2C: Leonardo: Pin 2 (SDA), Pin 3 (SCL) Wire.beginTransmission(MPU_addr); Wire.write(0x6B); // PWR_MGMT_1 register Wire.write(0); // set to zero (wakes up the MPU-6050) Wire.endTransmission(true); } void loop() { Wire.beginTransmission(MPU_addr); Wire.write(0x3B); // starting with register 0x3B (ACCEL_XOUT_H) Wire.endTransmission(false); Wire.requestFrom(MPU_addr,14,true); // request a total of 14 registers int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ; AcX=Wire.read()<<8|Wire.read(); // 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L) AcY=Wire.read()<<8|Wire.read(); // 0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L) AcZ=Wire.read()<<8|Wire.read(); // 0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L) Tmp=Wire.read()<<8|Wire.read(); // 0x41 (TEMP_OUT_H) & 0x42 (TEMP_OUT_L) GyX=Wire.read()<<8|Wire.read(); // 0x43 (GYRO_XOUT_H) & 0x44 (GYRO_XOUT_L) GyY=Wire.read()<<8|Wire.read(); // 0x45 (GYRO_YOUT_H) & 0x46 (GYRO_YOUT_L) GyZ=Wire.read()<<8|Wire.read(); // 0x47 (GYRO_ZOUT_H) & 0x48 (GYRO_ZOUT_L) ... } ==== G-Sensor + Gyro + Magnetometer 9-Achsen ==== Chips:MPU9250 \\ Modul:GY-9250 - 10Pins, I2C, incl. Spannungsregler 5v->3.3V ==== G-Sensor + Gyro + Magnetometer 9-Achsen + Altimeter ==== Chips:MPU9250 +BMP280(Altimeter) \\ Modul:GY-91 - 8Pins, I2C, incl. Spannungsregler 5v->3.3V ==== Temperatur ==== ==== Luftfeuchte (idR incl. Temperatur) ==== ==== ==== ==== ==== ===== Output / Aktoren ===== ==== Relais-Modul ==== Meist mit Optokoppler, Schutzdioden, Möglichkeit Stromversorgung der Relaisspulen von der Logik zu trennen ==== Motorsteuerung ==== Für normale Gleichstrommotoren Für Schrittmotoren Für Servomotoren (wie aus dem Modellbau) ==== LED Streifen (einzeln ansteuerbar) ==== WS2812B - RGB 24Bit je LED mit 1-Draht 800kHz Spezialprotokoll \\ SK6812 RGBW / RGBWW 32Bit je LED, ansonsten wie WS2812B \\ Bibliothek: z.B. http://fastled.io/ ====== Schnittstellen ====== ==== TCP/IP ==== WLAN z.B. via ESP8266 oder ESP32 LAN via verschiedene Module ==== Dgital In ==== Mit optional zuschaltbarem Pull-Up-Widestand 50KOhm ==== Dgital Out ==== idR Abs. max. 40mA (ATmega328 etc. wie beim UNO,...) ==== Analog In ==== 10-Bit Wandler (UNO:6Stck., Pro Mini:8Stck.) ==== Analog Out ==== DAC (Digital nach Analogausgang): 2 DACs beim Arduino Due Board Ansonsten PWM Ausgänge (z.B. 6 Stck. beim UNO) ==== I2C ==== #include // [[https://www.arduino.cc/en/Reference/Wire]] \\ // Arduino-Boards / Pins Uno, Ethernet: A4 (SDA), A5 (SCL) Mega2560: 20 (SDA), 21 (SCL) Leonardo: 2 (SDA), 3 (SCL) Due: 20 (SDA), 21 (SCL), SDA1, SCL1 ==== SPI ==== ==== Seriell / UART / RS232 / RS485 ====