Sadržaj:
- Korak 1: Potrebna nam je oprema..
- Korak 2: Hardverske veze
- Korak 3: Kodirajte
- Korak 4: Rad Code -a
- Korak 5: Aplikacije i značajke
- Korak 6: Resursi za napredak
Video: Orijentacija karte putem web servera: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:06
Internet stvari, (IoT) jedna je od trenutno popularnih tema na planeti. I, internetom brzo raste iz dana u dan. Internet stvari mijenja jednostavne domove u pametne, gdje se sve, od vaših svjetala do brava, može kontrolirati sa vašeg pametnog telefona ili radne površine. Ovo je luksuz koji svi žele posjedovati.
Uvijek se igramo s alatima koje imamo i nastavljamo raditi na idućem koraku naših granica. Trudimo se našim kupcima dati viziju najnovijih tehnologija i ideja. Tako da svoj dom možete pretvoriti u pametne domove i uživati u okusu luksuza bez mnogo napora.
Danas razmišljamo o radu na jednoj od najvažnijih tema u IoT -u - Orijentacija digitalnih karata.
Izgradit ćemo web server putem kojeg možemo pratiti kretanje bilo kojeg uređaja ili stvari (na vama je da odlučite koga ćete špijunirati;)). Uvijek možete razmišljati o nadogradnji ovog projekta na viši nivo s nekim izmjenama i ne zaboravite nam to reći u komentarima ispod.
Počnimo nego.. !!
Korak 1: Potrebna nam je oprema..
1. Senzor LSM9DS0
Senzor 3 u 1 koji proizvodi STMicroelectronics, LSM9DS0 je sistem u paketu koji sadrži 3D digitalni senzor linearnog ubrzanja, 3D digitalni senzor kutne brzine i 3D digitalni magnetni senzor. LSM9DS0 ima linearnu skalu punog ubrzanja od ± 2 g/± 4 g/± 6 g/± 8 g/± 16 g, punu skalu magnetskog polja od ± 2/± 4/± 8/± 12 gausa i kutnu brzinu od ± 245 /± 500/± 2000 dps.
2. Adafruit Huzzah ESP8266
ESP8266 procesor kompanije Espressif je 80 MHz mikrokontroler sa punim WiFi prednjim dijelom (i kao klijent i kao pristupna tačka) i TCP/IP stogom sa DNS podrškom. ESP8266 je nevjerovatna platforma za razvoj IoT aplikacija. ESP8266 pruža zrelu platformu za praćenje i upravljanje aplikacijama koristeći Arduino Wire Language i Arduino IDE.
3. ESP8266 USB programator
njegov host adapter ESP8266 posebno je dizajnirao Dcube Store za Adafruit Huzzah verziju ESP8266, omogućavajući I²C sučelje.
4. I2C priključni kabel
5. Mini USB kabel
Napajanje mini USB kabelom idealan je izbor za napajanje Adafruit Huzzah ESP8266.
Korak 2: Hardverske veze
Općenito, povezivanje je najlakši dio ovog projekta. Slijedite upute i slike i ne biste trebali imati problema.
Prije svega uzmite Adafruit Huzzah ESP8266 i na njega postavite USB programator (sa ulazom prema I²C portu). Lagano pritisnite USB programator i završili smo s ovim korakom lako kao pita (pogledajte gornju sliku).
Povezivanje senzora i Adafruit Huzzah ESP8266 Uzmite senzor i spojite I²C kabel s njim. Za pravilan rad ovog kabela, imajte na umu da se I²C izlaz UVIJEK povezuje s I²C ulazom. Isto je trebalo slijediti i za Adafruit Huzzah ESP8266 sa USB programatorom montiranim preko njega (vidi gornju sliku).
Uz pomoć ESP8266 USB programatora, vrlo je jednostavno programirati ESP. Sve što trebate učiniti je priključiti senzor u USB programator i spremni ste. Radije koristimo ovaj adapter jer znatno olakšava povezivanje hardvera. Nema brige oko lemljenja pinova ESP -a na senzor ili čitanja dijagrama pinova i tablice s podacima. Možemo koristiti i raditi na više senzora istovremeno, samo trebate napraviti lanac. Bez ovih USB programatora plug and play postoji veliki rizik od pogrešne veze. Loše ožičenje može ubiti vaš WiFi kao i vaš senzor.
Napomena: Smeđa žica uvijek treba slijediti vezu uzemljenja (GND) između izlaza jednog uređaja i ulaza drugog uređaja.
Napajanje strujnog kola
Uključite Mini USB kabel u utičnicu za napajanje Adafruit Huzzah ESP8266. Zapali i voila, spremni smo!
Korak 3: Kodirajte
ESP kod za senzor Adafruit Huzzah ESP8266 i LSM9DS0 dostupan je u našem github spremištu.
Prije nego prijeđete na kôd, svakako pročitajte upute date u datoteci Readme i podesite svoj Adafruit Huzzah ESP8266 prema njemu. Za postavljanje ESP -a bit će potrebno samo 5 minuta.
Kôd je dugačak, ali u najjednostavnijem obliku koji možete zamisliti i nećete imati poteškoća u razumijevanju.
Radi vaše udobnosti, možete kopirati i radni ESP kod za ovaj senzor odavde:
// Distribuirano s licencom za slobodnu volju.// Koristite ga kako god želite, profitno ili besplatno, pod uvjetom da se uklapa u licence povezanih djela. // LSM9DSO // Ovaj kod je dizajniran za rad s TCS3414_I2CS I2C mini modulom dostupnim na dcubestore.com.
#include
#include
#include
#include
// LSM9DSO Gyro I2C adresa je 6A (106)
#define Addr_Gyro 0x6A // LSM9DSO Accl I2C adresa je 1E (30) #define Addr_Accl 0x1E
const char* ssid = "vaš ssid";
const char* password = "vaša lozinka"; int xGyro, yGyro, zGyro, xAccl, yAccl, zAccl, xMag, yMag, zMag;
ESP8266WebServer server (80);
void handleroot ()
{nepotpisani int podaci [6];
// Pokretanje I2C prijenosa
Wire.beginTransmission (Addr_Gyro); // Odabir upravljačkog registra 1 Wire.write (0x20); // Brzina prijenosa podataka = 95Hz, X, Y, Z-os omogućena, uključeno Wire.write (0x0F); // Zaustavljanje I2C prijenosa Wire.endTransmission ();
// Pokretanje I2C prijenosa
Wire.beginTransmission (Addr_Gyro); // Odabir upravljačkog registra 4 Wire.write (0x23); // U punom opsegu 2000 dps, kontinuirano ažuriranje Wire.write (0x30); // Zaustavljanje I2C prijenosa Wire.endTransmission ();
// Pokretanje I2C prijenosa
Wire.beginTransmission (Addr_Accl); // Odabir upravljačkog registra 1 Wire.write (0x20); // Brzina prijenosa podataka ubrzanja = 100Hz, X, Y, Z-os omogućena, napajanje Wire.write (0x67); // Zaustavljanje I2C prijenosa na uređaju Wire.endTransmission ();
// Pokretanje I2C prijenosa
Wire.beginTransmission (Addr_Accl); // Odabir upravljačkog registra 2 Wire.write (0x21); // Potpuni izbor skale +/- 16g Wire.write (0x20); // Zaustavljanje I2C prijenosa Wire.endTransmission ();
// Pokretanje I2C prijenosa
Wire.beginTransmission (Addr_Accl); // Odabir upravljačkog registra 5 Wire.write (0x24); // Magnetska visoka rezolucija, brzina izlaznih podataka = 50Hz Wire.write (0x70); // Zaustavljanje I2C prijenosa Wire.endTransmission ();
// Pokretanje I2C prijenosa
Wire.beginTransmission (Addr_Accl); // Odabir upravljačkog registra 6 Wire.write (0x25); // Magnetska žica +/- 12 gauss Wire.write (0x60); // Zaustavljanje I2C prijenosa Wire.endTransmission ();
// Pokretanje I2C prijenosa
Wire.beginTransmission (Addr_Accl); // Odabir upravljačkog registra 7 Wire.write (0x26); // Normalan način rada, način neprekidne magnetske konverzije Wire.write (0x00); // Zaustavljanje I2C prijenosa Wire.endTransmission (); kašnjenje (300);
for (int i = 0; i <6; i ++) {// Pokretanje I2C prijenosa Wire.beginTransmission (Addr_Gyro); // Odabir registra podataka Wire.write ((40 + i)); // Zaustavljanje I2C prijenosa Wire.endTransmission ();
// Zatražite 1 bajt podataka
Wire.requestFrom (Addr_Gyro, 1);
// Očitavanje 6 bajtova podataka
// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb if (Wire.available () == 1) {data = Wire.read (); }}
// Pretvorimo podatke
int xGyro = ((podaci [1] * 256) + podaci [0]); int yGyro = ((podaci [3] * 256) + podaci [2]); int zGyro = ((podaci [5] * 256) + podaci [4]);
for (int i = 0; i <6; i ++) {// Pokretanje I2C prijenosa Wire.beginTransmission (Addr_Accl); // Odabir registra podataka Wire.write ((40 + i)); // Zaustavljanje I2C prijenosa Wire.endTransmission ();
// Zatražite 1 bajt podataka
Wire.requestFrom (Addr_Accl, 1);
// Očitavanje 6 bajtova podataka
// xAccl lsb, xAccl msb, yAccl lsb, yAccl msb // zAccl lsb, zAccl msb ako (Wire.available () == 1) {data = Wire.read (); }}
// Pretvorimo podatke
int xAccl = ((podaci [1] * 256) + podaci [0]); int yAccl = ((podaci [3] * 256) + podaci [2]); int zAccl = ((podaci [5] * 256) + podaci [4]);
for (int i = 0; i <6; i ++) {// Pokretanje I2C prijenosa Wire.beginTransmission (Addr_Accl); // Odabir registra podataka Wire.write ((8 + i)); // Zaustavljanje I2C prijenosa Wire.endTransmission ();
// Zatražite 1 bajt podataka
Wire.requestFrom (Addr_Accl, 1);
// Očitavanje 6 bajtova podataka
// xMag lsb, xMag msb, yMag lsb, yMag msb // zMag lsb, zMag msb if (Wire.available () == 1) {data = Wire.read (); }}
// Pretvorimo podatke
int xMag = ((podaci [1] * 256) + podaci [0]); int yMag = ((podaci [3] * 256) + podaci [2]); int zMag = ((podaci [5] * 256) + podaci [4]);
// Izlaz podataka na serijski monitor
Serial.print ("Osa rotacije X:"); Serial.println (xGyro); Serial.print ("Y-os rotacije:"); Serial.println (yGyro); Serial.print ("Z-os rotacije:"); Serial.println (zGyro); Serial.print ("Ubrzanje u osi X:"); Serial.println (xAccl); Serial.print ("Ubrzanje u osi Y:"); Serial.println (yAccl); Serial.print ("Ubrzanje u osi Z:"); Serial.println (zAccl); Serial.print ("Magnetsko polje u osi X:"); Serial.println (xMag); Serial.print ("Magnetsko polje u osi Y:"); Serial.println (yMag); Serial.print ("Magnetsko polje u osi Z:"); Serial.println (zMag);
// Izlaženje podataka na web poslužitelj
server.sendContent ("
DCUBE STORE
www.dcubestore.com
"" LSM9DS0 senzorski I2C mini modul
);
server.sendContent ("
Os X rotacije = " + String (xGyro)); server.sendContent ("
Y-os rotacije = " + String (yGyro)); server.sendContent ("
Z-os rotacije = " + String (zGyro)); server.sendContent ("
Ubrzanje u osi X = " + String (xAccl)); server.sendContent ("
Ubrzanje u osi Y = " + String (yAccl)); server.sendContent ("
Ubrzanje u Z-osi = " + String (zAccl)); server.sendContent ("
Magnetsko polje u X-Axis = " + String (xMag)); server.sendContent ("
Magnetsko polje u Y-osi = " + String (yMag)); server.sendContent ("
Magnetsko polje u Z-osi = " + niz (zMag)); kašnjenje (1000);}
void setup ()
{// Inicializirajte I2C komunikaciju kao MASTER Wire.begin (2, 14); // Pokreće serijsku komunikaciju, postavlja brzinu prijenosa = 115200 Serial.begin (115200);
// Povezivanje na WiFi mrežu
WiFi.begin (ssid, lozinka);
// Pričekajte vezu
while (WiFi.status ()! = WL_CONNECTED) {kašnjenje (500); Serial.print ("."); } Serial.println (""); Serial.print ("Povezano sa"); Serial.println (ssid);
// Dobijte IP adresu ESP8266
Serial.print ("IP adresa:"); Serial.println (WiFi.localIP ());
// Pokretanje poslužitelja
server.on ("/", handleroot); server.begin (); Serial.println ("HTTP poslužitelj pokrenut"); }
void loop ()
{server.handleClient (); }
Korak 4: Rad Code -a
Sada preuzmite (ili git povucite) kôd i otvorite ga u Arduino IDE -u.
Sastavite i otpremite kôd i pogledajte izlaz na Serial Monitor.
Napomena: Prije učitavanja, obavezno unesite svoju SSID mrežu i lozinku u kôd.
Kopirajte IP adresu ESP8266 sa serijskog monitora i zalijepite je u svoj web preglednik. Vidjet ćete web stranicu s osi rotacije, ubrzanja i očitavanjem magnetskog polja u 3 osi.
Izlaz senzora na serijskom monitoru i web serveru prikazan je na gornjoj slici.
Korak 5: Aplikacije i značajke
LSM9DS0 je sistem u paketu koji sadrži 3D digitalni linearni senzor ubrzanja, 3D digitalni senzor kutne brzine i 3D digitalni magnetni senzor. Mjerenjem ova tri svojstva možete steći veliko znanje o kretanju objekta. Mjereći silu i smjer Zemljinog magnetskog polja magnetometrom, možete približiti svoj kurs. Akcelerometar u vašem telefonu može mjeriti smjer sile teže i procjenjivati orijentaciju (portret, pejzaž, stan itd.). Četvorokopter sa ugrađenim žiroskopima može paziti na iznenadne preokrete ili nagibe. Ovo možemo koristiti u globalnom sistemu pozicioniranja (GPS).
Još neke aplikacije uključuju unutarnju navigaciju, pametna korisnička sučelja, napredno prepoznavanje gesta, uređaje za unos igara i virtualnu stvarnost itd.
Uz pomoć ESP8266 možemo povećati njegov kapacitet na veću dužinu. Možemo kontrolirati naše uređaje i tamo pratiti performanse sa svojih stolnih i mobilnih uređaja. Podatke možemo pohraniti i upravljati na mreži i proučiti ih u bilo kojem trenutku radi izmjena. Više aplikacija uključuje kućnu automatizaciju, mrežnu mrežu, industrijsko bežično upravljanje, monitore za bebe, senzorske mreže, nosivu elektroniku, Wi-Fi uređaje svjesne lokacije, svjetionike za pozicioniranje Wi-Fi sistema.
Korak 6: Resursi za napredak
Za više informacija o LSM9DS0 i ESP8266, pogledajte donje veze:
- LSM9DS0 Tehnički list senzora
- Dijagram ožičenja LSM9DS0
- ESP8266 Tehnički list
Preporučuje se:
Otvarač garažnih vrata sa povratnom informacijom pomoću Esp8266 kao web servera .: 6 koraka
Otvarač garažnih vrata s povratnim informacijama koristeći Esp8266 kao web server: Zdravo, pokazat ću vam kako napraviti jednostavan način za otvaranje garažnih vrata.-ESP8266 je kodiran kao web server, vrata se mogu otvoriti svugdje u svijetu- povratne informacije, znat ćete da li su vrata otvorena ili zatvorena u stvarnom vremenu-Jednostavno, samo jedna prečica do
Internetska kontrolisana LED pomoću web servera zasnovanog na ESP32: 10 koraka
Internetska kontrolisana LED pomoću web servera zasnovanog na ESP32: Pregled projekta U ovom primjeru ćemo shvatiti kako napraviti web server zasnovan na ESP32 za kontrolu stanja LED-a, kojem je moguće pristupiti bilo gdje u svijetu. Za ovaj projekt trebat će vam Mac računar, ali ovaj softver možete pokrenuti čak i na
ESP 8266 Nodemcu Ws 2812 LED MOOD Lampa zasnovana na neopikselima kontrolira se pomoću web servera: 6 koraka
ESP 8266 Nodemcu Ws 2812 LED MOOD lampa zasnovana na neopikselima koja se kontrolira pomoću web servera: U ovom projektu napravit ćemo MOOD lampu od nodemcu & neopixel i kojim se može upravljati bilo kojim preglednikom pomoću lokalnog web poslužitelja
Upravljanje 7-segmentnim LED zaslonom pomoću ESP8266 web servera: 8 koraka (sa slikama)
Upravljanje 7-segmentnim LED zaslonom pomoću ESP8266 web servera: Moj projekt ima Nodemcu ESP8266 koji kontrolira 7-segmentni prikaz putem http poslužitelja koristeći html obrazac
Upravljajte uređajima putem interneta putem preglednika. (IoT): 6 koraka
Upravljajte uređajima putem interneta putem preglednika. (IoT): U ovom uputstvu ću vam pokazati kako možete kontrolirati uređaje poput LED dioda, releja, motora itd. Putem interneta putem web-preglednika. I možete sigurno pristupiti kontrolama sa bilo kojeg uređaja. Web platforma koju sam ovdje koristio je RemoteMe.org posjetite