Sadržaj:
- Korak 1: Kako započeti s I2C - veličanstvenim svijetom Inter IC komunikacije
- 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 I2C senzorskim interfejsom ?? - Interfejsirajte svoj MMA8451 koristeći ESP32: 8 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:04
U ovom vodiču naučit ćete 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 Inter IC komunikacije
Arduino, ESP serija, PIC, Rasberry PI itd. Su nevjerojatni. Ali šta ćete 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čunaru, telefonima, tabletima ili mikrokontrolerima da govore o senzorima. Pametni telefoni bili bi manje pametni da ne mogu razgovarati sa senzorom akcelerometra kako bi znali na koju stranu je vaš telefon.
Korak 2: Pregled I2C -a
I2C je serijski, sinhroni polu-dupleksni komunikacijski protokol koji omogućava koegzistenciju više master-a i slave-a na istoj sabirnici. I2C sabirnica sastoji se od dvije linije: serijske linije podataka (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 stope).
Ž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 natočite si š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, u protivnom bi povlačenje na sabirnici moglo postati previše agresivno.
Koje podatke želimo od lista sa podacima ??
- 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 predstavljaju na izravan način.
Da biste stekli uvid u to što pod time mislim: Postoji mnogo vrsta registara, ali za ovaj uvod ću ih grupirati u dvije opće vrste: Kontrolni i Podaci.
1) Kontrolni registri
Većina senzora mijenja način rada na osnovu vrijednosti pohranjenih u kontrolnim registrima. Zamislite kontrolne registre kao banke prekidača za uključivanje/isključivanje, koje uključujete postavljanjem bita na 1 i isključujete postavljanjem tog bita na 0. Senzori zasnovani na čipovima I²C često imaju desetak ili više operativnih postavki za stvari poput Režimi, 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) Registri podataka Za razliku od kontrolnih registara banaka prekidača, mislim da su izlazni registri podataka spremnici koji sadrže brojeve 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 jednostavnog u podatkovnoj tablici. na listi nikad ne piše "Da biste očitali sa ovog senzora, učinite (1), (2), (3), (4), itd.", ali ćete pronaći opise bitova kontrolnog registra koji govore "prije nego što postavite bit x u ovo registar morate postaviti bit y u ovom drugom kontrolnom registru”.
Ipak, uvijek smatram da je list s podacima interaktivniji od većine teksta. ako ćete ga referencirati za određeni dio ili dijelove informacija i dati će vam sve detalje, veze i reference. Samo sjednite i čitajte kako biste dobili sve svoje reference.:)
Korak 4: Počnite s kretanjem - mjerač ubrzanja
Moderni akcelerometri su uređaji za mikro elektro-mehaničke sisteme (MEMS), što znači da se mogu smjestiti na mali čip unutar najmanjih spravica. Jedan način mjerenja ubrzanja koji koriste MEMS akcelerometri je korištenje male vodljive mase ovješene na opruge. Ubrzanje uređaja dovodi do rastezanja ili skupljanja opruga, a otklon vodljive mase može se mjeriti promjenom kapaciteta na obližnje, fiksne ploče.
Akcelerometri su specificirani sljedećim karakteristikama:
- Broj osi, od jedne do tri osi, označene sa X, Y i Z u dijagramima specifikacija. Imajte na umu da se neki akcelerometri nazivaju 6-osi ili 9-osi, 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 inercijalne mjerne jedinice (IMU).
- Vrsta izlaza, analogni ili digitalni. Digitalni mjerač ubrzanja brine se o formatiranju 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 rasteretiti neke prorač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 od 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, za primjer ćemo koristiti ESP32. Dakle, prvo su vam potrebni Nodemcu-32.
Bez brige ako imate neke druge ESP ploče ili čak Arduino !!! Samo trebate postaviti svoj Arduino IDE i konfiguraciju prema razvojnim pločama, za Arduino, ESP NodeMCU, ESP32 itd.… Trebat će vam i neke vrste I2C dijelova, obično na probojnoj ploči. U ovom ću vodiču koristiti MMA8451 digitalna ploča za mjerenje akcelerometra.
I nekoliko kratkospojnih žica….
Korak 6: Veze
A evo i izgleda.
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 da odredite koji se pinovi koriste! Zato prije povezivanja identificirajte ispravne pinove na ploči kako biste koristili koje su pinove za SDA i SCL."
Korak 7: Kodirajte
Za to je potrebna biblioteka Adafruit
sa
Preuzmite, raspakirajte i pronaći ćete fasciklu s primjerima, u mapi samo otvorite MMA8451demo u svom Arduino IDE -u i evo vas….
videćete sledeći kod za interfejs senzora MMA8451 sa vašim kontrolerom
#include
#include #include Adafruit_MMA8451 mma = Adafruit_MMA8451 (); void setup (void) {Serial.begin (9600); Wire.begin (4, 5); / * pridruži se i2c sabirnici 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.print (mma.x); Serial.print ("\ tY: / t"); Serijski.print (mma.y); Serial.print ("\ tZ: / t"); Serijski.print (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 napred"); break; kućište MMA8451_PL_PUB: Serial.println ("Portret gore"); break; kućište MMA8451_PL_PDF: Serial.println ("Portret sprijeda"); break; kućište MMA8451_PL_PDB: Serial.println ("Portret dolje natrag"); break; slučaj MMA8451_PL_LRF: Serial.println ("Landscape Right Front"); break; slučaj MMA8451_PL_LRB: Serial.println ("Landscape Right Back"); break; kućište MMA8451_PL_LLF: Serial.println ("Landscape Left Front"); break; slučaj MMA8451_PL_LLB: Serial.println ("Landscape Left Back"); break; } Serial.println (); kašnjenje (1000); }
Sačuvaj, potvrdi i otpremi ……
Otvorite serijski monitor i vidjet ćete nešto poput ovoga, pomjerao 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 napred
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 ispravan.. (Da, to je testni primjer..)
Počnite s fazama za rješavanje …….
Faza 1: Pokrenite program za skeniranje I2C uređaja da provjerite 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 ispravna
I2C skener. Skeniranje…
Pronađena adresa: 28 (0x1C) Gotovo. Pronađeno 1 uređaja.
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….. ???
Faza 3: Provjerite je li Wire.begin prepisan?
Otvorite datoteku Adafruit_MMA8451.c i pronađite Wire.begin.
Rezultat - Ova izjava je prepisana
/************************************************* ************************* //*! @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 na kraju 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, spojiti se i omogućiti rad I2C uređaja s vrlo osnovnim primjerom. Nadam se da će sve ići kako treba, a bit će i korisno pokrenuti vaš senzor.
Preporučuje se:
Početak rada sa STM32f767zi Cube IDE i otpremanje prilagođene skice: 3 koraka
Početak rada sa STM32f767zi Cube IDE -om i otpremite svoju prilagođenu skicu: KUPITE (kliknite test za kupovinu/posjetite web stranicu) STM32F767ZISUPPORTED SOFTVER · STM32CUBE IDE · KEIL MDK ARM µVISION · EARMAR IAR EMBEDDED WORKBENCH mogu biti dostupni koristi se za programiranje STM mikrokontrolera
Sučelje Sensirion, SPS-30, osjetnik čestica sa Arduino Duemilanove koristeći I2C način rada: 5 koraka
Interfejs Sensirion, SPS-30, senzor čestica sa Arduino Duemilanove Korišćenjem I2C moda: Kada sam tražio povezivanje SPS30 senzora, shvatio sam da je većina izvora za Raspberry Pi, ali ne toliko za Arduino. Proveo sam malo vremena kako bi senzor radio s Arduinom i odlučio sam objaviti svoje iskustvo ovdje kako bi mogao
Početak rada s kućnom automatizacijom: Instaliranje kućnog pomoćnika: 3 koraka
Početak rada s kućnom automatizacijom: Instaliranje kućnog pomoćnika: Sada ćemo započeti seriju kućne automatizacije, gdje stvaramo pametni dom koji će nam omogućiti kontrolu stvari poput svjetla, zvučnika, senzora i tako dalje pomoću centralnog čvorišta zajedno sa glasovni asistent. U ovom postu ćemo naučiti kako da uvedemo
Izuzetno jednostavan način za početak rada s kućnom automatizacijom pomoću DIY modula: 6 koraka
Izuzetno jednostavan način za početak rada s kućnom automatizacijom pomoću DIY modula: Bio sam ugodno iznenađen kada sam odlučio pokušati dodati neke DIY senzore kućnom pomoćniku. Korištenje ESPHomea izuzetno je jednostavno i u ovom ćemo članku naučiti kako kontrolirati GPIO pin i također postići temperaturu & podaci o vlažnosti sa bežičnog n
Početak rada sa Raspberry Pi 4 Desktop Kitom: 7 koraka
Početak rada sa Raspberry Pi 4 Desktop Kitom: Raspberry Pi 4 je mali, moćan mini računar, sa 4K podrškom za dva ekrana, USB 3.0, novim CPU-om i GPU-om i do 4GB RAM-a. U ovom vodiču ćete naučite kako postaviti Raspberry Pi 4 model B i instalirati sve što vam je potrebno za korištenje fu