Cuprins:

Orientarea hărții prin serverul web: 6 pași
Orientarea hărții prin serverul web: 6 pași

Video: Orientarea hărții prin serverul web: 6 pași

Video: Orientarea hărții prin serverul web: 6 pași
Video: 6 site-uri utile despre care trebuie să știi 2024, Noiembrie
Anonim
Orientare hartă prin server web
Orientare hartă prin server web

Internetul obiectelor (IoT) este unul dintre subiectele populare de pe planetă chiar acum. Și, crește rapid zi de zi cu Internetul. Internetul obiectelor transformă casele simple în case inteligente, unde totul, de la luminile tale la încuietori, poate fi controlat de pe smartphone sau desktop. Acesta este luxul pe care toată lumea vrea să îl dețină.

Ne jucăm întotdeauna cu instrumentele pe care le avem și continuăm să lucrăm la următorul pas al limitelor noastre. Încercăm să oferim clienților noștri o viziune a celor mai noi tehnologii și idei. Așadar, vă puteți transforma casa în case inteligente și vă puteți bucura de gustul luxului fără eforturi mari.

Astăzi ne gândim să lucrăm la unul dintre cele mai importante subiecte din IoT - Orientarea hărții digitale.

Vom construi un server web prin care putem monitoriza mișcările oricărui dispozitiv sau obiect (depinde de tine, pe care vrei să-l spionezi;)). Vă puteți gândi întotdeauna să actualizați acest proiect la nivelul următor cu unele modificări și nu uitați să ne spuneți în comentariile de mai jos.

Să începem decât.. !!

Pasul 1: Echipament de care avem nevoie..

Echipament de care avem nevoie.. !!
Echipament de care avem nevoie.. !!
Echipament de care avem nevoie.. !!
Echipament de care avem nevoie.. !!
Echipamente de care avem nevoie.. !!
Echipamente de care avem nevoie.. !!
Echipament de care avem nevoie.. !!
Echipament de care avem nevoie.. !!

1. Senzor LSM9DS0

Senzorul 3-în-1 fabricat de STMicroelectronics, LSM9DS0 este un sistem în pachet care conține un senzor de accelerație liniară digitală 3D, un senzor de rată unghiulară digitală 3D și un senzor magnetic digital 3D. LSM9DS0 are o scală completă de accelerație liniară de ± 2g / ± 4g / ± 6g / ± 8g / ± 16g, un câmp magnetic la scară completă de ± 2 / ± 4 / ± 8 / ± 12 gauss și o rată unghiulară de ± 245 / ± 500 / ± 2000 dps.

2. Adafruit Huzzah ESP8266

Procesorul ESP8266 de la Espressif este un microcontroler de 80 MHz cu front-end WiFi complet (atât ca client cât și ca punct de acces) și stivă TCP / IP cu suport DNS. ESP8266 este o platformă incredibilă pentru dezvoltarea aplicațiilor IoT. ESP8266 oferă o platformă matură pentru monitorizarea și controlul aplicațiilor folosind Arduino Wire Language și Arduino IDE.

3. Programator USB ESP8266

adaptorul său de gazdă ESP8266 a fost proiectat special de Dcube Store pentru versiunea Adafruit Huzzah a ESP8266, permițând interfața I²C.

4. Cablu de conectare I2C

5. Mini cablu USB

Cablul mini USB Sursa de alimentare este o alegere ideală pentru alimentarea Adafruit Huzzah ESP8266.

Pasul 2: Conexiuni hardware

Conexiuni hardware
Conexiuni hardware
Conexiuni hardware
Conexiuni hardware
Conexiuni hardware
Conexiuni hardware

În general, realizarea conexiunilor este cea mai ușoară parte a acestui proiect. Urmați instrucțiunile și imaginile și nu ar trebui să aveți probleme.

În primul rând, luați Adafruit Huzzah ESP8266 și așezați programatorul USB (cu portul I²C spre interior). Apăsați ușor programatorul USB și am terminat acest pas la fel de ușor ca plăcinta (Vedeți imaginea de mai sus).

