Sadržaj:
- Korak 1: Kako započeti s I2C - veličanstvenim svijetom komunikacije između IC mreže
- Korak 2: Pregled I2C -a
- Korak 3: Kako konfigurirati I²C senzore
- Korak 4: Počnite s kretanjem - mjerač ubrzanja
- Korak 5: Sučelje s kontrolerom
- Korak 6: Veze
- Korak 7: Kodirajte
- Korak 8: Uključite svoj I2C uređaj u rad
Video: Početak rada sa sučeljem senzora I2C ?? - Povežite svoj MMA8451 pomoću ESP32: 8 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:32
U ovom ćete vodiču naučiti sve o tome kako pokrenuti, povezati i nabaviti I2C uređaj (akcelerometar) koji radi s kontrolerom (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Korak 1: Kako započeti s I2C - veličanstvenim svijetom komunikacije između IC mreže
Arduino, ESP serija, PIC, Rasberry PI itd. Su nevjerojatni. Ali što učiniti s njim kad ga imate?
Najbolje je dodati senzore i slično. Danas mnoge vruće nove tehnologije koriste I2C protokol kako bi omogućile računalu, telefonima, tabletima ili mikrokontrolerima da govore o senzorima. Pametni telefoni bili bi manje pametni da ne mogu razgovarati s tim senzorom akcelerometra kako bi znali na koju stranu je vaš telefon.
Korak 2: Pregled I2C -a
I2C je serijski, sinkronizirani, poludupleksni komunikacijski protokol koji omogućuje koegzistenciju više master i slave uređaja na istoj sabirnici. Sabirnica I2C sastoji se od dvije linije: serijske podatkovne linije (SDA) i serijskog takta (SCL). Obje linije zahtijevaju pull-up otpornike.
SDA (serijski podaci) - linija za master i slave za slanje i primanje podataka. SCL (Serijski sat) - Linija koja nosi signal sata. Uz prednosti kao što su jednostavnost i niski troškovi proizvodnje, I2C se uglavnom koristi za komunikaciju perifernih uređaja male brzine na kratkim udaljenostima (unutar jedne noge).
Želite li saznati više o I2C? ……
Korak 3: Kako konfigurirati I²C senzore
Prije nego što krenete u projekt, morate razumjeti nekoliko osnova vašeg senzora. Pa si natočite šalicu kave prije nego što zaronite:)? …
Velika snaga I2C -a je u tome što možete staviti toliko senzora na iste četiri žice. No, za jedinice s nekoliko unaprijed izrađenih modula spojenih, možda ćete morati ukloniti nekoliko smd otpornika iz prekida, inače bi povlačenje na sabirnici moglo postati previše agresivno.
Koje podatke želimo od podatkovne tablice ??
- Funkcionalnost senzora
- Pinouts i pin funkcije
- Opis sučelja (ne propustite pogledati "Tablu za odabir adrese I2c")
- Registri !!
Sve je u redu lako ćete to pronaći ali Registri ?? REGISTRI su jednostavno memorijske lokacije unutar I²C uređaja. Sažetak broja registara u datom senzoru i onoga što kontroliraju ili sadrže naziva se mapa registra. Većina podataka u podatkovnom listu senzora govori o objašnjavanju kako svaki registar funkcionira, a oni mogu biti prilično pametan za čitanje jer se informacije rijetko prezentiraju na izravan način.
Da bih vam dao dojam o tome što želim reći: postoji mnogo vrsta registara, ali za ovaj uvod ću ih grupirati u dvije opće vrste: kontrolne i podatkovne registre.
1) Kontrolni registri
Većina senzora mijenja način rada na temelju vrijednosti pohranjenih u kontrolnim registrima. Zamislite upravljačke registre kao sklopove prekidača za uključivanje/isključivanje, koje uključujete postavljanjem bita na 1 i isključujete postavljanjem tog bita na 0. Senzori temeljeni na čipu I²C često imaju desetak ili više operativnih postavki za stvari poput Načini rada, prekidi, kontrola čitanja i pisanja, dubina, brzina uzorkovanja, smanjenje šuma itd., Tako da obično morate postaviti bitove u nekoliko različitih kontrolnih registara prije nego što zaista možete očitati.
2) Podatkovni registri Za razliku od kontrolnih registara sklopki, mislim da su izlazni registri podataka spremnici s brojevima koji su slučajno pohranjeni u binarnom obliku. Dakle, želite znati Podatke, uvijek čitajte registre podataka kao što sam tko sam registriran za identifikaciju uređaja, registar statusa itd.
Dakle, inicijalizacija I²C senzora je proces u više koraka, a ispravan redoslijed operacija često se objašnjava pisanim putem u obrnutom smjeru, umjesto jednostavno u podatkovnoj tablici. popis nikada ne kaže "Da biste dobili očitanje s ovog senzora, učinite (1), (2), (3), (4) itd.", ali ćete pronaći opise bitova upravljačkog registra koji govore "prije nego postavite bit x u ovo registar morate postaviti bit y u ovaj drugi upravljački registar”.
Ipak, uvijek smatram da je podatkovni list interaktivniji od većine teksta. ako ćete ga referencirati za određeni dio ili dijelove podataka i dati će vam sve pojedinosti, veze i reference. Samo sjednite i čitajte kako biste dobili sve svoje reference.:)
Korak 4: Počnite s kretanjem - mjerač ubrzanja
Suvremeni mjerači ubrzanja su uređaji za mikro elektromehaničke sustave (MEMS), što znači da se mogu uklopiti u mali čip unutar najmanjih naprava. Jedna metoda za mjerenje ubrzanja koja koriste MEMS akcelerometri je korištenje male vodljive mase suspendirane na oprugama. Ubrzanje uređaja uzrokuje rastezanje ili skupljanje opruga, a otklon vodljive mase može se mjeriti promjenom kapaciteta na obližnje, fiksne ploče.
Akcelerometri su specificirani sljedećim značajkama:
- Broj osi, od jedne do tri osi, označene X, Y i Z u dijagramima specifikacija. Imajte na umu da se neki mjerači ubrzanja nazivaju 6-osni ili 9-osni, ali to samo znači da su povezani s drugim MEMS uređajima, poput žiroskopa i/ili magnetometara. Svaki od tih uređaja također ima tri osi, zbog čega postoje 3, 6 ili 9-osne inercijske mjerne jedinice (IMU).
- Vrsta izlaza, analogni ili digitalni. Digitalni mjerač ubrzanja brine se o oblikovanju podataka o ubrzanju u digitalni prikaz koji se može očitati preko I2C ili SPI.
- Raspon ubrzanja mjereno u g -ima, gdje je 1g ubrzanje uslijed Zemljine teže.
- Koprocesori koji mogu iskrcati neke izračune potrebne za analizu sirovih podataka iz MCU -a. Većina mjerača ubrzanja ima neke jednostavne mogućnosti prekida za otkrivanje praga ubrzanja (udar) i uvjeta 0 g (slobodni pad). Drugi mogu izvršiti naprednu obradu sirovih podataka kako bi MCU -u ponudili značajnije podatke.
Korak 5: Sučelje s kontrolerom
Budući da poznajemo ESP mikrokontrolere u trendu, upotrijebit ćemo ESP32 za naš primjer. Dakle, prvo vam je potreban Nodemcu-32.
Bez brige ako imate neke druge ESP ploče ili čak Arduino !!! Vi samo trebate postaviti svoj Arduino IDE i konfiguraciju prema vašim razvojnim pločama, za Arduino, ESP NodeMCU, ESP32 itd.… Također će vam trebati neke vrste I2C dijelova, obično na razbijačkoj ploči. U ovom ću vodiču koristiti MMA8451 digitalna ploča za mjerenje akcelerometra.
I nekoliko kratkospojnih žica….
Korak 6: Veze
I evo rasporeda.
Koristio sam sljedeću vezu iz gornjeg modula sa svojim modulom Nodemcu-32s.
ESP32s - Modul
3v3 - Vin
Gnd - Gnd
SDA 21 - SDA
SCL 22 - SCL
"Upamtite, većinu vremena sve razvojne ploče (uglavnom u ESP -ovima) nemaju dobar jasan pinout koji bi vam pomogao odrediti koji se pinovi koriste! Zato prije povezivanja identificirajte ispravne pinove na ploči kako biste koristili koje igle su za SDA i SCL."
Korak 7: Kodirajte
Za to je potrebna biblioteka Adafruit
s
Preuzmite, raspakirajte i pronaći ćete mapu s primjerima, u mapi samo otvorite MMA8451demo u svom Arduino IDE -u i evo ga….
vidjet ćete sljedeći kôd za sučelje senzora MMA8451 s vašim kontrolerom
#uključi
#include #include Adafruit_MMA8451 mma = Adafruit_MMA8451 (); void setup (void) {Serial.begin (9600); Wire.begin (4, 5); / * pridružite se sabirnici i2c sa SDA = D1 i SCL = D2 NodeMCU */ Serial.println ("Adafruit MMA8451 test!"); if (! mma.begin ()) {Serial.println ("Nije moguće započeti"); while (1); } Serial.println ("MMA8451 pronađen!"); mma.setRange (MMA8451_RANGE_2_G); Serial.print ("Raspon ="); Serial.print (2 << mma.getRange ()); Serial.println ("G"); } void loop () {// Čitanje 'sirovih' podataka u 14-bitnim brojevima mma.read (); Serial.print ("X: / t"); Serijski.ispis (mma.x); Serial.print ("\ tY: / t"); Serijski.tisak (mma.y); Serial.print ("\ tZ: / t"); Serijski.ispis (mma.z); Serial.println (); / * Nabavite novi događaj senzora */ sensors_event_t događaj; mma.getEvent (& event); / * Prikažite rezultate (ubrzanje se mjeri u m/s^2) */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"); / * Dobijte orijentaciju senzora */ uint8_t o = mma.getOrientation (); switch (o) {case MMA8451_PL_PUF: Serial.println ("Portret sprijeda"); pauza; kućište MMA8451_PL_PUB: Serial.println ("Portret gore natrag"); pauza; kućište MMA8451_PL_PDF: Serial.println ("Portret dolje sprijeda"); pauza; kućište MMA8451_PL_PDB: Serial.println ("Portret dolje natrag"); pauza; slučaj MMA8451_PL_LRF: Serial.println ("Landscape Right Front"); pauza; slučaj MMA8451_PL_LRB: Serial.println ("Landscape Right Back"); pauza; kućište MMA8451_PL_LLF: Serial.println ("Landscape Left Front"); pauza; slučaj MMA8451_PL_LLB: Serial.println ("Pejzaž lijevo natrag"); pauza; } Serial.println (); kašnjenje (1000); }
Spremi, potvrdi i učitaj ……
Otvorite serijski monitor i vidjet ćete nešto poput ovoga, kretao sam senzor otkud i različita očitanja
X: -2166 Y: 1872 Z: 2186
X: -2166 Y: 1872 Z: 2186X: -4,92 Y: 5,99 Z: 4,87 m/s^2
Pejzaž lijevo sprijeda
X: -224 Y: -2020 Z: 3188
X: -5,10 Y: -3,19 Z: 7,00 m/s^2
Portret sprijeda
Pa ako je sve prošlo kako treba, sada imate osnove I2C -a i Kako spojiti svoj uređaj.
Ali uređaj ne radi ??
Samo idite na sljedeći korak ……
Korak 8: Uključite svoj I2C uređaj u rad
Osnovni koraci za rad I2C uređaja
Hajde da istražimo….
- Ožičenje je ispravno (provjerite ponovo)
- Program je točan.. (Da, to je testni primjer..)
Počnite s fazama za rješavanje …….
Korak 1: Pokrenite program za skeniranje uređaja I2C kako biste provjerili adresu uređaja i prvo je vaš I2C uređaj u redu
Možete preuzeti skicu i provjeriti izlaz.
Rezultat - Uređaj radi i adresa senzora je točna
I2C skener. Skeniranje …
Pronađena adresa: 28 (0x1C) Gotovo. Pronađeno je 1 uređaj (a).
Faza 2: Provjerite biblioteku senzora
Otvorite datoteku Adafruit_MMA8451.h i pronađite adresu uređaja
Rezultat - Adresa se razlikuje od mog uređaja ??
/*================================================ ========================= I2C ADRESA/BITOVI --------------------- -------------------------------------------------- * /#define MMA8451_DEFAULT_ADDRESS (0x1D) //! <Zadana MMA8451 I2C adresa, ako je A GND, njegova 0x1C /*======================= ================================================== */
Do - Uredi datoteku iz bilježnice (promijeni adresu) + Spremi + Ponovo pokreni IDE
Radi. Možete pročitati.
Neće….. ???
Korak 3: Provjerite je li Wire.begin prepisan?
Otvorite datoteku Adafruit_MMA8451.c i pronađite Wire.begin.
Rezultat - Ova izjava je prebrisana
/*********************************************** ************************* //*! @brief Postavlja HW (čita vrijednosti koeficijenata itd.)* / / ********************************** ****************************************/ bool Adafruit_MMA8451:: begin (uint8_t i2caddr) {Wire.begin (); _i2caddr = i2caddr;
Do - Uredi datoteku iz bilježnice (izjava o komentaru) + Spremi + Ponovo pokreni IDE
I konačno uređaj počinje raditi☺…
Skoro sam preopteretio ovaj vodič jer mu je glavni cilj bio objasniti Kako započeti, dobiti podatke iz podatkovne tablice, povezati se i omogućiti rad I2C uređaja s vrlo osnovnim primjerom. Nadamo se da će sve ići kako treba, a bit će i korisno pokrenuti vaš senzor.
Preporučeni:
Početak rada s Pythonom za ESP8266 i ESP32: 6 koraka
Početak rada s Pythonom za ESP8266 i ESP32: Pozadina ESP8266 i njegov mlađi stariji brat ESP32 jeftini su Wi-Fi mikročipovi s punim TCP/IP stogom i mogućnostima mikrokontrolera. Čip ESP8266 prvi je put privukao pozornost proizvođačke zajednice još 2014. Od tada je niska cijena (
Početak rada s ESP32 CAM - Streaming videa putem ESP CAM -a putem Wi -Fi -ja. Projekt sigurnosne kamere ESP32: 8 koraka
Početak rada s ESP32 CAM | Streaming videa putem ESP CAM -a putem Wi -Fi -ja. Projekt sigurnosne kamere ESP32: Danas ćemo naučiti kako koristiti ovu novu ESP32 CAM ploču i kako je možemo kodirati i koristiti kao sigurnosnu kameru te dobiti streaming video putem WiFi -ja
Početak rada s ESP32 - Instaliranje ESP32 ploča u Arduino IDE - ESP32 Blink Code: 3 koraka
Početak rada s ESP32 | Instaliranje ESP32 ploča u Arduino IDE | ESP32 Blink Code: U ovom uputstvu vidjet ćemo kako započeti rad s esp32 i kako instalirati esp32 ploče u Arduino IDE i programirat ćemo esp 32 da pokrene blink kod pomoću arduino ide
LoRa ESP32 radijski priručnik Vodič za jednostavan početak rada - Bez ožičenja: 6 koraka
LoRa ESP32 radio aparati Vodič za jednostavan početak rada | Bez ožičenja: Hej, što ima, dečki? Akarsh ovdje iz CETech -a. Danas ćemo napraviti projekt koji se u osnovi odnosi na postavljanje LoRa radija da međusobno razgovaraju na najjednostavniji mogući način. Ovdje je mikrokontroler koji sam koristio ESP32, koji je c
Početak rada s AWS IoT -om s bežičnim senzorom temperature pomoću MQTT -a: 8 koraka
Početak rada s AWS IoT -om s bežičnim senzorom temperature Korištenjem MQTT -a: U ranijim Instructables -ima prošli smo različite oblačne platforme poput Azure, Ubidots, ThingSpeak, Losant itd. Koristili smo MQTT protokol za slanje podataka senzora u oblak u gotovo svu cloud platformu. Za više informacija