Innholdsfortegnelse:

Kartorientering gjennom webserver: 6 trinn
Kartorientering gjennom webserver: 6 trinn

Video: Kartorientering gjennom webserver: 6 trinn

Video: Kartorientering gjennom webserver: 6 trinn
Video: Karttegn på orienteringskart 2024, November
Anonim
Kartretning gjennom webserver
Kartretning gjennom webserver

Internet of Things, (IoT) er et av de populære temaene på planeten akkurat nå. Og det vokser raskt dag for dag med Internett. Tingenes internett endrer enkle hjem til smarte hjem, hvor alt fra lysene dine til låsene dine kan styres fra smarttelefonen eller skrivebordet. Dette er luksusen alle vil eie.

Vi leker alltid med verktøyene vi har, og fortsetter å jobbe med det neste trinnet i grensene våre. Vi prøver å gi kunden en visjon om nyeste teknologi og ideer. Slik at du kan gjøre hjemmet ditt til smarte hjem og nyte smaken av luksus uten store anstrengelser.

I dag tenker vi på å jobbe med et av de viktigste temaene i IoT - Digital kartorientering.

Vi vil bygge en webserver der vi kan overvåke bevegelsene til en hvilken som helst enhet eller ting (Det er opp til deg, hvem du vil spionere;)). Du kan alltid tenke på å oppgradere dette prosjektet til neste nivå med noen modifikasjoner, og ikke glem å fortelle oss det i kommentarene nedenfor.

La oss starte enn.. !!

Trinn 1: Utstyr vi trenger..

Utstyr vi trenger.. !!
Utstyr vi trenger.. !!
Utstyr vi trenger.. !!
Utstyr vi trenger.. !!
Utstyr vi trenger.. !!
Utstyr vi trenger.. !!
Utstyr vi trenger.. !!
Utstyr vi trenger.. !!

1. LSM9DS0 sensor

3-i-1-sensoren produsert av STMicroelectronics, LSM9DS0 er en system-i-pakke med en 3D digital lineær akselerasjonssensor, en 3D digital vinkelhastighetssensor og en 3D digital magnetisk sensor. LSM9DS0 har en lineær akselerasjon full skala på ± 2g/± 4g/± 6g/± 8g/± 16g, et magnetfelt i full skala på ± 2/± 4/± 8/± 12 gauss og en vinkelfrekvens på ± 245 /± 500/± 2000 dps.

2. Adafruit Huzzah ESP8266

ESP8266-prosessoren fra Espressif er en 80 MHz mikrokontroller med full WiFi-front-end (både som klient og tilgangspunkt) og TCP/IP-stabel med DNS-støtte også. ESP8266 er en utrolig plattform for utvikling av IoT -applikasjoner. ESP8266 gir en moden plattform for overvåking og kontroll av applikasjoner ved bruk av Arduino Wire Language og Arduino IDE.

3. ESP8266 USB -programmerer

ESP8266 -vertsadapteren hans ble designet spesielt av Dcube Storefor Adafruit Huzzah -versjonen av ESP8266, noe som tillot I²C -grensesnittet.

4. I2C -tilkoblingskabel

5. Mini USB -kabel

Mini USB -kabelen Strømforsyning er et ideelt valg for å drive Adafruit Huzzah ESP8266.

Trinn 2: Maskinvaretilkoblinger

Maskinvaretilkoblinger
Maskinvaretilkoblinger
Maskinvaretilkoblinger
Maskinvaretilkoblinger
Maskinvaretilkoblinger
Maskinvaretilkoblinger

Generelt er det enkleste å lage tilkoblinger i dette prosjektet. Følg instruksjonene og bildene, og du bør ikke ha noen problemer.

Ta først Adafruit Huzzah ESP8266 og legg USB -programmereren (med innadvendt I²C -port) på den. Trykk forsiktig på USB -programmereren, og vi er ferdige med dette trinnet like enkelt som en kake (se bildet ovenfor).

Tilkobling av sensoren og Adafruit Huzzah ESP8266 Ta sensoren og koble I²C -kabelen med den. For riktig bruk av denne kabelen, må du huske at I²C -utgangen ALLTID kobles til I²C -inngangen. Det samme måtte følges for Adafruit Huzzah ESP8266 med USB -programmereren montert over den (Se bildet ovenfor).

Ved hjelp av ESP8266 USB Programmerer er det veldig enkelt å programmere ESP. Alt du trenger å gjøre er å koble sensoren til USB -programmereren, så er du i gang. Vi foretrekker å bruke denne adapteren fordi det gjør det mye enklere å koble til maskinvaren. Ikke bekymre deg for å lodde pinnene til ESP til sensoren eller lese pin -diagrammer og datablad. Vi kan bruke og jobbe med flere sensorer samtidig, du trenger bare å lage en kjede. Uten disse plug and play USB Programmer er det stor risiko for feil tilkobling. En dårlig ledning kan drepe både wifi og sensoren din.

Merk: Den brune ledningen bør alltid følge jordforbindelsen (GND) mellom utgangen til en enhet og inngangen til en annen enhet.

Drift av kretsen

Koble Mini USB -kabelen til strømkontakten på Adafruit Huzzah ESP8266. Tenn opp og voila, vi er i gang!

Trinn 3: Kode

Kode
Kode

ESP -koden for Adafruit Huzzah ESP8266 og LSM9DS0 sensor er tilgjengelig på vårt github -depot.

Før du går videre til koden, må du lese instruksjonene i Readme -filen og konfigurere Adafruit Huzzah ESP8266 i henhold til den. Det vil ta bare 5 minutter å sette opp ESP.

Koden er lang, men den er i den enkleste formen du kan forestille deg, og du vil ikke ha problemer med å forstå den.

For enkelhets skyld kan du også kopiere den fungerende ESP -koden for denne sensoren herfra:

// Distribuert med en fri viljelisens. // Bruk den på hvilken som helst måte du vil, fortjeneste eller gratis, forutsatt at den passer inn i lisensene til de tilhørende verkene. // LSM9DSO // Denne koden er designet for å fungere med TCS3414_I2CS I2C Mini Module tilgjengelig fra dcubestore.com.

#inkludere

#inkludere

#inkludere

#inkludere

// LSM9DSO Gyro I2C -adressen er 6A (106)

#define Addr_Gyro 0x6A // LSM9DSO Accl I2C -adressen er 1E (30) #define Addr_Accl 0x1E

const char* ssid = "din ssid";

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

ESP8266WebServer -server (80);

void handleroot ()

{usignerte int -data [6];

// Start I2C -overføring

Wire.beginTransmission (Addr_Gyro); // Velg kontrollregister 1 Wire.write (0x20); // Datahastighet = 95Hz, X, Y, Z-Axis aktivert, slå på Wire.write (0x0F); // Stopp I2C Transmission Wire.endTransmission ();

// Start I2C -overføring

Wire.beginTransmission (Addr_Gyro); // Velg kontrollregister 4 Wire.write (0x23); // Fullskala 2000 dps, kontinuerlig oppdatering Wire.write (0x30); // Stopp I2C Transmission Wire.endTransmission ();

// Start I2C -overføring

Wire.beginTransmission (Addr_Accl); // Velg kontrollregister 1 Wire.write (0x20); // Akselerasjonsdatahastighet = 100Hz, X, Y, Z-Axis aktivert, slå på Wire.write (0x67); // Stopp I2C -overføring på enheten Wire.endTransmission ();

// Start I2C -overføring

Wire.beginTransmission (Addr_Accl); // Velg kontrollregister 2 Wire.write (0x21); // Full skala valg +/- 16g Wire.write (0x20); // Stopp I2C Transmission Wire.endTransmission ();

// Start I2C -overføring

Wire.beginTransmission (Addr_Accl); // Velg kontrollregister 5 Wire.write (0x24); // Magnetisk høy oppløsning, utdatahastighet = 50Hz Wire.write (0x70); // Stopp I2C Transmission Wire.endTransmission ();

// Start I2C -overføring

Wire.beginTransmission (Addr_Accl); // Velg kontrollregister 6 Wire.write (0x25); // Magnetisk fullskala +/- 12 gauss Wire.write (0x60); // Stopp I2C Transmission Wire.endTransmission ();

// Start I2C -overføring

Wire.beginTransmission (Addr_Accl); // Velg kontrollregister 7 Wire.write (0x26); // Normal modus, magnetisk kontinuerlig konverteringsmodus Wire.write (0x00); // Stopp I2C Transmission Wire.endTransmission (); forsinkelse (300);

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

// Be om 1 byte med data

Wire.requestFrom (Addr_Gyro, 1);

// Les 6 byte med data

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

// Konverter dataene

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

// Be om 1 byte med data

Wire.requestFrom (Addr_Accl, 1);

// Les 6 byte med data

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

// Konverter dataene

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

// Be om 1 byte med data

Wire.requestFrom (Addr_Accl, 1);

// Les 6 byte med data

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

// Konverter dataene

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

// Utdata til seriell skjerm

Serial.print ("X-rotasjonsakse:"); Serial.println (xGyro); Serial.print ("Y-rotasjonsakse:"); Serial.println (yGyro); Serial.print ("Z-rotasjonsakse:"); Serial.println (zGyro); Serial.print ("Akselerasjon i X-akse:"); Serial.println (xAccl); Serial.print ("Akselerasjon i Y-akser:"); Serial.println (yAccl); Serial.print ("Akselerasjon i Z-akse:"); Serial.println (zAccl); Serial.print ("Magnetfelt i X-akse:"); Serial.println (xMag); Serial.print ("Magnetfelt i Y-akse:"); Serial.println (yMag); Serial.print ("Magnetisk arkivert i Z-aksen:"); Serial.println (zMag);

// Utdata til webserver

server.sendContent ("

DCUBE -BUTIKK

www.dcubestore.com

"" LSM9DS0 Sensor I2C minimodul

);

server.sendContent ("

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

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

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

Akselerasjon i X-aksen = " + streng (xAccl)); server.sendContent ("

Akselerasjon i Y-aksen = " + streng (yAccl)); server.sendContent ("

Akselerasjon i Z-aksen = " + streng (zAccl)); server.sendContent ("

Magnetisk arkivert i X-Axis = " + String (xMag)); server.sendContent ("

Magnetisk arkivert i Y-aksen = " + String (yMag)); server.sendContent ("

Magnetisk arkivert i Z-aksen = " + String (zMag)); forsinkelse (1000);}

ugyldig oppsett ()

{// Initialiser I2C -kommunikasjon som MASTER Wire.begin (2, 14); // Initialiser seriell kommunikasjon, sett overføringshastighet = 115200 Serial.begin (115200);

// Koble til WiFi -nettverk

WiFi.begin (ssid, passord);

// Vent på tilkoblingen

mens (WiFi.status ()! = WL_CONNECTED) {forsinkelse (500); Serial.print ("."); } Serial.println (""); Serial.print ("Koblet til"); Serial.println (ssid);

// Få IP -adressen til ESP8266

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

// Start serveren

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

hulrom ()

{server.handleClient (); }

Trinn 4: Arbeid med kode

Arbeid med kode
Arbeid med kode

Last ned (eller git pull) koden og åpne den i Arduino IDE.

Kompiler og last opp koden og se utgangen på Serial Monitor.

Merk: Før du laster opp, må du skrive inn SSID -nettverket og passordet i koden.

Kopier IP -adressen til ESP8266 fra Serial Monitor og lim den inn i nettleseren din. Du vil se en webside med rotasjonsakse, akselerasjon og magnetfeltavlesning i 3-aksen.

Utgangen fra sensoren på Serial Monitor og Web Server er vist på bildet ovenfor.

Trinn 5: Programmer og funksjoner

LSM9DS0 er en system-i-pakke med en 3D digital lineær akselerasjonssensor, en 3D digital vinkelhastighetssensor og en 3D digital magnetisk sensor. Ved å måle disse tre egenskapene kan du få mye kunnskap om et objekts bevegelse. Når du måler kraften og retningen til jordens magnetfelt med et magnetometer, kan du tilnærme kursen din. Et akselerometer i telefonen din kan måle tyngdekraftens retning og estimere orientering (portrett, landskap, flat, etc.). Quadcopters med innebygde gyroskoper kan se etter plutselige ruller eller pitcher. Vi kan bruke dette i Global Positioning System (GPS).

Noen flere applikasjoner inkluderer innendørs navigasjon, smarte brukergrensesnitt, avansert gestgjenkjenning, spill og inndataenheter for virtual reality, etc.

Ved hjelp av ESP8266 kan vi øke kapasiteten til en lengre lengde. Vi kan kontrollere våre apparater og overvåke ytelsen fra stasjonære og mobile enheter. Vi kan lagre og administrere dataene online og studere dem når som helst for endringer. Flere applikasjoner inkluderer hjemmeautomatisering, mesh-nettverk, industriell trådløs kontroll, babymonitorer, sensornettverk, bærbar elektronikk, Wi-Fi posisjonsbevisste enheter, Wi-Fi posisjonssystem beacons.

Trinn 6: Ressurser for å gå videre

For mer informasjon om LSM9DS0 og ESP8266, sjekk ut koblingene nedenfor:

  • LSM9DS0 Sensor Datablad
  • LSM9DS0 Koblingsskjema
  • ESP8266 Dataark

Anbefalt: