Arduino

Arduino logo Arduino ist eine aus Soft- und Hardware bestehende Physical-Computing-Plattform. Beide Komponenten sind quelloffen. Die Hardware besteht aus einem einfachen E/A-Board mit einem Mikrocontroller und analogen und digitalen Ein- und Ausgängen. Die Entwicklungsumgebung basiert auf Processing und soll auch technisch weniger Versierten den Zugang zur Programmierung und zu Mikrocontrollern erleichtern.

Die Programmierung selbst erfolgt in einer C- bzw. C++-ähnlichen Programmiersprache, wobei technische Details wie Header-Dateien vor den Anwendern weitgehend verborgen werden und umfangreiche Bibliotheken und Beispiele die Programmierung vereinfachen. Arduino kann verwendet werden, um eigenständige interaktive Objekte zu steuern oder um mit Softwareanwendungen auf Computern zu interagieren (z. B. Adobe Flash, Processing, Max/MSP, Pure Data, SuperCollider, diversen Skriptsprachen, Terminal, vvvv etc.). Arduino wird beispielsweise auch an Kunsthochschulen genutzt, um interaktive Installationen aufzubauen.

Zuerst war der Arduino das Uno-Board, aber seine Geschichte ist ungebrochen. Einerseits bringt das italienische Arduino-Entwicklungsteam ständig neue Typen auf den Markt, und andererseits bewegen sich auch die Arduino-kompatiblen Klone in einer unglaublichen Bandbreite, weil der Typ ein offenes Projekt ist und die Hardware frei kopiert und modifiziert werden kann. Es ist fast unmöglich, die gesamte Arduino-Welt zu anzeigen, und ich werde nur eine oberflächliche Zusammenfassung des Teils geben, den ich kenne.

Einige Arduino-Board-Vergleiche

Typ Chip CPU
Geschw.
Eingang Voltage innere Voltage Digital
Pins
(PWM-Pins)
Analog
Pins
Flash
Speicher
SRAM
Speicher
EEPROM
Größe
Extras
Arduino UnoATmega328P16 MHz6..20V5V14 (6)632 KB2 KB1 KB -
Arduino Mega2560ATmega256016 MHz6..20V5V54 (15)16256 KB8 KB4 KB -
Arduino MicroATmega32u416 MHz7..12V5V20 (7)1232 KB2.5 KB1 KB -
Keyes Pro MicroATmega32u48 MHz7..9V3.3V12 (5)432 KB2.5 KB1 KB5 HW-Interrupts, volle USB-Geschwindigkeit
Pro Micro 5VATmega32u416 MHz7..12V5V12 (5)432 KB2.5 KB1 KB5 HW-Interrupts, volle USB-Geschwindigkeit
Arduino Nano3.x: ATmega328,
2.x: ATmega168
16 MHz7..12V5V14 (6)832 KB
16 KB
2 KB
1 KB
1 KB
512 Byte
Mini-B USB Stecker
Arduino MiniATmega328P3,3V: 8MHz
5V: 16 MHz
6..20V3,3V
5V
14 (6)832 KB2 KB1 KB2 HW-Interrupts, kein USB-Port
STM32F103STM32 32-bit Arm Cortex72 MHz5V2.7V..3.6V161664 KB20 KB - USART / I2C / SPI / USB / CAN / DMA
STM32F401STM32 32-bit Arm Cortex25 MHz5V2.7V..3.6V1616256 KB64 KB - USART / I2C / SPI / USB / CAN / DMA
Wemos D1ESP8266EX-9..12V3.3V11 (11)14 KB2 KB1 KB- integrierte ESP8266
DuemilanoveATmega168
ATmega328-
6..20V5V14 (6)616KB
32KB
1KB512 byte
1KB
-
Digispark---5V141016KB2KB1KB-
RoboRED---5V/3.3V14632KB2KB1KB-
ATmega1280ATmega1280-5V5416128KB8KB4KB-
Arduino Leonardo--5V201232KB2.5KB1K-
Arduino Due--3.3V5412512KB96K--
ChipKIT Max32Diligent-3.3V8316512KB128KB--

Arduino Uno r3

Flash-Speicher

Dies ist der "Hauptspeicher" des Arduino. Er speichert das heruntergeladene Programm und behält seinen Inhalt auch nach dem Herunterfahren bei. Es reicht also aus, das Programm nur einmal herunterzuladen. Bei jedem erneuten Einschalten wird es "automatisch" neu gestartet. Während der Programmierung können wir nicht mit den Gesamtspeicher rechnen, weil der Bootloader und verschiedene Kommunikationen auch benötigen Speicherkapacität von hier. Außerdem können heruntergeladene Bibliotheken auch viel Speicherplatz benötigen.

Außerdem kann Flash nicht unbegrenzt neu geschrieben werden. Der maximale Schreibzyklus ist auf 100.000 beschränkt. Das reicht aus, um ein Rewrite ungefähr 27 Jahre lang 10 Mal am Tag ohne Probleme zu nutzen.

SRAM

de: statischer Arbeitsspeicher
en: static random-access memory

Vereinfacht gesagt speichert SRAM interne Variablen, die im Programm definiert sind. Im Gegensatz zum Flash-Speicher behält der SRAM seinen Inhalt nicht bei, wenn er ausgeschaltet ist. Daher werden die Variablen bei jedem Einschalten neu definiert und mit ihren Standardwerten in den SRAM eingegeben.

EPROM

en: Electrically Erasable Programmable Read-Only Memory
de: Elektrisch löschbarer programmierbarer Nur-Lese-Speicher

EEPROM ist ein Remanenzvariabler Speicher für die Boards. Wie Flash behält es seinen Inhalt während des Herunterfahrens bei, ist jedoch - wie Flash - "nur" für 100.000 Schreibzyklen authentifiziert und eignet sich daher nicht für das zyklische Schreiben von Daten. Außerdem ist es etwas langsamer als "normaler" SRAM. Aufgrund dieser technischen Eigenschaften kann das EEPROM für folgende Funktionen verwendet werden:

  • Speicherung der Konfiguration(en)
  • Speichern Sie die Standardeinstellungen für den Systemstart
  • Zähler, Werte, akkumulierte Werte (zb. Stundenzähler) unabhängig von Neustarts speichern

Es gibt verschiedene Möglichkeiten, das EEPROM zu erweitern:

  • Verfügbar mit I²C-EEPROM-IC: AT24C256 I²C-EEPROM-IC und -Modul
  • Mit SD-Karte: Micro SD-Kartenmodul

Verschiedene Arduino-Boards haben EEPROMs unterschiedlicher Größe:

  • ATmega168: 512 Bytes
  • ATmega8: 512 Byte
  • ATmega328P: 1024 Byte
  • ATmega32U4: 1024 Byte
  • ATmega1280: 4096 Bytes
  • ATmega2560: 4096 Bytes

Arduino IDE

Arduino IDE ist ein JAVA-basiertes Entwicklersystem, das nach dem Schreiben von Software auf Arduino kompiliert, debuggt und auf Arduino-Karten herunterlädt. Der häufigste Download erfolgt über den USB-Anschluss an fast jedem Arduino-Board. Es ist jedoch auch möglich, einen ISP oder OTA herunterzuladen, wenn die Board diese Funktionen bietet.

Arduino wird mit einem vorgebrannten Bootloader geliefert, mit dem Sie Codes ohne externe Hardware einfach über das STK500-Protokoll herunterladen können.

Bei Bedarf kann der oben genannte Bootloader über den Anschluss ICSP (In-Circuit Serial Programming) (→ ISP) umgangen werden.

Natürlich haben wir viele Möglichkeiten, Arduino zu programmieren, abgesehen von der recht kostengünstigen (aber effizienten und kostenlosen) Arduino-IDE. Beispielsweise kann VisualStudio nach der Installation eines Arduino-Plugins für diesen Zweck verwendet werden.

Arduino API

en: Application Programming Interface
de: Anwendungsprogrammierschnittstelle

Die Funktionalität des Arduino kann durch das Bibliothekssystem erweitert werden. Die Verwendung von Bibliotheken ist speicherintensiv. Durch sorgfältige Auswahl können Sie jedoch die Speichernutzung optimieren und mit Ihrer Anwendung einen erheblichen Programmieraufwand einsparen. Es gibt Standardverzeichnisse wie Wire, AVR_C, String, .., aber sehr viele gut entwickelte Bibliothek kann auch von Github heruntergeladen werden. Bei der Beschreibung der Sensoren linke ich fast immer auf Github-Bibliotheken.

Arduino Bootloader

Ein spezielles Programm, das auf das Arduino Board vorinstalliert und mit der Arduino IDE kompatibel ist und das Hochladen von Programmen auf das Board ohne spezielle Tools ermöglicht; normalerweise über USB.

Sketch

Die Programme, die Sie auf Ihrem Arduino ausführen, heißen sketch (Skizze). Skizzen können in .ino-Dateien gespeichert oder geladen werden. Die Arduino IDE enthält viele (Standard-) Beispielprogramme unter Datei / Beispiele, aber fast alle installierten Bibliotheken enthalten Beispielprogramme (diese können auch in Datei / Beispiele geöffnet werden, nachdem sie installiert wurden, am Ende der Liste gefunden werden kann).

Serial Monitor

Viele Skizzen kommunizieren über eine serielle Verbindung mit dem Computer. Die Arduino IDE verfügt über einen eingebauten seriellen Monitor oder ein Terminal, mit dessen Hilfe Sie diese Daten visualisieren können. Sie können auch Daten vom Monitor an die Board senden. Um den Serial Monitor zu öffnen, gehen Sie zu 'Tools' → 'Serial Monitor'. Normalerweise startet dies das Arduino-Board neu. Stellen Sie sicher, dass die Geschwindigkeit (auch bekannt als Baudrate) auf den richtigen Wert eingestellt ist. Wenn Sie dies nicht tun, werden Sie Müll oder gar nichts sehen. Übliche Baudratenwerte sind 9.600 und 115.200.

Arduino-Karten werden grundsätzlich von Ihrem PC über den USB-Anschluss programmiert (es gibt einige andere Lösungen ..), und während der Ausführung des Programms werden auch "serielle" Informationen an Ihren PC gesendet. Die meisten Karten enthalten einen "klassischen" FTDI oder AtMega16U2 USB-Kommunikations-IC für die Verbindung. Es ist möglich, ob sogenannten "chinesische" CH340..CH341 ICs sind installiert. Für jeden dieser ICs sind unterschiedliche Treiber erforderlich. Seien Sie also vorsichtig, wenn Sie die erste neue Board verwenden, da Ihr PC das Arduino möglicherweise nicht erkennt.

Die meisten Arduino USB-Ports mit einem Überstromschutz (resettable polyfuse) ausgestattet, die bei einem Stromverbrauch von über 500 mA oder einem Kurzschluss automatisch abgeschaltet wird.

Arduino USB UART Converter-Typen:

  • FTDI: Der Konvertertyp der frühen Arduino's erwies sich als zu teuer. Wird weiterhin als externer Konverter verwendet (mit dem ISP verbunden)
  • Atmega8U2: Der erste serie Uno-Konverter bis R2
  • AtMega16U2: Derzeit der UART-Konverter der meisten (offiziellen) Arduino-Boards
  • CH340 / CH340G / CH341: Ein typischer Konverter für in China hergestellte Arduino-Klone. Das Herunterladen von Treibern ist etwas umständlich.

FTDI-Konverter

FTDI (oder CH340G) -Konverter

In vielen Fällen ist ein Download über USB nicht möglich (oder nicht die beste Lösung). Beispielsweise verfügen die Arduino Mini- und Arduino Pro Mini-Serien aus Platzgründen keinen USB-Anschluss, deswegen die Verwendung eines externen Downloaders nötig ist.

Die einfachste Lösung besteht darin, einen FTDI-Konverter zu erwerben, sodass die USB-Verbindung vom PC nur ordnungsgemäß an die Platine angepasst werden muss.

Die meisten digitalen (elektronischen) Geräte, die logisch hohe (HIGH) und niedrige (LOW) Pegel verwenden, werden als (standard) TTL-Logik bezeichnet. TTL-Logik (Transistor-Transistor-Logik) definiert die Spannungspegel für High / Low-Signale. Die logischen Ebenen von Arduino unterscheiden sich geringfügig von den folgenden Ebenen:

Arduino TTL logische Ebenen Vergleich

  • VOH: Mindestausgangsleistung. Darüber hinaus liefert das TTL-Gerät ein HIGH-Signal
  • VIH: Minimaler Eingangsspannungspegel für das HIGH-Signal
  • VIL: Maximaler Eingangsspannungspegel für niedriges (LOW) Signal
  • VOL: Maximale Ausgangsspannung für ein niedriges (LOW) Signal

In abgedeckten Bereichen wird die Eingangsbewertung (HIGH oder LOW) unsicher. Während die Programmlogikpegel TRUE (wahr, 1) und FALSE (falsch, 0) sind, ist der Zustand der Pins durch die Konstanten HIGH (hoch, 1) und LOW (niedrig, 0) gekennzeichnet.

Zwischenspannungspegel (1,5 V - 3,0 V für 5 V-Karten, 1,0 V - 2,0 V für 3,3 V-Karten) sollten bei Digitalsignale vermieden werden, da der Eingangsstatus ungewiss wird.

Bei Ausgängen nimmt der Pin nach Ausgabe des Status HIGH den maximalen Spannungspegel an, dh. 3,3 V für 3,3 V Boards und 5 V für 5 V Boards.

Wenn Sie zuvor den internen Wicklungswiderstand aktiviert haben, ist die Ausgangsspannung geringer (ca. 3,3 V) als 5 V für das HIGH-Signal (siehe digitalWrite ()).

Arduino's (aufgrund ihres einfachen Aufbaus) sind nicht sehr tragfähig und sollten bei allen Steuerungen berücksichtigt werden, die einen höheren Strom erfordern (Magnetventile, Relais, …). Im Fall von schweren das Board einfach stirbt oder weniger Überlastung (oder kurzzeitige Überlast ) aus. Im Falle einer schlecht dimensionierten Relaissteuerung kann der Arduino einfach ein- und ausgeschaltet werden (die Relais "springen" entsprechend) - nun, berücksichtigen Sie in diesem Fall die Platinenlast.

Die Hauptbelastungsgrenzen (die natürlich von Typ variieren):

  • Pinbelastung an UNO (5V): 20 mA
  • Pin Kapazität für Mega Board (5V): 40 mA
  • Pins Beladbarkeit (bei 3,3 V): 10 mA
  • Die maximale Belastbarkeit (UNO) aller Pins (Vcc, GND) beträgt 200 mA
  • Alle Pins (Vcc, GND) haben eine maximale Belastbarkeit (Mega) von 400..800 mA

Nach meiner Erfahrung sind Pins nicht 15 mA wert und die gesamte Platine (UNO) ist über 150 mA, weil sie "stößt".

Verbraucher mit höherer Leistung sollten durch Optos, optisch isolierte Relais, Halbleiterrelais oder Transistoren (Triac, TIP120 usw.) vom Arduino getrennt werden.

Es gibt ein paar "kleine" Tipps und Tricks zur Verwendung von Arduino-Pins, und dies sind die Gründe für viele "ungeklärte" Probleme, falls zutreffend:

  • Pin0 und Pin1 sind mit der seriellen Kommunikation verbunden. Wenn Sie also Informationen von der Board abrufen und mit dem Befehl "Serial.print" Informationen an den seriellen Monitor senden möchten, können diese Pins derzeit nicht als digitale Ausgänge verwendet werden.
  • Analoge Pins können ohne weiteres als digitaler Port verwendet werden, bezeichnen Sie sie einfach als Pin 14..19 für Uno, wie in der folgenden Abbildung gezeigt.
  • Nach meiner Erfahrung lohnt es sich, die Ports anzugeben, die beim Entwerfen belassen werden sollen. Da ich hauptsächlich I²C für die Kommunikation verwende, verwende ich A4 und A5 für Uno für die Kommunikation.

Arduino UNO pins

Der ISP-Port (In-System Programming), der normalerweise in Arduino-Karten (und kompatiblen Karten) integriert ist, bietet die Möglichkeit, die Karte durch Umgehen von USB / Bootloading zu umgehen. Es bietet auch Kommunikationsmöglichkeiten für die SPI-Kommunikation, beispielsweise zwischen Karten. Die möglichen Portzuweisungen sind:

Arduino ISP pins

Außerdem sind diese Zweige parallel zu den entsprechenden Zweigen der IO-Ports (siehe unten), so dass sie hier zum Herunterladen einfach "gruppiert" werden. Es ist auch möglich, eine Arduino-Karte zu verwenden, um andere Arduino-Programme über den ISP hochzuladen.

Arduino ISP-PortNameKurzbeschreibung
MISOMaster In Slave OutMaster-Eingang, Slave Out
VTG5V Spannungsversorgung 5V +
SCKSerial ClockSerial Clock, mit SPI als Master
MOSIMaster Out Slave InMaster-Ausgang, Slave-Eingang
RSTResetReset
GNDGNDGND

Eine der am häufigsten verwendeten Kommunikationen auf Arduino-Karten ist SPI. Die hierfür erforderlichen Bibliotheken und Beispielverbindungen sind in den spezifischen Modulen beschrieben, die in Arduino SPI Communication zusammengefasst sind. Das ISP-Connector-Modul auf Arduino verwendet auch SPI, das relativ einfach zu projizieren ist (leider ist "SS" (select) hier nicht aufgeführt):

SPI

BoardSPI SS
(select)
SPI MOSISPI MISOSPI SCK
Arduino UNO10111213
Arduino Mega53505152
Arduino NanoD10D11D12D13

Beschreibung der Aduino SPI Library: https://www.arduino.cc/en/Reference/SPI

en: interrupt service routine

Die ISR-Funktion (Interrupt Service Routine) überwacht Eingänge mit schnellem Wechselzustand. Diese Interrupts eignen sich in der Regel zum Zählen oder Überwachen schneller Impulse (Hall-Impulse - Durchflussmesser, Stromimpulse), unabhängig vom Programmablaufzyklus.

Auf der Softwareseite müssen diese Signale von der Funktion attachInterrupt () verarbeitet werden, und nur die angegebenen Ports können diese schnellen Signale lesen:

Boardinterrupt pins
Arduino Uno, Arduino Nano, Mini, alle 328-based2, 3
Arduino Mega, Mega2560, MegaADK2, 3, 18, 19, 20, 21
Micro, Leonardo, andere 32u4-based0, 1, 2, 3, 7
Wemos D1 alle Pins (außer D0)

PWM (Pulsweitenmodulation) ist eine Form der Signalisierung, die verwendet werden kann, um analoge Ausgangssignale an einem digitalen Ausgang zu erzeugen, d. H. Eine Digital-Analog-Wandlerfunktion. Die PWM-Ausgänge des Arduino können mit der Funktion analogWrite () gesteuert werden. Die ausgewählten Digitalausgänge - gekennzeichnet mit ~ - haben nur PWM funktionalität.

Board ausgewählte PWM-Ausgänge
Für die meisten ATmega168- oder ATmega328-Boards
Arduino Uno, Arduino Nano*
3, 5, 6, 9, 10, 11 Pins, Pin 5-6: 980 Hz, alle andere: 490 Hz
Arduino Mega2..13. und 44-46. Pins
Wemos D1alle digitalen Ausgänge (außer D0)
Arduino Micro0, 1, 2, 3, 7
ältere BoardsPin 9, 10 und 11

*: Für ATmega168- oder ATmega328-Boards:

  • timer0: Pin 5 und 6, 8-Bit-PWM
  • timer1: Pin 9 und 10, 16-Bit-PWM
  • timer2: Pin 11 und 3, 8-Bit-PWM

Bei Servos, die eine 16-Bit-Auflösung erfordern, möglicheweise funktionieren nur die Pin 9 und 10!

Mit Arduino Micro kann nur 8-Bit-PWM implementiert werden.

Über den AREF-Pin kann die für den Analogeingang verwendete externe Referenzspannung (Typ: EXTERNAL) (dh der Maximalwert des Eingangsbereichs) über die Funktion analogReference () eingestellt werden.

Arduino HW serielle Kommunikation

Die Standardkommunikation zwischen Arduino-Board ist seriell (zb. UART), die über USB an das Programmiergerät oder den Kommunikationspartner-PC übertragen wird. Sowohl die TX- als auch die RX-Pins der Boards sind parallel zum USB-Port angeschlossen. Wenn Sie also serielle Kommunikation verwenden, können Sie diese Pins nicht als digitalen Port verwenden.

Natürlich kann dieser Kanal auch für andere UART-Kommunikationen wie zb. RS-232 verwendet werden, aber in diesem Fall sollten die Spannungspegel, die für RS-232 typisch ± 12 V sind, beachtet werden. Jede Arduino-Board verfügt über mindestens einen seriellen (UART) Port mit Pin-Belegung:

boardpins für serielle Kommunikation
Arduino Uno, NanoRx←0, Tx→1
Arduino Mega, DueSerial1: pin 19 (RX) pin 18 (TX), Serial2: pin 17 (RX) pin 16 (TX), Serial3: pin 15 (RX) pin 14 (TX)

Arduino SW serielle Kommunikation

Die serielle Software-Kommunikation wird durch die Verwendung der Bibliothek "SoftwareSerial" ermöglicht. Während die serielle HW-Kommunikation HW-Komponenten zum UART verwendet und auch andere Aufgaben ausführt (sofern im 64-Byte-Puffer Platz vorhanden ist), geht die seriellen Kommunikationssoftware von der Software aus. Dies geht offensichtlich zu Lasten der Ausführung anderer Software, ermöglicht jedoch mehrere serielle Kommunikationen gleichzeitig mit Geschwindigkeiten von bis zu 1115.200.

Die erforderliche SoftwareSerial.h kann heruntergeladen werden von: http://arduiniana.org/libraries/newsoftserial/

Einschränkungen der seriellen Software-Kommunikation:

  • Wenn mehrere serielle Software-Ports verwendet werden sollen, kann jeweils nur einer Daten empfangen
  • Nicht alle Pins des Mega und Mega 2560 sind für die serielle Software-Kommunikation geeignet. Die folgenden Pins können für RX verwendet werden: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69).
  • Für Leonardo können nur die folgenden Pins für RX verwendet werden: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).
  • Für den Arduino Genuino 101 kann die maximale Geschwindigkeit des RX 57.600 Bit / s betragen, und Pin 13 kann nicht als RX verwendet werden.

Datenverlust während der SW seriellen Kommunikation

Wenn Sie lange Telegrammen über die serielle Software-Kommunikation senden oder empfangen, werden diese möglicherweise mit einigen fehlenden Zeichen geliefert. Der Grund dafür ist nicht unbedingt im Code zu finden. Der SoftwareSerial-Empfangspuffer ist möglicherweise voll und verwirft dann die Zeichen.

Der einfachste Weg, dies zu tun, besteht darin, den seriellen Puffer der Software von den Standard-64 Bytes auf 256 Bytes (oder nur eine Größe größer als 64 Bytes) zu erhöhen:

Öffnen Sie auf Ihrem PC die folgende Datei: C: \ Programme (x86) → Arduino → Hardware → Arduino → avr → Bibliotheken → SoftwareSerial → SoftwareSerial.h und Bearbeiten Sie die folgende Zeile:

// RX buffer size
#define _SS_MAX_RX_BUFF 64 // Ändern Sie beispielsweise 64 auf maximal 256

Gleichzeitige SW serielle Kommunikation

Verwenden Sie für die mehrere gleichzeitige serielle Software-Kommunikation das folgende Verzeichnis: https://www.pjrc.com/teensy/td_libs_AltSoftSerial.html

Eine der am häufigsten verwendeten Kommunikationen auf Arduino-Karten ist I²C. Die Standardports für die Kommunikation auf verschiedenen Boards lauten wie folgt:

Board SDA (Datenport) SCL (Clock Port) Hinweis
Arduino UnoA4A5
Arduino Mega2021
Arduino Nano45
Wemos D1A4 (SDA)A5 (SCL)Alle digitalen Ausgänge
(außer D0) können an I²C angelegt werden
NodeMCU (ESP8266)D2(GPIO4)D1(GPIO5)D0 kann nicht für I²C verwendet werden

Arduino I²C Kommunikationslösungen: Arduino I²C
Arduino I²C scanner finden Sie hier: Arduino I²C Scanner.

Eine der am häufigsten verwendeten Kommunikationen auf Arduino-Karten ist SPI. Die dafür erforderlichen Bibliotheken und Beispielverbindungen sind in den jeweiligen Modulen beschrieben. Eine Zusammenfassung finden Sie hier: Arduino SPI-Kommunikation. Auf Arduinos verwendet das ISP-Anschlussmodul auch SPI, das relativ einfach zu entwerfen ist (leider ist "SS" hier nicht enthalten):

SPI

Die Standardports für die Kommunikation auf den verschiedenen Karten sind wie folgt:

BoardSPI SS
(Auswahl)
SPI MOSISPI MISOSPI SCK
Arduino UNO10111213
Arduino Mega53505152
Arduino NanoD10D11D12D13
NodeMCU (ESP8266)D8(GPIO15)D7(GPIO13)D6(GPIO12)D5(GPIO14)

Eine Zusammenfassung der SPI-Lösungen von Aduino finden Sie hier: Arduino SPI Kommunikation.

Beschreibung der Aduino SPI-Bibliothek: https://www.arduino.cc/en/Reference/SPI

Meg ez is (de bővebb): http://www.gammon.com.au/spi

1-Wire bzw. One-Wire oder Eindraht-Bus beschreibt eine serielle Schnittstelle der Firma Dallas Semiconductor Corp., die mit einer Datenader (DQ) auskommt, die sowohl als Stromversorgung als auch als Sende- und Empfangsleitung genutzt wird. Der Begriff 1-Wire ist irreführend, weil zudem noch eine Masse-Verbindung (GND) erforderlich ist. Diese Masseverbindung wird bei Knopf-förmigen Anordnungen über eine gegenseitige Isolation der Gehäusehälften erreicht. Tatsächlich werden immer zwei physische Leiterverbindungen benutzt (GND, DQ).

Eine Zusammenfassung der 1-wire-Lösungen von Aduino finden Sie hier: Arduino 1-wire Kommunikation.

Das Arduino eignet sich natürlich für die Kommunikation über Ethernet und den Zugriff auf Internetfunktionen. Der einfachste Weg, auf Ethernet zuzugreifen, ist die Verwendung eines Mittelmoduls oder einer Erweiterung. Module und Erweiterungen kommunizieren SPI normalerweise mit Arduino-Boards:

Arduino Uno Ethernet SPI FußordnungArduino Mega Ethernet SPI lFußordnung
Arduino Uno Ethernet SPI FußordnungArduino Mega Ethernet SPI Fußordnung

n den meisten Ethernet-Karten ist auch ein Micro-SD-Kartenleser integriert. Die Verwendung ist optional, nimmt jedoch einen zusätzlichen Stift auf der Platine in Anspruch.

Aktuelle Informationen zur Arduino-Bibliothek finden Sie hier: https://www.arduino.cc/en/reference/ethernet

Die Ethernet-Kommunikation der Module / Erweiterungen erfolgt normalerweise über ICs der WIZnet W5x00-Serie. So vergleichen Sie diese Hauptfunktionen:

FunktionW5100W5300W5500
Interface Modedirekt, indirekt, SPIdirekt, indirektSPI
Anzahl der Sockets448
Geschwindigkeit (max, MBPS)252515
DatenbusOnly 8 Bit, DATA[7:0]16/8 Bit, DATA[15:8]/DATA[7:0]16/8 Bit
Adressbus15 PINs, ADDR[14:0]10PINs, ADDR[9:0]10PINs, ADDR[9:0]
Speichergröße(Fix) 16KBytes
TX : 8KBytes, RX : 8Kbytes
(konfigurierbar) 128KBytes
TX : 0~128KBytes, RX : 0~128KBytes
(Fix) 32KBytes
TX : 16KBytes, RX : 16Kbytes