Obsah:
- Krok 1: Jak začít s I2C - Magnificent World of Inter IC Communication
- Krok 2: Přehled o I2C
- Krok 3: Jak konfigurovat senzory I²C
- Krok 4: Začněte pohybem - akcelerometr
- Krok 5: Rozhraní s ovladačem
- Krok 6: Připojení
- Krok 7: Kód
- Krok 8: Nechte své zařízení I2C fungovat …
Video: Začínáme s rozhraním senzoru I2C ?? - Rozhraní vašeho MMA8451 pomocí ESP32s: 8 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:19
V tomto tutoriálu se dozvíte vše o tom, jak spustit, připojit a získat zařízení I2C (akcelerometr) pracující s ovladačem (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Krok 1: Jak začít s I2C - Magnificent World of Inter IC Communication
Arduino, řada ESP, PIC, Rasberry PI atd. Jsou neuvěřitelné. Ale co s tím uděláte, až ho budete mít?
Nejlepší je přidat senzory a podobně. Dnes mnoho nových technologií využívá protokol I2C, který umožňuje počítačům, telefonům, tabletům nebo mikrokontrolérům komunikovat se senzory. Chytré telefony by byly méně chytré, kdyby nemohly mluvit s čidlem akcelerometru, aby věděly, kterým směrem je váš telefon otočen.
Krok 2: Přehled o I2C
I2C je sériový, synchronní, poloduplexní komunikační protokol, který umožňuje koexistenci více masterů a slave na stejné sběrnici. Sběrnice I2C se skládá ze dvou linek: sériové datové linky (SDA) a sériových hodin (SCL). Obě linky vyžadují stahovací odpory.
SDA (sériová data) - řádek pro master a slave pro odesílání a přijímání dat. SCL (Sériové hodiny) - Linka, která nese hodinový signál. S takovými výhodami, jako je jednoduchost a nízké výrobní náklady, se I2C většinou používá pro komunikaci periferních zařízení s nízkou rychlostí na krátké vzdálenosti (v rámci jedné stopy).
Chcete se dozvědět více o I2C? ……
Krok 3: Jak konfigurovat senzory I²C
Než se pustíte do projektu, musíte porozumět několika základům svého senzoru. Nalijte si tedy šálek kávy, než se ponoříte?:) …
Velkou výhodou I2C je, že na stejné čtyři vodiče můžete umístit tolik senzorů. Ale u jednotek s několika připojenými předem připravenými moduly možná budete muset z výpadků odstranit několik smd rezistorů, jinak může být vytažení na sběrnici příliš agresivní.
Jaké informace chceme z Datasheetu ??
- Funkce senzoru
- Funkce pinů a pinů
- Popis rozhraní (Nezapomeňte se podívat na „tabulku výběru adresy I2c“)
- Registrace !!
Všechno je v pořádku, snadno to najdete, ale zaregistrujete se ?? REGISTRACE jsou jednoduše paměťová místa uvnitř zařízení I²C. Souhrn toho, kolik registrů je v daném senzoru a co ovládají nebo obsahují, se nazývá mapa registrů. Většina informací v technickém listu senzoru je o vysvětlení, jak každý registr funguje, a jejich přečtení může být docela slog, protože informace jsou zřídka prezentovány přímým způsobem.
Abyste získali představu o tom, co tím chci říci: Existuje mnoho druhů registrů, ale pro tento úvod je rozdělím do dvou obecných typů: řídicí a datové registry.
1) Kontrolní registry
Většina senzorů mění způsob fungování na základě hodnot uložených v řídicích registrech. Představte si řídicí registry jako banky přepínačů Zapnuto/Vypnuto, které zapnete nastavením bitů na 1 a vypnete nastavením tohoto bitu na 0. Čidla založená na čipu I²C mají často tucet nebo více provozních nastavení pro věci jako bitové Režimy, přerušení, kontrola čtení a zápisu, hloubka, rychlost vzorkování, redukce šumu atd., Takže než budete moci skutečně číst, obvykle potřebujete nastavit bity v několika různých řídicích registrech.
2) Datové registry Na rozdíl od řídicího registru přepínacích bank, myslím na výstupní datové registry jako kontejnery s čísly, která jsou náhodou uložena v binární formě. Chcete -li tedy znát Data, vždy čtěte datové registry, jako například kdo jsem, registruji identifikaci zařízení, stavový registr atd.
Inicializace senzoru I²C je tedy vícestupňový proces a správné pořadí operací je často vysvětleno v opačném směru, místo přímého v datovém listu. seznam nikdy neříká „Chcete -li získat hodnotu z tohoto senzoru, proveďte (1), (2), (3), (4) atd.“, ale najdete popis bitů řídicího registru se slovy „než v tomto nastavíte bit x registr, musíte nastavit bit y v tomto jiném kontrolním registru “.
Přesto vždy zjistím, že datový list je interaktivnější než většina textu. pokud budete odkazovat na konkrétní kus nebo informace a poskytne vám všechny podrobnosti, souvislosti a reference. Jen si sedněte a čtěte, abyste získali všechny své reference.:)
Krok 4: Začněte pohybem - akcelerometr
Moderní akcelerometry jsou zařízení Micro Electro-Mechanical Systems (MEMS), což znamená, že jsou schopni vejít se na malý čip uvnitř nejmenšího zařízení. Jednou z metod pro měření zrychlení používaného akcelerometry MEMS je využití malé vodivé hmoty zavěšené na pružinách. Zrychlení zařízení způsobí, že se pružiny natáhnou nebo smršťují, a průhyb vodivé hmoty lze měřit změnou kapacity na blízké pevné desky.
Akcelerometry jsou určeny následujícími funkcemi:
- Počet os od jedné do tří os označených ve specifikačních diagramech X, Y a Z. Všimněte si, že některé akcelerometry se nazývají 6-osé nebo 9-osé, ale to jen znamená, že jsou spojeny s jinými zařízeními MEMS, jako jsou gyroskopy a/nebo magnetometry. Každé z těchto zařízení má také tři osy, a proto existují 3, 6 nebo 9-osé inerciální měřicí jednotky (IMU).
- Typ výstupu, analogový nebo digitální. Digitální akcelerometr se stará o formátování dat zrychlení do digitální reprezentace, kterou lze odečíst přes I2C nebo SPI.
- Rozsah zrychlení měřený v g, kde 1 g je zrychlení způsobené gravitací Země.
- Koprocesory, které mohou uvolnit některé výpočty potřebné k analýze nezpracovaných dat z MCU. Většina akcelerometrů má schopnost jednoduchého přerušení detekovat práh zrychlení (šok) a podmínku 0 g (volný pád). Jiní mohou provádět pokročilé zpracování nezpracovaných dat a nabídnout tak MCU smysluplnější data.
Krok 5: Rozhraní s ovladačem
Jelikož známe trendově mikrořadiče ESP, použijeme pro náš příklad ESP32. Nejprve tedy potřebujete Nodemcu-32s.
Žádné starosti, pokud máte další desky ESP nebo dokonce Arduino !!! Stačí nastavit IDE a konfiguraci Arduino podle vašich vývojových desek, pro Arduino, ESP NodeMCU, ESP32 atd.… Budete také potřebovat nějaký druh I2C dílů, obvykle na breakout desce. V tomto tutoriálu budu používat MMA8451 oddělovací deska digitálního akcelerometru.
A pár propojovacích vodičů …
Krok 6: Připojení
A tady je rozložení.
Použil jsem následující připojení z výše uvedeného modulu k mému modulu Nodemcu-32s.
ESP32s - modul
3v3 - Vin
Gnd - Gnd
SDA 21 - SDA
SCL 22 - SCL
„Pamatujte si, že většinou ne všechny vývojové desky (většinou v ESP) mají dobrý jasný pinout, který vám pomůže určit, které piny se používají !! Takže před připojením identifikujte správné piny vaší desky pro použití, které piny jsou pro SDA a SCL."
Krok 7: Kód
To vyžaduje knihovnu Adafruit
z
Stáhněte si, rozbalte a najdete složku příkladů, ve složce stačí otevřít MMA8451demo v Arduino IDE a je to….
s ovladačem uvidíte následující kód pro rozhraní senzoru MMA8451
#zahrnout
#include #include Adafruit_MMA8451 mma = Adafruit_MMA8451 (); void setup (void) {Serial.begin (9600); Wire.begin (4, 5); / * připojte sběrnici i2c pomocí SDA = D1 a SCL = D2 NodeMCU */ Serial.println („test Adafruit MMA8451!“); if (! mma.begin ()) {Serial.println ("Nelze spustit"); zatímco (1); } Serial.println ("MMA8451 nalezeno!"); mma.setRange (MMA8451_RANGE_2_G); Serial.print ("Rozsah ="); Serial.print (2 << mma.getRange ()); Serial.println ("G"); } void loop () {// Přečíst 'nezpracovaná' data ve 14bitových počtech 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ískat novou událost senzoru */ sensor_event_t událost; mma.getEvent (& událost); / * Zobrazení výsledků (zrychlení se měří 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ískejte orientaci senzoru */ uint8_t o = mma.getOrientation (); switch (o) {case MMA8451_PL_PUF: Serial.println ("Portrait Up Front"); přestávka; případ MMA8451_PL_PUB: Serial.println ("Portrét nahoru zpět"); přestávka; případ MMA8451_PL_PDF: Serial.println ("Portrét dolů zepředu"); přestávka; případ MMA8451_PL_PDB: Serial.println ("Portrét dolů zpět"); přestávka; případ MMA8451_PL_LRF: Serial.println ("Na šířku vpravo vpředu"); přestávka; případ MMA8451_PL_LRB: Serial.println ("Na šířku vpravo zpět"); přestávka; případ MMA8451_PL_LLF: Serial.println ("Krajina vlevo vpředu"); přestávka; případ MMA8451_PL_LLB: Serial.println ("Na šířku zleva dozadu"); přestávka; } Serial.println (); zpoždění (1000); }
Uložit, ověřit a nahrát ……
Otevřete sériový monitor a uvidíte něco takového, pohyboval jsem senzorem, a proto různé 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 vlevo vpředu
X: -224 Y: -2020 Z: 3188
X: -5,10 Y: -3,19 Z: 7,00 m/s^2
Portrét vpředu
Pokud vše proběhlo tak, jak mělo, pak máte základy I2C a Jak připojit zařízení..
Ale zařízení nefunguje ??
Pokračujte dalším krokem ……
Krok 8: Nechte své zařízení I2C fungovat …
Základní kroky pro správnou funkci zařízení I2C
Pojďme vyšetřovat….
- Zapojení je správné.. (zkontrolujte znovu)
- Program je správný.. (Ano, je to testovací příklad..)
Začněte fázemi k vyřešení …
Fáze 1: Spusťte program pro skenování zařízení I2C a zkontrolujte adresu zařízení a nejprve je vaše zařízení I2C v pořádku
Můžete si stáhnout skicu a zkontrolovat výstup.
Výsledek - Zařízení funguje a adresa senzoru je správná
Skener I2C. Skenování…
Nalezená adresa: 28 (0x1C) Hotovo. Nalezeno 1 zařízení.
Fáze 2: Zkontrolujte knihovnu senzorů
Otevřete soubor Adafruit_MMA8451.h a najděte adresu zařízení
Výsledek - adresa se liší od mého zařízení?
/*===================================================================== ===================================================================================== ---------------------------------------------------------- * /#define MMA8451_DEFAULT_ADDRESS (0x1D) //! <Výchozí adresa I2C MMA8451, pokud A je GND, jeho 0x1C /*=========================== ======================================================================== */
Do - Upravit soubor z poznámkového bloku (změnit adresu) + Uložit + Restartovat IDE
Funguje to. Můžete získat své údaje.
Aby ne….. ???
Fáze 3: Zkontrolujte, zda je Wire.begin přepsán?
Otevřete soubor Adafruit_MMA8451.c a najděte Wire.begin.
Výsledek - toto prohlášení je přepsáno
/******************************************************** ************************* @brief nastaví HW (čte hodnoty koeficientů atd.)* / / ***************************** *******************************************/ bool Adafruit_MMA8451:: begin (uint8_t i2caddr) {Wire.begin (); _i2caddr = i2caddr;
Do - Upravit soubor z poznámkového bloku (komentář) + Uložit + Restartovat IDE
A konečně zařízení začíná fungovat☺…
Tento tutoriál téměř přetížím, protože jeho hlavním cílem bylo vysvětlit, jak začít, získávat data z datového listu, připojovat se a zařízení I2C pracovat na velmi základním příkladu. Doufám, že vše půjde tak, jak má, a bude užitečné spustit senzor.
Doporučuje:
Získejte výstup HDMI z vašeho Rock64 pomocí Armbian: 15 kroků
Získejte výstup HDMI ze svého Rock64 pomocí Armbian: Jste pravděpodobně tady poté, co Google vyhledá " Rock64 žádný výstup HDMI " Ukázalo vás tímto směrem. Nebo vás může zajímat, jak používat obrazovku 16 x 2, která byla dodána s nákupem, který se zdál být dobrý: „Za 10–20 $, Sing
DIY digitální měření vzdálenosti s rozhraním ultrazvukového senzoru: 5 kroků
DIY digitální měření vzdálenosti s rozhraním ultrazvukového senzoru: Cílem tohoto Instructable je navrhnout digitální senzor vzdálenosti pomocí GreenPAK SLG46537. Systém je navržen pomocí ASM a dalších komponent v rámci GreenPAK pro interakci s ultrazvukovým senzorem. Systém je navržen tak, aby
Instalace Raspbian do Raspberry Pi 3 B bez HDMI - Začínáme s Raspberry Pi 3B - Nastavení vašeho Raspberry Pi 3: 6 kroků
Instalace Raspbian do Raspberry Pi 3 B bez HDMI | Začínáme s Raspberry Pi 3B | Nastavení vašeho Raspberry Pi 3: Jak někteří z vás vědí, počítače Raspberry Pi jsou docela úžasné a můžete mít celý počítač jen na jedné malé desce. Raspberry Pi 3 Model B je vybaven čtyřjádrovým 64bitovým ARM Cortex A53 taktován na 1,2 GHz. To dává Pi 3 zhruba 50
Metody detekce vodní hladiny Arduino pomocí ultrazvukového senzoru a Funduino vodního senzoru: 4 kroky
Metody detekce hladiny vody Arduino pomocí ultrazvukového senzoru a Funduino senzoru vody: V tomto projektu vám ukážu, jak vytvořit levný detektor vody pomocí dvou metod: 1. Ultrazvukový senzor (HC-SR04) .2. Senzor vody Funduino
Živé sledování hodnoty vašeho senzoru odkudkoli na světě: 4 kroky
Živé sledování hodnoty vašeho senzoru odkudkoli na světě: Dostal jsem zprávu o čísle WhatsApp od techiesms ’ týkající se nápovědy k vytvoření jednoho projektu. Cílem projektu bylo změřit tlak vyvíjený na snímač tlaku a zobrazit jej na chytrém telefonu. Pomohl jsem tedy při vytváření tohoto projektu a rozhodl jsem se udělat lektora