Քարտեզի կողմնորոշում վեբ սերվերի միջոցով. 6 քայլ
Քարտեզի կողմնորոշում վեբ սերվերի միջոցով. 6 քայլ
Anonim
Վեբ սերվերի միջոցով քարտեզի կողմնորոշում
Վեբ սերվերի միջոցով քարտեզի կողմնորոշում

Իրերի ինտերնետը (IoT) այժմ մոլորակի ամենահայտնի թեմաներից է: Եվ, ինտերնետի շնորհիվ այն օրեցօր արագորեն աճում է: Իրերի ինտերնետը պարզ տները վերածում է խելացի տների, որտեղ ամեն ինչ ՝ ձեր լույսերից մինչև կողպեքներ, կարելի է կառավարել սմարթֆոնից կամ աշխատասեղանից: Սա այն շքեղությունն է, որին բոլորը ցանկանում են տիրանալ:

Մենք միշտ խաղում ենք ձեռք բերված գործիքների հետ և շարունակում աշխատել մեր սահմանների հաջորդ քայլին գնալու ուղղությամբ: Մենք փորձում ենք մեր հաճախորդին տալ վերջին տեխնոլոգիաների և գաղափարների տեսլականը: Այսպիսով, որպեսզի կարողանաք ձեր տունը վերածել խելացի տների և վայելել շքեղության համը ՝ առանց մեծ ջանքերի:

Այսօր մենք մտածում ենք IoT- ի ամենակարևոր թեմաներից մեկի `թվային քարտեզի կողմնորոշման վրա աշխատելու մասին:

Մենք կառուցելու ենք վեբ սերվեր, որի միջոցով կարող ենք վերահսկել ցանկացած սարքի կամ իրի շարժումները (դա ձեզն է, ում ուզում եք լրտեսել;)): Դուք միշտ կարող եք մտածել այս նախագիծը հաջորդ մակարդակի բարձրացնելու մասին ՝ որոշ փոփոխություններով և մի մոռացեք մեզ ասել ստորև բերված մեկնաբանություններում:

Սկսենք, քան.. !!

Քայլ 1: Մեզ անհրաժեշտ սարքավորումներ..

Մեզ անհրաժեշտ սարքավորումներ.. !!
Մեզ անհրաժեշտ սարքավորումներ.. !!
Մեզ անհրաժեշտ սարքավորումներ.. !!
Մեզ անհրաժեշտ սարքավորումներ.. !!
Մեզ անհրաժեշտ սարքավորումներ.. !!
Մեզ անհրաժեշտ սարքավորումներ.. !!
Մեզ անհրաժեշտ սարքավորումներ.. !!
Մեզ անհրաժեշտ սարքավորումներ.. !!

1. LSM9DS0 ցուցիչ

3-ը 1-ում արտադրվող STMicroelectronics- ի կողմից, LSM9DS0- ը համակարգային փաթեթ է, որն ունի 3D թվային գծային արագացման տվիչ, 3D թվային անկյունային արագության տվիչ և 3D թվային մագնիսական տվիչ: LSM9DS0- ն ունի գծային արագացման ամբողջական մասշտաբ ՝ g 2 գ/± 4 գ/± 6 գ/± 8 գ/g 16 գ, մագնիսական դաշտ ՝ scale 2/± 4/± 8/± 12 գաուսի լայնածավալ մասշտաբ և անկյունային արագություն ՝ 245 /± 500/± 2000 dps.

2. Adafruit Huzzah ESP8266

ESP8266 պրոցեսորը Espressif- ից 80 ՄՀց միկրոկոնտրոլեր է `լիարժեք WiFi- ի առջևով (ինչպես հաճախորդ, այնպես էլ մուտքի կետ) և TCP/IP կույտ` DNS աջակցությամբ, ինչպես նաև: ESP8266- ը անհավանական հարթակ է IoT հավելվածի մշակման համար: ESP8266- ը տրամադրում է հասուն հարթակ `Arduino Wire Language- ի և Arduino IDE- ի միջոցով ծրագրերի մոնիտորինգի և վերահսկման համար:

3. ESP8266 USB ծրագրավորող

նրա ESP8266 ընդունիչ ադապտերը հատուկ նախագծվել է Dcube Store- ի կողմից ESP8266- ի Adafruit Huzzah տարբերակի համար `թույլ տալով I²C ինտերֆեյսը:

4. I2C միացնող մալուխ

5. Մինի USB մալուխ

Մինի USB մալուխը Սնուցման սարքը իդեալական ընտրություն է Adafruit Huzzah ESP8266- ը սնուցելու համար:

Քայլ 2: Սարքավորման միացումներ

Սարքավորումների միացումներ
Սարքավորումների միացումներ
Սարքավորումների միացումներ
Սարքավորումների միացումներ
Սարքավորումների միացումներ
Սարքավորումների միացումներ

Ընդհանրապես, կապեր հաստատելն այս նախագծի ամենահեշտ մասն է: Հետևեք հրահանգներին և պատկերներին, և դուք չպետք է խնդիրներ ունենաք:

Առաջին հերթին վերցրեք Adafruit Huzzah ESP8266- ը և դրա վրա տեղադրեք USB ծրագրավորողը (Inward Facing I²C նավահանգստով): Մեղմորեն սեղմեք USB ծրագրավորողի վրա, և մենք ավարտեցինք այս քայլը նույնքան հեշտ, որքան կարկանդակը (տե՛ս վերը նկարը):

Սենսորային և Adafruit Huzzah ESP8266 միացում Վերցրեք սենսորը և միացրեք I²C մալուխը դրա հետ: Այս մալուխի ճիշտ շահագործման համար հիշեք, որ I²C ելքը ՄԻՇՏ միանում է I²C մուտքին: Նույնը պետք է արվեր Adafruit Huzzah ESP8266- ի դեպքում, որի վրա տեղադրված էր USB ծրագրավորողը (տե՛ս վերը նկարը):

ESP8266 USB ծրագրավորողի օգնությամբ շատ հեշտ է ծրագրավորել ESP: Մնում է սենսորը միացնել USB ծրագրավորողին, և ամեն ինչ լավ է: Մենք նախընտրում ենք օգտագործել այս ադապտերը, քանի որ դա շատ ավելի հեշտ է դարձնում սարքավորումների միացումը: Մի անհանգստացեք ESP- ի կապանքները սենսորին միացնելու կամ քորոցային դիագրամներն ու տվյալների թերթիկը կարդալու մասին: Մենք կարող ենք միաժամանակ օգտագործել և աշխատել բազմաթիվ սենսորների վրա, պարզապես անհրաժեշտ է շղթա պատրաստել: Առանց այս USB ծրագրավորողի միացման և նվագարկման, սխալ կապ ստեղծելու մեծ վտանգ կա: Վատ էլեկտրագծերը կարող են սպանել ձեր WiFi- ն, ինչպես նաև ձեր տվիչը:

Նշում. Շագանակագույն մետաղալարը միշտ պետք է հետևի Ground (GND) կապին մի սարքի ելքի և մեկ այլ սարքի մուտքի միջև:

Շղթայի սնուցումը

Միացրեք Mini USB մալուխը Adafruit Huzzah ESP8266 հոսանքի վարդակին: Լուսավորիր և վոայլա, մենք լավ ենք գնում:

Քայլ 3: Կոդ

Կոդ
Կոդ

Adafruit Huzzah ESP8266 և LSM9DS0 տվիչների համար ESP ծածկագիրը հասանելի է մեր github պահոցում:

Նախքան ծածկագրին անցնելը, համոզվեք, որ կարդացել եք Readme ֆայլում տրված հրահանգները և ըստ դրա կազմաձևել ձեր Adafruit Huzzah ESP8266- ը: ESP- ի ստեղծման համար կպահանջվի ընդամենը 5 րոպե:

Կոդը երկար է, բայց այն ամենապարզ ձևով, որը դուք կարող եք պատկերացնել, և դժվարությամբ չեք հասկանա այն:

Ձեր հարմարության համար կարող եք պատճենել այս սենսորի աշխատանքային ESP ծածկագիրը նաև այստեղից.

// Տարածված է ազատ կամքի լիցենզիայի միջոցով: // LSM9DSO // Այս ծածկագիրը նախատեսված է dcubestore.com- ից հասանելի TCS3414_I2CS I2C մինի մոդուլի հետ աշխատելու համար:

#ներառում

#ներառում

#ներառում

#ներառում

// LSM9DSO Gyro I2C հասցեն է 6A (106)

#սահմանել Addr_Gyro 0x6A // LSM9DSO Accl I2C հասցեն ՝ 1E (30) #սահմանել Addr_Accl 0x1E

const char* ssid = "քո ssid";

const char* գաղտնաբառ = "ձեր գաղտնաբառը"; int xGyro, yGyro, zGyro, xAccl, yAccl, zAccl, xMag, yMag, zMag;

ESP8266WebServer սերվեր (80);

անվավեր handroot ()

{անստորագիր int տվյալներ [6];

// Սկսել I2C փոխանցումը

Wire.beginTransmission (Addr_Gyro); // Ընտրեք կառավարման ռեգիստր 1 Wire.write (0x20); // Տվյալների արագությունը = 95Hz, X, Y, Z-Axis միացված է, միացրեք Wire.write (0x0F); // Stop I2C Transmission Wire.endTransmission ();

// Սկսել I2C փոխանցումը

Wire.beginTransmission (Addr_Gyro); // Ընտրեք կառավարման ռեգիստր 4 Wire.write (0x23); // Լայնամասշտաբ 2000 dps, շարունակական թարմացում Wire.write (0x30); // Stop I2C Transmission Wire.endTransmission ();

// Սկսել I2C փոխանցումը

Wire.beginTransmission (Addr_Accl); // Ընտրեք կառավարման ռեգիստր 1 Wire.write (0x20); // Արագացման տվյալների տեմպը = 100Hz, X, Y, Z-Axis միացված, միացրեք Wire.write (0x67); // Դադարեցնել I2C փոխանցումը սարքի վրա Wire.endTransmission ();

// Սկսել I2C փոխանցումը

Wire.beginTransmission (Addr_Accl); // Ընտրեք կառավարման ռեգիստր 2 Wire.write (0x21); // Ամբողջ մասշտաբի ընտրություն +/- 16 գ Wire.write (0x20); // Stop I2C Transmission Wire.endTransmission ();

// Սկսել I2C փոխանցումը

Wire.beginTransmission (Addr_Accl); // Ընտրեք կառավարման ռեգիստր 5 Wire.write (0x24); // Մագնիսական բարձր լուծաչափ, ելքային տվյալների արագություն = 50 Հց Wire.write (0x70); // Stop I2C Transmission Wire.endTransmission ();

// Սկսել I2C փոխանցումը

Wire.beginTransmission (Addr_Accl); // Ընտրեք կառավարման ռեգիստր 6 Wire.write (0x25); // Մագնիսական լայնածավալ +/- 12 gauss Wire.write (0x60); // Stop I2C Transmission Wire.endTransmission ();

// Սկսել I2C փոխանցումը

Wire.beginTransmission (Addr_Accl); // Ընտրեք կառավարման ռեգիստր 7 Wire.write (0x26); // Նորմալ ռեժիմ, մագնիսական շարունակական փոխակերպման ռեժիմ Wire.write (0x00); // Stop I2C Transmission Wire.endTransmission (); ուշացում (300);

for (int i = 0; i <6; i ++) {// Start I2C Transmission Wire.beginTransmission (Addr_Gyro); // Ընտրեք տվյալների գրանցամատյան Wire.write ((40 + i)); // Stop I2C Transmission Wire.endTransmission ();

// Պահանջել 1 բայթ տվյալներ

Մետաղալար. Խնդրում ենք (Addr_Gyro, 1);

// Կարդացեք տվյալների 6 բայթ

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

// Փոխարկել տվյալները

int xGyro = ((տվյալներ [1] * 256) + տվյալներ [0]); int yGyro = ((տվյալներ [3] * 256) + տվյալներ [2]); int zGyro = ((տվյալներ [5] * 256) + տվյալներ [4]);

for (int i = 0; i <6; i ++) {// Start I2C Transmission Wire.beginTransmission (Addr_Accl); // Ընտրեք տվյալների գրանցամատյան Wire.write ((40 + i)); // Stop I2C Transmission Wire.endTransmission ();

// Պահանջել 1 բայթ տվյալներ

Մետաղալար. Խնդրում ենք (Addr_Accl, 1);

// Կարդացեք տվյալների 6 բայթ

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

// Փոխարկել տվյալները

int xAccl = ((տվյալներ [1] * 256) + տվյալներ [0]); int yAccl = ((տվյալներ [3] * 256) + տվյալներ [2]); int zAccl = ((տվյալներ [5] * 256) + տվյալներ [4]);

for (int i = 0; i <6; i ++) {// Start I2C Transmission Wire.beginTransmission (Addr_Accl); // Ընտրեք տվյալների գրանցամատյան Wire.write ((8 + i)); // Stop I2C Transmission Wire.endTransmission ();

// Պահանջել 1 բայթ տվյալներ

Մետաղալար. Խնդրում ենք (Addr_Accl, 1);

// Կարդացեք տվյալների 6 բայթ

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

// Փոխարկել տվյալները

int xMag = ((տվյալներ [1] * 256) + տվյալներ [0]); int yMag = ((տվյալներ [3] * 256) + տվյալներ [2]); int zMag = ((տվյալներ [5] * 256) + տվյալներ [4]);

// Ելքային տվյալները սերիական մոնիտորին

Serial.print («Պտույտի առանցք.»); Serial.println (xGyro); Serial.print ("Պտտման առանցք."); Serial.println (yGyro); Serial.print («Պտույտի առանցք.»); Serial.println (zGyro); Serial.print («Արագացում X- առանցքում.»); Serial.println (xAccl); Serial.print («Արագացում Y- առանցքում.»); Serial.println (yAccl); Serial.print («Արագացում Z- առանցքում.»); Serial.println (zAccl); Serial.print («Մագնիսական դաշտ X- առանցքում.»); Serial.println (xMag); Serial.print («Մագնիսական դաշտը Y- առանցքում.»); Serial.println (yMag); Serial.print ("Մագնիսական գրանցված Z-Axis:"); Serial.println (zMag);

// Մուտքագրեք տվյալները վեբ սերվեր

server.sendContent ("

DCUBE ԽԱՆՈԹ

www.dcubestore.com

"" LSM9DS0 տվիչ I2C մինի մոդուլ

);

server.sendContent ("

Պտտման առանցք = " + Լար (xGyro)); server.sendContent ("

Y- պտտման առանցք = " + Լար (yGyro)); server.sendContent ("

Պտույտի Z- առանցք = " + Լար (zGyro)); server.sendContent ("

X-Axis- ում արագացում = " + Լար (xAccl)); server.sendContent ("

Y-Axis- ում արագացում = " + Լար (yAccl)); server.sendContent ("

Z-Axis- ում արագացում = " + Լար (zAccl)); server.sendContent ("

Մագնիսական գրանցված X-Axis = " + Լար (xMag)); server.sendContent ("

Մագնիսական գրանցված Y-Axis = " + Լար (yMag)); server.sendContent ("

Մագնիսական գրանցված Z-Axis = " + Լար (zMag)); ուշացում (1000);}

դատարկ կարգավորում ()

{// Initialise I2C Communication as MASTER Wire.begin (2, 14); // Նախնականացնել սերիական հաղորդակցությունը, սահմանել baud rate = 115200 Serial.begin (115200);

// Միացեք WiFi ցանցին

WiFi.begin (ssid, գաղտնաբառ);

// Սպասեք կապին

while (WiFi.status ()! = WL_CONNECTED) {ուշացում (500); Serial.print ("."); } Serial.println (""); Serial.print («Միացված է»); Serial.println (ssid);

// Ստացեք ESP8266- ի IP հասցեն

Serial.print («IP հասցե ՝»); Serial.println (WiFi.localIP ());

// Սկսեք սերվերը

server.on ("/", handleroot); server.begin (); Serial.println («HTTP սերվերը գործարկված է»); }

դատարկ շրջան ()

{server.handleClient (); }

Քայլ 4: Օրենսգրքի մշակում

Կոդի աշխատանք
Կոդի աշխատանք

Այժմ ներբեռնեք (կամ git pull) ծածկագիրը և բացեք այն Arduino IDE- ում:

Կազմեք և վերբեռնեք կոդը և տեսեք ելքը Serial Monitor- ում:

Նշում. Վերբեռնելուց առաջ համոզվեք, որ ծածկագրում մուտքագրում եք ձեր SSID ցանցը և գաղտնաբառը:

Պատճենեք ESP8266- ի IP հասցեն Սերիական մոնիտորից և տեղադրեք այն ձեր վեբ դիտարկիչում: Դուք կտեսնեք վեբ էջ ՝ պտտման առանցքով, արագացմամբ և մագնիսական դաշտի ընթերցմամբ 3 առանցքի վրա:

Սերիայի մոնիտորի և վեբ սերվերի վրա սենսորի ելքը ցուցադրված է վերևում նկարում:

Քայլ 5: Applicրագրեր և առանձնահատկություններ

LSM9DS0- ը համակարգային փաթեթ է, որն ունի 3D թվային գծային արագացման տվիչ, 3D թվային անկյունային արագության տվիչ և 3D թվային մագնիսական տվիչ: Չափելով այս երեք հատկությունները ՝ դուք կարող եք մեծ գիտելիքներ ձեռք բերել առարկայի շարժման մասին: Մագնիսաչափով չափելով Երկրի մագնիսական դաշտի ուժն ու ուղղությունը ՝ կարող եք մոտավոր համարել ձեր վերնագիրը: Ձեր հեռախոսի արագացուցիչը կարող է չափել ծանրության ուժի ուղղությունը և գնահատել կողմնորոշումը (դիմանկար, բնապատկեր, հարթ և այլն): Ներկառուցված գիրոսկոպներով քառանկյուն համակարգիչները կարող են ուշադրություն դարձնել հանկարծակի գլանափաթեթների կամ խաղադաշտերի վրա: Մենք կարող ենք դա օգտագործել գլոբալ դիրքավորման համակարգում (GPS):

Որոշ այլ ծրագրեր ներառում են ներքին նավարկություն, խելացի օգտվողի միջերեսներ, ժեստերի առաջադեմ ճանաչում, խաղերի և վիրտուալ իրականության մուտքագրման սարքեր և այլն:

ESP8266- ի օգնությամբ մենք կարող ենք դրա հզորությունը մեծացնել ավելի երկարությամբ: Մենք կարող ենք վերահսկել մեր սարքերը և վերահսկել այնտեղի աշխատանքը մեր աշխատասեղաններից և շարժական սարքերից: Մենք կարող ենք պահել և կառավարել տվյալները առցանց և ցանկացած ժամանակ ուսումնասիրել դրանք ՝ փոփոխությունների համար: Ավելի շատ ծրագրեր ներառում են ՝ Տան ավտոմատացում, ԱՐՏ ցանց, Արդյունաբերական անլար կառավարում, Երեխայի մոնիտորներ, սենսորային ցանցեր, կրելի էլեկտրոնիկա, Wi-Fi Տեղորոշման սարքեր, Wi-Fi դիրքորոշման համակարգի փարոսներ:

Քայլ 6. Ռեսուրսներ `առաջ գնալու համար

LSM9DS0- ի և ESP8266- ի մասին լրացուցիչ տեղեկությունների համար այցելեք ստորև բերված հղումները.

  • LSM9DS0 տվիչների տվյալների թերթիկ
  • LSM9DS0 էլեկտրագծերի դիագրամ
  • ESP8266 Տվյալների թերթ

Խորհուրդ ենք տալիս: