Kartorientering via webbserver: 6 steg
Kartorientering via webbserver: 6 steg
Anonim
Kartorientering via webbserver
Kartorientering via webbserver

Internet of Things, (IoT) är ett av de populära ämnena på planeten just nu. Och det växer snabbt dag för dag med Internet. Internet of Things förändrar enkla hem till smarta hem, där allt från dina lampor till dina lås kan styras från din smartphone eller skrivbord. Detta är den lyx som alla vill äga.

Vi leker alltid med de verktyg vi har och fortsätter arbeta med att gå till nästa steg i våra gränser. Vi försöker ge vår kund en vision om senaste teknik och idéer. Så att du kan göra ditt hem till smarta hem och njuta av smaken av lyx utan stora ansträngningar.

Idag tänker vi på att arbeta med ett av de viktigaste ämnena i IoT - Digital kartorientering.

Vi kommer att bygga en webbserver genom vilken vi kan övervaka rörelserna på någon enhet eller sak (Det är upp till dig, som du vill spionera;)). Du kan alltid tänka på att uppgradera detta projekt till nästa nivå med några ändringar och glöm inte att berätta för oss i kommentarerna nedan.

Låt oss börja än.. !!

Steg 1: Utrustning vi behöver.. !

Utrustning vi behöver.. !!
Utrustning vi behöver.. !!
Utrustning vi behöver.. !!
Utrustning vi behöver.. !!
Utrustning vi behöver.. !!
Utrustning vi behöver.. !!
Utrustning vi behöver.. !!
Utrustning vi behöver.. !!

1. LSM9DS0 -sensor

3-i-1-sensorn tillverkad av STMicroelectronics, LSM9DS0 är ett system-i-paket med en 3D digital linjär accelerationssensor, en 3D digital vinkelhastighetssensor och en 3D digital magnetisk sensor. LSM9DS0 har en linjär acceleration i full skala på ± 2g/± 4g/± 6g/± 8g/± 16g, ett magnetfält i full skala på ± 2/± 4/± 8/± 12 gauss och en vinkelhastighet på ± 245 /± 500/± 2000 dps.

2. Adafruit Huzzah ESP8266

ESP8266-processorn från Espressif är en 80 MHz mikrokontroller med en fullständig WiFi-front-end (både som klient och åtkomstpunkt) och TCP/IP-stack med DNS-stöd också. ESP8266 är en otrolig plattform för IoT -applikationsutveckling. ESP8266 ger en mogen plattform för övervakning och kontroll av applikationer med Arduino Wire Language och Arduino IDE.

3. ESP8266 USB -programmerare

hans ESP8266 -värdadapter har utformats specifikt av Dcube Store för Adafruit Huzzah -versionen av ESP8266, vilket möjliggör I²C -gränssnittet.

4. I2C -anslutningskabel

5. Mini USB -kabel

Mini -USB -kabeln Strömförsörjning är ett idealiskt val för att driva Adafruit Huzzah ESP8266.

Steg 2: Hårdvaruanslutningar

Hårdvaruanslutningar
Hårdvaruanslutningar
Hårdvaruanslutningar
Hårdvaruanslutningar
Hårdvaruanslutningar
Hårdvaruanslutningar

I allmänhet är det lättast att göra anslutningar i detta projekt. Följ instruktionerna och bilderna, så ska du inte ha några problem.

Ta först Adafruit Huzzah ESP8266 och placera USB -programmeraren (med inåtvänd I²C -port) på den. Tryck försiktigt på USB -programmeraren och vi är klara med det här steget så enkelt som en paj (se bilden ovan).

Anslutning av sensorn och Adafruit Huzzah ESP8266 Ta sensorn och anslut I²C -kabeln med den. För korrekt användning av denna kabel, kom ihåg att I²C -utgången ALLTID är ansluten till I²C -ingången. Samma sak måste följas för Adafruit Huzzah ESP8266 med USB -programmeraren monterad över den (se bilden ovan).

Med hjälp av ESP8266 USB Programmerare är det väldigt enkelt att programmera ESP. Allt du behöver göra är att ansluta sensorn till USB -programmeraren så är du klar. Vi föredrar att använda denna adapter eftersom det gör det mycket enklare att ansluta hårdvaran. Du behöver inte oroa dig för att löda ESP -stiften i sensorn eller läsa stiftdiagrammen och databladet. Vi kan använda och arbeta med flera sensorer samtidigt, du behöver bara göra en kedja. Utan dessa plug and play USB -programmerare finns det stor risk för felaktig anslutning. En dålig kabeldragning kan döda både din wifi och din sensor.

Obs: Den bruna tråden bör alltid följa jordanslutningen (GND) mellan utgången på en enhet och ingången till en annan enhet.

Drivning av kretsen

Anslut Mini USB -kabeln till strömuttaget på Adafruit Huzzah ESP8266. Tänd det och voila, vi är bra att gå!

Steg 3: Kod

Koda
Koda

ESP -koden för Adafruit Huzzah ESP8266 och LSM9DS0 -sensorn är tillgänglig på vårt github -arkiv.

Innan du går vidare till koden, se till att du läser instruktionerna i Readme -filen och konfigurerar din Adafruit Huzzah ESP8266 enligt den. Det tar bara 5 minuter att konfigurera ESP.

Koden är lång men den är i den enklaste form som du kan tänka dig och du kommer inte ha några svårigheter att förstå den.

För din bekvämlighet kan du även kopiera den fungerande ESP -koden för denna sensor härifrån:

// Distribueras med en fri vilja licens. // Använd den hur du vill, vinst eller gratis, förutsatt att den passar in i licensen för dess associerade verk. // LSM9DSO // Denna kod är utformad för att fungera med TCS3414_I2CS I2C Mini Module tillgänglig från dcubestore.com.

#omfatta

#omfatta

#omfatta

#omfatta

// LSM9DSO Gyro I2C -adressen är 6A (106)

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

const char* ssid = "din ssid";

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

ESP8266WebServer -server (80);

void handleroot ()

{osignerade int -data [6];

// Starta I2C -sändning

Wire.beginTransmission (Addr_Gyro); // Välj kontrollregister 1 Wire.write (0x20); // Datahastighet = 95Hz, X, Y, Z-Axis aktiverad, slå på Wire.write (0x0F); // Stoppa I2C Transmission Wire.endTransmission ();

// Starta I2C -sändning

Wire.beginTransmission (Addr_Gyro); // Välj kontrollregister 4 Wire.write (0x23); // Fullskalig 2000 dps, kontinuerlig uppdatering Wire.write (0x30); // Stoppa I2C Transmission Wire.endTransmission ();

// Starta I2C -sändning

Wire.beginTransmission (Addr_Accl); // Välj kontrollregister 1 Wire.write (0x20); // Accelerationsdatahastighet = 100Hz, X, Y, Z-Axis aktiverad, slå på Wire.write (0x67); // Stoppa I2C -överföring på enheten Wire.endTransmission ();

// Starta I2C -sändning

Wire.beginTransmission (Addr_Accl); // Välj kontrollregister 2 Wire.write (0x21); // Urval i full skala +/- 16g Wire.write (0x20); // Stoppa I2C Transmission Wire.endTransmission ();

// Starta I2C -sändning

Wire.beginTransmission (Addr_Accl); // Välj kontrollregister 5 Wire.write (0x24); // Magnetisk hög upplösning, utdatahastighet = 50Hz Wire.write (0x70); // Stoppa I2C Transmission Wire.endTransmission ();

// Starta I2C -sändning

Wire.beginTransmission (Addr_Accl); // Välj kontrollregister 6 Wire.write (0x25); // Magnetisk fullskalig +/- 12 gauss Wire.write (0x60); // Stoppa I2C Transmission Wire.endTransmission ();

// Starta I2C -sändning

Wire.beginTransmission (Addr_Accl); // Välj kontrollregister 7 Wire.write (0x26); // Normalt läge, magnetiskt kontinuerligt konverteringsläge Wire.write (0x00); // Stoppa I2C Transmission Wire.endTransmission (); fördröjning (300);

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

// Begär 1 byte data

Wire.requestFrom (Addr_Gyro, 1);

// Läs 6 byte med data

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

// Konvertera data

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); // Välj dataregister Wire.write ((40 + i)); // Stoppa I2C Transmission Wire.endTransmission ();

// Begär 1 byte data

Wire.requestFrom (Addr_Accl, 1);

// Läs 6 byte med data

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

// Konvertera data

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); // Välj dataregister Wire.write ((8 + i)); // Stoppa I2C Transmission Wire.endTransmission ();

// Begär 1 byte data

Wire.requestFrom (Addr_Accl, 1);

// Läs 6 byte med data

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

// Konvertera data

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

// Utdata till seriell bildskärm

Serial.print ("X-rotation:"); Serial.println (xGyro); Serial.print ("Y-rotationsaxel:"); Serial.println (yGyro); Serial.print ("Z-rotationsaxel:"); Serial.println (zGyro); Serial.print ("Acceleration i X-Axis:"); Serial.println (xAccl); Serial.print ("Acceleration i Y-axel:"); Serial.println (yAccl); Serial.print ("Acceleration i Z-axel:"); Serial.println (zAccl); Serial.print ("Magnetfält i X-axel:"); Serial.println (xMag); Serial.print ("Magnetfält i Y-axel:"); Serial.println (yMag); Serial.print ("Magnetiskt arkiverat i Z-Axis:"); Serial.println (zMag);

// Utdata till webbserver

server.sendContent ("

DCUBE -BUTIK

www.dcubestore.com

"" LSM9DS0 Sensor I2C Mini -modul

);

server.sendContent ("

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

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

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

Acceleration i X-Axis = " + String (xAccl)); server.sendContent ("

Acceleration i Y-axel = " + String (yAccl)); server.sendContent ("

Acceleration i Z-Axis = " + String (zAccl)); server.sendContent ("

Magnetiskt arkiverat i X-Axis = " + String (xMag)); server.sendContent ("

Magnetiskt arkiverat i Y-Axis = " + String (yMag)); server.sendContent ("

Magnetiskt arkiverat i Z-Axis = " + String (zMag)); fördröjning (1000);}

void setup ()

{// Initiera I2C -kommunikation som MASTER Wire.begin (2, 14); // Initiera seriell kommunikation, ange överföringshastighet = 115200 Serial.begin (115200);

// Anslut till WiFi -nätverk

WiFi.begin (ssid, lösenord);

// Vänta på anslutning

medan (WiFi.status ()! = WL_CONNECTED) {fördröjning (500); Serial.print ("."); } Serial.println (""); Serial.print ("Ansluten till"); Serial.println (ssid);

// Få IP -adressen för ESP8266

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

// Starta servern

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

void loop ()

{server.handleClient (); }

Steg 4: Kodens arbete

Kodens arbete
Kodens arbete

Ladda ner (eller git pull) koden och öppna den i Arduino IDE.

Kompilera och ladda upp koden och se utdata på Serial Monitor.

Obs! Innan du laddar upp, se till att du anger ditt SSID -nätverk och lösenord i koden.

Kopiera IP -adressen till ESP8266 från Serial Monitor och klistra in den i din webbläsare. Du kommer att se en webbsida med rotationsaxel, acceleration och magnetfältavläsning i 3-axeln.

Sensorns utsignal på seriell bildskärm och webbserver visas i bilden ovan.

Steg 5: Applikationer och funktioner

LSM9DS0 är ett system-i-paket med en 3D digital linjär accelerationssensor, en 3D digital vinkelhastighetssensor och en 3D digital magnetisk sensor. Genom att mäta dessa tre egenskaper kan du få mycket kunskap om ett objekts rörelse. Genom att mäta kraften och riktningen för jordens magnetfält med en magnetometer kan du approximera din kurs. En accelerometer i telefonen kan mäta tyngdkraftens riktning och uppskatta orientering (porträtt, liggande, platt, etc.). Quadcopters med inbyggda gyroskop kan se upp för plötsliga rullningar eller stigningar. Vi kan använda detta i Global Positioning System (GPS).

Några fler applikationer inkluderar inomhusnavigering, smarta användargränssnitt, avancerad gestigenkänning, spel- och virtual reality -inmatningsenheter, etc.

Med hjälp av ESP8266 kan vi öka dess kapacitet till en större längd. Vi kan styra våra apparater och övervaka prestanda från våra stationära datorer och mobila enheter. Vi kan lagra och hantera data online och studera dem när som helst för ändringar. Fler applikationer inkluderar Hemautomation, Mesh-nätverk, Industriell trådlös kontroll, Babymonitorer, Sensornätverk, Bärbar elektronik, Wi-Fi Platsmedvetna enheter, Wi-Fi Position System Beacons.

Steg 6: Resurser för att gå vidare

För mer information om LSM9DS0 och ESP8266, kolla in länkarna nedan:

  • LSM9DS0 Sensor Datablad
  • LSM9DS0 kopplingsschema
  • ESP8266 Datablad