Sommario:
- Passaggio 1: attrezzatura di cui abbiamo bisogno..
- Passaggio 2: connessioni hardware
- Passaggio 3: codice
- Passaggio 4: funzionamento del codice
- Passaggio 5: applicazioni e funzionalità
- Passaggio 6: risorse per andare oltre
Video: Orientamento della mappa tramite server Web: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
Internet of Things, (IoT) è uno degli argomenti più popolari sul pianeta in questo momento. E sta crescendo rapidamente di giorno in giorno con Internet. L'Internet delle cose sta trasformando le semplici case in case intelligenti, dove tutto, dalle luci alle serrature, può essere controllato dal tuo smartphone o desktop. Questo è il lusso che tutti vogliono possedere.
Giochiamo sempre con gli strumenti che abbiamo e continuiamo a lavorare per superare i nostri limiti. Cerchiamo di dare ai nostri clienti una visione delle ultime tecnologie e idee. In questo modo puoi trasformare la tua casa in case intelligenti e goderti il gusto del lusso senza troppi sforzi.
Oggi pensiamo di lavorare su uno degli argomenti più importanti nell'IoT: l'orientamento della mappa digitale.
Costruiremo un server web attraverso il quale possiamo monitorare i movimenti di qualsiasi dispositivo o cosa (dipende da te, chi vuoi spiare;)). Puoi sempre pensare di aggiornare questo progetto al livello successivo con alcune modifiche e non dimenticare di dircelo nei commenti qui sotto.
Cominciamo allora..!!
Passaggio 1: attrezzatura di cui abbiamo bisogno..
1. Sensore LSM9DS0
Il sensore 3 in 1 prodotto da STMicroelectronics, l'LSM9DS0 è un sistema integrato che comprende un sensore di accelerazione lineare digitale 3D, un sensore di velocità angolare digitale 3D e un sensore magnetico digitale 3D. LSM9DS0 ha un fondo scala di accelerazione lineare di ±2g/±4g/±6g/±8g/±16g, un fondoscala del campo magnetico di ±2/±4/±8/±12 gauss e una velocità angolare di ±245 /±500/±2000 dps.
2. Adafruit Huzzah ESP8266
Il processore ESP8266 di Espressif è un microcontrollore da 80 MHz con un front-end WiFi completo (sia come client che come punto di accesso) e stack TCP/IP con supporto DNS. ESP8266 è un'incredibile piattaforma per lo sviluppo di applicazioni IoT. L'ESP8266 fornisce una piattaforma matura per il monitoraggio e il controllo delle applicazioni utilizzando Arduino Wire Language e Arduino IDE.
3. Programmatore USB ESP8266
il suo adattatore host ESP8266 è stato progettato specificamente dal Dcube Store per la versione Adafruit Huzzah dell'ESP8266, consentendo l'interfaccia I²C.
4. Cavo di collegamento I2C
5. Cavo mini USB
Il cavo mini USB L'alimentatore è la scelta ideale per alimentare Adafruit Huzzah ESP8266.
Passaggio 2: connessioni hardware
In generale, creare connessioni è la parte più semplice di questo progetto. Segui le istruzioni e le immagini e non dovresti avere problemi.
Prima di tutto prendi l'Adafruit Huzzah ESP8266 e posiziona il programmatore USB (con la porta I²C rivolta verso l'interno) su di esso. Premi delicatamente il programmatore USB e abbiamo finito con questo passaggio facile come una torta (vedi l'immagine sopra).
Collegamento del sensore e Adafruit Huzzah ESP8266 Prendi il sensore e collega il cavo I²C con esso. Per il corretto funzionamento di questo cavo, ricordare che l'uscita I²C si collega SEMPRE all'ingresso I²C. Lo stesso doveva essere seguito per l'Adafruit Huzzah ESP8266 con il programmatore USB montato su di esso (vedi l'immagine sopra).
Con l'aiuto del programmatore USB ESP8266, è molto facile programmare ESP. Tutto quello che devi fare è collegare il sensore al programmatore USB e sei a posto. Preferiamo usare questo adattatore perché rende molto più facile collegare l'hardware. Non preoccuparti di saldare i pin dell'ESP al sensore o leggere i diagrammi dei pin e la scheda tecnica. Possiamo utilizzare e lavorare su più sensori contemporaneamente, devi solo creare una catena. Senza questi programmatori USB plug and play c'è un grosso rischio di fare una connessione sbagliata. Un cattivo cablaggio può uccidere il tuo wifi e il tuo sensore.
Nota: il filo marrone deve sempre seguire la connessione di terra (GND) tra l'uscita di un dispositivo e l'ingresso di un altro dispositivo.
Alimentazione del circuito
Collega il cavo Mini USB alla presa di alimentazione di Adafruit Huzzah ESP8266. Accendilo e voilà, siamo a posto!
Passaggio 3: codice
Il codice ESP per il sensore Adafruit Huzzah ESP8266 e LSM9DS0 è disponibile nel nostro repository github.
Prima di passare al codice, assicurati di leggere le istruzioni fornite nel file Leggimi e imposta il tuo Adafruit Huzzah ESP8266 in base ad esso. Ci vorranno solo 5 minuti per impostare l'ESP.
Il codice è lungo ma è nella forma più semplice che puoi immaginare e non avrai difficoltà a capirlo.
Per tua comodità, puoi copiare il codice ESP funzionante per questo sensore anche da qui:
// Distribuito con una licenza di libero arbitrio.// Usalo come vuoi, a scopo di lucro o gratuito, a condizione che si adatti alle licenze delle opere associate. // LSM9DSO // Questo codice è progettato per funzionare con il Mini Modulo I2C TCS3414_I2CS disponibile su dcubestore.com.
#includere
#includere
#includere
#includere
// L'indirizzo I2C del giroscopio LSM9DSO è 6A(106)
#define Addr_Gyro 0x6A // LSM9DSO Accl L'indirizzo I2C è 1E(30) #define Addr_Accl 0x1E
const char* ssid = "il tuo ssid";
const char* password = "la tua password"; int xGyro, yGyro, zGyro, xAccl, yAccl, zAccl, xMag, yMag, zMag;
Server ESP8266WebServer(80);
void handleroot()
{ dati int non firmati[6];
// Avvia la trasmissione I2C
Wire.beginTransmission(Addr_Gyro); // Seleziona il registro di controllo 1 Wire.write(0x20); // Velocità dati = 95Hz, X, Y, Z-Axis abilitato, accensione Wire.write(0x0F); // Arresta la trasmissione I2C Wire.endTransmission();
// Avvia la trasmissione I2C
Wire.beginTransmission(Addr_Gyro); // Seleziona il registro di controllo 4 Wire.write(0x23); // 2000 dps a grandezza naturale, aggiornamento continuo Wire.write(0x30); // Arresta la trasmissione I2C Wire.endTransmission();
// Avvia la trasmissione I2C
Wire.beginTransmission(Addr_Accl); // Seleziona il registro di controllo 1 Wire.write(0x20); // Velocità dati di accelerazione = 100Hz, X, Y, Z-Axis abilitato, accensione Wire.write(0x67); // Arresta la trasmissione I2C sul dispositivo Wire.endTransmission();
// Avvia la trasmissione I2C
Wire.beginTransmission(Addr_Accl); // Seleziona il registro di controllo 2 Wire.write(0x21); // Selezione fondo scala +/- 16g Wire.write(0x20); // Arresta la trasmissione I2C Wire.endTransmission();
// Avvia la trasmissione I2C
Wire.beginTransmission(Addr_Accl); // Seleziona il registro di controllo 5 Wire.write(0x24); // Alta risoluzione magnetica, velocità dati in uscita = 50Hz Wire.write(0x70); // Arresta la trasmissione I2C Wire.endTransmission();
// Avvia la trasmissione I2C
Wire.beginTransmission(Addr_Accl); // Seleziona il registro di controllo 6 Wire.write(0x25); // Fondo scala magnetico +/- 12 gauss Wire.write(0x60); // Arresta la trasmissione I2C Wire.endTransmission();
// Avvia la trasmissione I2C
Wire.beginTransmission(Addr_Accl); // Seleziona il registro di controllo 7 Wire.write(0x26); // Modalità normale, modalità di conversione magnetica continua Wire.write(0x00); // Arresta la trasmissione I2C Wire.endTransmission(); ritardo(300);
for (int i = 0; i < 6; i++) { // Avvia la trasmissione I2C Wire.beginTransmission(Addr_Gyro); // Seleziona il registro dati Wire.write((40 + i)); // Arresta la trasmissione I2C Wire.endTransmission();
// Richiedi 1 byte di dati
Wire.requestFrom(Addr_Gyro, 1);
// Legge 6 byte di dati
// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb if (Wire.available() == 1) { data = Wire.read(); } }
// Converti i dati
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++) { // Avvia la trasmissione I2C Wire.beginTransmission(Addr_Accl); // Seleziona il registro dati Wire.write((40 + i)); // Arresta la trasmissione I2C Wire.endTransmission();
// Richiedi 1 byte di dati
Wire.requestFrom(Addr_Accl, 1);
// Legge 6 byte di dati
// xAccl lsb, xAccl msb, yAccl lsb, yAccl msb // zAccl lsb, zAccl msb if (Wire.available() == 1) { data = Wire.read(); } }
// Converti i dati
int xAccl = ((data[1] * 256) + data[0]); int yAccl = ((data[3] * 256) + data[2]); int zAccl = ((dati[5] * 256) + dati[4]);
for (int i = 0; i < 6; i++) { // Avvia la trasmissione I2C Wire.beginTransmission(Addr_Accl); // Seleziona il registro dati Wire.write((8 + i)); // Arresta la trasmissione I2C Wire.endTransmission();
// Richiedi 1 byte di dati
Wire.requestFrom(Addr_Accl, 1);
// Legge 6 byte di dati
// xMag lsb, xMag msb, yMag lsb, yMag msb // zMag lsb, zMag msb if (Wire.available() == 1) { data = Wire.read(); } }
// Converti i dati
int xMag = ((data[1] * 256) + data[0]); int yMag = ((data[3] * 256) + data[2]); int zMag = ((dati[5] * 256) + dati[4]);
// Invia i dati al monitor seriale
Serial.print("Asse X di rotazione: "); Serial.println(xGyro); Serial.print("Asse Y di rotazione: "); Serial.println(yGyro); Serial.print("Asse Z di rotazione: "); Serial.println(zGyro); Serial.print("Accelerazione nell'asse X: "); Serial.println(xAccl); Serial.print("Accelerazione nell'asse Y: "); Serial.println(yAccl); Serial.print("Accelerazione nell'asse Z: "); Serial.println(zAccl); Serial.print("Campo magnetico nell'asse X: "); Serial.println(xMag); Serial.print("Campo magnetico nell'asse Y: "); Serial.println(yMag); Serial.print("Archiviato magnetico in Z-Axis: "); Serial.println(zMag);
// Invia i dati al server web
server.sendContent ("
NEGOZIO DCUBE
www.dcubestore.com
"" Mini modulo sensore I2C LSM9DS0
);
server.sendContent ("
Asse X di rotazione = " + String(xGyro)); server.sendContent ("
Asse Y di rotazione = " + String(yGyro)); server.sendContent ("
Asse Z di rotazione = " + String(zGyro)); server.sendContent ("
Accelerazione nell'asse X = " + String(xAccl)); server.sendContent ("
Accelerazione nell'asse Y = " + String(yAccl)); server.sendContent ("
Accelerazione nell'asse Z = " + String(zAccl)); server.sendContent ("
Magnetico archiviato in X-Axis = " + String(xMag)); server.sendContent ("
Magnetico archiviato nell'asse Y = " + String(yMag)); server.sendContent ("
Campo magnetico in Z-Axis = " + String(zMag)); delay(1000); }
configurazione nulla()
{ // Inizializza la comunicazione I2C come MASTER Wire.begin(2, 14); // Inizializza la comunicazione seriale, imposta baud rate = 115200 Serial.begin(115200);
// Connettiti alla rete WiFi
WiFi.begin(ssid, password);
// Attendi la connessione
while (WiFi.status() != WL_CONNECTED) { ritardo(500); Serial.print("."); } Serial.println(""); Serial.print("Connesso a"); Serial.println(ssid);
// Ottieni l'indirizzo IP di ESP8266
Serial.print("Indirizzo IP: "); Serial.println(WiFi.localIP());
// Avvia il server
server.on("/", handleroot); server.begin(); Serial.println("Server HTTP avviato"); }
ciclo vuoto()
{ server.handleClient(); }
Passaggio 4: funzionamento del codice
Ora scarica (o git pull) il codice e aprilo nell'IDE di Arduino.
Compila e carica il codice e guarda l'output su Serial Monitor.
Nota: prima di caricare, assicurati di inserire la tua rete SSID e la password nel codice.
Copia l'indirizzo IP di ESP8266 dal monitor seriale e incollalo nel tuo browser web. Vedrai una pagina web con asse di rotazione, accelerazione e lettura del campo magnetico a 3 assi.
L'output del sensore su Serial Monitor e Web Server è mostrato nell'immagine sopra.
Passaggio 5: applicazioni e funzionalità
LSM9DS0 è un sistema in pacchetto con un sensore di accelerazione lineare digitale 3D, un sensore di velocità angolare digitale 3D e un sensore magnetico digitale 3D. Misurando queste tre proprietà, puoi acquisire una grande conoscenza del movimento di un oggetto. Misurando la forza e la direzione del campo magnetico terrestre con un magnetometro, puoi approssimare la tua direzione. Un accelerometro nel telefono può misurare la direzione della forza di gravità e stimare l'orientamento (ritratto, paesaggio, piano, ecc.). I quadricotteri con giroscopi incorporati possono fare attenzione a rollio o beccheggi improvvisi. Possiamo usarlo nel Global Positioning System (GPS).
Alcune altre applicazioni includono navigazione interna, interfacce utente intelligenti, riconoscimento avanzato dei gesti, dispositivi di input per giochi e realtà virtuale, ecc.
Con l'aiuto di ESP8266, possiamo aumentare la sua capacità a una lunghezza maggiore. Possiamo controllare i nostri dispositivi e monitorarne le prestazioni dai nostri desktop e dispositivi mobili. Possiamo archiviare e gestire i dati online e studiarli in qualsiasi momento per modifiche. Altre applicazioni includono l'automazione domestica, la rete mesh, il controllo wireless industriale, i baby monitor, le reti di sensori, l'elettronica indossabile, i dispositivi Wi-Fi con rilevamento della posizione, i beacon del sistema di posizione Wi-Fi.
Passaggio 6: risorse per andare oltre
Per ulteriori informazioni su LSM9DS0 ed ESP8266, controlla i collegamenti seguenti:
- Scheda tecnica del sensore LSM9DS0
- Schema elettrico LSM9DS0
- Scheda tecnica ESP8266
Consigliato:
Orologio con mappa della metropolitana di Londra: 9 passaggi (con immagini)
Orologio della mappa della metropolitana di Londra: nel 2014, dopo uno stage presso una società di consulenza di stampa 3D a Londra e un esperimento con litofanie a colori utilizzando la loro macchina Stratasys, progetto il mio regalo di addio, una stampa 3D a colori di linee di tubi locali al loro uffici. Ero
Controllo della luminosità del LED tramite Raspberry Pi e pagina Web personalizzata: 5 passaggi
Controllo della luminosità del LED tramite Raspberry Pi e pagina Web personalizzata: utilizzando un server Apache sul mio pi con php, ho trovato un modo per controllare la luminosità di un LED utilizzando uno slider con una pagina Web personalizzata accessibile su qualsiasi dispositivo connesso alla stessa rete del tuo pi .Ci sono molti modi in cui questo può essere ac
Braccialetto di orientamento connesso: 6 passaggi
Braccialetto di orientamento connesso: questo progetto accademico, il braccialetto di orientamento connesso, è stato realizzato da quattro studenti della scuola di ingegneria Polytech Paris-UPMC: Sébastien Potet, Pauline Pham, Kevin Antunes e Boris Bras. Qual è il nostro progetto?Durante un semestre
Nuova mappa turistica della città di Taipei!!!: 6 passaggi
Nuova mappa turistica di Taipei City!!!: In questo progetto, creerò una scatola e sopra ci sarà una mappa di New Taipei City. L'obiettivo di questo progetto è far conoscere a bambini e adulti le 3 grandi aree principali di New Taipei City. Ci sono 3 pulsanti che si trovano sul lato della scatola
ESP8266 Nodemcu Monitoraggio della temperatura utilizzando DHT11 su un server Web locale - Ottieni la temperatura e l'umidità della stanza sul tuo browser: 6 passaggi
ESP8266 Nodemcu Monitoraggio della temperatura utilizzando DHT11 su un server Web locale | Ottieni la temperatura e l'umidità della stanza sul tuo browser: Ciao ragazzi, oggi faremo un'umidità e l'umidità; sistema di monitoraggio della temperatura utilizzando ESP 8266 NODEMCU & Sensore di temperatura DHT11. La temperatura e l'umidità saranno ottenute da DHT11 Sensor & può essere visto su un browser quale pagina web verrà gestita