INHOUDSOPGAWE:

Kaartoriëntasie via die webbediener: 6 stappe
Kaartoriëntasie via die webbediener: 6 stappe

Video: Kaartoriëntasie via die webbediener: 6 stappe

Video: Kaartoriëntasie via die webbediener: 6 stappe
Video: Йога для начинающих дома с Алиной Anandee #2. Здоровое гибкое тело за 40 минут. Универсальная йога. 2024, November
Anonim
Kaartoriëntasie via die webbediener
Kaartoriëntasie via die webbediener

Internet of Things, (IoT) is tans een van die gewilde onderwerpe op die planeet. En met die internet groei dit vinnig van dag tot dag. Die Internet of Things verander eenvoudige huise in slim huise, waar alles van u ligte tot u slotte vanaf u slimfoon of lessenaar beheer kan word. Dit is die luukse wat almal wil besit.

Ons speel altyd met die gereedskap wat ons het, en ons hou aan om na die volgende stap van ons perke te gaan. Ons probeer ons kliënte 'n visie gee van die nuutste tegnologie en idees. Sodat u u huis in slim huise kan verander en sonder veel moeite die luukse smaak kan geniet.

Vandag dink ons daaraan om te werk aan een van die belangrikste onderwerpe in IoT - Digitale kaartoriëntasie.

Ons bou 'n webbediener waardeur ons die bewegings van enige toestel of ding kan monitor (dit is aan u, wie u wil bespied;)). U kan altyd daaraan dink om hierdie projek met 'n paar wysigings na die volgende vlak op te gradeer, en vergeet ons nie om dit in die kommentaar hieronder te vertel nie.

Kom ons begin as.. !!

Stap 1: Toerusting wat ons benodig..

Toerusting wat ons benodig.. !!
Toerusting wat ons benodig.. !!
Toerusting wat ons benodig.. !!
Toerusting wat ons benodig.. !!
Toerusting wat ons benodig.. !!
Toerusting wat ons benodig.. !!
Toerusting wat ons benodig.. !!
Toerusting wat ons benodig.. !!

1. LSM9DS0 Sensor

Die 3-in-1-sensor vervaardig deur STMicroelectronics, die LSM9DS0, is 'n stelsel-in-pakket met 'n 3D digitale lineêre versnellingssensor, 'n 3D digitale hoekfreksensor en 'n 3D digitale magnetiese sensor. Die LSM9DS0 het 'n lineêre versnelling volskaal van ± 2g/± 4g/± 6g/± 8g/± 16g, 'n magnetiese veld volskaal van ± 2/± 4/± 8/± 12 gauss en 'n hoeksnelheid van ± 245 /± 500/± 2000 dps.

2. Adafruit Huzzah ESP8266

Die ESP8266-verwerker van Espressif is 'n 80 MHz mikrobeheerder met 'n volledige WiFi-voorkant (beide as kliënt en toegangspunt) en ook TCP/IP-stapel met DNS-ondersteuning. Die ESP8266 is 'n ongelooflike platform vir die ontwikkeling van IoT -toepassings. Die ESP8266 bied 'n volwasse platform vir die monitering en beheer van toepassings met behulp van die Arduino Wire Language en die Arduino IDE.

3. ESP8266 USB programmeerder

sy ESP8266 -gasheeradapter is spesifiek ontwerp deur die Dcube Store vir die Adafruit Huzzah -weergawe van die ESP8266, wat die I²C -koppelvlak moontlik maak.

4. I2C -aansluitkabel

5. Mini USB -kabel

Die mini -USB -kragtoevoer is 'n ideale keuse vir die voeding van die Adafruit Huzzah ESP8266.

Stap 2: Hardewareverbindings

Hardewareverbindings
Hardewareverbindings
Hardewareverbindings
Hardewareverbindings
Hardewareverbindings
Hardewareverbindings

Oor die algemeen is die maak van verbindings die maklikste deel van hierdie projek. Volg die instruksies en beelde, en u behoort geen probleme te hê nie.

Neem eerstens die Adafruit Huzzah ESP8266 en plaas die USB -programmeerder (met inwaarts gerigte I²C -poort) daarop. Druk die USB -programmeerder saggies, en ons is klaar met hierdie stap so maklik soos 'n taart (sien die prent hierbo).

Aansluiting van die sensor en Adafruit Huzzah ESP8266 Neem die sensor en verbind die I²C -kabel daarmee. Vir 'n behoorlike werking van hierdie kabel, moet u onthou dat I²C Output ALTYD aansluit by die I²C Input. Dieselfde moes gevolg word vir die Adafruit Huzzah ESP8266 met die USB -programmeerder daaroor gemonteer (sien die prent hierbo).

Met die hulp van ESP8266 USB Programmer is dit baie maklik om ESP te programmeer. Al wat u hoef te doen is om die sensor in 'n USB -programmeerder aan te sluit, en u is gereed. Ons verkies om hierdie adapter te gebruik, want dit maak dit baie makliker om die hardeware aan te sluit. U hoef nie bekommerd te wees oor die soldeer van die ESP -penne aan die sensor of om die pen -diagramme en datablad te lees nie. Ons kan verskeie sensors gelyktydig gebruik en werk; u hoef net 'n ketting te maak. Sonder hierdie plug -and -play USB -programmeerder is daar 'n groot risiko om 'n verkeerde verbinding te maak. 'N Slegte bedrading kan jou wifi sowel as jou sensor doodmaak.

Opmerking: die bruin draad moet altyd die grondverbinding (GND) volg tussen die uitset van een toestel en die ingang van 'n ander toestel.

Die krag van die stroombaan

Steek die Mini USB -kabel in die kragaansluiting van Adafruit Huzzah ESP8266. Verlig dit en voila, ons is gereed om te gaan!

Stap 3: Kodeer

Kode
Kode

Die ESP -kode vir die Adafruit Huzzah ESP8266- en LSM9DS0 -sensor is beskikbaar op ons github -bewaarplek.

Voordat u na die kode gaan, moet u die instruksies in die Readme -lêer lees en u Adafruit Huzzah ESP8266 daarvolgens opstel. Dit sal slegs 5 minute neem om die ESP op te stel.

Die kode is lank, maar dit is in die eenvoudigste vorm wat u kan voorstel, en u sal dit nie moeilik vind om dit te verstaan nie.

Vir u gemak kan u die werkende ESP -kode vir hierdie sensor ook hier kopieer:

// Versprei met 'n vrywillige lisensie. // Gebruik dit op enige manier wat u wil, wins of gratis, mits dit in die lisensies van die gepaardgaande werke pas. // LSM9DSO // Hierdie kode is ontwerp om te werk met die TCS3414_I2CS I2C Mini Module beskikbaar by dcubestore.com.

#insluit

#insluit

#insluit

#insluit

// LSM9DSO Gyro I2C adres is 6A (106)

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

const char* ssid = "jou ssid";

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

ESP8266WebServer -bediener (80);

leë hanteerdervoet ()

{ongetekende int data [6];

// Begin I2C -oordrag

Wire.beginTransmission (Addr_Gyro); // Kies kontroleregister 1 Wire.write (0x20); // Datatempo = 95Hz, X, Y, Z-as ingeskakel, skakel Wire.write aan (0x0F); // Stop I2C Transmission Wire.endTransmission ();

// Begin I2C -oordrag

Wire.beginTransmission (Addr_Gyro); // Kies kontroleregister 4 Wire.write (0x23); // Volskaalse 2000 dps, deurlopende opdatering van Wire.write (0x30); // Stop I2C Transmission Wire.endTransmission ();

// Begin I2C -oordrag

Wire.beginTransmission (Addr_Accl); // Kies kontroleregister 1 Wire.write (0x20); // Versnellingsdatatempo = 100Hz, X, Y, Z-as aangeskakel, skakel Wire.write aan (0x67); // Stop I2C -oordrag op die toestel Wire.endTransmission ();

// Begin I2C -oordrag

Wire.beginTransmission (Addr_Accl); // Kies kontroleregister 2 Wire.write (0x21); // Volskaalse keuse +/- 16g Wire.write (0x20); // Stop I2C Transmission Wire.endTransmission ();

// Begin I2C -oordrag

Wire.beginTransmission (Addr_Accl); // Kies kontroleregister 5 Wire.write (0x24); // Magnetiese hoë resolusie, uitsetdatatempo = 50Hz Wire.write (0x70); // Stop I2C Transmission Wire.endTransmission ();

// Begin I2C -oordrag

Wire.beginTransmission (Addr_Accl); // Kies kontroleregister 6 Wire.write (0x25); // Magnetiese volgrootte +/- 12 gauss Wire.write (0x60); // Stop I2C Transmission Wire.endTransmission ();

// Begin I2C -oordrag

Wire.beginTransmission (Addr_Accl); // Kies kontroleregister 7 Wire.write (0x26); // Normale modus, magnetiese deurlopende omskakelingsmodus Wire.write (0x00); // Stop I2C Transmission Wire.endTransmission (); vertraging (300);

for (int i = 0; i <6; i ++) {// Start I2C Transmission Wire.beginTransmission (Addr_Gyro); // Kies dataregister Wire.write ((40 + i)); // Stop I2C Transmission Wire.endTransmission ();

// Versoek 1 greep data

Wire.requestFrom (Addr_Gyro, 1);

// Lees 6 grepe data

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

// Skakel die data om

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); // Kies dataregister Wire.write ((40 + i)); // Stop I2C Transmission Wire.endTransmission ();

// Versoek 1 greep data

Wire.requestFrom (Addr_Accl, 1);

// Lees 6 grepe data

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

// Skakel die data om

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); // Kies dataregister Wire.write ((8 + i)); // Stop I2C Transmission Wire.endTransmission ();

// Versoek 1 greep data

Wire.requestFrom (Addr_Accl, 1);

// Lees 6 grepe data

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

// Skakel die data om

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

// Uitset data na die seriële monitor

Serial.print ("X-rotasie-as:"); Serial.println (xGyro); Serial.print ("Y-rotasie-as:"); Serial.println (yGyro); Serial.print ("Z-rotasie-as:"); Serial.println (zGyro); Serial.print ("Versnelling in X-as:"); Serial.println (xAccl); Serial.print ("Versnelling in Y-as:"); Serial.println (yAccl); Serial.print ("Versnelling in Z-as:"); Serial.println (zAccl); Serial.print ("Magnetiese veld in X-as:"); Serial.println (xMag); Serial.print ("Magnetiese veld in Y-as:"); Serial.println (yMag); Serial.print ("Magneties ingedien in Z-as:"); Serial.println (zMag);

// Uitset data na die webbediener

server.sendContent ("

DCUBE WINKEL

www.dcubestore.com

"" LSM9DS0 Sensor I2C Mini Module

);

server.sendContent ("

X-rotasie-as = " + String (xGyro)); server.sendContent ("

Y-rotasie-as = " + String (yGyro)); server.sendContent ("

Z-rotasie-as = " + String (zGyro)); server.sendContent ("

Versnelling in X-as = " + String (xAccl)); server.sendContent ("

Versnelling in Y-as = " + String (yAccl)); server.sendContent ("

Versnelling in Z-as = " + String (zAccl)); server.sendContent ("

Magneties geliasseer in X-as = " + String (xMag)); server.sendContent ("

Magneties geliasseer in Y-as = " + String (yMag)); server.sendContent ("

Magneties geliasseer in Z-as = " + string (zMag)); vertraging (1000);}

leemte opstelling ()

{// Initialiseer I2C -kommunikasie as MASTER Wire.begin (2, 14); // Initialiseer seriële kommunikasie, stel baud rate = 115200 Serial.begin (115200);

// Koppel aan WiFi -netwerk

WiFi.begin (ssid, wagwoord);

// Wag vir verbinding

terwyl (WiFi.status ()! = WL_CONNECTED) {vertraging (500); Serial.print ("."); } Serial.println (""); Serial.print ("gekoppel aan"); Serial.println (ssid);

// Kry die IP -adres van ESP8266

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

// Begin die bediener

server.on ("/", handleroot); bediener.begin (); Serial.println ("HTTP -bediener begin"); }

leemte lus ()

{server.handleClient (); }

Stap 4: Werk van kode

Werk van kode
Werk van kode

Laai nou die kode af (of trek uit) en maak dit oop in die Arduino IDE.

Stel die kode op en laai dit op en sien die uitset op Serial Monitor.

Let wel: Maak seker dat u u SSID -netwerk en wagwoord in die kode invoer voordat u dit oplaai.

Kopieer die IP -adres van ESP8266 van die Serial Monitor en plak dit in u webblaaier. U sal 'n webblad met rotasie-as, versnelling en magnetiese veldlesing in die 3-as sien.

Die uitset van die sensor op Serial Monitor en Web Server word op die foto hierbo getoon.

Stap 5: Toepassings en funksies

Die LSM9DS0 is 'n stelsel-in-pakket met 'n 3D digitale lineêre versnellingssensor, 'n 3D digitale hoekfrekvensor en 'n 3D digitale magnetiese sensor. Deur hierdie drie eienskappe te meet, kan u baie kennis opdoen oor die beweging van 'n voorwerp. Deur die krag en rigting van die aarde se magnetiese veld met 'n magnetometer te meet, kan u u koers benader. 'N Versnellingsmeter in u telefoon kan die rigting van die gravitasiekrag meet en die oriëntasie skat (portret, landskap, plat, ens.). Quadcopters met ingeboude gyroskope kan op die uitkyk wees vir skielike rolle of toonhoogtes. Ons kan dit in die Global Positioning System (GPS) gebruik.

Nog 'n paar toepassings sluit in binnenshuise navigasie, slim gebruikerskoppelvlakke, gevorderde gebaarherkenning, gaming- en virtuele realiteit -invoertoestelle, ens.

Met behulp van ESP8266 kan ons die kapasiteit tot 'n groter lengte vergroot. Ons kan ons toestelle beheer en die prestasie van ons rekenaars en mobiele toestelle monitor. Ons kan die data aanlyn stoor en bestuur en dit altyd bestudeer vir wysigings. Meer toepassings sluit in tuisautomatisering, netwerknetwerk, industriële draadlose beheer, babamonitors, sensornetwerke, drabare elektronika, toestelle wat Wi-Fi-ligging bewus is, bakens vir Wi-Fi-posisiesisteem.

Stap 6: Hulpbronne om verder te gaan

Vir meer inligting oor LSM9DS0 en ESP8266, kyk na die onderstaande skakels:

  • LSM9DS0 Sensorgegevensblad
  • Bedradingsdiagram LSM9DS0
  • ESP8266 Gegevensblad

Aanbeveel: