Obsah:
- Krok 1: Ako začať s I2C - Veľkolepý svet inter IC komunikácie
- Krok 2: Prehľad o I2C
- Krok 3: Ako nakonfigurovať senzory I²C
- Krok 4: Začnite pohybom - akcelerometer
- Krok 5: Rozhranie s ovládačom
- Krok 6: Pripojenia
- Krok 7: Kód
- Krok 8: Začnite pracovať so svojim zariadením I2C.
Video: Začíname s rozhraním snímača I2C ?? - Rozhranie vášho MMA8451 pomocou ESP32s: 8 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:56
V tomto návode sa dozviete všetko o tom, ako spustiť, pripojiť a získať zariadenie I2C (akcelerometer) pracujúce s ovládačom (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Krok 1: Ako začať s I2C - Veľkolepý svet inter IC komunikácie
Arduino, série ESP, PIC, Rasberry PI atď. Sú neuveriteľné. Čo s tým však robíte, keď ho už máte?
Najlepšie je pridať senzory a podobne. Dnes veľa horúcich nových technológií používa protokol I2C, ktorý umožňuje počítaču, telefónom, tabletom alebo mikrokontrolérom hovoriť so senzormi. Inteligentné telefóny by boli menej inteligentné, keby nemohli hovoriť so senzorom akcelerometra, aby zistili, akým smerom je váš telefón otočený.
Krok 2: Prehľad o I2C
I2C je sériový, synchrónny, poloduplexný komunikačný protokol, ktorý umožňuje súčasnú existenciu viacerých nadradených a podriadených jednotiek na tej istej zbernici. Zbernica I2C sa skladá z dvoch liniek: sériová dátová linka (SDA) a sériové hodiny (SCL). Obe vedenia vyžadujú výsuvné odpory.
SDA (sériové údaje) - Riadok pre master a slave na odosielanie a prijímanie údajov. SCL (sériové hodiny) - linka, ktorá prenáša hodinový signál. S takými výhodami, ako je jednoduchosť a nízke výrobné náklady, sa I2C väčšinou používa na komunikáciu periférnych zariadení s nízkou rýchlosťou na krátke vzdialenosti (v rámci jednej stopy).
Chcete sa dozvedieť viac o I2C? ……
Krok 3: Ako nakonfigurovať senzory I²C
Predtým, ako sa pustíte do projektu, musíte pochopiť niekoľko základov svojho senzora. Takže nalejete si šálku kávy, než sa do toho ponoríte:)? …
Veľkou silou I2C je, že na rovnaké štyri vodiče môžete umiestniť toľko senzorov. Ale pre jednotky s niekoľkými vopred pripravenými modulmi pripojenými bude možno potrebné z výpadkov odstrániť niekoľko odporov smd, inak môže byť príťah na zbernici príliš agresívny.
Aké informácie chceme z technického listu ??
- Funkcia senzora
- Funkcia pinov a pinov
- Popis rozhrania (Nezabudnite si pozrieť „tabuľku výberu adries I2c“)
- Registruje sa !!
Všetko je v poriadku, nájdete to ľahko, ale zaregistrujete sa? REGISTRÁCIE sú jednoducho pamäťové miesta vo vnútri zariadenia I²C. Súhrn toho, koľko registrov je v danom senzore, a čo riadia alebo obsahujú, sa nazýva mapa registrov. Väčšina informácií v technickom liste senzora je o vysvetlení, ako jednotlivé registre fungujú, a ich prečítanie môže byť celkom slogan, pretože informácie sú len zriedka prezentované priamym spôsobom.
Aby ste pochopili, čo tým myslím: Existuje mnoho druhov registrov, ale v tomto úvode ich zoskupím do dvoch všeobecných typov: riadiace a dátové registre.
1) Kontrolné registre
Väčšina senzorov mení svoju činnosť na základe hodnôt uložených v riadiacich registroch. Predstavte si riadiace registre ako banky prepínačov zapnutia/vypnutia, ktoré zapnete nastavením bitov na 1 a vypnete nastavením tohto bitu na 0. Senzory na báze čipov I²C majú často tucet alebo viac prevádzkových nastavení pre veci ako bitové Režimy, prerušenia, ovládanie čítania a zápisu, hĺbka, rýchlosť vzorkovania, redukcia šumu atď., Takže pred skutočným čítaním zvyčajne potrebujete nastaviť bity v niekoľkých rôznych riadiacich registroch.
2) Dátové registre Na rozdiel od riadiaceho registra prepínačov, registre dátových výstupov považujem za kontajnery s číslami, ktoré sa náhodou ukladajú v binárnej forme. Ak chcete vedieť údaje, vždy si prečítajte dátové registre, ako napríklad kto som, zaregistrujte sa na identifikáciu zariadenia, stavový register atď.
Inicializácia senzora I²C je teda viacstupňový proces a správne poradie operácií je často vysvetlené v opačnom smere, namiesto v prehľadnom liste. nikdy nehovorte „Ak chcete získať údaje z tohto snímača, urobte (1), (2), (3), (4) atď.“, ale nájdete popisy bitov riadiaceho registra, ktoré hovoria „skôr, ako v tomto nastavíte bit x v tomto inom riadiacom registri musíte nastaviť bit y “.
Napriek tomu sa mi vždy zdá, že dátový list je interaktívnejší než väčšina textu. ak ho odkážete na konkrétny kus alebo informácie a poskytne vám všetky podrobnosti, súvislosti a odkazy. Len si sadnite a čítajte, aby ste získali všetky svoje referencie.:)
Krok 4: Začnite pohybom - akcelerometer
Moderné akcelerometre sú zariadenia s mikroelektromechanickými systémami (MEMS), čo znamená, že sa zmestia na malý čip vnútri najmenších pomôcok. Jednou z metód na meranie zrýchlenia používaného akcelerometrom MEMS je použitie malej vodivej hmoty zavesenej na pružinách. Zrýchlenie zariadenia spôsobí roztiahnutie alebo stiahnutie pružín a vychýlenie vodivej hmoty sa môže merať zmenou kapacity na blízke pevné dosky.
Akcelerometre sú určené nasledujúcimi funkciami:
- Počet osí od jednej do troch osí označených X, Y a Z v diagramoch špecifikácie. Všimnite si toho, že niektoré akcelerometre sa nazývajú 6-osové alebo 9-osové, ale to len znamená, že sú dodávané s inými zariadeniami MEMS, ako sú gyroskopy a/alebo magnetometre. Každé z týchto zariadení má tiež tri osi, a preto existujú 3, 6 alebo 9-osové inerciálne meracie jednotky (IMU).
- Typ výstupu, analógový alebo digitálny. Digitálny akcelerometer sa stará o formátovanie údajov o akcelerácii do digitálnej reprezentácie, ktorú je možné odčítať cez I2C alebo SPI.
- Rozsah zrýchlenia meraného v g, kde 1 g je zrýchlenie spôsobené gravitáciou Zeme.
- Koprocesory, ktoré môžu vyložiť niektoré z výpočtov potrebných na analýzu nespracovaných údajov z MCU. Väčšina akcelerometrov má jednoduchú schopnosť prerušenia na detekciu prahu zrýchlenia (šok) a stavu 0 g (voľný pád). Iní môžu vykonať pokročilé spracovanie nespracovaných údajov a ponúknuť tak MCU zmysluplnejšie údaje.
Krok 5: Rozhranie s ovládačom
Pretože poznáme trendovo mikroprocesory ESP, použijeme pre náš príklad ESP32. Najprv teda potrebujete Nodemcu-32s.
Ak máte ďalšie dosky ESP alebo dokonca Arduino, nemusíte sa báť !!! Stačí nastaviť IDE a konfiguráciu Arduino podľa vašich vývojových dosiek, pre Arduino, ESP NodeMCU, ESP32 atď.… Budete tiež potrebovať nejaký druh I2C dielov, zvyčajne na oddeľovacej doske. V tomto návode budem používať MMA8451 oddeľovacia doska digitálneho akcelerometra.
A niekoľko prepojovacích káblov …
Krok 6: Pripojenia
A tu je rozloženie.
Na svoj modul Nodemcu-32s som použil nasledujúce pripojenie z vyššie uvedeného modulu.
ESP32s - modul
3v3 - Vin
Gnd - Gnd
SDA 21 - SDA
SCL 22 - SCL
„Pamätajte si, že väčšinou nie všetky vývojové dosky (väčšinou v ESP) majú dobrý jasný vývod, ktorý vám pomôže určiť, ktoré piny sa používajú !! Takže pred pripojením identifikujte správne piny vašej dosky, ktoré použijú, ktoré piny sú pre SDA a SCL."
Krok 7: Kód
Na to je potrebná knižnica Adafruit
z
Stiahnite, rozbaľte a nájdete priečinok s ukážkami, v priečinku stačí otvoriť MMA8451demo vo svojom Arduino IDE a je to …
s ovládačom uvidíte nasledujúci kód pre rozhranie senzora MMA8451
#zahrnúť
#include #include Adafruit_MMA8451 mma = Adafruit_MMA8451 (); void setup (void) {Serial.begin (9600); Wire.begin (4, 5); / * pripojte zbernicu i2c s SDA = D1 a SCL = D2 NodeMCU */ Serial.println („test Adafruit MMA8451!“); if (! mma.begin ()) {Serial.println ("nemožno spustiť"); pričom (1); } Serial.println ("MMA8451 nájdený!"); mma.setRange (MMA8451_RANGE_2_G); Serial.print ("Rozsah ="); Serial.print (2 << mma.getRange ()); Serial.println ("G"); } void loop () {// Prečítajte 'surové' údaje v 14-bitových počtoch 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 (); / * Získať novú udalosť senzora */ sensor_event_t udalosť; mma.getEvent (& event); / * Zobrazenie výsledkov (zrýchlenie sa meria v 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"); / * Získať orientáciu senzora */ uint8_t o = mma.getOrientation (); prepínač (o) {case MMA8451_PL_PUF: Serial.println ("Portrét hore dopredu"); prestávka; prípad MMA8451_PL_PUB: Serial.println ("Portrét hore späť"); prestávka; prípad MMA8451_PL_PDF: Serial.println ("Portrét dole vpredu"); prestávka; prípad MMA8451_PL_PDB: Serial.println ("Portrét nadol späť"); prestávka; prípad MMA8451_PL_LRF: Serial.println ("Na šírku vpravo vpredu"); prestávka; prípad MMA8451_PL_LRB: Serial.println ("Na šírku vpravo späť"); prestávka; prípad MMA8451_PL_LLF: Serial.println ("Na šírku vpredu"); prestávka; prípad MMA8451_PL_LLB: Serial.println ("Na šírku zľava dozadu"); prestávka; } Serial.println (); oneskorenie (1000); }
Uložiť, overiť a nahrať ……
Otvorte sériový monitor a uvidíte niečo také, pohyboval som senzorom, a preto rôzne hodnoty
X: -2166 Y: 1872 Z: 2186
X: -2166 Y: 1872 Z: 2186X: -4,92 Y: 5,99 Z: 4,87 m/s^2
Krajina vľavo vpredu
X: -224 Y: -2020 Z: 3188
X: -5,10 Y: -3,19 Z: 7,00 m/s^2
Portrét vpredu
Ak všetko prebehlo tak, ako malo, potom máte základy I2C a spôsob pripojenia zariadenia.
Ale zariadenie nefunguje ?? !
Pokračujte ďalším krokom … …
Krok 8: Začnite pracovať so svojim zariadením I2C.
Základné kroky pre správnu funkciu zariadenia I2C
Vyšetrime….
- Zapojenie je správne.. (znova skontrolujte)
- Program je správny.. (Áno, je to testovací príklad..)
Začnite fázami na vyriešenie ….
Krok 1: Spustite program na skenovanie zariadení I2C a skontrolujte adresu zariadenia. Najprv je vaše zariadenie I2C v poriadku
Môžete si stiahnuť náčrt a skontrolovať výstup.
Výsledok - Zariadenie funguje a adresa senzora je správna
I2C skener. Skenovanie…
Nájdená adresa: 28 (0x1C) Hotovo. Našlo sa 1 zariadení.
Krok 2: Skontrolujte knižnicu senzorov
Otvorte súbor Adafruit_MMA8451.h a vyhľadajte adresu zariadenia
Výsledok - adresa sa líši od môjho zariadenia ??.
/*======================================================================== ============================ ADRESA/BITY I2C --------------------- ---------------------------------------------------------- * /#define MMA8451_DEFAULT_ADDRESS (0x1D) //! <Predvolená adresa I2C MMA8451, ak A je GND, jeho 0x1C /*=========================== ========================================================================== */
Vykonať - Upraviť súbor z poznámkového bloku (zmeniť adresu) + Uložiť + Reštartovať IDE
Funguje to. Môžete si prečítať svoje údaje.
Aby nie … ???
Krok 3: Skontrolujte, či je Wire.begin prepísaný?
Otvorte súbor Adafruit_MMA8451.c a nájdite Wire.begin.
Výsledok - toto vyhlásenie je prepísané.
/********************************************************************** ************************* @brief nastavuje HW (číta hodnoty koeficientov atď.)* / / ***************************** ******************************************/ bool Adafruit_MMA8451:: begin (uint8_t i2caddr) {Wire.begin (); _i2caddr = i2caddr;
Vykonať - Upraviť súbor z poznámkového bloku (komentár) + Uložiť + Reštartovať IDE
A zariadenie konečne funguje☺ …
Tento tutoriál takmer preťažujem, pretože jeho hlavným cieľom bolo vysvetliť Ako začať, získať údaje z technického listu, pripojiť sa a zariadenie I2C pracovať na veľmi základnom príklade. Dúfam, že všetko pôjde tak, ako má, a bude užitočné spustiť svoj senzor.
Odporúča:
Detekcia vibrácií pomocou modulu snímača kohútika s piezoelektrickým šokom: 6 krokov
Detekcia vibrácií pomocou piezoelektrického modulu snímača klepania: V tomto návode sa naučíme detekovať otrasy pomocou jednoduchého piezoelektrického vibračného modulu a Visuina. Pozrite si ukážkové video
Zistite, keď niekto vstúpil do miestnosti pomocou radarového snímača Xyc-wb-dc: 7 krokov
Zistite, keď niekto vstúpil do miestnosti pomocou radarového senzora Xyc-wb-dc: V tomto návode sa naučíme, ako zistiť, kedy niekto vstúpil do miestnosti pomocou modulu RTC, radarového senzora xyc-wb-dc, OLED displeja a arduina. Sledujte ukážkové video
Získajte výstup HDMI z vášho Rock64 pomocou Armbian: 15 krokov
Získajte výstup HDMI zo svojho počítača Rock64 pomocou systému Armbian: Pravdepodobne ste tu, keď služba Google vyhľadá „výstup Rock64 bez hdmi“; vás ukázal týmto smerom. Alebo vás môže zaujímať, ako používať obrazovku 16 x 2, ktorá bola súčasťou nákupu, ktorý sa zdal byť dobrý: „Za 10 až 20 dolárov jeden spev
Vodovodný kohútik snímača pohybu pomocou Arduina a solenoidového ventilu - DIY: 6 krokov
Vodovodný kohútik snímača pohybu pomocou Arduina a solenoidového ventilu - DIY: V tomto projekte vám ukážem, ako postaviť vodný kohútik senzora pohybu pomocou solenoidového ventilu. Tento projekt vám môže pomôcť premeniť váš existujúci ručný vodovodný kohútik na vodovodný kohútik, ktorý je možné ovládať na základe detekcie pohybu. Používanie rozhrania infračerveného senzora
Začíname s grafickým rozhraním Raspberry Pi: 8 krokov
Začíname s grafickým rozhraním Raspberry Pi: Máte teda Raspberry Pi a skvelý nápad, ale ako uľahčíte interakciu svojho používateľa ako smartfónu? Vytvorenie grafického používateľského rozhrania (GUI) je v skutočnosti celkom jednoduché a s trochou trpezlivosti môžete vytvárať úžasné projekty