Sadržaj:

Orijentacija karte putem web servera: 6 koraka
Orijentacija karte putem web servera: 6 koraka

Video: Orijentacija karte putem web servera: 6 koraka

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

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 sa vašeg pametnog telefona ili radne površine. Ovo je luksuz koji svi žele posjedovati.

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

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

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

Počnimo nego.. !!

Korak 1: Potrebna nam je oprema..

Potrebna oprema.. !!
Potrebna oprema.. !!
Potrebna oprema.. !!
Potrebna oprema.. !!
Potrebna oprema.. !!
Potrebna oprema.. !!
Potrebna oprema.. !!
Potrebna oprema.. !!

1. Senzor LSM9DS0

Senzor 3 u 1 koji proizvodi STMicroelectronics, LSM9DS0 je sistem u paketu koji sadrži 3D digitalni senzor linearnog ubrzanja, 3D digitalni senzor kutne brzine i 3D digitalni magnetni senzor. LSM9DS0 ima linearnu skalu punog ubrzanja od ± 2 g/± 4 g/± 6 g/± 8 g/± 16 g, punu skalu magnetskog polja od ± 2/± 4/± 8/± 12 gausa i kutnu brzinu od ± 245 /± 500/± 2000 dps.

2. Adafruit Huzzah ESP8266

ESP8266 procesor kompanije Espressif je 80 MHz mikrokontroler sa punim WiFi prednjim dijelom (i kao klijent i kao pristupna tačka) i TCP/IP stogom sa DNS podrškom. ESP8266 je nevjerovatna platforma za razvoj IoT aplikacija. ESP8266 pruža zrelu platformu za praćenje 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, omogućavajući I²C sučelje.

4. I2C priključni 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 na njega postavite USB programator (sa ulazom prema I²C portu). Lagano pritisnite USB programator i završili smo s ovim korakom lako kao pita (pogledajte gornju sliku).

Povezivanje senzora i Adafruit Huzzah ESP8266 Uzmite senzor i spojite I²C kabel s njim. Za pravilan 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 sa 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 znatno olakšava povezivanje hardvera. Nema brige oko lemljenja pinova ESP -a na senzor ili čitanja dijagrama pinova i tablice s podacima. Možemo koristiti i raditi na više senzora istovremeno, samo trebate napraviti lanac. Bez ovih USB programatora plug and play 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 treba slijediti vezu uzemljenja (GND) između izlaza jednog uređaja i ulaza drugog uređaja.

Napajanje strujnog kola

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

Korak 3: Kodirajte

Kod
Kod

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 podesite 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, možete kopirati i radni ESP kod za ovaj senzor odavde:

// Distribuirano s licencom za slobodnu volju.// Koristite ga kako god ž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.

#include

#include

#include

#include

// 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 server (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, uključeno Wire.write (0x0F); // Zaustavljanje I2C prijenosa Wire.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); // Zaustavljanje I2C prijenosa Wire.endTransmission ();

// Pokretanje I2C prijenosa

Wire.beginTransmission (Addr_Accl); // Odabir upravljačkog registra 1 Wire.write (0x20); // Brzina prijenosa podataka ubrzanja = 100Hz, X, Y, Z-os omogućena, napajanje 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 izbor skale +/- 16g Wire.write (0x20); // Zaustavljanje I2C prijenosa Wire.endTransmission ();

// Pokretanje I2C prijenosa

Wire.beginTransmission (Addr_Accl); // Odabir upravljačkog registra 5 Wire.write (0x24); // Magnetska visoka rezolucija, brzina izlaznih podataka = 50Hz Wire.write (0x70); // Zaustavljanje I2C prijenosa Wire.endTransmission ();

// Pokretanje I2C prijenosa

Wire.beginTransmission (Addr_Accl); // Odabir upravljačkog registra 6 Wire.write (0x25); // Magnetska žica +/- 12 gauss Wire.write (0x60); // Zaustavljanje I2C prijenosa Wire.endTransmission ();

// Pokretanje I2C prijenosa

Wire.beginTransmission (Addr_Accl); // Odabir upravljačkog registra 7 Wire.write (0x26); // Normalan način rada, način neprekidne magnetske konverzije Wire.write (0x00); // Zaustavljanje I2C prijenosa Wire.endTransmission (); kašnjenje (300);

for (int i = 0; i <6; i ++) {// Pokretanje I2C prijenosa Wire.beginTransmission (Addr_Gyro); // Odabir registra podataka Wire.write ((40 + i)); // Zaustavljanje I2C prijenosa Wire.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 ++) {// Pokretanje I2C prijenosa Wire.beginTransmission (Addr_Accl); // Odabir registra podataka Wire.write ((40 + i)); // Zaustavljanje I2C prijenosa Wire.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 ako (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 ++) {// Pokretanje I2C prijenosa Wire.beginTransmission (Addr_Accl); // Odabir registra podataka Wire.write ((8 + i)); // Zaustavljanje I2C prijenosa Wire.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]);

// Izlaz podataka na serijski monitor

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

// Izlaženje podataka na web poslužitelj

server.sendContent ("

DCUBE STORE

www.dcubestore.com

"" LSM9DS0 senzorski I2C mini modul

);

server.sendContent ("

Os X rotacije = " + String (xGyro)); 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 X-Axis = " + 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); // Pokreće serijsku komunikaciju, postavlja brzinu prijenosa = 115200 Serial.begin (115200);

// Povezivanje na WiFi mrežu

WiFi.begin (ssid, lozinka);

// Pričekajte vezu

while (WiFi.status ()! = WL_CONNECTED) {kašnjenje (500); Serial.print ("."); } Serial.println (""); Serial.print ("Povezano sa"); Serial.println (ssid);

// Dobijte IP adresu 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 Code -a

Rad Kodeksa
Rad Kodeksa

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

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

Napomena: Prije učitavanja, 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čitavanjem magnetskog polja u 3 osi.

Izlaz senzora na serijskom monitoru i web serveru prikazan je na gornjoj slici.

Korak 5: Aplikacije i značajke

LSM9DS0 je sistem u paketu koji sadrži 3D digitalni linearni senzor ubrzanja, 3D digitalni senzor kutne brzine i 3D digitalni magnetni 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.). Četvorokopter sa ugrađenim žiroskopima može paziti na iznenadne preokrete ili nagibe. Ovo možemo koristiti u globalnom sistemu pozicioniranja (GPS).

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

Uz pomoć ESP8266 možemo povećati njegov kapacitet na veću dužinu. Možemo kontrolirati naše uređaje i tamo pratiti performanse sa svojih stolnih i mobilnih uređaja. Podatke možemo pohraniti i upravljati na mreži i proučiti ih u bilo kojem trenutku radi izmjena. Više aplikacija uključuje kućnu automatizaciju, mrežnu mrežu, industrijsko bežično upravljanje, monitore za bebe, senzorske mreže, nosivu elektroniku, Wi-Fi uređaje svjesne lokacije, svjetionike za pozicioniranje Wi-Fi sistema.

Korak 6: Resursi za napredak

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

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

Preporučuje se: