Turinys:

Žemėlapio orientacija per žiniatinklio serverį: 6 žingsniai
Žemėlapio orientacija per žiniatinklio serverį: 6 žingsniai

Video: Žemėlapio orientacija per žiniatinklio serverį: 6 žingsniai

Video: Žemėlapio orientacija per žiniatinklio serverį: 6 žingsniai
Video: Modelling: context models 2024, Lapkritis
Anonim
Žemėlapio orientacija per žiniatinklio serverį
Žemėlapio orientacija per žiniatinklio serverį

Daiktų internetas (IoT) šiuo metu yra viena iš populiariausių temų planetoje. Ir tai sparčiai auga kiekvieną dieną su internetu. Daiktų internetas paprastus namus paverčia išmaniaisiais namais, kuriuose viską, nuo jūsų žibintų iki spynų, galima valdyti iš savo išmaniojo telefono ar darbalaukio. Tai prabanga, kurią nori turėti kiekvienas.

Mes visada žaidžiame su turimais įrankiais ir toliau dirbame, kad pereitume prie kito savo ribų žingsnio. Mes stengiamės suteikti savo klientui naujausių technologijų ir idėjų viziją. Taigi, kad galėtumėte be didelių pastangų paversti savo namus protingais namais ir mėgautis prabangos skoniu.

Šiandien mes galvojame apie vieną svarbiausių daiktų interneto temų - skaitmeninio žemėlapio orientaciją.

Mes sukursime žiniatinklio serverį, per kurį galėsime stebėti bet kurio įrenginio ar daikto judesius (tai priklauso nuo jūsų, kurį norite šnipinėti;)). Jūs visada galite galvoti apie šio projekto atnaujinimą į kitą lygį su tam tikrais pakeitimais ir nepamirškite mums pasakyti toliau pateiktose pastabose.

Pradėkime nuo.. !!

1 žingsnis: įranga, kurios mums reikia..

Mums reikalinga įranga.. !!
Mums reikalinga įranga.. !!
Mums reikalinga įranga.. !!
Mums reikalinga įranga.. !!
Mums reikalinga įranga.. !!
Mums reikalinga įranga.. !!
Mums reikalinga įranga.. !!
Mums reikalinga įranga.. !!

1. LSM9DS0 jutiklis

„STMicroelectronics“gaminamas jutiklis „3 viename“, LSM9DS0, yra pakuotėje esanti sistema, turinti 3D skaitmeninį linijinio pagreičio jutiklį, 3D skaitmeninį kampinio greičio jutiklį ir 3D skaitmeninį magnetinį jutiklį. LSM9DS0 linijinio pagreičio skalė yra ± 2 g/± 4 g/± 6 g/± 8 g/± 16 g, magnetinio lauko pilna skalė-± 2/± 4/± 8/± 12 gauss ir kampinis dažnis ± 245 /± 500/± 2000 dps.

2. Adafruit Huzzah ESP8266

„Espressif“ESP8266 procesorius yra 80 MHz mikrovaldiklis, turintis pilną „WiFi“sąsają (tiek kaip klientas, tiek prieigos taškas) ir TCP/IP krūvą su DNS palaikymu. ESP8266 yra neįtikėtina platforma, skirta interneto taikomųjų programų kūrimui. ESP8266 suteikia subrendusią platformą programoms stebėti ir valdyti naudojant „Arduino Wire Language“ir „Arduino IDE“.

3. ESP8266 USB programuotojas

jo pagrindinio kompiuterio adapteris ESP8266 buvo sukurtas specialiai „Dcube Store“, skirtas ESP8266 „Adafruit Huzzah“versijai, leidžiančiai naudoti I²C sąsają.

4. I2C jungiamasis kabelis

5. Mini USB kabelis

Mini USB kabelis Maitinimo šaltinis yra idealus pasirinkimas maitinant „Adafruit Huzzah ESP8266“.

2 žingsnis: aparatinės įrangos jungtys

Techninės įrangos jungtys
Techninės įrangos jungtys
Techninės įrangos jungtys
Techninės įrangos jungtys
Techninės įrangos jungtys
Techninės įrangos jungtys

Apskritai, užmegzti ryšius yra lengviausia šio projekto dalis. Vykdykite instrukcijas ir vaizdus, ir jums neturėtų kilti problemų.

Pirmiausia paimkite „Adafruit Huzzah ESP8266“ir įdėkite USB programuotoją (su į vidų nukreiptu I²C prievadu). Švelniai paspauskite USB programuotoją ir mes baigsime šį veiksmą taip lengvai, kaip pyragas (žr. Paveikslėlį aukščiau).

Jutiklio ir „Adafruit Huzzah ESP8266“prijungimas Paimkite jutiklį ir prijunkite prie jo I²C kabelį. Kad šis kabelis veiktų tinkamai, atminkite, kad I²C išėjimas VISADA jungiasi prie I²C įvesties. To paties reikėjo laikytis ir „Adafruit Huzzah ESP8266“su USB programuotoju (žr. Paveikslėlį aukščiau).

ESP8266 USB programuotojo pagalba labai lengva programuoti ESP. Viskas, ką jums reikia padaryti, tai prijungti jutiklį prie USB programuotojo ir viskas gerai. Mes norime naudoti šį adapterį, nes tai labai palengvina aparatūros prijungimą. Nesijaudinkite dėl litavimo ESP kaiščių prie jutiklio ar skaitymo kaiščių diagramų ir duomenų lapo. Mes galime vienu metu naudoti ir dirbti su keliais jutikliais, jums tiesiog reikia sukurti grandinę. Be šių „plug and play“USB programuotojų yra didelė rizika, kad bus užmegztas neteisingas ryšys. Blogas laidas gali užmušti jūsų „Wi -Fi“ir jutiklį.

Pastaba: ruda viela visada turi sekti įžeminimo (GND) jungtį tarp vieno įrenginio išvesties ir kito įrenginio įvesties.

Grandinės maitinimas

Prijunkite mini USB kabelį prie „Adafruit Huzzah ESP8266“maitinimo lizdo. Užsidega ir voila, mums gera eiti!

3 žingsnis: kodas

Kodas
Kodas

„Adafruit Huzzah ESP8266“ir „LSM9DS0“jutiklių ESP kodą rasite mūsų „github“saugykloje.

Prieš pereidami prie kodo, būtinai perskaitykite „Readme“faile pateiktas instrukcijas ir pagal tai nustatykite „Adafruit Huzzah ESP8266“. ESP nustatymas užtruks vos 5 minutes.

Kodas yra ilgas, tačiau jis yra paprasčiausios formos, kokią galite įsivaizduoti, ir jums nebus sunku jį suprasti.

Jūsų patogumui taip pat galite nukopijuoti darbinį šio jutiklio ESP kodą iš čia:

// Platinama su laisvos valios licencija. // LSM9DSO // Šis kodas skirtas darbui su TCS3414_I2CS I2C mini moduliu, kurį galima rasti dcubestore.com.

#įtraukti

#įtraukti

#įtraukti

#įtraukti

// LSM9DSO Gyro I2C adresas yra 6A (106)

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

const char* ssid = "tavo ssidas";

const char* password = "tavo slaptažodis"; int xGyro, yGyro, zGyro, xAccl, yAccl, zAccl, xMag, yMag, zMag;

ESP8266WebServer serveris (80);

tuščia rankena ()

{unsigned int data [6];

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr_Gyro); // Pasirinkite valdymo registrą 1 Wire.write (0x20); // Duomenų perdavimo sparta = 95 Hz, X, Y, Z ašis įjungta, įjunkite „Wire.write“(0x0F); // Stop I2C Transmission Wire.endTransmission ();

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr_Gyro); // Pasirinkite valdymo registrą 4 Wire.write (0x23); // Viso masto 2000 dps, nuolatinis atnaujinimas Wire.write (0x30); // Stop I2C Transmission Wire.endTransmission ();

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr_Accl); // Pasirinkite valdymo registrą 1 Wire.write (0x20); // Pagreitinimo duomenų greitis = 100 Hz, X, Y, įjungta Z ašis, įjunkite „Wire.write“(0x67); // Sustabdyti I2C perdavimą įrenginyje Wire.endTransmission ();

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr_Accl); // Pasirinkite valdymo registrą 2 Wire.write (0x21); // Visas skalės pasirinkimas +/- 16g Wire.write (0x20); // Stop I2C Transmission Wire.endTransmission ();

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr_Accl); // Pasirinkite valdymo registrą 5 Wire.write (0x24); // Magnetinė didelės skiriamosios gebos, išvesties duomenų perdavimo sparta = 50Hz Wire.write (0x70); // Stop I2C Transmission Wire.endTransmission ();

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr_Accl); // Pasirinkite valdymo registrą 6 Wire.write (0x25); // Magnetinis visos skalės +/- 12 gauss Wire.write (0x60); // Stop I2C Transmission Wire.endTransmission ();

// Pradėti I2C perdavimą

Wire.beginTransmission (Addr_Accl); // Pasirinkite valdymo registrą 7 Wire.write (0x26); // Normalus režimas, magnetinis nepertraukiamo konversijos režimas Wire.write (0x00); // Stop I2C Transmission Wire.endTransmission (); vėlavimas (300);

for (int i = 0; i <6; i ++) {// Pradėti I2C perdavimo laidą.beginTransmission (Addr_Gyro); // Pasirinkite duomenų registrą Wire.write ((40 + i)); // Stop I2C Transmission Wire.endTransmission ();

// Prašyti 1 baito duomenų

Wire.requestFrom (Addr_Gyro, 1);

// Perskaitykite 6 baitus duomenų

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

// Konvertuoti duomenis

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

for (int i = 0; i <6; i ++) {// Pradėti I2C perdavimo laidą.beginTransmission (Addr_Accl); // Pasirinkite duomenų registrą Wire.write ((40 + i)); // Stop I2C Transmission Wire.endTransmission ();

// Prašyti 1 baito duomenų

Wire.requestFrom (Addr_Accl, 1);

// Perskaitykite 6 baitus duomenų

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

// Konvertuoti duomenis

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

for (int i = 0; i <6; i ++) {// Pradėti I2C perdavimo laidą.beginTransmission (Addr_Accl); // Pasirinkite duomenų registrą Wire.write ((8 + i)); // Stop I2C Transmission Wire.endTransmission ();

// Prašyti 1 baito duomenų

Wire.requestFrom (Addr_Accl, 1);

// Perskaitykite 6 baitus duomenų

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

// Konvertuoti duomenis

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

// Duomenų išvedimas į serijinį monitorių

Serial.print ("X sukimosi ašis:"); Serial.println (xGyro); Serial.print ("Y sukimosi ašis:"); Serial.println (yGyro); Serial.print ("Z sukimosi ašis:"); Serial.println (zGyro); Serial.print ("pagreitis X ašyje:"); Serial.println (xAccl); Serial.print ("pagreitis Y ašyje:"); Serial.println (yAccl); Serial.print („Pagreitis Z ašyje:“); Serial.println (zAccl); Serial.print ("Magnetinis laukas X ašyje:"); Serial.println (xMag); Serial.print ("Magnetinis laukas Y ašyje:"); Serial.println (yMag); Serial.print ("Magnetinis paduotas Z ašyje:"); Serial.println (zMag);

// Išvesti duomenis į žiniatinklio serverį

server.sendContent ("

DCUBE PARDUOTUVĖ

www.dcubestore.com

"" LSM9DS0 jutiklio I2C mini modulis

);

server.sendContent ("

X sukimosi ašis = " + eilutė (xGyro)); server.sendContent ("

Y sukimosi ašis = " + eilutė (yGyro)); server.sendContent ("

Z sukimosi ašis = " + eilutė (zGyro)); server.sendContent ("

Pagreitis X ašyje = " + eilutė (xAccl)); server.sendContent ("

Pagreitis Y ašyje = " + eilutė (yAccl)); server.sendContent ("

Pagreitis Z ašyje = " + eilutė (zAccl)); server.sendContent ("

Magnetinis paduotas X ašyje = " + eilutė (xMag)); server.sendContent ("

Magnetinis paduotas Y ašyje = " + eilutė (yMag)); server.sendContent ("

Magnetinis paduotas Z ašyje = " + eilutė (zMag)); uždelsimas (1000);}

negaliojanti sąranka ()

{// Inicijuoti I2C ryšį kaip MASTER Wire.begin (2, 14); // Inicijuoti nuoseklųjį ryšį, nustatyti duomenų perdavimo spartą = 115200 Serial.begin (115200);

// Prisijunkite prie „WiFi“tinklo

WiFi.begin (ssid, slaptažodis);

// Palaukite ryšio

while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serijinis atspaudas ("."); } Serial.println (""); Serial.print ("Prisijungta"); Serial.println (ssid);

// Gaukite ESP8266 IP adresą

Serial.print („IP adresas:“); Serial.println (WiFi.localIP ());

// Paleisti serverį

server.on ("/", rankena); server.begin (); Serial.println („HTTP serveris paleistas“); }

tuštumos kilpa ()

{server.handleClient (); }

4 žingsnis: kodo veikimas

Kodo veikimas
Kodo veikimas

Dabar atsisiųskite (arba ištraukite) kodą ir atidarykite jį „Arduino IDE“.

Surinkite ir įkelkite kodą ir pamatykite serijos monitoriaus išvestį.

Pastaba: prieš įkeldami į kodą būtinai įveskite SSID tinklą ir slaptažodį.

Nukopijuokite ESP8266 IP adresą iš serijinio monitoriaus ir įklijuokite jį į savo interneto naršyklę. Pamatysite tinklalapį su sukimosi ašimi, pagreičiu ir magnetinio lauko nuskaitymu 3 ašyse.

Serijinio monitoriaus ir žiniatinklio serverio jutiklio išvestis parodyta aukščiau esančiame paveikslėlyje.

5 žingsnis: programos ir funkcijos

„LSM9DS0“yra pakuotėje esanti sistema, turinti 3D skaitmeninį linijinio pagreičio jutiklį, 3D skaitmeninį kampinio greičio jutiklį ir 3D skaitmeninį magnetinį jutiklį. Išmatuodami šias tris savybes, galite įgyti daug žinių apie objekto judėjimą. Magnetometru išmatuodami Žemės magnetinio lauko jėgą ir kryptį, galite apytiksliai nustatyti savo kryptį. Akselerometras jūsų telefone gali išmatuoti traukos jėgos kryptį ir įvertinti orientaciją (portretas, kraštovaizdis, plokščias ir tt). Keturkopteriai su įmontuotais giroskopais gali atkreipti dėmesį į staigius riedėjimus ar posūkius. Tai galime naudoti pasaulinėje padėties nustatymo sistemoje (GPS).

Kai kurios kitos programos apima vidaus navigaciją, išmaniąsias vartotojo sąsajas, išplėstinį gestų atpažinimą, žaidimų ir virtualios realybės įvesties įrenginius ir kt.

Naudodami ESP8266, galime padidinti jo talpą iki ilgesnio. Galime valdyti savo prietaisus ir stebėti jų veikimą iš stalinių kompiuterių ir mobiliųjų įrenginių. Mes galime saugoti ir tvarkyti duomenis internete ir bet kada juos ištirti, kad juos būtų galima pakeisti. Daugiau programų yra namų automatizavimas, tinklinis tinklas, pramoninis belaidis valdymas, kūdikių monitoriai, jutiklių tinklai, nešiojama elektronika, „Wi-Fi“vietos nustatymo įrenginiai, „Wi-Fi“padėties sistemos švyturėliai.

6 žingsnis: ištekliai, skirti eiti toliau

Norėdami gauti daugiau informacijos apie LSM9DS0 ir ESP8266, patikrinkite toliau pateiktas nuorodas:

  • LSM9DS0 jutiklio duomenų lapas
  • LSM9DS0 laidų schema
  • ESP8266 duomenų lapas

Rekomenduojamas: