Sadržaj:
- Korak 1: Potrebna nam je oprema..
- Korak 2: Hardverske veze
- Korak 3: Kodirajte
- Korak 4: Rad koda
- Korak 5: Aplikacije i značajke
- Korak 6: Resursi za napredak
Video: Orijentacija karte putem web poslužitelja: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:35
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 s vašeg pametnog telefona ili radne površine. Ovo je luksuz koji svatko želi posjedovati.
Uvijek se igramo s alatima koje imamo i nastavljamo raditi na idućem koraku svojih granica. Našim kupcima nastojimo dati viziju najnovijih tehnologija i ideja. Tako da svoj dom možete pretvoriti u pametne domove i uživati u okusu luksuza bez mnogo truda.
Danas razmišljamo o radu na jednoj od najvažnijih tema u IoT -u - Orijentacija digitalnih karata.
Izgradit ćemo web poslužitelj putem kojeg možemo pratiti kretanje bilo kojeg uređaja ili stvari (na vama je da odlučite koga želite špijunirati;)). Uvijek možete razmišljati o nadogradnji ovog projekta na sljedeću razinu 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 sustav je u paketu koji sadrži 3D digitalni senzor linearnog ubrzanja, 3D digitalni osjetnik kutne brzine i 3D digitalni magnetski senzor. LSM9DS0 ima linearnu skalu punog ubrzanja od ± 2 g/± 4 g/± 6 g/± 8 g/± 16 g, magnetsko polje u punoj ljestvici od ± 2/± 4/± 8/± 12 gausa i kutnu brzinu od ± 245 /± 500/± 2000 dps.
2. Adafruit Huzzah ESP8266
ESP8266 procesor tvrtke Espressif je 80 MHz mikrokontroler s punim WiFi prednjim dijelom (i kao klijent i kao pristupna točka) i TCP/IP stogom s podrškom za DNS. ESP8266 nevjerojatna je platforma za razvoj IoT aplikacija. ESP8266 pruža zrelu platformu za nadzor 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, dopuštajući I²C sučelje.
4. I2C spojni 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 postavite USB programator (s ulazom prema I²C priključku) na njega. Lagano pritisnite USB programator i završili smo s ovim korakom lako kao pita (pogledajte gornju sliku).
Spajanje senzora i Adafruit Huzzah ESP8266Uzeti senzor i spojiti I²C kabel s njim. Za ispravan 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 s 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 uvelike olakšava povezivanje hardvera. Bez brige oko lemljenja pinova ESP -a na senzor ili čitanja dijagrama pinova i podatkovne tablice. Možemo koristiti i raditi na više senzora istovremeno, samo trebate napraviti lanac. Bez ovih plug and play USB programatora 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 bi trebala slijediti vezu uzemljenja (GND) između izlaza jednog uređaja i ulaza drugog uređaja.
Napajanje strujnog kruga
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 postavite 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, ovdje možete kopirati i radni ESP kod za ovaj senzor:
// Distribuirano s licencom za slobodnu volju.// Koristite ga na koji god način ž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.
#uključi
#uključi
#uključi
#uključi
// 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 poslužitelj (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, napajanje na Wire.write (0x0F); // Zaustavi I2C prijenosnu žicu.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); // Zaustavi I2C prijenosnu žicu.endTransmission ();
// Pokretanje I2C prijenosa
Wire.beginTransmission (Addr_Accl); // Odabir upravljačkog registra 1 Wire.write (0x20); // Brzina prijenosa podataka = 100Hz, X, Y, Z-os omogućena, uključeno 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 odabir ljestvice +/- 16g Wire.write (0x20); // Zaustavi I2C prijenosnu žicu.endTransmission ();
// Pokretanje I2C prijenosa
Wire.beginTransmission (Addr_Accl); // Odabir upravljačkog registra 5 Wire.write (0x24); // Magnetska visoka razlučivost, brzina izlaznih podataka = 50Hz Wire.write (0x70); // Zaustavi I2C prijenosnu žicu.endTransmission ();
// Pokretanje I2C prijenosa
Wire.beginTransmission (Addr_Accl); // Odabir upravljačkog registra 6 Wire.write (0x25); // Magnetska žica u opsegu +/- 12 gauss.write (0x60); // Zaustavi I2C prijenosnu žicu.endTransmission ();
// Pokretanje I2C prijenosa
Wire.beginTransmission (Addr_Accl); // Odabir upravljačkog registra 7 Wire.write (0x26); // Normalan način rada, kontinuirani magnetski način pretvorbe Wire.write (0x00); // Zaustavi I2C prijenosnu žicu.endTransmission (); kašnjenje (300);
for (int i = 0; i <6; i ++) {// Pokreni I2C prijenosnu žicu.beginTransmission (Addr_Gyro); // Odabir registra podataka Wire.write ((40 + i)); // Zaustavi I2C prijenosnu žicu.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 ++) {// Pokreni I2C prijenosnu žicu.beginTransmission (Addr_Accl); // Odabir registra podataka Wire.write ((40 + i)); // Zaustavi I2C prijenosnu žicu.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 if (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 ++) {// Pokreni I2C prijenosnu žicu.beginTransmission (Addr_Accl); // Odabir registra podataka Wire.write ((8 + i)); // Zaustavi I2C prijenosnu žicu.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]);
// Izlaženje podataka na serijski monitor
Serial.print ("X-os rotacije:"); Serijski.println (xGiro); Serial.print ("Y-os rotacije:"); Serijski.println (yGyro); Serial.print ("Z-os rotacije:"); Serijski.println (zGiro); Serial.print ("Ubrzanje u osi X:"); Serijski.println (xAccl); Serial.print ("Ubrzanje u osi Y:"); Serial.println (yAccl); Serial.print ("Ubrzanje u osi Z:"); Serijski.println (zAccl); Serial.print ("Magnetsko polje u osi X:"); Serijski.println (xMag); Serial.print ("Magnetsko polje u osi Y:"); Serial.println (yMag); Serial.print ("Magnetsko polje u Z-osi:"); Serijski.println (zMag);
// Izlaženje podataka na web poslužitelj
server.sendContent ("
DCUBE TRGOVINA
www.dcubestore.com
"" LSM9DS0 senzorski I2C mini modul
);
server.sendContent ("
Os X rotacije = " + String (xGiro)); 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 osi X = " + 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); // Pokretanje serijske komunikacije, postavljena brzina prijenosa = 115200 Serial.begin (115200);
// Povezivanje na WiFi mrežu
WiFi.započni (ssid, lozinka);
// Pričekajte vezu
while (WiFi.status ()! = WL_CONNECTED) {odgoda (500); Serial.print ("."); } Serial.println (""); Serial.print ("Povezano s"); Serijski.println (ssid);
// Dohvaćanje IP adrese 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 koda
Sada preuzmite (ili git povucite) kôd i otvorite ga u Arduino IDE -u.
Sastavite i prenesite kôd i pogledajte izlaz na Serial Monitor.
Napomena: Prije prijenosa 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čitanjem magnetskog polja na 3 osi.
Izlaz senzora na serijskom monitoru i web poslužitelju prikazan je na gornjoj slici.
Korak 5: Aplikacije i značajke
LSM9DS0 sustav je u paketu koji sadrži 3D digitalni linearni senzor ubrzanja, 3D digitalni osjetnik kutne brzine i 3D digitalni magnetski 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.). Četvorokopteri s ugrađenim žiroskopima mogu paziti na iznenadne preokrete ili nagibe. To možemo koristiti u globalnom sustavu pozicioniranja (GPS).
Još neke aplikacije uključuju unutarnju navigaciju, pametna korisnička sučelja, napredno prepoznavanje gesta, uređaje za unos igara i virtualne stvarnosti itd.
Uz pomoć ESP8266 možemo povećati njegov kapacitet na veću duljinu. Možemo kontrolirati svoje uređaje i tamo pratiti performanse sa stolnih i mobilnih uređaja. Podatke možemo pohraniti i upravljati na mreži te ih proučiti u bilo kojem trenutku radi izmjena. Više aplikacija uključuje kućnu automatizaciju, mrežastu mrežu, industrijsko bežično upravljanje, dječje monitore, senzorske mreže, nosivu elektroniku, Wi-Fi uređaje koji prepoznaju lokaciju, svjetionike sustava Wi-Fi položaja.
Korak 6: Resursi za napredak
Za više informacija o LSM9DS0 i ESP8266, pogledajte donje veze:
- Tehnički list senzora LSM9DS0
- Dijagram ožičenja LSM9DS0
- Tehnički list ESP8266
Preporučeni:
Otvarač garažnih vrata s povratnom informacijom pomoću Esp8266 kao web poslužitelja .: 6 koraka
Otvarač garažnih vrata s povratnim informacijama pomoću Esp8266 kao web poslužitelja. Bok, pokazat ću vam kako napraviti jednostavan način za otvaranje garažnih vrata.-ESP8266 je kodiran kao web poslužitelj, vrata se mogu otvoriti svugdje u svijetu- povratne informacije, znat ćete jesu li vrata otvorena ili zatvorena u stvarnom vremenu-Jednostavno, samo jedan prečac za
Internetski upravljana LED pomoću web poslužitelja zasnovanog na ESP32: 10 koraka
LED s internetskom kontrolom pomoću web poslužitelja temeljenog na ESP32: Pregled projekta U ovom primjeru shvatit ćemo kako napraviti web poslužitelj zasnovan na ESP32 za kontrolu stanja LED-a, kojem je dostupan bilo gdje u svijetu. Za ovaj projekt trebat će vam Mac računalo, ali ovaj softver možete pokrenuti čak i na
ESP 8266 Nodemcu Ws 2812 LED MOOD svjetiljka na bazi neopiksela kontrolirana pomoću web poslužitelja: 6 koraka
ESP 8266 Nodemcu Ws 2812 LED MOOD Lampa na bazi neopiksela kontrolirana pomoću web poslužitelja: 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 web poslužitelja ESP8266: 8 koraka (sa slikama)
Upravljanje 7-segmentnim LED zaslonom pomoću web poslužitelja ESP8266: Moj projekt ima Nodemcu ESP8266 koji kontrolira 7-segmentni prikaz putem http poslužitelja pomoću html obrasca
Kako zaobići sigurnost većine poslužitelja na strani poslužitelja: 3 koraka
Kako zaobići sigurnost većine poslužitelja na strani poslužitelja: Ovo je moje prvo uputstvo, pa me podnesite: Ok, reći ću vam kako zaobići blokatore weba koje sam vidio u školama. Sve što trebate je flash pogon i nekoliko preuzimanja softvera