Sommario:

Orientamento della mappa tramite server Web: 6 passaggi
Orientamento della mappa tramite server Web: 6 passaggi

Video: Orientamento della mappa tramite server Web: 6 passaggi

Video: Orientamento della mappa tramite server Web: 6 passaggi
Video: Tesi di laurea online - figuracce 1 2024, Novembre
Anonim
Orientamento della mappa tramite server Web
Orientamento della mappa tramite server Web

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..

Attrezzatura di cui abbiamo bisogno..!!
Attrezzatura di cui abbiamo bisogno..!!
Attrezzatura di cui abbiamo bisogno..!!
Attrezzatura di cui abbiamo bisogno..!!
Attrezzatura di cui abbiamo bisogno..!!
Attrezzatura di cui abbiamo bisogno..!!
Attrezzatura di cui abbiamo bisogno..!!
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

Connessioni hardware
Connessioni hardware
Connessioni hardware
Connessioni hardware
Connessioni hardware
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

Codice
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

Funzionamento del codice
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: