Sadržaj:

Orijentacija karte putem web poslužitelja: 6 koraka
Orijentacija karte putem web poslužitelja: 6 koraka

Video: Orijentacija karte putem web poslužitelja: 6 koraka

Video: Orijentacija karte putem web poslužitelja: 6 koraka
Video: 🚀 AMAZON 2.0 - ИНТЕРНЕТ МАГАЗИН с нуля за 6 часов [Next / React / Nest / PostgreSQL / Prisma / TS] 2024, Studeni
Anonim
Orijentacija karte putem web poslužitelja
Orijentacija karte putem web poslužitelja

Internet stvari (IoT) jedna je od trenutno popularnih tema na planeti. I, internetom brzo raste iz dana u dan. Internet stvari mijenja jednostavne domove u pametne, gdje se sve, od vaših svjetala do brava, može kontrolirati s vašeg pametnog telefona ili radne površine. Ovo je luksuz koji svatko želi posjedovati.

Uvijek se igramo s alatima koje imamo i nastavljamo raditi na idućem koraku svojih granica. Našim kupcima nastojimo dati viziju najnovijih tehnologija i ideja. Tako da svoj dom možete pretvoriti u pametne domove i uživati u okusu luksuza bez mnogo truda.

Danas razmišljamo o radu na jednoj od najvažnijih tema u IoT -u - Orijentacija digitalnih karata.

Izgradit ćemo web poslužitelj putem kojeg možemo pratiti kretanje bilo kojeg uređaja ili stvari (na vama je da odlučite koga želite špijunirati;)). Uvijek možete razmišljati o nadogradnji ovog projekta na sljedeću razinu s nekim izmjenama i ne zaboravite nam to reći u komentarima ispod.

Počnimo nego.. !!

Korak 1: Potrebna nam je oprema..

Oprema koja nam treba.. !!
Oprema koja nam treba.. !!
Oprema koja nam treba.. !!
Oprema koja nam treba.. !!
Oprema koja nam treba.. !!
Oprema koja nam treba.. !!
Oprema koja nam treba.. !!
Oprema koja nam treba.. !!

1. Senzor LSM9DS0

Senzor 3 u 1 koji proizvodi STMicroelectronics, LSM9DS0 sustav je u paketu koji sadrži 3D digitalni senzor linearnog ubrzanja, 3D digitalni osjetnik kutne brzine i 3D digitalni magnetski senzor. LSM9DS0 ima linearnu skalu punog ubrzanja od ± 2 g/± 4 g/± 6 g/± 8 g/± 16 g, magnetsko polje u punoj ljestvici od ± 2/± 4/± 8/± 12 gausa i kutnu brzinu od ± 245 /± 500/± 2000 dps.

2. Adafruit Huzzah ESP8266

ESP8266 procesor tvrtke Espressif je 80 MHz mikrokontroler s punim WiFi prednjim dijelom (i kao klijent i kao pristupna točka) i TCP/IP stogom s podrškom za DNS. ESP8266 nevjerojatna je platforma za razvoj IoT aplikacija. ESP8266 pruža zrelu platformu za nadzor i upravljanje aplikacijama koristeći Arduino Wire Language i Arduino IDE.

3. ESP8266 USB programator

njegov host adapter ESP8266 posebno je dizajnirao Dcube Store za Adafruit Huzzah verziju ESP8266, dopuštajući I²C sučelje.

4. I2C spojni kabel

5. Mini USB kabel

Napajanje mini USB kabelom idealan je izbor za napajanje Adafruit Huzzah ESP8266.

Korak 2: Hardverske veze

Hardverske veze
Hardverske veze
Hardverske veze
Hardverske veze
Hardverske veze
Hardverske veze

Općenito, povezivanje je najlakši dio ovog projekta. Slijedite upute i slike i ne biste trebali imati problema.

Prije svega uzmite Adafruit Huzzah ESP8266 i postavite USB programator (s ulazom prema I²C priključku) na njega. Lagano pritisnite USB programator i završili smo s ovim korakom lako kao pita (pogledajte gornju sliku).

Spajanje senzora i Adafruit Huzzah ESP8266Uzeti senzor i spojiti I²C kabel s njim. Za ispravan rad ovog kabela, imajte na umu da se I²C izlaz UVIJEK povezuje s I²C ulazom. Isto je trebalo slijediti i za Adafruit Huzzah ESP8266 s USB programatorom montiranim preko njega (vidi gornju sliku).

Uz pomoć ESP8266 USB programatora, vrlo je jednostavno programirati ESP. Sve što trebate učiniti je priključiti senzor u USB programator i spremni ste. Radije koristimo ovaj adapter jer uvelike olakšava povezivanje hardvera. Bez brige oko lemljenja pinova ESP -a na senzor ili čitanja dijagrama pinova i podatkovne tablice. Možemo koristiti i raditi na više senzora istovremeno, samo trebate napraviti lanac. Bez ovih plug and play USB programatora postoji veliki rizik od pogrešne veze. Loše ožičenje može ubiti vaš WiFi kao i vaš senzor.

Napomena: Smeđa žica uvijek bi trebala slijediti vezu uzemljenja (GND) između izlaza jednog uređaja i ulaza drugog uređaja.

Napajanje strujnog kruga

Uključite Mini USB kabel u utičnicu za napajanje Adafruit Huzzah ESP8266. Zapali i voila, spremni smo!

Korak 3: Kodirajte

Kodirati
Kodirati

ESP kod za senzor Adafruit Huzzah ESP8266 i LSM9DS0 dostupan je u našem github spremištu.

Prije nego prijeđete na kôd, svakako pročitajte upute date u datoteci Readme i postavite svoj Adafruit Huzzah ESP8266 prema njemu. Za postavljanje ESP -a bit će potrebno samo 5 minuta.

Kôd je dugačak, ali u najjednostavnijem obliku koji možete zamisliti i nećete imati poteškoća u razumijevanju.

Radi vaše udobnosti, ovdje možete kopirati i radni ESP kod za ovaj senzor:

// Distribuirano s licencom za slobodnu volju.// Koristite ga na koji god način želite, profitno ili besplatno, pod uvjetom da se uklapa u licence povezanih djela. // LSM9DSO // Ovaj kod je dizajniran za rad s TCS3414_I2CS I2C mini modulom dostupnim na dcubestore.com.

#uključi

#uključi

#uključi

#uključi

// LSM9DSO Gyro I2C adresa je 6A (106)

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

const char* ssid = "vaš ssid";

const char* password = "vaša lozinka"; int xGyro, yGyro, zGyro, xAccl, yAccl, zAccl, xMag, yMag, zMag;

ESP8266WebServer poslužitelj (80);

void handleroot ()

{nepotpisani int podaci [6];

// Pokretanje I2C prijenosa

Wire.beginTransmission (Addr_Gyro); // Odabir upravljačkog registra 1 Wire.write (0x20); // Brzina prijenosa podataka = 95Hz, X, Y, Z-os omogućena, napajanje na Wire.write (0x0F); // Zaustavi I2C prijenosnu žicu.endTransmission ();

// Pokretanje I2C prijenosa

Wire.beginTransmission (Addr_Gyro); // Odabir upravljačkog registra 4 Wire.write (0x23); // U punom opsegu 2000 dps, kontinuirano ažuriranje Wire.write (0x30); // Zaustavi I2C prijenosnu žicu.endTransmission ();

// Pokretanje I2C prijenosa

Wire.beginTransmission (Addr_Accl); // Odabir upravljačkog registra 1 Wire.write (0x20); // Brzina prijenosa podataka = 100Hz, X, Y, Z-os omogućena, uključeno Wire.write (0x67); // Zaustavljanje I2C prijenosa na uređaju Wire.endTransmission ();

// Pokretanje I2C prijenosa

Wire.beginTransmission (Addr_Accl); // Odabir upravljačkog registra 2 Wire.write (0x21); // Potpuni odabir ljestvice +/- 16g Wire.write (0x20); // Zaustavi I2C prijenosnu žicu.endTransmission ();

// Pokretanje I2C prijenosa

Wire.beginTransmission (Addr_Accl); // Odabir upravljačkog registra 5 Wire.write (0x24); // Magnetska visoka razlučivost, brzina izlaznih podataka = 50Hz Wire.write (0x70); // Zaustavi I2C prijenosnu žicu.endTransmission ();

// Pokretanje I2C prijenosa

Wire.beginTransmission (Addr_Accl); // Odabir upravljačkog registra 6 Wire.write (0x25); // Magnetska žica u opsegu +/- 12 gauss.write (0x60); // Zaustavi I2C prijenosnu žicu.endTransmission ();

// Pokretanje I2C prijenosa

Wire.beginTransmission (Addr_Accl); // Odabir upravljačkog registra 7 Wire.write (0x26); // Normalan način rada, kontinuirani magnetski način pretvorbe Wire.write (0x00); // Zaustavi I2C prijenosnu žicu.endTransmission (); kašnjenje (300);

for (int i = 0; i <6; i ++) {// Pokreni I2C prijenosnu žicu.beginTransmission (Addr_Gyro); // Odabir registra podataka Wire.write ((40 + i)); // Zaustavi I2C prijenosnu žicu.endTransmission ();

// Zatražite 1 bajt podataka

Wire.requestFrom (Addr_Gyro, 1);

// Očitavanje 6 bajtova podataka

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

// Pretvorimo podatke

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

for (int i = 0; i <6; i ++) {// Pokreni I2C prijenosnu žicu.beginTransmission (Addr_Accl); // Odabir registra podataka Wire.write ((40 + i)); // Zaustavi I2C prijenosnu žicu.endTransmission ();

// Zatražite 1 bajt podataka

Wire.requestFrom (Addr_Accl, 1);

// Očitavanje 6 bajtova podataka

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

// Pretvorimo podatke

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

for (int i = 0; i <6; i ++) {// Pokreni I2C prijenosnu žicu.beginTransmission (Addr_Accl); // Odabir registra podataka Wire.write ((8 + i)); // Zaustavi I2C prijenosnu žicu.endTransmission ();

// Zatražite 1 bajt podataka

Wire.requestFrom (Addr_Accl, 1);

// Očitavanje 6 bajtova podataka

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

// Pretvorimo podatke

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

// Izlaženje podataka na serijski monitor

Serial.print ("X-os rotacije:"); Serijski.println (xGiro); Serial.print ("Y-os rotacije:"); Serijski.println (yGyro); Serial.print ("Z-os rotacije:"); Serijski.println (zGiro); Serial.print ("Ubrzanje u osi X:"); Serijski.println (xAccl); Serial.print ("Ubrzanje u osi Y:"); Serial.println (yAccl); Serial.print ("Ubrzanje u osi Z:"); Serijski.println (zAccl); Serial.print ("Magnetsko polje u osi X:"); Serijski.println (xMag); Serial.print ("Magnetsko polje u osi Y:"); Serial.println (yMag); Serial.print ("Magnetsko polje u Z-osi:"); Serijski.println (zMag);

// Izlaženje podataka na web poslužitelj

server.sendContent ("

DCUBE TRGOVINA

www.dcubestore.com

"" LSM9DS0 senzorski I2C mini modul

);

server.sendContent ("

Os X rotacije = " + String (xGiro)); server.sendContent ("

Y-os rotacije = " + String (yGyro)); server.sendContent ("

Z-os rotacije = " + String (zGyro)); server.sendContent ("

Ubrzanje u osi X = " + String (xAccl)); server.sendContent ("

Ubrzanje u osi Y = " + String (yAccl)); server.sendContent ("

Ubrzanje u Z-osi = " + String (zAccl)); server.sendContent ("

Magnetsko polje u osi X = " + String (xMag)); server.sendContent ("

Magnetsko polje u Y-osi = " + String (yMag)); server.sendContent ("

Magnetsko polje u Z-osi = " + niz (zMag)); kašnjenje (1000);}

void setup ()

{// Inicializirajte I2C komunikaciju kao MASTER Wire.begin (2, 14); // Pokretanje serijske komunikacije, postavljena brzina prijenosa = 115200 Serial.begin (115200);

// Povezivanje na WiFi mrežu

WiFi.započni (ssid, lozinka);

// Pričekajte vezu

while (WiFi.status ()! = WL_CONNECTED) {odgoda (500); Serial.print ("."); } Serial.println (""); Serial.print ("Povezano s"); Serijski.println (ssid);

// Dohvaćanje IP adrese ESP8266

Serial.print ("IP adresa:"); Serial.println (WiFi.localIP ());

// Pokretanje poslužitelja

server.on ("/", handleroot); server.begin (); Serial.println ("HTTP poslužitelj pokrenut"); }

void loop ()

{server.handleClient (); }

Korak 4: Rad koda

Rad Code -a
Rad Code -a

Sada preuzmite (ili git povucite) kôd i otvorite ga u Arduino IDE -u.

Sastavite i prenesite kôd i pogledajte izlaz na Serial Monitor.

Napomena: Prije prijenosa obavezno unesite svoju SSID mrežu i lozinku u kôd.

Kopirajte IP adresu ESP8266 sa serijskog monitora i zalijepite je u svoj web preglednik. Vidjet ćete web stranicu s osi rotacije, ubrzanja i očitanjem magnetskog polja na 3 osi.

Izlaz senzora na serijskom monitoru i web poslužitelju prikazan je na gornjoj slici.

Korak 5: Aplikacije i značajke

LSM9DS0 sustav je u paketu koji sadrži 3D digitalni linearni senzor ubrzanja, 3D digitalni osjetnik kutne brzine i 3D digitalni magnetski senzor. Mjerenjem ova tri svojstva možete steći veliko znanje o kretanju objekta. Mjereći silu i smjer Zemljinog magnetskog polja magnetometrom, možete približiti svoj kurs. Akcelerometar u vašem telefonu može mjeriti smjer sile teže i procjenjivati orijentaciju (portret, pejzaž, stan itd.). Četvorokopteri s ugrađenim žiroskopima mogu paziti na iznenadne preokrete ili nagibe. To možemo koristiti u globalnom sustavu pozicioniranja (GPS).

Još neke aplikacije uključuju unutarnju navigaciju, pametna korisnička sučelja, napredno prepoznavanje gesta, uređaje za unos igara i virtualne stvarnosti itd.

Uz pomoć ESP8266 možemo povećati njegov kapacitet na veću duljinu. Možemo kontrolirati svoje uređaje i tamo pratiti performanse sa stolnih i mobilnih uređaja. Podatke možemo pohraniti i upravljati na mreži te ih proučiti u bilo kojem trenutku radi izmjena. Više aplikacija uključuje kućnu automatizaciju, mrežastu mrežu, industrijsko bežično upravljanje, dječje monitore, senzorske mreže, nosivu elektroniku, Wi-Fi uređaje koji prepoznaju lokaciju, svjetionike sustava Wi-Fi položaja.

Korak 6: Resursi za napredak

Za više informacija o LSM9DS0 i ESP8266, pogledajte donje veze:

  • Tehnički list senzora LSM9DS0
  • Dijagram ožičenja LSM9DS0
  • Tehnički list ESP8266

Preporučeni: