Innholdsfortegnelse:
- Trinn 1: Utstyr vi trenger..
- Trinn 2: Maskinvaretilkoblinger
- Trinn 3: Kode
- Trinn 4: Arbeid med kode
- Trinn 5: Programmer og funksjoner
- Trinn 6: Ressurser for å gå videre
Video: Kartorientering gjennom webserver: 6 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
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..
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
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
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
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:
Lodding gjennom hullkomponenter - Grunnleggende for lodding: 8 trinn (med bilder)
Lodding gjennom hullkomponenter | Grunnleggende for lodding: I denne instruksjonsboken vil jeg diskutere noen grunnleggende om lodding gjennom hullkomponenter til kretskort. Jeg antar at du allerede har sjekket ut de to første instruksjonene for min Lodding Basics -serie. Hvis du ikke har sjekket inn min
Sett opp Raspberry Pi 4 gjennom bærbar PC/pc ved hjelp av Ethernet-kabel (ingen skjerm, ingen Wi-Fi): 8 trinn
Sett opp Raspberry Pi 4 gjennom bærbar PC/pc ved hjelp av Ethernet-kabel (ingen skjerm, ingen Wi-Fi): I dette skal vi jobbe med Raspberry Pi 4 Model-B med 1 GB RAM for oppsettet. Raspberry-Pi er en enkelt brettcomputer som brukes til utdanningsformål og gjør-det-selv-prosjekter til en rimelig pris, krever en strømforsyning på 5V 3A
Glass Stone LED Tube (WiFi -kontrollert gjennom smarttelefon -appen): 6 trinn (med bilder)
Glass Stone LED Tube (WiFi Controlled Through Smartphone App): Hallo andre produsenter! I denne instruksen vil jeg vise deg hvordan du bygger et WiFi-kontrollert LED-rør som er fylt med glassstein for en fin diffusjonseffekt. Lysdiodene er individuelt adresserbare, og derfor er noen fine effekter mulig i
Boe Bot navigerer gjennom en labyrint: 4 trinn
Boe Bot navigerer gjennom en labyrint: Denne instruksen vil hjelpe deg med å lage støtfangere for boe -boten, og den vil gi deg koden som navigerer boe -boten gjennom labyrinten
IoT ESP8266-serien: 2- Overvåk data gjennom ThingSpeak.com: 5 trinn
IoT ESP8266 Series: 2- Monitor Data Through ThingSpeak.com: Dette er del to av IoT ESP8266 Series. For å se del 1, se denne instruerbare IoT ESP8266 -serien: 1 Koble til WIFI -ruter. Denne delen tar sikte på å vise deg hvordan du sender sensordata til en av de populære IoT gratis skytjenestene https: //thingspeak.com