Orientace mapy prostřednictvím webového serveru: 6 kroků
Orientace mapy prostřednictvím webového serveru: 6 kroků
Anonim
Orientace mapy prostřednictvím webového serveru
Orientace mapy prostřednictvím webového serveru

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..

Potřebné vybavení.. !!
Potřebné vybavení.. !!
Potřebné vybavení.. !!
Potřebné vybavení.. !!
Potřebné vybavení.. !!
Potřebné vybavení.. !!
Potřebné vybavení.. !!
Potřebné vybavení.. !!

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í

Hardwarová připojení
Hardwarová připojení
Hardwarová připojení
Hardwarová připojení
Hardwarová připojení
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
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

Práce s kódem
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