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

Taster, Schalter
Poti (Drehwiederstand, Analog)
Drehgeber / Rotary Encoder
Sensortaste

Chip:mma7361 - Analogwert je Achse

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)
  ...
}

Chips:MPU9250
Modul:GY-9250 - 10Pins, I2C, incl. Spannungsregler 5v→3.3V

Chips:MPU9250 +BMP280(Altimeter)
Modul:GY-91 - 8Pins, I2C, incl. Spannungsregler 5v→3.3V

Meist mit Optokoppler, Schutzdioden, Möglichkeit Stromversorgung der Relaisspulen von der Logik zu trennen

Für normale Gleichstrommotoren

Für Schrittmotoren

Für Servomotoren (wie aus dem Modellbau)

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

WLAN z.B. via ESP8266 oder ESP32

LAN via verschiedene Module

Mit optional zuschaltbarem Pull-Up-Widestand 50KOhm

idR Abs. max. 40mA (ATmega328 etc. wie beim UNO,…)

10-Bit Wandler (UNO:6Stck., Pro Mini:8Stck.)

DAC (Digital nach Analogausgang): 2 DACs beim Arduino Due Board

Ansonsten PWM Ausgänge (z.B. 6 Stck. beim UNO)

#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

Dieses Thema existiert noch nicht

Sie sind einem Link zu einer Seite gefolgt, die noch nicht existiert. Sie können die Seite mit dem Knopf Seite anlegen selbst anlegen und mit Inhalt füllen.