Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
Internet věcí (IoT) je v současné době jedním z populárních témat na planetě. A s internetem se každým dnem rychle rozrůstá. Internet věcí mění jednoduché domácnosti na inteligentní domy, kde lze vše od vašich světel až po zámky ovládat z vašeho smartphonu nebo počítače. To je luxus, který chce každý vlastnit.
Vždy si hrajeme s nástroji, které máme, a pokračujeme v práci na dalším kroku našich limitů. Snažíme se dát zákazníkovi vizi nejnovějších technologií a nápadů. Abyste svůj domov proměnili na chytré domy a užili si chuť luxusu bez velkého úsilí.
Dnes přemýšlíme o práci na jednom z nejdůležitějších témat v IoT - Digital Map Orientation.
Postavíme webový server, prostřednictvím kterého budeme moci sledovat pohyby jakéhokoli zařízení nebo věci (Je jen na vás, koho budete špehovat;)). Vždy můžete přemýšlet o upgradu tohoto projektu na další úroveň s některými úpravami a nezapomeňte nám to sdělit v níže uvedených komentářích.
Začněme než.. !!
Krok 1: Vybavení, které potřebujeme..
1. Senzor LSM9DS0
LSM9DS0, snímač 3 v 1 vyráběný společností STMicroelectronics, je systémový balíček, který obsahuje 3D digitální snímač lineární zrychlení, 3D digitální snímač úhlové rychlosti a 3D digitální magnetický senzor. LSM9DS0 má plnou stupnici lineárního zrychlení ± 2 g/± 4 g/± 6 g/± 8 g/± 16 g, plnou škálu magnetického pole ± 2/± 4/± 8/± 12 gaussů a úhlovou rychlost ± 245 /± 500/± 2000 dps.
2. Adafruit Huzzah ESP8266
Procesor ESP8266 od společnosti Espressif je 80 MHz mikrokontrolér s plným WiFi front-endem (jako klient i přístupový bod) a zásobníkem TCP/IP s podporou DNS. ESP8266 je neuvěřitelná platforma pro vývoj aplikací IoT. ESP8266 poskytuje vyspělou platformu pro monitorování a ovládání aplikací pomocí Arduino Wire Language a Arduino IDE.
3. USB programátor ESP8266
jeho hostitelský adaptér ESP8266 byl navržen speciálně v Dcube Store pro verzi ESP8266 pro Adafruit Huzzah, což umožňuje rozhraní I²C.
4. Propojovací kabel I2C
5. Mini USB kabel
Mini USB kabel Napájecí zdroj je ideální volbou pro napájení Adafruit Huzzah ESP8266.
Krok 2: Hardwarová připojení
Obecně je vytváření připojení nejjednodušší částí tohoto projektu. Postupujte podle pokynů a obrázků a neměli byste mít žádné problémy.
Nejprve si vezměte Adafruit Huzzah ESP8266 a umístěte na něj programátor USB (s portem I²C směřujícím dovnitř). Jemně stiskněte USB programátor a tento krok máme hotový stejně snadno jako koláč (viz obrázek výše).
Připojení senzoru a Adafruit Huzzah ESP8266 Vezměte senzor a připojte k němu kabel I²C. Pro správnou funkci tohoto kabelu mějte na paměti, že výstup I²C se VŽDY připojuje ke vstupu I²C. Totéž bylo nutné dodržet u Adafruit Huzzah ESP8266 s USB programátorem přes něj (viz obrázek výše).
S pomocí ESP8266 USB Programmer je velmi snadné programovat ESP. Vše, co musíte udělat, je připojit snímač do USB programátoru a můžete vyrazit. Dáváme přednost použití tohoto adaptéru, protože značně usnadňuje připojení hardwaru. Žádné starosti s pájením kolíků ESP k senzoru nebo čtením pinových diagramů a datového listu. Můžeme používat a pracovat na více senzorech současně, stačí vytvořit řetěz. Bez těchto programátorů USB typu plug and play existuje velké riziko špatného připojení. Špatné zapojení může zničit vaši wifi i váš senzor.
Poznámka: Hnědý vodič by měl vždy sledovat uzemnění (GND) mezi výstupem jednoho zařízení a vstupem jiného zařízení.
Napájení obvodu
Zapojte kabel Mini USB do napájecího konektoru Adafruit Huzzah ESP8266. Rozsviťte to a voila, můžeme vyrazit!
Krok 3: Kód
Kód ESP pro senzor Adafruit Huzzah ESP8266 a LSM9DS0 je k dispozici v našem úložišti github.
Než přejdete ke kódu, přečtěte si pokyny uvedené v souboru Readme a nastavte podle něj Adafruit Huzzah ESP8266. Nastavení ESP zabere pouhých 5 minut.
Kód je dlouhý, ale je v nejjednodušší formě, jakou si dokážete představit, a nebudete mít potíže s jeho porozuměním.
Pro vaše pohodlí můžete pracovní ESP kód pro tento senzor zkopírovat také zde:
// Distribuováno s licencí svobodné vůle.// Používejte jej libovolným způsobem, ať už ziskem nebo zdarma, za předpokladu, že se vejde do licencí souvisejících děl. // LSM9DSO // Tento kód je navržen tak, aby fungoval s mini modulem TCS3414_I2CS I2C, který je k dispozici na webu dcubestore.com.
#zahrnout
#zahrnout
#zahrnout
#zahrnout
// Adresa LSM9DSO Gyro I2C je 6A (106)
#define Addr_Gyro 0x6A // LSM9DSO Accl I2C adresa je 1E (30) #define Addr_Accl 0x1E
const char* ssid = "váš ssid";
const char* heslo = "vaše heslo"; int xGyro, yGyro, zGyro, xAccl, yAccl, zAccl, xMag, yMag, zMag;
Server ESP8266 WebServer (80);
void handleroot ()
{data bez znaménka [6];
// Spusťte přenos I2C
Wire.beginTransmission (Addr_Gyro); // Vyberte řídicí registr 1 Wire.write (0x20); // Přenosová rychlost = 95 Hz, X, Y, osa Z povolena, zapnutí Wire.write (0x0F); // Zastavení přenosu I2C Wire.endTransmission ();
// Spusťte přenos I2C
Wire.beginTransmission (Addr_Gyro); // Vyberte řídicí registr 4 Wire.write (0x23); // Plné měřítko 2000 dps, průběžná aktualizace Wire.write (0x30); // Zastavení přenosu I2C Wire.endTransmission ();
// Spusťte přenos I2C
Wire.beginTransmission (Addr_Accl); // Vyberte řídicí registr 1 Wire.write (0x20); // Rychlost zrychlení = 100 Hz, X, Y, osa Z povolena, napájení Wire.write (0x67); // Zastavte přenos I2C na zařízení Wire.endTransmission ();
// Spusťte přenos I2C
Wire.beginTransmission (Addr_Accl); // Vyberte řídicí registr 2 Wire.write (0x21); // Výběr celého měřítka +/- 16g Wire.write (0x20); // Zastavení přenosu I2C Wire.endTransmission ();
// Spusťte přenos I2C
Wire.beginTransmission (Addr_Accl); // Vyberte řídicí registr 5 Wire.write (0x24); // Magnetické vysoké rozlišení, výstupní datový tok = 50 Hz Wire.write (0x70); // Zastavení přenosu I2C Wire.endTransmission ();
// Spusťte přenos I2C
Wire.beginTransmission (Addr_Accl); // Vyberte řídicí registr 6 Wire.write (0x25); // Magnetický plný rozsah +/- 12 gaussů Wire.write (0x60); // Zastavení přenosu I2C Wire.endTransmission ();
// Spusťte přenos I2C
Wire.beginTransmission (Addr_Accl); // Vyberte řídicí registr 7 Wire.write (0x26); // Normální režim, režim kontinuální magnetické konverze Wire.write (0x00); // Zastavení přenosu I2C Wire.endTransmission (); zpoždění (300);
for (int i = 0; i <6; i ++) {// Start I2C Transmission Wire.beginTransmission (Addr_Gyro); // Vyberte datový registr Wire.write ((40 + i)); // Zastavení přenosu I2C Wire.endTransmission ();
// Vyžádejte si 1 bajt dat
Wire.requestFrom (Addr_Gyro, 1);
// Přečíst 6 bajtů dat
// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb if (Wire.available () == 1) {data = Wire.read (); }}
// Převod dat
int xGyro = ((data [1] * 256) + data [0]); int yGyro = ((data [3] * 256) + data [2]); int zGyro = ((data [5] * 256) + data [4]);
for (int i = 0; i <6; i ++) {// Start I2C Transmission Wire.beginTransmission (Addr_Accl); // Vyberte datový registr Wire.write ((40 + i)); // Zastavení přenosu I2C Wire.endTransmission ();
// Vyžádejte si 1 bajt dat
Wire.requestFrom (Addr_Accl, 1);
// Přečíst 6 bajtů dat
// xAccl lsb, xAccl msb, yAccl lsb, yAccl msb // zAccl lsb, zAccl msb if (Wire.available () == 1) {data = Wire.read (); }}
// Převod dat
int xAccl = ((data [1] * 256) + data [0]); int yAccl = ((data [3] * 256) + data [2]); int zAccl = ((data [5] * 256) + data [4]);
for (int i = 0; i <6; i ++) {// Start I2C Transmission Wire.beginTransmission (Addr_Accl); // Vyberte datový registr Wire.write ((8 + i)); // Zastavení přenosu I2C Wire.endTransmission ();
// Vyžádejte si 1 bajt dat
Wire.requestFrom (Addr_Accl, 1);
// Přečíst 6 bajtů dat
// xMag lsb, xMag msb, yMag lsb, yMag msb // zMag lsb, zMag msb if (Wire.available () == 1) {data = Wire.read (); }}
// Převod dat
int xMag = ((data [1] * 256) + data [0]); int yMag = ((data [3] * 256) + data [2]); int zMag = ((data [5] * 256) + data [4]);
// Výstup dat na sériový monitor
Serial.print ("Osa otáčení X:"); Serial.println (xGyro); Serial.print ("Osa Y rotace:"); Serial.println (yGyro); Serial.print ("Osa Z rotace:"); Serial.println (zGyro); Serial.print ("Zrychlení v ose X:"); Serial.println (xAccl); Serial.print ("Zrychlení v ose Y:"); Serial.println (yAccl); Serial.print ("Zrychlení v ose Z:"); Serial.println (zAccl); Serial.print ("Magnetické pole v ose X:"); Serial.println (xMag); Serial.print ("Magnetické pole v ose Y:"); Serial.println (yMag); Serial.print („Magnetický soubor v ose Z:“); Serial.println (zMag);
// Výstup dat na webový server
server.sendContent ("
OBCHOD DCUBE
www.dcubestore.com
"" Mini modul senzoru LSM9DS0 I2C
);
server.sendContent ("
Osa otáčení X = " + řetězec (xGyro)); server.sendContent ("
Osa Y rotace = " + String (yGyro)); server.sendContent ("
Osa Z rotace = " + String (zGyro)); server.sendContent ("
Zrychlení v ose X = " + řetězec (xAccl)); server.sendContent ("
Zrychlení v ose Y = " + řetězec (yAccl)); server.sendContent ("
Zrychlení v ose Z = " + řetězec (zAccl)); server.sendContent ("
Magnetický soubor v ose X = " + řetězec (xMag)); server.sendContent ("
Magnetický soubor v ose Y = " + String (yMag)); server.sendContent ("
Magnetický soubor v ose Z = " + řetězec (zMag)); zpoždění (1000);}
neplatné nastavení ()
{// Inicializujte komunikaci I2C jako MASTER Wire.begin (2, 14); // Inicializace sériové komunikace, nastavení přenosové rychlosti = 115200 Serial.begin (115200);
// Připojte se k WiFi síti
WiFi.begin (ssid, heslo);
// Počkejte na připojení
while (WiFi.status ()! = WL_CONNECTED) {zpoždění (500); Serial.print ("."); } Serial.println (""); Serial.print („Připojeno k“); Serial.println (ssid);
// Získejte IP adresu ESP8266
Serial.print ("IP adresa:"); Serial.println (WiFi.localIP ());
// Spusťte server
server.on ("/", handleroot); server.begin (); Serial.println ("HTTP server spuštěn"); }
prázdná smyčka ()
{server.handleClient (); }
Krok 4: Práce s kódem
Nyní si stáhněte (nebo git pull) kód a otevřete jej v Arduino IDE.
Zkompilujte a nahrajte kód a podívejte se na výstup na Serial Monitor.
Poznámka: Před odesláním se ujistěte, že jste do kódu zadali svou síť SSID a heslo.
Zkopírujte IP adresu ESP8266 ze Serial Monitor a vložte ji do webového prohlížeče. Zobrazí se webová stránka s osou otáčení, zrychlení a čtením magnetického pole ve 3 osách.
Výstup senzoru na sériovém monitoru a webovém serveru je zobrazen na obrázku výše.
Krok 5: Aplikace a funkce
LSM9DS0 je systémový balíček, který obsahuje 3D digitální snímač lineární zrychlení, 3D digitální snímač úhlové rychlosti a 3D digitální magnetický senzor. Měřením těchto tří vlastností můžete získat velké množství znalostí o pohybu objektu. Měřením síly a směru magnetického pole Země magnetometrem můžete přiblížit svůj směr. Akcelerometr v telefonu může měřit směr gravitační síly a odhadovat orientaci (na výšku, na šířku, na plocho atd.). Kvadrokoptéry s vestavěnými gyroskopy mohou dávat pozor na náhlé převrácení nebo stoupání. Můžeme to použít v systému Global Positioning System (GPS).
Některé další aplikace zahrnují vnitřní navigaci, inteligentní uživatelská rozhraní, pokročilé rozpoznávání gest, vstupní zařízení pro hry a virtuální realitu atd.
S pomocí ESP8266 můžeme zvýšit jeho kapacitu na větší délku. Můžeme ovládat naše zařízení a monitorovat tam výkon našich stolních počítačů a mobilních zařízení. Data můžeme ukládat a spravovat online a studovat je kdykoli pro úpravy. Mezi další aplikace patří domácí automatizace, síťová síť, průmyslové bezdrátové ovládání, dětské chůvičky, senzorové sítě, nositelná elektronika, zařízení rozpoznávající polohu Wi-Fi, majáky pozičního systému Wi-Fi.
Krok 6: Zdroje, jak jít dále
Další informace o LSM9DS0 a ESP8266 naleznete v níže uvedených odkazech:
- Datový list snímače LSM9DS0
- Schéma zapojení LSM9DS0
- Datový list ESP8266