Conexiunea senzorului și Adafruit Huzzah ESP8266 Luați senzorul și conectați cablul I²C cu acesta. Pentru funcționarea corectă a acestui cablu, vă rugăm să vă amintiți I2C Ieșirea se conectează ÎNTOTDEAUNA la intrarea I²C. Același lucru a trebuit urmat și pentru Adafruit Huzzah ESP8266 cu programatorul USB montat deasupra acestuia (a se vedea imaginea de mai sus).

Cu ajutorul programatorului ESP8266 USB, este foarte ușor să programați ESP. Tot ce trebuie să faceți este să conectați senzorul la programatorul USB și sunteți bine să mergeți. Preferăm să utilizăm acest adaptor, deoarece facilitează conectarea hardware-ului. Nu vă faceți griji cu privire la lipirea pinilor ESP la senzor sau la citirea diagramelor pinului și a fișei tehnice. Putem folosi și lucra simultan pe mai mulți senzori, trebuie doar să realizați un lanț. Fără aceste programe USB plug and play există un risc ridicat de a face o conexiune greșită. O conexiune defectă poate distruge atât wifi-ul, cât și senzorul.

Notă: firul maro trebuie să urmeze întotdeauna conexiunea la masă (GND) între ieșirea unui dispozitiv și intrarea unui alt dispozitiv.

Alimentarea circuitului

Conectați cablul Mini USB la mufa de alimentare a Adafruit Huzzah ESP8266. Aprinde-l și voila, suntem bine să plecăm!

Pasul 3: Cod

Cod
Cod

Codul ESP pentru senzorul Adafruit Huzzah ESP8266 și LSM9DS0 este disponibil în depozitul nostru github.

Înainte de a trece la cod, asigurați-vă că ați citit instrucțiunile date în fișierul Readme și configurați Adafruit Huzzah ESP8266 conform acestuia. Pentru a configura ESP, va dura doar 5 minute.

Codul este lung, dar este în cea mai simplă formă pe care ți-o poți imagina și nu vei avea nicio dificultate în a o înțelege.

Pentru comoditate, puteți copia și codul ESP funcțional pentru acest senzor și de aici:

// Distribuit cu o licență de voință liberă. // LSM9DSO // Acest cod este conceput pentru a funcționa cu Mini-modulul TCS3414_I2CS I2C disponibil de pe dcubestore.com.

#include

#include

#include

#include

// Adresa LSM9DSO Gyro I2C este 6A (106)

#define Addr_Gyro 0x6A // LSM9DSO Accl I2C address is 1E (30) #define Addr_Accl 0x1E

const char * ssid = "ssid-ul tău";

const char * password = "parola ta"; int xGyro, yGyro, zGyro, xAccl, yAccl, zAccl, xMag, yMag, zMag;

Server ESP8266WebServer (80);

void handleroot ()

{date int nesemnate [6];

// Porniți transmisia I2C

Wire.beginTransmission (Addr_Gyro); // Selectați registrul de control 1 Wire.write (0x20); // Rata de date = 95Hz, X, Y, Z-Axis activat, pornire Wire.write (0x0F); // Oprire I2C Transmission Wire.endTransmission ();

// Porniți transmisia I2C

Wire.beginTransmission (Addr_Gyro); // Selectați registrul de control 4 Wire.write (0x23); // Full-scale 2000 dps, actualizare continuă Wire.write (0x30); // Oprire I2C Transmission Wire.endTransmission ();

// Porniți transmisia I2C

Wire.beginTransmission (Addr_Accl); // Selectați registrul de control 1 Wire.write (0x20); // Rata de date de accelerare = 100Hz, X, Y, Z-Axis activat, pornire Wire.write (0x67); // Opriți transmisia I2C pe dispozitivul Wire.endTransmission ();

// Porniți transmisia I2C

Wire.beginTransmission (Addr_Accl); // Selectați registrul de control 2 Wire.write (0x21); // Selecție la scară completă +/- 16g Wire.write (0x20); // Oprire I2C Transmission Wire.endTransmission ();

// Porniți transmisia I2C

Wire.beginTransmission (Addr_Accl); // Selectați registrul de control 5 Wire.write (0x24); // Rezoluție magnetică înaltă, rata de ieșire a datelor = 50Hz Wire.write (0x70); // Oprire I2C Transmission Wire.endTransmission ();

// Porniți transmisia I2C

Wire.beginTransmission (Addr_Accl); // Selectați registrul de control 6 Wire.write (0x25); // Full-scale magnetice +/- 12 gauss Wire.write (0x60); // Oprire I2C Transmission Wire.endTransmission ();

// Porniți transmisia I2C

Wire.beginTransmission (Addr_Accl); // Selectați registrul de control 7 Wire.write (0x26); // Mod normal, modul de conversie magnetică continuă Wire.write (0x00); // Oprire I2C Transmission Wire.endTransmission (); întârziere (300);

for (int i = 0; i <6; i ++) {// Start I2C Transmission Wire.beginTransmission (Addr_Gyro); // Selectați registrul de date Wire.write ((40 + i)); // Oprire I2C Transmission Wire.endTransmission ();

// Solicitați 1 octet de date

Wire.requestFrom (Addr_Gyro, 1);

// Citiți 6 octeți de date

// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb if (Wire.available () == 1) {data = Wire.read (); }}

// Conversia datelor

int xGyro = ((data [1] * 256) + data [0]); int yGyro = ((date [3] * 256) + date [2]); int zGyro = ((data [5] * 256) + data [4]);

for (int i = 0; i <6; i ++) {// Start I2C Transmission Wire.beginTransmission (Addr_Accl); // Selectați registrul de date Wire.write ((40 + i)); // Oprire I2C Transmission Wire.endTransmission ();

// Solicitați 1 octet de date

Wire.requestFrom (Addr_Accl, 1);

// Citiți 6 octeți de date

// xAccl lsb, xAccl msb, yAccl lsb, yAccl msb // zAccl lsb, zAccl msb if (Wire.available () == 1) {data = Wire.read (); }}

// Conversia datelor

int xAccl = ((date [1] * 256) + date [0]); int yAccl = ((date [3] * 256) + date [2]); int zAccl = ((date [5] * 256) + date [4]);

for (int i = 0; i <6; i ++) {// Start I2C Transmission Wire.beginTransmission (Addr_Accl); // Selectați registrul de date Wire.write ((8 + i)); // Oprire I2C Transmission Wire.endTransmission ();

// Solicitați 1 octet de date

Wire.requestFrom (Addr_Accl, 1);

// Citiți 6 octeți de date

// xMag lsb, xMag msb, yMag lsb, yMag msb // zMag lsb, zMag msb if (Wire.available () == 1) {data = Wire.read (); }}

// Conversia datelor

int xMag = ((date [1] * 256) + date [0]); int yMag = ((date [3] * 256) + date [2]); int zMag = ((date [5] * 256) + date [4]);

// Ieșire date pe monitorul serial

Serial.print ("Axa X de rotație:"); Serial.println (xGyro); Serial.print ("Axa Y de rotație:"); Serial.println (yGyro); Serial.print ("Axa Z de rotație:"); Serial.println (zGyro); Serial.print ("Accelerare în axa X:"); Serial.println (xAccl); Serial.print ("Accelerare în axa Y:"); Serial.println (yAccl); Serial.print ("Accelerare în axa Z:"); Serial.println (zAccl); Serial.print ("Câmp magnetic în axa X:"); Serial.println (xMag); Serial.print ("Câmp magnetic în axa Y:"); Serial.println (yMag); Serial.print ("Magnetic depus în axa Z:"); Serial.println (zMag);

// Ieșire date pe serverul web

server.sendContent („

MAGAZIN DCUBE

www.dcubestore.com

"" LSM9DS0 Sensor I2C Mini Module

);

server.sendContent („

X-Axis of rotation = "+ String (xGyro)); server.sendContent ("

Axa Y de rotație = "+ Șir (yGyro)); server.sendContent ("

Z-Axis of rotation = "+ String (zGyro)); server.sendContent ("

Accelerare în X-Axis = "+ String (xAccl)); server.sendContent ("

Accelerare în Axa Y = "+ Șir (yAccl)); server.sendContent ("

Accelerare în Z-Axis = "+ String (zAccl)); server.sendContent ("

Magnetic depus în X-Axis = "+ String (xMag)); server.sendContent ("

Magnetic depus în Axa Y = "+ Șir (yMag)); server.sendContent ("

Magnetic depus în Z-Axis = "+ String (zMag)); întârziere (1000);}

configurare nulă ()

{// Inițializați comunicarea I2C ca MASTER Wire.begin (2, 14); // Inițializați comunicarea serială, setați baud rate = 115200 Serial.begin (115200);

// Conectați-vă la rețeaua WiFi

WiFi.begin (ssid, parolă);

// Așteptați conexiunea

while (WiFi.status ()! = WL_CONNECTED) {întârziere (500); Serial.print ("."); } Serial.println (""); Serial.print („Conectat la”); Serial.println (ssid);

// Obțineți adresa IP a ESP8266

Serial.print („Adresă IP:”); Serial.println (WiFi.localIP ());

// Porniți serverul

server.on ("/", handleroot); server.begin (); Serial.println ("Server HTTP pornit"); }

bucla nulă ()

{server.handleClient (); }

Pasul 4: Lucrarea codului

Funcționarea codului
Funcționarea codului

Acum, descărcați (sau git pull) codul și deschideți-l în ID-ul Arduino.

Compilați și încărcați codul și vedeți ieșirea pe Serial Monitor.

Notă: Înainte de încărcare, asigurați-vă că ați introdus rețeaua și parola SSID în cod.

Copiați adresa IP a ESP8266 de pe Serial Monitor și lipiți-o în browserul dvs. web. Veți vedea o pagină web cu axa de rotație, accelerație și citirea câmpului magnetic în axa 3.

Ieșirea senzorului pe Serial Monitor și Web Server este prezentată în imaginea de mai sus.

Pasul 5: Aplicații și caracteristici

LSM9DS0 este un sistem în pachet, care conține un senzor de accelerație liniară digitală 3D, un senzor de rată unghiulară digitală 3D și un senzor magnetic digital 3D. Măsurând aceste trei proprietăți, puteți obține o mulțime de cunoștințe despre mișcarea unui obiect. Măsurând forța și direcția câmpului magnetic al Pământului cu un magnetometru, vă puteți aproxima poziția. Un accelerometru din telefon poate măsura direcția forței de greutate și poate estima orientarea (portret, peisaj, plat etc.). Quadcopterele cu giroscopuri încorporate pot avea grijă de rostogoliri bruște sau pitch-uri. Putem folosi acest lucru în sistemul de poziționare globală (GPS).

Unele aplicații suplimentare includ navigație interioară, interfețe inteligente de utilizator, recunoaștere avansată a gesturilor, dispozitive de intrare pentru jocuri și realitate virtuală etc.

Cu ajutorul ESP8266, putem crește capacitatea acestuia la o lungime mai mare. Ne putem controla aparatele și monitoriza performanțele de la desktop-uri și dispozitive mobile. Putem stoca și gestiona datele online și le putem studia oricând pentru modificări. Mai multe aplicații includ Home Automation, rețea Mesh, control industrial fără fir, monitoare pentru bebeluși, rețele de senzori, electronice portabile, dispozitive Wi-Fi în funcție de locație, balize de sistem de poziționare Wi-Fi.

Pasul 6: Resurse pentru a merge mai departe

Pentru mai multe informații despre LSM9DS0 și ESP8266, consultați linkurile de mai jos:

  • Foaie de date senzor LSM9DS0
  • Schema de cablare LSM9DS0
  • Foaie de date ESP8266

Recomandat: