Logo
Lisa Schneider
2 Tage vor
Wenige Leitungen klingen verlockend. Doch bei jedem neuen Sensor steigen Leitungsbedarf oder Störanfälligkeit.

Zwei Busse bestimmen den Alltag am Mikrocontroller: SPI und I2C. Sie verbinden Sensoren, Displays und Speicherkarten mit dem Controller, also dem steuernden Chip.

Zuerst zählt man die Anschlüsse. SPI (Serial Peripheral Interface) nutzt eine Taktleitung, je eine Datenleitung pro Richtung (MOSI, MISO) und eine Chip-Select-Leitung je Gerät. I2C (Inter-Integrated Circuit) kommt für alle Geräte mit zwei Leitungen aus: SDA für Daten, SCL für Takt. Dazu kommt die Masse (GND), der gemeinsame Bezugspunkt aller Spannungen.

Dann geht es um die Auswahl. Bei SPI zieht die Chip-Select-Leitung genau das Gerät auf den Bus, mit dem gerade gesprochen wird. Jedes weitere SPI-Gerät kostet also einen zusätzlichen Anschlusspin am Controller.

Danach betrachtet man das Tempo. SPI ist schneller, weil mehrere Datenleitungen und ein fester Takt ohne Adressoverhead genutzt werden. Typische Einsatzfälle sind Displays und Speicherkarten, wo viele Daten fließen.

Zuletzt wählt man nach Gerätezahl und Datenmenge. I2C eignet sich für viele kleine Sensoren mit wenigen Daten pro Messung; jedes hat eine Adresse, die der Controller gezielt aufruft. Wird die Leitung länger oder die Zahl der Geräte groß, kann der Bus störanfällig werden. Beim Anschluss gilt: 5-V-Teilnehmer dürfen nicht direkt an 3,3-V-Eingängen hängen, wie beim ESP32 mit seiner 3,3-V-Logik.

Viele kleine Sensoren mit wenigen Daten gehören an I2C; viele Daten oder ein Display sprechen für SPI. Nicht besser oder schlechter, sondern mehr Leitungen für mehr Tempo.

📌 Leitungsbedarf · Adressierung · Tempo

📚 IoT von Grund auf · Tag 4 von 30
#I2C #esp32 #embedded
Lisa Schneider
2 Tage vor
Die meisten Anfänger verdrahten jeden Sensor einzelt mit dem Mikrocontroller. Dabei reichen beim I2C zwei Leitungen für viele Bausteine.

I2C ist ein serieller Bus (eine gemeinsame Datenverbindung mehrerer Bausteine) mit nur zwei Leitungen: SDA trägt die Daten, SCL den Takt, an dem der Empfänger die Bits erkennt. Wer versteht, wie sich viele Geräte diese zwei Adern teilen, spart Pins und erkennt Störungen sofort.

🔋 Eine Baugruppe zieht den Bus nur nach unten, nie nach oben.
SDA und SCL sind Open-Drain-Leitungen: Ein Baustein kann seinen Ausgang nur gegen Masse schalten. Zieht keiner aktiv auf Low, laden die Pull-up-Widerstände beide Leitungen auf High. Deshalb liegt der Bus im Leerlauf ruhig auf High.

📡 Jedes Gerät hört mit, aber nur eines antwortet.
Der Master, also die steuernde Instanz wie ein ESP32, startet jede Übertragung mit der Slave-Adresse des gewünschten Bausteins. Alle am Bus hören mit, doch nur der Angesprochene reagiert. Mit 7-Bit-Adressen stehen 128 Werte bereit; 16 sind reserviert, also bleiben 112 nutzbare Adressen je Bus.

🔧 Fehlen die Pull-ups, bleibt der Bus stumm.
Ein verbreiteter Startwert ist 4,7 kΩ bei 3,3 V und 100 kHz. Achtung: Viele Breakout-Module bringen eigene Widerstände mit. Mehrere parallel senken den Gesamtwiderstand und können für die Treiber zu klein werden. Am ESP32 liegen die Standardpins auf GPIO21 (SDA) und GPIO22 (SCL). Ein Kollisionsfall bleibt: Zwei Bausteine mit gleicher Adresse, etwa zwei BME280 auf 0x76, stören sich. Abhilfe: ein Adresspin am Baustein, ein I2C-Multiplexer (Umschalter auf mehrere Busse) oder ein zweiter I2C-Controller.

I2C heißt nicht ein Drahtpaar je Sensor, sondern ein geteilter Bus mit Adressen und Pull-ups. Wer die Adresse kennt, findet sein Gerät.

📌 SDA und SCL · Pull-ups · 7-Bit-Adresse

📚 IoT von Grund auf · Tag 3 von 30
#I2C #esp32 #Mikrocontroller
Lisa Schneider
3 Tage vor
Viele halten UART für ein Kabel mit einem Draht. Dabei braucht die einfachste serielle Verbindung zwei Pins und eine Masseleitung.

Viele Einsteiger denken, eine Datenleitung reiche: Ein Gerät sendet, das andere hört zu, wie bei einem Lautsprecher. Plausibel klingt das, weil USB und viele Kabel im Alltag ja auch nur „ein Kabel“ sind. Man verbindet TX mit TX und wundert sich, dass nichts ankommt.

Tatsächlich arbeitet UART, kurz für Universal Asynchronous Receiver Transmitter, mit zwei Leitungen: TX (Sende-Pin) und RX (Empfangs-Pin). Die werden über Kreuz verbunden, also TX des einen Geräts an RX des anderen. Dazu gehört GND, die gemeinsame Masse als Bezugspunkt aller Spannungen. Der UART-Baustein zerlegt Bytes in eine Kette von High- und Low-Pegeln und setzt sie auf der anderen Seite wieder zusammen.

Der Irrtum entsteht, weil I2C wirklich mit zwei Leitungen für alle Geräte auskommt und SPI sogar eine Taktleitung nutzt. UART hat keinen gemeinsamen Takt, dafür aber zwei Richtungen.

Wichtigste Regel: beide Seiten müssen dieselbe Baudrate, also Bits pro Sekunde, verwenden – etwa 115200. Der Empfänger erkennt den Anfang eines Zeichens am Startbit und tastet die Pegel dann im Takt dieser Rate ab. Bei Serial.println() in der Arduino-Firmware muss der serielle Monitor auf denselben Wert eingestellt sein.

Woran man es erkennt: Im seriellen Monitor erscheint statt lesbarem Text wirrer Datenschrott mit seltsamen Zeichen. Dann Baudrate in der Firmware und im Monitor abgleichen.

UART heißt nicht „ein Draht für alles“, sondern zwei gekreuzte Leitungen plus Masse bei gleicher Baudrate.

📌 TX an RX · Baudrate 115200 · gemeinsame Masse

📚 IoT von Grund auf · Tag 3 von 30
#embedded #Mikrocontroller #iot
Lisa Schneider
3 Tage vor
Der DHT22 und der BME280 stehen in fast jedem Einsteigerkit fürs IoT. Dabei messen sie nicht dasselbe – und nicht gleich genau.

Beide heißen umgangssprachlich „Klimasensor“, weil sie Temperatur und relative Luftfeuchte liefern. Relative Luftfeuchte (rF) vergleicht den Wasserdampf in der Luft mit der maximal möglichen Menge bei derselben Temperatur; warme Luft nimmt mehr auf als kalte.

Der DHT22 (auch AM2302 genannt) ist ein günstiges Kombibauteil für Temperatur und Feuchte. Er schickt seine Werte über eine einzige Datenleitung an den Mikrocontroller und darf höchstens alle 2 Sekunden einen Wert liefern. Laut Spezifikation erreicht er etwa 0,5 °C und 2 bis 5 % rF; ein ESP32 liest ihn per Bibliothek aus und erhält zwei Werte pro Messung.

Der BME280 von Bosch misst zusätzlich den Luftdruck, also das Gewicht der Luftsäule über dem Sensor. Er hängt an einem Bus wie I2C, bei dem mehrere Geräte zwei gemeinsame Leitungen teilen und über Adressen (0x76 oder 0x77) unterschieden werden. Seine Genauigkeit liegt bei etwa 1 °C, 3 % rF und 1 hPa.

Der BME280 liefert drei physikalische Größen und spricht flexible Busse. Der DHT22 liefert zwei Größen über seine eine Datenleitung und ist träger, dafür einfacher anzubinden.

Zwei Sensoren im selben Raum zeigen oft verschiedene Werte, weil jeder nur die Luft an seinem Gehäuse misst; Zugluft, Heizung oder Außenwand verfälschen zusätzlich. Spannungsregler, Funkmodul und Prozessor erwärmen die Platine; ein Temperatursensor gehört deshalb mit Abstand an einen kühleren Ort oder auf ein eigenes Modul.

Faustregel: Für Feuchte und Druck ist der BME280 erste Wahl; wer nur Temperatur und Feuchte nebenbei braucht, nimmt den DHT22.

Die Nachkommastellen der Anzeige sind keine Genauigkeit, sondern Auflösung – wie fein der Sensor zählt, nicht wie exakt er misst.

📌 DHT22 · BME280 · Luftfeuchte

📚 IoT von Grund auf · Tag 3 von 30
#iot #sensorik #embedded
Lisa Schneider
4 Tage vor
3,3 Volt oder 5 Volt – viele glauben, das entscheidet der Chip. Dabei entscheidet allein die Richtung, in die das Signal fließt.

Viele Einsteiger denken, ein 3,3-V-Chip und ein 5-V-Chip passen nie zusammen. Sie suchen dann vorsorglich für jede Verbindung einen Pegelwandler. Das klingt plausibel, weil die Spannungen tatsächlich unterschiedlich sind.

Tatsächlich gibt es zwei Richtungen mit zwei verschiedenen Antworten. Ein Logikpegel ist die Spannung, mit der ein Pin High (logisch eins) oder Low (logisch null) anzeigt. Umgekehrt ist es gefährlich: Ein 5-V-Ausgang auf einen 3,3-V-Eingang übersteigt dessen Grenze.

Der Irrtum entsteht, weil Chips nach Spannung kategorisiert werden, Signale aber nach Richtung. Genaues Hinsehen ins Datenblatt ersetzt jede Faustregel.

Ein Beispiel: Der ESP32 arbeitet mit 3,3 V, seine Eingänge vertragen laut Datenblatt maximal 3,6 V – er ist nicht 5-V-tolerant. Der ATmega328P im Arduino Uno arbeitet mit 5 V und erkennt ein High ab etwa 3 V. Ein ESP32-Pin darf also einen Uno-Eingang treiben. Vom Uno-Ausgang zum ESP32 gehört ein Spannungsteiler (zwei Widerstände, nur für langsame Signale) oder ein aktiver Pegelwandler dazwischen. Für schnelle und bidirektionale Leitungen wie I2C gehört ein aktiver Pegelwandler dazwischen, klassisch je Leitung ein BSS138 mit Pull-ups auf beiden Seiten.

Woran man es erkennt: Im Datenblatt des Empfängers stehen die Grenzen für High und für die maximale Eingangsspannung. Übersteigt die Ausgangsspannung des Senders die Eingangsgrenze, gehört ein Wandler dazwischen.

Pegelwandlung heißt nicht, Chips mit gleicher Spannung zu verbinden, sondern die Signalgrenzen beider Datenblätter in der richtigen Richtung zu prüfen. Und vorher immer die gemeinsame Masse verbinden.

📌 Logikpegel · Signalrichtung · Datenblatt-Grenzen

📚 IoT von Grund auf · Tag 2 von 30
#esp32 #Arduino #Mikrocontroller

Nichts gefunden!

Entschuldigung, aber für Ihre Suchanfrage {{search_query}} konnten wir in unserer Datenbank nichts finden. Bitte versuchen Sie es erneut, indem Sie andere Suchbegriffe eingeben.