Inhaltsverzeichnis

Hardware / Module / Schnittstellen

Hardware

Hier finden sich die Zusammenhänge zwischen den Arduino-Boards und den Mikrocontrollern.

Die alten Arduino Dokus waren übersichtlicher, aber da sind sie ja doch noch :)


ATMega328

Für die folgenden Boards wird ein ATMega328 Mikrocontroller verwendet, hier das Handbuch zum ATMega328(PDF) (neu 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): Documentation Schaltplan(PDF)2009

Arduino UNO R3 (Weiterentwicklung): Documentation(PDF) Schaltplan(PDF) Datasheet + Pin-Layout(image)

Arduino Pro Mini (Minimalboard ohne USB-Seriell-Wandler): Documentation Schaltplan(PDF) Pin-Layout(image) (aus dem Forum)

Arduino Nano (Minimalboard mit USB-Seriell-Wandler): Documentation+Schaltplan(PDF) 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 <Wire.h>
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 <Wire.h> 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