Inhoudsopgave:

Kaartoriëntatie via webserver: 6 stappen
Kaartoriëntatie via webserver: 6 stappen

Video: Kaartoriëntatie via webserver: 6 stappen

Video: Kaartoriëntatie via webserver: 6 stappen
Video: Vaardigheid 28: Wandelen en fietsen met GPS op de smartphone. 2024, November
Anonim
Kaartoriëntatie via webserver
Kaartoriëntatie via webserver

Internet of Things (IoT) is momenteel een van de populaire onderwerpen op aarde. En het groeit met de dag snel met internet. Het Internet of Things verandert eenvoudige huizen in slimme huizen, waar alles van je verlichting tot je sloten kan worden bediend vanaf je smartphone of desktop. Dit is de luxe die iedereen wil hebben.

We spelen altijd met de tools die we hebben en blijven werken aan de volgende stap van onze limieten. We proberen onze klant een visie te geven op de nieuwste technologieën en ideeën. Zodat u zonder veel moeite van uw huis smart homes kunt maken en kunt genieten van de smaak van luxe.

Vandaag denken we aan het werken aan een van de belangrijkste onderwerpen in IoT - Digital Map Orientation.

We zullen een webserver bouwen waarmee we de bewegingen van elk apparaat of ding kunnen volgen (het is aan jou, wie je wilt bespioneren;)). Je kunt altijd nadenken over het upgraden van dit project naar het volgende niveau met enkele aanpassingen en vergeet niet om het ons te vertellen in de reacties hieronder.

Laten we beginnen dan.. !!

Stap 1: Apparatuur die we nodig hebben..

Apparatuur die we nodig hebben.. !!
Apparatuur die we nodig hebben.. !!
Apparatuur die we nodig hebben.. !!
Apparatuur die we nodig hebben.. !!
Apparatuur die we nodig hebben.. !!
Apparatuur die we nodig hebben.. !!
Apparatuur die we nodig hebben.. !!
Apparatuur die we nodig hebben.. !!

1. LSM9DS0-sensor

De 3-in-1 sensor vervaardigd door STMicroelectronics, de LSM9DS0, is een systeem-in-pakket met een 3D digitale lineaire versnellingssensor, een 3D digitale hoeksnelheidssensor en een 3D digitale magnetische sensor. De LSM9DS0 heeft een volledige schaal van lineaire versnelling van ±2g/±4g/±6g/±8g/±16g, een volledig magnetisch veld van ±2/±4/±8/±12 gauss en een hoeksnelheid van ±245 /±500/±2000 dps.

2. Adafruit Huzzah ESP8266

De ESP8266 processor van Espressif is een 80 MHz microcontroller met een volledige WiFi front-end (zowel als client als access point) en ook TCP/IP stack met DNS ondersteuning. De ESP8266 is een ongelooflijk platform voor de ontwikkeling van IoT-toepassingen. De ESP8266 biedt een volwassen platform voor het bewaken en besturen van toepassingen met behulp van de Arduino Wire Language en de Arduino IDE.

3. ESP8266 USB-programmeur:

zijn ESP8266-hostadapter is speciaal ontworpen door de Dcube Store voor de Adafruit Huzzah-versie van de ESP8266, waardoor de I²C-interface mogelijk is.

4. I2C-verbindingskabel

5. Mini-USB-kabel

De mini-USB-kabel Voeding is een ideale keuze voor het voeden van de Adafruit Huzzah ESP8266.

Stap 2: Hardwareverbindingen

Hardware-verbindingen
Hardware-verbindingen
Hardware-verbindingen
Hardware-verbindingen
Hardware-verbindingen
Hardware-verbindingen

Over het algemeen is het maken van verbindingen het gemakkelijkste onderdeel van dit project. Volg de instructies en afbeeldingen en u zou geen problemen moeten hebben.

Pak eerst de Adafruit Huzzah ESP8266 en plaats de USB Programmer (met Inward Facing I²C Port) erop. Druk zachtjes op de USB Programmer en we zijn klaar met deze stap als een fluitje van een cent (zie de afbeelding hierboven).

Aansluiting van de Sensor en Adafruit Huzzah ESP8266Neem de sensor en sluit de I²C-kabel ermee aan. Voor een goede werking van deze kabel, onthoud dat de I²C-uitgang ALTIJD verbinding maakt met de I²C-ingang. Hetzelfde moest worden gevolgd voor de Adafruit Huzzah ESP8266 met de USB Programmer erop gemonteerd (zie de afbeelding hierboven).

Met behulp van ESP8266 USB Programmer is het heel eenvoudig om ESP te programmeren. Het enige dat u hoeft te doen, is de sensor op de USB Programmer aansluiten en u kunt aan de slag. Wij gebruiken bij voorkeur deze adapter omdat het een stuk eenvoudiger is om de hardware aan te sluiten. Geen zorgen over het solderen van de pinnen van ESP aan de sensor of het lezen van de pindiagrammen en datasheet. We kunnen meerdere sensoren tegelijk gebruiken en ermee werken, je hoeft alleen maar een ketting te maken. Zonder deze plug and play USB Programmer is er een groot risico op het maken van een verkeerde aansluiting. Een slechte bedrading kan zowel je wifi als je sensor doden.

Opmerking: De bruine draad moet altijd de massaverbinding (GND) volgen tussen de uitgang van het ene apparaat en de ingang van een ander apparaat.

Voeding van het circuit

Steek de mini-USB-kabel in de stroomaansluiting van de Adafruit Huzzah ESP8266. Steek het aan en voila, we zijn klaar om te gaan!

Stap 3: Coderen

Code
Code

De ESP-code voor de Adafruit Huzzah ESP8266 en LSM9DS0-sensor is beschikbaar in onze github-repository.

Voordat je verder gaat met de code, moet je de instructies in het Readme-bestand lezen en je Adafruit Huzzah ESP8266 overeenkomstig instellen. Het duurt slechts 5 minuten om de ESP in te stellen.

De code is lang, maar het is in de eenvoudigste vorm die je je kunt voorstellen en je zult geen moeite hebben om het te begrijpen.

Voor uw gemak kunt u hier ook de werkende ESP-code voor deze sensor kopiëren:

// Gedistribueerd met een vrije licentie.// Gebruik het zoals je wilt, winst of gratis, op voorwaarde dat het past in de licenties van de bijbehorende werken. // LSM9DSO // Deze code is ontworpen om te werken met de TCS3414_I2CS I2C Mini Module die verkrijgbaar is op dcubestore.com.

#erbij betrekken

#erbij betrekken

#erbij betrekken

#erbij betrekken

// 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 = "uw ssid";

const char* wachtwoord = "uw wachtwoord"; int xGyro, yGyro, zGyro, xAccl, yAccl, zAccl, xMag, yMag, zMag;

ESP8266WebServer-server (80);

ongeldige handleroot()

{ niet-ondertekende int-gegevens[6];

// Start I2C-verzending

Wire.beginTransmission (Addr_Gyro); // Selecteer controleregister 1 Wire.write (0x20); // Gegevenssnelheid = 95Hz, X, Y, Z-as ingeschakeld, inschakelen Wire.write (0x0F); // Stop I2C-transmissie Wire.endTransmission ();

// Start I2C-verzending

Wire.beginTransmission (Addr_Gyro); // Selecteer controleregister 4 Wire.write (0x23); // Volledige schaal 2000 dps, continue update Wire.write (0x30); // Stop I2C-transmissie Wire.endTransmission ();

// Start I2C-verzending

Wire.beginTransmission (Addr_Accl); // Selecteer controleregister 1 Wire.write (0x20); // Versnellingsgegevenssnelheid = 100Hz, X, Y, Z-as ingeschakeld, inschakelen Wire.write (0x67); // Stop I2C-transmissie op het apparaat Wire.endTransmission ();

// Start I2C-verzending

Wire.beginTransmission (Addr_Accl); // Selecteer controleregister 2 Wire.write (0x21); // Selectie op volledige schaal +/- 16g Wire.write (0x20); // Stop I2C-transmissie Wire.endTransmission ();

// Start I2C-verzending

Wire.beginTransmission (Addr_Accl); // Selecteer controleregister 5 Wire.write (0x24); // Magnetische hoge resolutie, output datasnelheid = 50Hz Wire.write (0x70); // Stop I2C-transmissie Wire.endTransmission ();

// Start I2C-verzending

Wire.beginTransmission (Addr_Accl); // Selecteer controleregister 6 Wire.write (0x25); // Magnetische volledige schaal +/- 12 gauss Wire.write (0x60); // Stop I2C-transmissie Wire.endTransmission ();

// Start I2C-verzending

Wire.beginTransmission (Addr_Accl); // Selecteer controleregister 7 Wire.write (0x26); // Normale modus, magnetische continue conversiemodus Wire.write (0x00); // Stop I2C-transmissie Wire.endTransmission (); vertraging (300);

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

// Vraag 1 byte aan gegevens aan

Wire.requestFrom (Addr_Gyro, 1);

// Lees 6 bytes aan gegevens

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

// Converteer de gegevens

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

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

// Vraag 1 byte aan gegevens aan

Wire.requestFrom (Addr_Accl, 1);

// Lees 6 bytes aan gegevens

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

// Converteer de gegevens

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

for (int i = 0; i <6; i++) {// Start I2C Transmission Wire.beginTransmission (Addr_Accl); // Selecteer dataregister Wire.write((8 + i)); // Stop I2C-transmissie Wire.endTransmission ();

// Vraag 1 byte aan gegevens aan

Wire.requestFrom (Addr_Accl, 1);

// Lees 6 bytes aan gegevens

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

// Converteer de gegevens

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

// Gegevens uitvoeren naar seriële monitor

Serial.print("X-as van rotatie: "); Serial.println(xGyro); Serial.print("Y-as van rotatie: "); Serial.println(yGyro); Serial.print("Z-as van rotatie: "); Serieel.println(zGyro); Serial.print("Versnelling in X-as: "); Serieel.println(xAccl); Serial.print("Versnelling in Y-as: "); Serial.println(yAccl); Serial.print("Versnelling in Z-as: "); Serieel.println(zAccl); Serial.print("Magnetisch veld in X-as: "); Serieel.println(xMag); Serial.print("Magnetisch veld in Y-as: "); Serial.println(yMag); Serial.print("Magnetisch gearchiveerd in Z-as: "); Serieel.println(zMag);

// Gegevens uitvoeren naar webserver

server.sendContent ("

DCUBE WINKEL

www.dcubestore.com

"" LSM9DS0 Sensor I2C minimodule

);

server.sendContent ("

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

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

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

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

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

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

Magnetisch gearchiveerd in X-Axis = " + String(xMag)); server.sendContent ("

Magnetisch gearchiveerd in Y-Axis = " + String (yMag)); server.sendContent ("

Magnetisch gearchiveerd in Z-as = " + String (zMag)); vertraging (1000); }

ongeldige setup()

{ // Initialiseer I2C-communicatie als MASTER Wire.begin (2, 14); // Initialiseer seriële communicatie, stel baudrate = 115200 Serial.begin (115200) in;

// Maak verbinding met wifi-netwerk

WiFi.begin(ssid, wachtwoord);

// Wacht op verbinding

while (WiFi.status() != WL_CONNECTED) {vertraging (500); Serieel.print("."); } Serieel.println(""); Serial.print("Verbonden met "); Seriële.println(ssid);

// Verkrijg het IP-adres van ESP8266

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

// Start de server

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

lege lus()

{ server.handleClient(); }

Stap 4: Werking van code

Werking van code
Werking van code

Download (of git pull) nu de code en open deze in de Arduino IDE.

Compileer en upload de code en bekijk de uitvoer op Serial Monitor.

Opmerking: Zorg ervoor dat u uw SSID-netwerk en wachtwoord in de code invoert voordat u gaat uploaden.

Kopieer het IP-adres van ESP8266 van de seriële monitor en plak het in uw webbrowser. U ziet een webpagina met rotatie-, versnellings- en magnetische veldaflezing in de 3-as.

De output van de sensor op Serial Monitor en Web Server wordt getoond in de bovenstaande afbeelding.

Stap 5: Toepassingen en functies

De LSM9DS0 is een systeem-in-pakket met een 3D digitale lineaire versnellingssensor, een 3D digitale hoeksnelheidssensor en een 3D digitale magnetische sensor. Door deze drie eigenschappen te meten, kun je veel kennis opdoen over de beweging van een object. Door de kracht en richting van het magnetische veld van de aarde te meten met een magnetometer, kun je je koers schatten. Een versnellingsmeter in uw telefoon kan de richting van de zwaartekracht meten en de oriëntatie schatten (portret, landschap, plat, enz.). Quadcopters met ingebouwde gyroscopen kunnen uitkijken voor plotselinge rollen of schokken. We kunnen dit gebruiken in Global Positioning System (GPS).

Enkele andere toepassingen zijn binnennavigatie, slimme gebruikersinterfaces, geavanceerde gebarenherkenning, gaming- en virtual reality-invoerapparaten, enz.

Met behulp van ESP8266 kunnen we de capaciteit vergroten naar een grotere lengte. We kunnen onze apparaten bedienen en hun prestaties monitoren vanaf onze desktops en mobiele apparaten. We kunnen de gegevens online opslaan en beheren en ze op elk moment bestuderen voor wijzigingen. Meer toepassingen zijn onder meer domotica, mesh-netwerken, industriële draadloze besturing, babyfoons, sensornetwerken, draagbare elektronica, wifi-locatiebewuste apparaten, wifi-positiesysteembakens.

Stap 6: Middelen om verder te gaan

Bekijk de onderstaande links voor meer informatie over LSM9DS0 en ESP8266:

  • LSM9DS0 Sensorgegevensblad
  • LSM9DS0 Bedradingsschema
  • ESP8266-gegevensblad

Aanbevolen: