Mündəricat:

Veb Server vasitəsilə Xəritədə İstiqamətləndirmə: 6 Addım
Veb Server vasitəsilə Xəritədə İstiqamətləndirmə: 6 Addım

Video: Veb Server vasitəsilə Xəritədə İstiqamətləndirmə: 6 Addım

Video: Veb Server vasitəsilə Xəritədə İstiqamətləndirmə: 6 Addım
Video: Virtualization Explained 2024, Noyabr
Anonim
Veb server vasitəsilə xəritə oriyentasiyası
Veb server vasitəsilə xəritə oriyentasiyası

Əşyaların İnterneti (IoT) hazırda planetin ən populyar mövzularından biridir. Və İnternetlə gündən -günə sürətlə böyüyür. Əşyaların İnterneti sadə evləri ağıllı evlərə çevirir, burada işıqlarınızdan qıfıllarınıza qədər hər şeyi smartfonunuzdan və ya masaüstünüzdən idarə edə bilərsiniz. Hər kəsin sahib olmaq istədiyi lüks budur.

Həmişə əldə etdiyimiz vasitələrlə oynayırıq və məhdudiyyətlərimizin növbəti mərhələsinə keçməyə davam edirik. Müştərimizə ən son texnologiyalar və fikirlər haqqında bir fikir verməyə çalışırıq. Beləliklə, çox səy göstərmədən evinizi ağıllı evlərə çevirə və lüksün dadından zövq ala bilərsiniz.

Bu gün IoT -da ən vacib mövzulardan birində - Rəqəmsal Xəritədə İstiqamətləndirmə üzərində işləməyi düşünürük.

Hər hansı bir cihazın və ya əşyanın hərəkətini izləyə biləcəyimiz bir veb server quracağıq (casusluq etmək istədiyin sizin ixtiyarınızdadır;)). Həmişə bəzi dəyişikliklərlə bu layihəni yeni səviyyəyə qaldırmaq barədə düşünə bilərsiniz və aşağıdakı şərhlərdə bizə bildirməyi unutmayın.

Ondan başlayaq.. !!

Addım 1: Ehtiyacımız olan avadanlıqlar..

Ehtiyacımız olan avadanlıqlar.. !!
Ehtiyacımız olan avadanlıqlar.. !!
Ehtiyacımız olan avadanlıqlar.. !!
Ehtiyacımız olan avadanlıqlar.. !!
Ehtiyacımız olan avadanlıqlar.. !!
Ehtiyacımız olan avadanlıqlar.. !!
Ehtiyacımız olan avadanlıqlar.. !!
Ehtiyacımız olan avadanlıqlar.. !!

1. LSM9DS0 Sensoru

STMicroelectronics tərəfindən istehsal olunan LSM9DS0, 3-ü 1-arada sensör, 3D rəqəmsal xətti sürətləndirmə sensoru, 3D rəqəmsal bucaq dərəcəsi sensoru və 3D rəqəmsal maqnit sensoru ilə təchiz olunmuş bir sistemdir. LSM9DS0, ± 2g/± 4g/± 6g/± 8g/± 16g xətti sürətləndirmə tam ölçüsünə, ± 2/± 4/± 8/± 12 gauss bir maqnit sahəsinə və ± 245 bucaq dərəcəsinə malikdir. /± 500/± 2000 dps.

2. Adafruit Huzzah ESP8266

Espressif-dən ESP8266 prosessoru, tam WiFi ön tərəfi (həm müştəri, həm də giriş nöqtəsi olaraq) və DNS dəstəyi olan TCP/IP yığınına malik 80 MHz-lik bir mikro nəzarətçidir. ESP8266, IoT tətbiqi inkişafı üçün inanılmaz bir platformadır. ESP8266, Arduino Wire Language və Arduino IDE istifadə edərək tətbiqləri izləmək və idarə etmək üçün mükəmməl bir platforma təmin edir.

3. ESP8266 USB Proqramçısı

onun ESP8266 ana adapteri, I²C interfeysinə imkan verən ESP8266 -nın Adafruit Huzzah versiyası üçün xüsusi olaraq Dcube Store tərəfindən hazırlanmışdır.

4. I2C Bağlayıcı Kabel

5. Mini USB Kabeli

Mini USB kabel Güc təchizatı, Adafruit Huzzah ESP8266 -nı gücləndirmək üçün ideal seçimdir.

Addım 2: Avadanlıq Bağlantıları

Avadanlıq Əlaqələri
Avadanlıq Əlaqələri
Avadanlıq Əlaqələri
Avadanlıq Əlaqələri
Avadanlıq Əlaqələri
Avadanlıq Əlaqələri

Ümumiyyətlə, əlaqə qurmaq bu layihənin ən asan hissəsidir. Təlimatları və şəkilləri izləyin və heç bir probleminiz olmayacaq.

İlk növbədə Adafruit Huzzah ESP8266 götürün və üzərinə USB Proqramlaşdırıcısını (İçəri baxan I²C Portu ilə) yerləşdirin. USB Programmer -ə yumşaq bir şəkildə basın və bu addımı pasta qədər asanlaşdırırıq (Yuxarıdakı şəklə baxın).

Sensorun Adafruit Huzzah ESP8266 ilə əlaqəsi Sensoru götürün və I²C Kabelini onunla bağlayın. Bu kabelin düzgün işləməsi üçün lütfən, I²C Çıxışının DAİMA I²C Girişinə qoşulduğunu unutmayın. Adafruit Huzzah ESP8266 üçün də USB Proqramlaşdırıcısı quraşdırılmış halda bunu etmək lazım idi (Yuxarıdakı şəklə baxın).

ESP8266 USB Programmer köməyi ilə ESP proqramlaşdırmaq çox asandır. Etməyiniz lazım olan yalnız sensoru USB Proqramlaşdırıcısına bağlamaqdır və getməyiniz yaxşıdır. Bu adapterdən istifadə etməyi üstün tuturuq, çünki aparatın bağlanmasını xeyli asanlaşdırır. ESP sancaqlarını sensora lehimləmək və ya pin diaqramlarını və məlumat cədvəlini oxumaqdan narahat olmayın. Eyni anda birdən çox sensordan istifadə edə və işləyə bilərik, sadəcə bir zəncir düzəltməlisiniz. Bu plug -play USB Programmer olmadan səhv bağlantı qurma riski çoxdur. Pis bir kabel, həm Wi -Fi -nı, həm də sensorunuzu öldürə bilər.

Qeyd: Qəhvəyi tel həmişə bir cihazın çıxışı ilə digər cihazın girişi arasındakı Ground (GND) bağlantısını izləməlidir.

Dövrün Gücü

Mini USB kabelini Adafruit Huzzah ESP8266 -nın elektrik prizinə qoşun. Yandırın və voila, getməyimiz yaxşıdır!

Addım 3: Kod

Kod
Kod

Adafruit Huzzah ESP8266 və LSM9DS0 Sensoru üçün ESP Kodu github depomuzda mövcuddur.

Koda keçməzdən əvvəl, Readme faylında verilən təlimatları oxuduğunuzdan və Adafruit Huzzah ESP8266 -nı buna uyğun olaraq qurduğunuzdan əmin olun. ESP qurmaq cəmi 5 dəqiqə çəkəcək.

Kod uzundur, ancaq təsəvvür edə biləcəyiniz ən sadə formadadır və onu anlamaqda heç bir çətinlik çəkməyəcəksiniz.

Rahatlığınız üçün bu sensor üçün işləyən ESP kodunu buradan da kopyalaya bilərsiniz:

// Azad iradə lisenziyası ilə paylanmışdır. // LSM9DSO // Bu kod dcubestore.com saytında mövcud olan TCS3414_I2CS I2C Mini Modulu ilə işləmək üçün hazırlanmışdır.

#daxil edin

#daxil edin

#daxil edin

#daxil edin

// LSM9DSO Gyro I2C ünvanı 6A (106)

#define Addr_Gyro 0x6A // LSM9DSO Accl I2C ünvanı 1E (30) #define Addr_Accl 0x1E

const char* ssid = "ssidiniz";

const char* password = "parolunuz"; int xGyro, yGyro, zGyro, xAccl, yAccl, zAccl, xMag, yMag, zMag;

ESP8266WebServer serveri (80);

boş işlətmə ()

{imzasız int data [6];

// I2C ötürülməsinə başlayın

Wire.beginTransmission (Addr_Gyro); // İdarəetmə qeydini seçin 1 Wire.write (0x20); // Məlumat sürəti = 95Hz, X, Y, Z-Axis effektiv, Wire.write-da güc (0x0F); // I2C Transmission Wire.endTransmission () dayandırın;

// I2C ötürülməsinə başlayın

Wire.beginTransmission (Addr_Gyro); // Nəzarət reyestrini seçin 4 Wire.write (0x23); // Tam miqyaslı 2000 dps, davamlı yeniləmə Wire.write (0x30); // I2C Transmission Wire.endTransmission () dayandırın;

// I2C ötürülməsinə başlayın

Wire.beginTransmission (Addr_Accl); // İdarəetmə qeydini seçin 1 Wire.write (0x20); // Sürətləndirmə məlumat sürəti = 100Hz, X, Y, Z-Axis effektiv, Wire.write-da güc (0x67); // Wire.endTransmission () cihazında I2C Transmissiyasını dayandırın;

// I2C ötürülməsinə başlayın

Wire.beginTransmission (Addr_Accl); // İdarəetmə qeydini seçin 2 Wire.write (0x21); // Tam miqyaslı seçim +/- 16g Wire.write (0x20); // I2C Transmission Wire.endTransmission () dayandırın;

// I2C ötürülməsinə başlayın

Wire.beginTransmission (Addr_Accl); // İdarəetmə qeydini seçin 5 Wire.write (0x24); // Maqnit yüksək qətnamə, çıxış məlumat sürəti = 50Hz Wire.write (0x70); // I2C Transmission Wire.endTransmission () dayandırın;

// I2C ötürülməsinə başlayın

Wire.beginTransmission (Addr_Accl); // Nəzarət reyestrini seçin 6 Wire.write (0x25); // Maqnit tam miqyaslı +/- 12 gauss Wire.write (0x60); // I2C Transmission Wire.endTransmission () dayandırın;

// I2C ötürülməsinə başlayın

Wire.beginTransmission (Addr_Accl); // İdarəetmə qeydini seçin 7 Wire.write (0x26); // Normal rejim, maqnit davamlı çevrilmə rejimi Wire.write (0x00); // I2C Transmission Wire.endTransmission () dayandırın; gecikmə (300);

for (int i = 0; i <6; i ++) {// I2C Transmission Wire.beginTransmission (Addr_Gyro) başlayın; // Wire.write məlumat qeydini seçin ((40 + i)); // I2C Transmission Wire.endTransmission () dayandırın;

// 1 bayt məlumat tələb edin

Wire.requestFrom (Addr_Gyro, 1);

// 6 bayt məlumat oxuyun

// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb if (Wire.available () == 1) {data = Wire.read (); }}

// Məlumatları çevirin

int xGyro = ((məlumat [1] * 256) + məlumat [0]); int yGyro = ((data [3] * 256) + data [2]); int zGyro = ((məlumat [5] * 256) + məlumat [4]);

for (int i = 0; i <6; i ++) {// I2C Transmission Wire.beginTransmission -a başlayın (Addr_Accl); // Wire.write məlumat qeydini seçin ((40 + i)); // I2C Transmission Wire.endTransmission () dayandırın;

// 1 bayt məlumat tələb edin

Wire.requestFrom (Addr_Accl, 1);

// 6 bayt məlumat oxuyun

// xAccl lsb, xAccl msb, yAccl lsb, yAccl msb // zAccl lsb, zAccl msb if (Wire.available () == 1) {data = Wire.read (); }}

// Məlumatları çevirin

int xAccl = ((data [1] * 256) + data [0]); int yAccl = ((data [3] * 256) + data [2]); int zAccl = ((məlumat [5] * 256) + məlumat [4]);

for (int i = 0; i <6; i ++) {// I2C Transmission Wire.beginTransmission -a başlayın (Addr_Accl); // Wire.write məlumat qeydini seçin ((8 + i)); // I2C Transmission Wire.endTransmission () dayandırın;

// 1 bayt məlumat tələb edin

Wire.requestFrom (Addr_Accl, 1);

// 6 bayt məlumat oxuyun

// xMag lsb, xMag msb, yMag lsb, yMag msb // zMag lsb, zMag msb if (Wire.available () == 1) {data = Wire.read (); }}

// Məlumatları çevirin

int xMag = ((məlumat [1] * 256) + məlumat [0]); int yMag = ((məlumat [3] * 256) + məlumat [2]); int zMag = ((məlumat [5] * 256) + məlumat [4]);

// Məlumatların serial monitora çıxarılması

Serial.print ("X-Fırlanma Ekseni:"); Serial.println (xGyro); Serial.print ("Y-Fırlanma Ekseni:"); Serial.println (yGyro); Serial.print ("Z-Fırlanma Ekseni:"); Serial.println (zGyro); Serial.print ("X-Eksenində Sürətləndirmə:"); Serial.println (xAccl); Serial.print ("Y Eksenində Sürətləndirmə:"); Serial.println (yAccl); Serial.print ("Z Eksenində Sürətləndirmə:"); Serial.println (zAccl); Serial.print ("X-Axisdəki maqnit sahəsi:"); Serial.println (xMag); Serial.print ("Y eksenində maqnit sahəsi:"); Serial.println (yMag); Serial.print ("Maqnit Z-Axis-də verilmişdir:"); Serial.println (zMag);

// Veb serverə məlumat çıxarın

server.sendContent ("

DCUBE MAĞAZASI

www.dcubestore.com

"" LSM9DS0 Sensor I2C Mini Modulu

);

server.sendContent ("

X-Fırlanma Ekseni = " + String (xGyro)); server.sendContent ("

Y-Fırlanma Ekseni = " + String (yGyro)); server.sendContent ("

Z-Fırlanma Ekseni = " + String (zGyro)); server.sendContent ("

X-Axis-də sürətləndirmə = " + String (xAccl)); server.sendContent ("

Y Eksenində Sürətləndirmə = " + String (yAccl)); server.sendContent ("

Z-Axis-də sürətləndirmə = " + String (zAccl)); server.sendContent ("

X-Axis-də verilmiş maqnit = " + String (xMag)); server.sendContent ("

Y-Axis-də verilmiş maqnit = " + String (yMag)); server.sendContent ("

Z-Axis-də verilmiş maqnit = " + String (zMag)); gecikmə (1000);}

boş quraşdırma ()

{// I2C ünsiyyətini MASTER Wire.begin olaraq başladın (2, 14); // Serial rabitəni işə salın, baud sürətini təyin edin = 115200 Serial.begin (115200);

// WiFi şəbəkəsinə qoşulun

WiFi.begin (ssid, parol);

// Əlaqəni gözləyin

while (WiFi.status ()! = WL_CONNECTED) {gecikmə (500); Serial.print ("."); } Serial.println (""); Serial.print ("Bağlandı"); Serial.println (ssid);

// ESP8266 IP ünvanını əldə edin

Serial.print ("IP ünvanı:"); Serial.println (WiFi.localIP ());

// Serveri işə salın

server.on ("/", handleroot); server.begin (); Serial.println ("HTTP serveri işə salındı"); }

boşluq döngəsi ()

{server.handleClient (); }

Addım 4: Kodun işlənməsi

Kodun işlənməsi
Kodun işlənməsi

İndi kodu yükləyin (və ya git pull) və Arduino IDE -də açın.

Kodu tərtib edin və yükləyin və Serial Monitorda çıxışı görün.

Qeyd: Yükləməzdən əvvəl SSID şəbəkənizi və şifrənizi kodu daxil etdiyinizə əmin olun.

Serial Monitordan ESP8266 IP ünvanını kopyalayın və veb brauzerinizə yapışdırın. 3 oxda fırlanma oxu, sürətlənmə və maqnit sahəsi oxunuşu olan bir web səhifəsi görəcəksiniz.

Sensorun Serial Monitor və Web Serverdəki çıxışı yuxarıdakı şəkildə göstərilmişdir.

Addım 5: Tətbiqlər və Xüsusiyyətlər

LSM9DS0, 3D rəqəmsal xətti sürətləndirmə sensoru, 3D rəqəmsal bucaq dərəcəsi sensoru və 3D rəqəmsal maqnit sensoru olan bir sistem paketidir. Bu üç xassəni ölçməklə bir cismin hərəkəti haqqında çoxlu məlumat əldə edə bilərsiniz. Bir maqnitometr ilə Yerin maqnit sahəsinin gücünü və istiqamətini ölçərək, istiqamətinizə yaxınlaşa bilərsiniz. Telefonunuzdakı bir akselerometr cazibə qüvvəsinin istiqamətini ölçə və oriyentasiyanı (portret, mənzərə, düz və s.) Qiymətləndirə bilər. Daxili giroskopları olan kvadrokopterlər, qəfil yuvarlanmalara və ya meydançalara baxa bilər. Bunu Qlobal Yerləşdirmə Sistemində (GPS) istifadə edə bilərik.

Daha bir neçə tətbiqə Daxili naviqasiya, Ağıllı istifadəçi interfeysləri, Ətraflı jest tanıma, Oyun və virtual reallıq giriş cihazları və s.

ESP8266 -nın köməyi ilə tutumunu daha uzun müddətə artıra bilərik. Cihazlarımızı idarə edə bilərik və masaüstümüzdən və mobil cihazlarımızdan orada performansa nəzarət edə bilərik. Veriləri internetdə saxlaya və idarə edə bilərik və istənilən vaxt dəyişiklik üçün öyrənə bilərik. Daha çox tətbiqə Ev Avtomatlaşdırması, Mesh Şəbəkəsi, Sənaye Kabelsiz Nəzarəti, Körpə Monitorlar, Sensor Şəbəkələri, Geyinilə bilən Elektronika, Wi-Fi Məkanından xəbərdar Cihazlar, Wi-Fi Mövqe Sistemi İşarələri daxildir.

Addım 6: İrəli getmək üçün mənbələr

LSM9DS0 və ESP8266 haqqında daha çox məlumat üçün aşağıdakı bağlantılara baxın:

  • LSM9DS0 Sensor Məlumat Cədvəli
  • LSM9DS0 naqillərinin diaqramı
  • ESP8266 məlumat cədvəli

Tövsiyə: