Inhaltsverzeichnis:
- Schritt 1: Erste Schritte mit I2C - Die großartige Welt der Inter-IC-Kommunikation
- Schritt 2: Überblick über I2C
- Schritt 3: So konfigurieren Sie I²C-Sensoren
- Schritt 4: Beginnen Sie mit Bewegung - Beschleunigungsmesser
- Schritt 5: Schnittstelle mit Controller
- Schritt 6: Verbindungen
- Schritt 7: Code
- Schritt 8: Bringen Sie Ihr I2C-Gerät zum Laufen
Video: Erste Schritte mit der I2C-Sensorschnittstelle? - Schnittstelle zu Ihrem MMA8451 mit ESP32s - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:16
In diesem Tutorial erfahren Sie alles darüber, wie Sie ein I2C-Gerät (Beschleunigungsmesser) starten, verbinden und mit dem Controller (Arduino, ESP32, ESP8266, ESP12 NodeMCU) arbeiten.
Schritt 1: Erste Schritte mit I2C - Die großartige Welt der Inter-IC-Kommunikation
Die Arduino-, ESP-Serie, PIC, Rasberry PI usw. sind alle unglaublich. Aber was macht man damit, wenn man einen hat?
Das Beste ist, Sensoren und dergleichen hinzuzufügen. Heutzutage verwendet ein Großteil der heißen neuen Technologie das I2C-Protokoll, damit Computer, Telefone, Tablets oder Mikrocontroller mit den Sensoren kommunizieren können. Smartphones wären weniger intelligent, wenn sie nicht mit diesem Beschleunigungssensor kommunizieren könnten, um zu wissen, in welche Richtung Ihr Telefon zeigt.
Schritt 2: Überblick über I2C
I2C ist ein serielles, synchrones Halbduplex-Kommunikationsprotokoll, das die Koexistenz mehrerer Master und Slaves auf demselben Bus ermöglicht. Der I2C-Bus besteht aus zwei Leitungen: Serial Data Line (SDA) und Serial Clock (SCL). Beide Leitungen benötigen Pull-Up-Widerstände.
SDA (Serial Data) – Die Leitung für Master und Slave zum Senden und Empfangen von Daten. SCL (Serial Clock) – Die Leitung, die das Taktsignal trägt. Mit Vorteilen wie Einfachheit und geringen Herstellungskosten wird I2C hauptsächlich für die Kommunikation von Peripheriegeräten mit niedriger Geschwindigkeit über kurze Distanzen (innerhalb eines Fußes) verwendet.
Möchten Sie mehr über I2C erfahren?……
Schritt 3: So konfigurieren Sie I²C-Sensoren
Bevor Sie mit dem Projekt beginnen, müssen Sie einige Grundlagen Ihres Sensors verstehen. Also schenk dir eine Tasse Kaffee ein, bevor du eintauchst:)? …
Die große Stärke von I2C besteht darin, dass Sie so viele Sensoren an die gleichen vier Drähte anschließen können. Bei Geräten mit mehreren angeschlossenen vorgefertigten Modulen müssen Sie jedoch möglicherweise ein paar SMD-Widerstände aus den Breakouts entfernen, da sonst der Pullup auf dem Bus zu aggressiv wird.
Welche Informationen wollen wir vom Datenblatt?
- Sensorfunktionalität
- Pinbelegung und Pin-Funktionalität
- Schnittstellenbeschreibung (Verpassen Sie nicht die „I2c-Adressauswahltabelle“)
- Registriert!!
Alles ist in Ordnung, Sie werden es leicht finden, aber Register? REGISTERS sind einfach Speicherorte innerhalb eines I²C-Geräts. Die Zusammenfassung, wie viele Register sich in einem bestimmten Sensor befinden und was sie steuern oder enthalten, wird als Registerzuordnung bezeichnet. Bei den meisten Informationen im Datenblatt des Sensors geht es darum, die Funktionsweise der einzelnen Register zu erklären, und es kann ziemlich mühsam sein, sie durchzulesen, da die Informationen selten direkt präsentiert werden.
Um Ihnen ein Gefühl dafür zu geben, was ich damit meine: Es gibt viele Arten von Registern, aber für diese Einführung werde ich sie in zwei allgemeine Typen einteilen: Steuer- und Datenregister.
1) Kontrollregister
Die meisten Sensoren ändern ihre Funktionsweise basierend auf den in den Steuerregistern gespeicherten Werten. Stellen Sie sich Steuerregister als Bänke von Ein/Aus-Schaltern vor, die Sie einschalten, indem Sie ein Bit auf 1 setzen, und ausschalten, indem Sie dieses Bit auf 0 setzen. I²C-Chip-basierte Sensoren haben oft ein Dutzend oder mehr Betriebseinstellungen für Dinge wie Bit- Modi, Interrupts, Lese-/Schreibsteuerung, Tiefe, Abtastgeschwindigkeit, Rauschunterdrückung usw., sodass Sie normalerweise Bits in mehreren verschiedenen Steuerregistern setzen müssen, bevor Sie tatsächlich lesen können.
2) Datenregister Im Gegensatz zu einer Bank von Schaltern für Steuerregister stelle ich mir Datenausgaberegister als Container vor, die Zahlen enthalten, die zufällig in binärer Form gespeichert sind. Wenn Sie also Daten wissen möchten, lesen Sie immer Datenregister wie Wer bin ich registriere zur Geräteidentifikation, Statusregister usw.
Die Initialisierung eines I²C-Sensors ist also ein mehrstufiger Prozess und die richtige Reihenfolge der Operationen wird oft in umgekehrter Richtung erklärt, anstatt einfach im Datenblatt. Liste, die niemals sagt „Um einen Messwert von diesem Sensor zu erhalten, tun Sie (1), (2), (3), (4) usw.“, aber Sie finden Beschreibungen der Steuerregisterbits, die sagen „bevor Sie Bit x in dieser setzen“Register müssen Sie in diesem anderen Steuerregister das Bit y setzen“.
Trotzdem finde ich immer, dass ein Datenblatt interaktiver ist als der meiste Text. wenn Sie es für ein bestimmtes Stück oder bestimmte Informationen referenzieren und es Ihnen alle Details, Verbindungen und Referenzen gibt. Setzen Sie sich einfach hin und lesen Sie, um alle Ihre Referenzen herauszubekommen.:)
Schritt 4: Beginnen Sie mit Bewegung - Beschleunigungsmesser
Moderne Beschleunigungsmesser sind mikroelektromechanische Systeme (MEMS), was bedeutet, dass sie auf einem kleinen Chip im kleinsten Gerät Platz finden. Eine Methode zur Messung der Beschleunigung, die von MEMS-Beschleunigungsmessern verwendet wird, besteht darin, eine winzige leitende Masse zu verwenden, die an Federn aufgehängt ist. Die Beschleunigung des Geräts bewirkt, dass sich die Federn dehnen oder zusammenziehen, und die Auslenkung der leitfähigen Masse kann durch eine Kapazitätsänderung zu nahegelegenen, festen Platten gemessen werden.
Beschleunigungsmesser werden durch die folgenden Merkmale spezifiziert:
- Die Anzahl der Achsen, von einer bis drei Achsen, die in den Spezifikationsdiagrammen mit X, Y und Z bezeichnet sind. Beachten Sie, dass einige Beschleunigungsmesser als 6-Achsen oder 9-Achsen bezeichnet werden, aber das bedeutet nur, dass sie mit anderen MEMS-Geräten wie Gyroskopen und/oder Magnetometern gebündelt sind. Jedes dieser Geräte hat auch drei Achsen, weshalb es 3, 6 oder 9-Achsen Inertial Measurement Units (IMUs) gibt.
- Die Art der Ausgabe, entweder analog oder digital. Ein digitaler Beschleunigungsmesser übernimmt die Formatierung der Beschleunigungsdaten in eine digitale Darstellung, die über I2C oder SPI ausgelesen werden kann.
- Der Beschleunigungsbereich wird in g gemessen, wobei 1 g die Beschleunigung aufgrund der Erdanziehung ist.
- Coprozessoren, die einige der Berechnungen auslagern können, die zum Analysieren der Rohdaten von der MCU erforderlich sind. Die meisten Beschleunigungsmesser verfügen über eine einfache Unterbrechungsfunktion, um einen Beschleunigungsschwellenwert (Schock) und einen 0-g-Zustand (freier Fall) zu erkennen. Andere können die Rohdaten weiterverarbeiten, um der MCU aussagekräftigere Daten bereitzustellen.
Schritt 5: Schnittstelle mit Controller
Da wir ESP-Mikrocontroller im Trend kennen, verwenden wir ESP32 für unser Beispiel. Sie benötigen also zunächst ein Nodemcu-32s.
Keine Sorge, wenn Sie andere ESP-Boards oder sogar Arduino haben !!! Sie müssen nur Ihre Arduino-IDE und Konfiguration gemäß Ihren Entwicklungsboards einrichten, für Arduino, ESP NodeMCU, ESP32s usw. Sie benötigen auch eine Art I2C-Teile, normalerweise auf einem Breakout-Board. In diesem Tutorial werde ich MMA8451 verwenden digitale Beschleunigungsmesser-Breakout-Platine.
Und ein paar Überbrückungsdrähte….
Schritt 6: Verbindungen
Und hier ist ein Layout.
Ich habe die folgende Verbindung vom obigen Modul zu meinem Nodemcu-32s-Modul verwendet.
ESP32s -- Modul
3v3 -- Vin
Gnd -- Gnd
SDA 21 -- SDA
SCL 22 -- SCL
"Denken Sie daran, dass meistens nicht alle Entwicklungsboards (meistens in ESPs) eine gute klare Pinbelegung haben, um zu bestimmen, welche Pins verwendet werden!!"
Schritt 7: Code
Dies erfordert die Adafruit-Bibliothek
von
Downloaden, entpacken und Sie finden den Beispielordner, im Ordner einfach MMA8451demo in Ihrer Arduino IDE öffnen und los gehts….
Sie sehen folgenden Code für Ihre MMA8451-Sensorschnittstelle mit Ihrem Controller
#enthalten
#include #include Adafruit_MMA8451 mma = Adafruit_MMA8451(); Void setup (void) {Serial.begin (9600); Draht. Begin(4, 5); /* i2c-Bus mit SDA=D1 und SCL=D2 von NodeMCU verbinden */ Serial.println("Adafruit MMA8451 test!"); if (! mma.begin ()) { Serial.println ("Konnte nicht starten"); während (1); } Serial.println ("MMA8451 gefunden!"); mma.setRange(MMA8451_RANGE_2_G); Serial.print ("Bereich = "); Serial.print (2 << mma.getRange()); Serial.println("G"); aufrechtzuerhalten. Void Schleife () { // Lesen Sie die 'rohen' Daten in 14-Bit-Zählungen mma.read (); Serial.print("X:\t"); Serial.print (mma.x); Serial.print("\tY:\t"); Serial.print (mma.y); Serial.print("\tZ:\t"); Serial.print (mma.z); Serial.println(); /* Holen Sie sich ein neues Sensorereignis */ sensor_event_t event; mma.getEvent(&event); /* Ergebnis anzeigen (Beschleunigung wird in m/s^2 gemessen) */ Serial.print("X: \t"); Serial.print (event.acceleration.x); Serial.print("\t"); Serial.print("Y:\t"); Serial.print (event.acceleration.y); Serial.print("\t"); Serial.print("Z:\t"); Serial.print (event.acceleration.z); Serial.print("\t"); Serial.println("m/s^2"); /* Ermittelt die Ausrichtung des Sensors */ uint8_t o = mma.getOrientation(); Schalter (o) { Fall MMA8451_PL_PUF: Serial.println ("Portrait Up Front"); brechen; Fall MMA8451_PL_PUB: Serial.println ("Portrait Up Back"); brechen; Fall MMA8451_PL_PDF: Serial.println ("Portrait Down Front"); brechen; Fall MMA8451_PL_PDB: Serial.println ("Portrait Down Back"); brechen; Fall MMA8451_PL_LRF: Serial.println ("Querformat vorne rechts"); brechen; Fall MMA8451_PL_LRB: Serial.println ("Querformat rechts hinten"); brechen; Fall MMA8451_PL_LLF: Serial.println ("Querformat links vorne"); brechen; Fall MMA8451_PL_LLB: Serial.println ("Querformat links hinten"); brechen; } Serial.println(); Verzögerung (1000); }
Speichern, überprüfen und hochladen……
Öffnen Sie den seriellen Monitor und Sie werden so etwas sehen, ich habe den Sensor bewegt, daher die verschiedenen Messwerte
X: -2166 Y: 1872 Z: 2186
X: -2166 Y: 1872 Z: 2186X: -4,92 Y: 5,99 Z: 4,87 m/s^2
Querformat vorne links
X: -224 Y: -2020 Z: 3188
X: -5,10 Y: -3,19 Z: 7,00 m/s^2
Hochformat vorne
Nun, wenn alles so gelaufen ist, wie es sollte, dann haben Sie jetzt die Grundlagen von I2C und wie Sie Ihr Gerät anschließen.
Aber Gerät funktioniert nicht??
Gehen Sie einfach mit dem nächsten Schritt……
Schritt 8: Bringen Sie Ihr I2C-Gerät zum Laufen
Grundlegende Schritte, um I2C-Geräte zum Laufen zu bringen
Lassen Sie uns untersuchen ….
- Verkabelung ist korrekt.. (überprüfe es noch einmal)
- Programm ist korrekt..(Ja, es ist ein Testbeispiel..)
Beginnen Sie mit Stufen zu lösen…..
Stufe 1: Führen Sie das I2C-Gerätescannerprogramm aus, um die Geräteadresse zu überprüfen, und zuerst ist Ihr I2C-Gerät in Ordnung
Sie können eine Skizze herunterladen und die Ausgabe überprüfen.
Ergebnis - Gerät funktioniert und Sensoradresse ist richtig
I2C-Scanner. Scannen …
Adresse gefunden: 28 (0x1C) Fertig. 1 Gerät(e) gefunden.
Stufe 2: Sensorbibliothek prüfen
Öffnen Sie die Datei Adafruit_MMA8451.h und suchen Sie die Geräteadresse
Ergebnis - Adresse unterscheidet sich von meinem Gerät??
/*=============================================== ========================= I2C-ADRESSE/BITS --------------------- -------------------------------------------------- */ #define MMA8451_DEFAULT_ADDRESS (0x1D) //!< Standard MMA8451 I2C-Adresse, wenn A GND ist, seine 0x1C /*======================= ================================================ */
Do - Datei vom Notepad bearbeiten (Adresse ändern) + Speichern + IDE neu starten
Es funktioniert. Sie können Ihre Messwerte abrufen.
Noch nicht…..???
Stufe 3: Überprüfen Sie, ob Wire.begin überschrieben ist?
Öffnen Sie die Datei Adafruit_MMA8451.c und suchen Sie Wire.begin.
Ergebnis - Diese Anweisung wird überschrieben
/************************************************ ************************ //*! @brief Richtet die HW ein (liest Koeffizientenwerte usw.) */ /************************************ ****************************************/ bool Adafruit_MMA8451::begin(uint8_t i2caddr) { Draht.begin(); _i2caddr = i2caddr;
Do - Datei vom Notepad bearbeiten (Kommentaranweisung) + Speichern + IDE neu starten
Und schließlich Gerät funktioniert …
Ich überfrachte dieses Tutorial fast, weil sein Hauptziel darin bestand, zu erklären, wie man startet, Daten aus dem Datenblatt erhält, eine Verbindung herstellt und das I2C-Gerät mit einem sehr einfachen Beispiel zum Laufen bringt. Hoffe, dass alles so läuft, wie es sollte, und es wird nützlich sein, Ihren Sensor zu starten.
Empfohlen:
Erste Schritte mit Amara: 7 Schritte
Erste Schritte mit Amara: Amara ist ein kostenloser Untertitel-Editor, mit dem Sie ganz einfach Untertitel zu Videos hinzufügen können – vom Unterricht bis zum persönlichen Gebrauch. Diese Anweisungen helfen Ihnen, ein Amara-Konto einzurichten, damit Sie schnell und einfach Untertitel hinzufügen können
Erste Schritte mit der Heimautomatisierung: Home Assistant installieren: 3 Schritte
Erste Schritte mit der Hausautomation: Home Assistant installieren: Wir starten jetzt die Hausautomationsserie, in der wir ein Smart Home erstellen, das es uns ermöglicht, Dinge wie Licht, Lautsprecher, Sensoren usw. über einen zentralen Hub zusammen mit einem Sprachassistent. In diesem Beitrag erfahren Sie, wie Sie in
Erste Schritte mit dem SkiiiD-Editor: 11 Schritte
Erste Schritte mit dem SkiiiD-Editor: skiiiD-Editor, Entwicklungsboard-Firmware IDEskiiiD-Editor basiert auf skiiiD (Firmware Development Engine). Jetzt ist es mit Arduino UNO, MEGA und NANO mit 70+ Komponenten kompatibel.BetriebssystemmacOS / WindowsInstallierenBesuchen Sie die Website https:
Erste Schritte mit Python: 7 Schritte (mit Bildern)
Erste Schritte mit Python: Programmieren ist großartig! Es ist kreativ, macht Spaß und gibt Ihrem Gehirn ein mentales Training. Viele von uns wollen etwas über Programmieren lernen, aber überzeugen sich selbst davon, dass wir es nicht können. Vielleicht hat es zu viel Mathematik, vielleicht der Jargon, der erschreckend herumgeworfen wird
Raspbian in Raspberry Pi 3 B ohne HDMI installieren - Erste Schritte mit Raspberry Pi 3B - Einrichten Ihres Raspberry Pi 3: 6 Schritte
Raspbian in Raspberry Pi 3 B ohne HDMI installieren | Erste Schritte mit Raspberry Pi 3B | Einrichten Ihres Raspberry Pi 3: Wie einige von Ihnen wissen, sind Raspberry Pi-Computer ziemlich großartig und Sie können den gesamten Computer nur auf einer einzigen winzigen Platine bekommen. Das Raspberry Pi 3 Model B verfügt über einen Quad-Core 64-Bit ARM Cortex A53 mit 1,2 GHz getaktet. Damit ist der Pi 3 ungefähr 50