Inhoudsopgave:
- Stap 1: Apparatuur die we nodig hebben..
- Stap 2: Hardwareverbindingen
- Stap 3: Coderen
- Stap 4: Werking van code
- Stap 5: Toepassingen en functies
- Stap 6: Middelen om verder te gaan
Video: Kaartoriëntatie via webserver: 6 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
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..
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
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
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
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:
Hoe ESP8266 als webserver te gebruiken: 5 stappen
Hoe ESP8266 als webserver te gebruiken: Hallo, ik gebruik momenteel Windows 10, NodeMCU 1.0 en hier is de lijst met software die ik heb gebruikt en installatiehandleidingen die ik heb gevolgd: Arduino IDE Extra boards voor esp8266 SpiffLibrary gebruikt: WebsocketIk gebruikte NodeMCU als een server om serveer een HTML-bestand Ik ben gek
ESP8266 Nodemcu-temperatuurbewaking met DHT11 op een lokale webserver - Kamertemperatuur en -vochtigheid in uw browser krijgen: 6 stappen
ESP8266 Nodemcu-temperatuurbewaking met DHT11 op een lokale webserver | Krijg kamertemperatuur en vochtigheid in uw browser: Hallo allemaal, vandaag zullen we een vochtigheid & temperatuurbewakingssysteem met ESP 8266 NODEMCU & DHT11 temperatuursensor. Temperatuur en vochtigheid worden verkregen uit DHT11 Sensor & in een browser is te zien welke webpagina wordt beheerd
ESP8266 met Thingspeak en DHT11-zelfstudie - Webserver: 7 stappen
ESP8266 met Thingspeak en DHT11-zelfstudie | Webserver: Hé, wat is er, jongens! Akarsh hier van CETech. Dit project van mij is meer een leercurve om het thingspeak-platform samen met het idee van MQTT te begrijpen en vervolgens Thingspeak te gebruiken met een ESP8266. Tegen het einde van het artikel zullen we co
Apparaten bedienen via internet via browser. (IoT): 6 stappen
Apparaten bedienen via internet via browser. (IoT): In deze Instructable zal ik je laten zien hoe je apparaten zoals LED's, relais, motoren etc. via internet via een webbrowser kunt bedienen. En u hebt via elk apparaat veilig toegang tot de bedieningselementen. Het webplatform dat ik hier heb gebruikt, is RemoteMe.org bezoek
Bestanden overdragen via uw LAN via BitTorrent: 6 stappen
Bestanden overdragen via uw LAN via BitTorrent: Soms moet u mogelijk bestanden over een netwerk naar meerdere computers overbrengen. Hoewel je het op een flashstation of cd/dvd zou kunnen zetten, zou je naar elke computer moeten gaan om de bestanden te kopiëren en het kan even duren om alle bestanden te kopiëren (vooral met f