สารบัญ:

การวางแนวแผนที่ผ่านเว็บเซิร์ฟเวอร์: 6 ขั้นตอน
การวางแนวแผนที่ผ่านเว็บเซิร์ฟเวอร์: 6 ขั้นตอน

วีดีโอ: การวางแนวแผนที่ผ่านเว็บเซิร์ฟเวอร์: 6 ขั้นตอน

วีดีโอ: การวางแนวแผนที่ผ่านเว็บเซิร์ฟเวอร์: 6 ขั้นตอน
วีดีโอ: สิ่งที่ต้องรู้สำหรับมือใหม่ก่อนเริ่มสร้างเว็บไซต์ มีอะไรบ้าง ไปดูกัน! 2024, พฤศจิกายน
Anonim
การวางแนวแผนที่ผ่านเว็บเซิร์ฟเวอร์
การวางแนวแผนที่ผ่านเว็บเซิร์ฟเวอร์

Internet of Things, (IoT) เป็นหนึ่งในหัวข้อที่ได้รับความนิยมในโลกในขณะนี้ และเติบโตขึ้นอย่างรวดเร็วทุกวันด้วยอินเทอร์เน็ต Internet of Things กำลังเปลี่ยนบ้านธรรมดาให้กลายเป็นบ้านอัจฉริยะ ซึ่งทุกอย่างตั้งแต่ไฟไปจนถึงล็อคของคุณสามารถควบคุมได้จากสมาร์ทโฟนหรือเดสก์ท็อปของคุณ นี่คือความหรูหราที่ทุกคนต้องการเป็นเจ้าของ

เรามักจะเล่นกับเครื่องมือที่เรามีและทำงานต่อไปในขั้นต่อไปของขีดจำกัดของเรา เราพยายามให้วิสัยทัศน์เกี่ยวกับเทคโนโลยีและแนวคิดล่าสุดแก่ลูกค้าของเรา เพื่อให้คุณสามารถเปลี่ยนบ้านของคุณให้เป็นบ้านอัจฉริยะและเพลิดเพลินกับรสชาติของความหรูหราโดยไม่ต้องใช้ความพยายามมากนัก

วันนี้ เราคิดว่าการทำงานในหัวข้อที่สำคัญที่สุดอย่างหนึ่งใน IoT - การวางแนวแผนที่ดิจิทัล

เราจะสร้างเว็บเซิร์ฟเวอร์โดยที่เราสามารถตรวจสอบการเคลื่อนไหวของอุปกรณ์หรือสิ่งของใด ๆ (ขึ้นอยู่กับคุณซึ่งคุณต้องการสายลับ;)) คุณสามารถคิดถึงการอัปเกรดโปรเจ็กต์นี้ไปสู่อีกระดับได้ด้วยการปรับเปลี่ยนบางอย่าง และอย่าลืมบอกเราในความคิดเห็นด้านล่าง

เริ่มกันเลยดีกว่า.. !!

ขั้นตอนที่ 1: อุปกรณ์ที่เราต้องการ.. !

อุปกรณ์ที่เราต้องการ.. !!
อุปกรณ์ที่เราต้องการ.. !!
อุปกรณ์ที่เราต้องการ.. !!
อุปกรณ์ที่เราต้องการ.. !!
อุปกรณ์ที่เราต้องการ.. !!
อุปกรณ์ที่เราต้องการ.. !!
อุปกรณ์ที่เราต้องการ.. !!
อุปกรณ์ที่เราต้องการ.. !!

1. LSM9DS0 เซนเซอร์

เซ็นเซอร์ 3-in-1 ที่ผลิตโดย STMicroelectronics LSM9DS0 เป็นระบบในแพ็คเกจที่มีเซ็นเซอร์เร่งความเร็วเชิงเส้นแบบดิจิทัล 3 มิติ เซ็นเซอร์วัดอัตราเชิงมุมแบบดิจิทัล 3 มิติ และเซ็นเซอร์แม่เหล็กดิจิทัล 3 มิติ LSM9DS0 มีความเร่งเชิงเส้นเต็มสเกล ±2g/±4g/±6g/±8g/±16g สนามแม่เหล็กเต็มสเกล ±2/±4/±8/±12 เกาส์ และอัตราเชิงมุม ±245 /±500/±2000 dps

2. Adafruit Huzzah ESP8266

โปรเซสเซอร์ ESP8266 จาก Espressif เป็นไมโครคอนโทรลเลอร์ 80 MHz พร้อม WiFi front-end แบบเต็ม (ทั้งในฐานะไคลเอนต์และจุดเชื่อมต่อ) และสแต็ก TCP/IP พร้อมการสนับสนุน DNS เช่นกัน ESP8266 เป็นแพลตฟอร์มที่น่าทึ่งสำหรับการพัฒนาแอปพลิเคชัน IoT ESP8266 เป็นแพลตฟอร์มที่สมบูรณ์สำหรับการตรวจสอบและควบคุมแอปพลิเคชันโดยใช้ Arduino Wire Language และ Arduino IDE

3. โปรแกรมเมอร์ USB ESP8266

อะแดปเตอร์โฮสต์ ESP8266 ของเขาได้รับการออกแบบโดย Dcube Store สำหรับรุ่น Adafruit Huzzah ของ ESP8266 โดยเฉพาะ ซึ่งช่วยให้สามารถใช้งานอินเทอร์เฟซ I²C ได้

4. สายเคเบิลเชื่อมต่อ I2C

5. สาย USB ขนาดเล็ก

สายไฟ mini USB เป็นตัวเลือกในอุดมคติสำหรับการจ่ายไฟให้กับ Adafruit Huzzah ESP8266

ขั้นตอนที่ 2: การเชื่อมต่อฮาร์ดแวร์

การเชื่อมต่อฮาร์ดแวร์
การเชื่อมต่อฮาร์ดแวร์
การเชื่อมต่อฮาร์ดแวร์
การเชื่อมต่อฮาร์ดแวร์
การเชื่อมต่อฮาร์ดแวร์
การเชื่อมต่อฮาร์ดแวร์

โดยทั่วไป การเชื่อมต่อเป็นส่วนที่ง่ายที่สุดในโครงการนี้ ทำตามคำแนะนำและรูปภาพ แล้วคุณจะไม่มีปัญหา

ก่อนอื่น ให้ใช้ Adafruit Huzzah ESP8266 และวางโปรแกรมเมอร์ USB (ที่มีพอร์ต I²C หันเข้าด้านใน) ไว้ กด USB Programmer เบาๆ เท่านี้เราก็เสร็จสิ้นขั้นตอนง่ายๆ แบบพาย (ดูภาพด้านบน)

การเชื่อมต่อเซ็นเซอร์กับ Adafruit Huzzah ESP8266นำเซ็นเซอร์และเชื่อมต่อสายเคเบิลI²Cด้วย เพื่อการทำงานที่เหมาะสมของสายเคเบิลนี้ โปรดจำไว้ว่า I²C Output เสมอเชื่อมต่อกับอินพุตI²C ต้องปฏิบัติตามเช่นเดียวกันสำหรับ Adafruit Huzzah ESP8266 ที่มี USB Programmer ติดตั้งอยู่ (ดูภาพด้านบน)

ด้วยความช่วยเหลือของ ESP8266 USB Programmer มันง่ายมากที่จะตั้งโปรแกรม ESP สิ่งที่คุณต้องทำคือเสียบเซ็นเซอร์เข้ากับโปรแกรมเมอร์ USB และพร้อมใช้งาน เราชอบที่จะใช้อะแดปเตอร์นี้เพราะช่วยให้เชื่อมต่อฮาร์ดแวร์ได้ง่ายขึ้นมาก ไม่ต้องกังวลกับการบัดกรีหมุดของ ESP กับเซ็นเซอร์หรืออ่านแผนภาพพินและแผ่นข้อมูล เราสามารถใช้และทำงานกับเซ็นเซอร์หลายตัวพร้อมกันได้ คุณเพียงแค่ต้องสร้างห่วงโซ่ หากไม่มีโปรแกรมเมอร์ USB แบบพลักแอนด์เพลย์เหล่านี้ มีความเสี่ยงสูงที่จะเชื่อมต่อผิด การเดินสายที่ไม่ดีอาจทำให้ wifi และเซ็นเซอร์ของคุณเสียหายได้

หมายเหตุ: สายสีน้ำตาลควรเป็นไปตามการเชื่อมต่อกราวด์ (GND) ระหว่างเอาต์พุตของอุปกรณ์เครื่องหนึ่งกับอินพุตของอุปกรณ์อื่น

กำลังของวงจร

เสียบสาย Mini USB เข้ากับแจ็คไฟของ Adafruit Huzzah ESP8266 สว่างขึ้นและ voila เราพร้อมแล้ว!

ขั้นตอนที่ 3: รหัส

รหัส
รหัส

รหัส ESP สำหรับเซ็นเซอร์ Adafruit Huzzah ESP8266 และ LSM9DS0 มีอยู่ในที่เก็บ GitHub ของเรา

ก่อนดำเนินการโค้ด โปรดอ่านคำแนะนำที่ให้ไว้ในไฟล์ Readme และตั้งค่า Adafruit Huzzah ESP8266 ตามนั้น การตั้งค่า ESP ใช้เวลาเพียง 5 นาที

รหัสมีความยาว แต่อยู่ในรูปแบบที่ง่ายที่สุดที่คุณสามารถจินตนาการได้และคุณจะเข้าใจได้ไม่ยาก

เพื่อความสะดวกของคุณ คุณสามารถคัดลอกรหัส ESP ที่ใช้งานได้สำหรับเซ็นเซอร์นี้จากที่นี่ด้วย:

// เผยแพร่โดยให้สิทธิ์ใช้งานตามเจตจำนงเสรี// ใช้แบบใดก็ได้ที่คุณต้องการ ไม่ว่าจะมีกำไรหรือให้เปล่า โดยให้เหมาะสมกับใบอนุญาตของงานที่เกี่ยวข้อง // LSM9DSO // รหัสนี้ออกแบบมาเพื่อทำงานกับ TCS3414_I2CS I2C Mini Module ที่มีจำหน่ายจาก dcubestore.com

#รวม

#รวม

#รวม

#รวม

// ที่อยู่ LSM9DSO Gyro I2C คือ 6A (106)

#define Addr_Gyro 0x6A // ที่อยู่ LSM9DSO Accl I2C คือ 1E(30) #define Addr_Accl 0x1E

const char* ssid = "ssid ของคุณ";

const char* password = "รหัสผ่านของคุณ"; int xGyro, yGyro, zGyro, xAccl, yAccl, zAccl, xMag, yMag, zMag;

ESP8266เว็บเซิร์ฟเวอร์เซิร์ฟเวอร์(80);

เป็นโมฆะ handleroot()

{ ข้อมูล int ที่ไม่ได้ลงนาม[6];

// เริ่มการส่ง I2C

Wire.beginTransmission(Addr_Gyro); // เลือกควบคุมการลงทะเบียน 1 Wire.write(0x20); // อัตราข้อมูล = 95Hz, X, Y, แกน Z เปิดใช้งาน เปิด Wire.write(0x0F); // หยุด I2C Transmission Wire.endTransmission();

// เริ่มการส่ง I2C

Wire.beginTransmission(Addr_Gyro); // เลือกควบคุมการลงทะเบียน 4 Wire.write(0x23); // เต็มสเกล 2000 dps, อัปเดต Wire.write อย่างต่อเนื่อง (0x30); // หยุด I2C Transmission Wire.endTransmission();

// เริ่มการส่ง I2C

Wire.beginTransmission(Addr_Accl); // เลือกควบคุมการลงทะเบียน 1 Wire.write(0x20); // อัตราข้อมูลการเร่งความเร็ว = 100Hz, X, Y, แกน Z เปิดใช้งาน เปิด Wire.write(0x67); // หยุด I2C Transmission บนอุปกรณ์ Wire.endTransmission();

// เริ่มการส่ง I2C

Wire.beginTransmission(Addr_Accl); // เลือกควบคุมการลงทะเบียน 2 Wire.write(0x21); // การเลือกขนาดเต็ม +/- 16g Wire.write(0x20); // หยุด I2C Transmission Wire.endTransmission();

// เริ่มการส่ง I2C

Wire.beginTransmission(Addr_Accl); // เลือกควบคุมการลงทะเบียน 5 Wire.write(0x24); // ความละเอียดสูงแบบแม่เหล็ก, อัตราข้อมูลขาออก = 50Hz Wire.write(0x70); // หยุด I2C Transmission Wire.endTransmission();

// เริ่มการส่ง I2C

Wire.beginTransmission(Addr_Accl); // เลือกควบคุมการลงทะเบียน 6 Wire.write(0x25); // Magnetic full-scale +/- 12 gauss Wire.write(0x60); // หยุด I2C Transmission Wire.endTransmission();

// เริ่มการส่ง I2C

Wire.beginTransmission(Addr_Accl); // เลือกควบคุมการลงทะเบียน 7 Wire.write(0x26); // โหมดปกติ โหมดการแปลงต่อเนื่องแม่เหล็ก Wire.write(0x00); // หยุด I2C Transmission Wire.endTransmission(); ล่าช้า (300);

สำหรับ (int i = 0; i <6; i ++) { // เริ่ม I2C Transmission Wire.beginTransmission (Addr_Gyro); // เลือกการลงทะเบียนข้อมูล Wire.write((40 + i)); // หยุด I2C Transmission Wire.endTransmission();

// ขอข้อมูล 1 ไบต์

Wire.requestFrom(Addr_Gyro, 1);

// อ่านข้อมูลขนาด 6 ไบต์

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

// แปลงข้อมูล

int xGyro = ((ข้อมูล[1] * 256) + ข้อมูล[0]); int yGyro = ((ข้อมูล[3] * 256) + ข้อมูล[2]); int zGyro = ((ข้อมูล[5] * 256) + ข้อมูล[4]);

สำหรับ (int i = 0; i <6; i ++) { // เริ่ม I2C Transmission Wire.beginTransmission (Addr_Accl); // เลือกการลงทะเบียนข้อมูล Wire.write((40 + i)); // หยุด I2C Transmission Wire.endTransmission();

// ขอข้อมูล 1 ไบต์

Wire.requestFrom(Addr_Accl, 1);

// อ่านข้อมูลขนาด 6 ไบต์

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

// แปลงข้อมูล

int xAccl = ((ข้อมูล[1] * 256) + ข้อมูล[0]); int yAccl = ((ข้อมูล[3] * 256) + ข้อมูล[2]); int zAccl = ((ข้อมูล[5] * 256) + ข้อมูล[4]);

สำหรับ (int i = 0; i <6; i ++) { // เริ่ม I2C Transmission Wire.beginTransmission (Addr_Accl); // เลือก data register Wire.write((8 + i)); // หยุด I2C Transmission Wire.endTransmission();

// ขอข้อมูล 1 ไบต์

Wire.requestFrom(Addr_Accl, 1);

// อ่านข้อมูลขนาด 6 ไบต์

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

// แปลงข้อมูล

int xMag = ((ข้อมูล[1] * 256) + ข้อมูล[0]); int yMag = ((ข้อมูล[3] * 256) + ข้อมูล[2]); int zMag = ((ข้อมูล[5] * 256) + ข้อมูล[4]);

// ส่งออกข้อมูลไปยังมอนิเตอร์แบบอนุกรม

Serial.print("แกน X ของการหมุน: "); Serial.println(xGyro); Serial.print("แกน Y ของการหมุน: "); Serial.println(yGyro); Serial.print("แกน Z ของการหมุน: "); Serial.println (zGyro); Serial.print("การเร่งความเร็วในแกน X: "); Serial.println(xAccl); Serial.print("การเร่งความเร็วในแกน Y: "); Serial.println(yAccl); Serial.print("การเร่งความเร็วในแกน Z: "); Serial.println(zAccl); Serial.print("สนามแม่เหล็กในแกน X: "); Serial.println(xMag); Serial.print("สนามแม่เหล็กในแกน Y: "); Serial.println (yMag); Serial.print("แม่เหล็กยื่นในแกน Z: "); Serial.println (zMag);

// ส่งออกข้อมูลไปยังเว็บเซิร์ฟเวอร์

server.sendContent ("

ดีคิวบ์ สโตร์

www.dcubestore.com

"" LSM9DS0 เซนเซอร์ I2C Mini Module

);

server.sendContent ("

แกน X ของการหมุน = " + สตริง (xGyro)); server.sendContent ("

แกน Y ของการหมุน = " + สตริง (yGyro)); server.sendContent ("

แกน Z ของการหมุน = " + สตริง (zGyro)); server.sendContent ("

การเร่งความเร็วในแกน X = " + String(xAccl)); server.sendContent ("

การเร่งความเร็วในแกน Y = " + String(yAccl)); server.sendContent ("

การเร่งความเร็วในแกน Z = " + String(zAccl)); server.sendContent ("

ไฟล์แม่เหล็กในแกน X = " + String(xMag)); server.sendContent ("

ยื่นแม่เหล็กในแกน Y = " + สตริง (yMag)); server.sendContent ("

ยื่นแม่เหล็กในแกน Z = " + สตริง (zMag)); ล่าช้า (1000); }

การตั้งค่าเป็นโมฆะ ()

{ // เริ่มต้นการสื่อสาร I2C เป็น MASTER Wire.begin (2, 14); // เริ่มต้นการสื่อสารแบบอนุกรม กำหนดอัตรารับส่งข้อมูล = 115200 Serial.begin(115200);

// เชื่อมต่อกับเครือข่าย WiFi

WiFi.begin(ssid, รหัสผ่าน);

// รอการเชื่อมต่อ

ในขณะที่ (WiFi.status () != WL_CONNECTED) { ล่าช้า (500); Serial.print("."); } Serial.println(""); Serial.print("เชื่อมต่อกับ"); Serial.println(ssid);

// รับที่อยู่ IP ของ ESP8266

Serial.print("ที่อยู่ IP:"); Serial.println(WiFi.localIP());

// เริ่มเซิร์ฟเวอร์

server.on("/", แฮนเดิลรูท); เซิร์ฟเวอร์.begin(); Serial.println("เซิร์ฟเวอร์ HTTP เริ่มทำงาน"); }

วงเป็นโมฆะ ()

{ server.handleClient(); }

ขั้นตอนที่ 4: การทำงานของโค้ด

การทำงานของรหัส
การทำงานของรหัส

ตอนนี้ดาวน์โหลด (หรือ git pull) โค้ดและเปิดใน Arduino IDE

รวบรวมและอัปโหลดรหัสและดูผลลัพธ์บน Serial Monitor

หมายเหตุ: ก่อนอัปโหลด ตรวจสอบให้แน่ใจว่าคุณป้อนเครือข่าย SSID และรหัสผ่านในรหัส

คัดลอกที่อยู่ IP ของ ESP8266 จาก Serial Monitor แล้ววางลงในเว็บเบราว์เซอร์ของคุณ คุณจะเห็นหน้าเว็บที่มีแกนหมุน ความเร่ง และการอ่านสนามแม่เหล็กใน 3 แกน

เอาต์พุตของเซ็นเซอร์บน Serial Monitor และ Web Server แสดงในภาพด้านบน

ขั้นตอนที่ 5: แอปพลิเคชันและคุณสมบัติ

LSM9DS0 เป็นระบบในแพ็คเกจที่มีเซ็นเซอร์การเร่งความเร็วเชิงเส้นดิจิทัล 3 มิติ เซ็นเซอร์อัตราเชิงมุมดิจิทัล 3 มิติ และเซ็นเซอร์แม่เหล็กดิจิทัล 3 มิติ ด้วยการวัดคุณสมบัติทั้งสามนี้ คุณจะได้รับความรู้มากมายเกี่ยวกับการเคลื่อนไหวของวัตถุ การวัดแรงและทิศทางของสนามแม่เหล็กโลกด้วยเครื่องวัดความเข้มข้นของสนามแม่เหล็ก คุณจะสามารถประมาณทิศมุ่งหน้าของคุณได้ มาตรความเร่งในโทรศัพท์ของคุณสามารถวัดทิศทางของแรงโน้มถ่วง และการวางแนวโดยประมาณ (แนวตั้ง แนวนอน แนวราบ ฯลฯ) Quadcopters ที่มีไจโรสโคปในตัวสามารถมองหาการม้วนตัวหรือระยะพิทช์อย่างกะทันหัน เราสามารถใช้สิ่งนี้ในระบบกำหนดตำแหน่งบนโลก (GPS)

แอปพลิเคชั่นเพิ่มเติมบางตัวรวมถึงการนำทางในร่ม, ส่วนต่อประสานผู้ใช้อัจฉริยะ, การจดจำท่าทางขั้นสูง, เกมและอุปกรณ์อินพุตเสมือนจริง ฯลฯ

ด้วยความช่วยเหลือของ ESP8266 เราสามารถเพิ่มความจุให้มีความยาวมากขึ้น เราสามารถควบคุมเครื่องใช้ของเราและตรวจสอบประสิทธิภาพได้จากเดสก์ท็อปและอุปกรณ์เคลื่อนที่ของเรา เราสามารถจัดเก็บและจัดการข้อมูลออนไลน์และศึกษาข้อมูลเหล่านี้ได้ตลอดเวลาเพื่อแก้ไข แอปพลิเคชันอื่นๆ ได้แก่ ระบบอัตโนมัติในบ้าน, เครือข่ายแบบตาข่าย, การควบคุมแบบไร้สายสำหรับอุตสาหกรรม, จอภาพสำหรับเด็ก, เครือข่ายเซ็นเซอร์, อุปกรณ์อิเล็กทรอนิกส์ที่สวมใส่ได้, อุปกรณ์รับรู้ตำแหน่ง Wi-Fi, บีคอนระบบตำแหน่ง Wi-Fi

ขั้นตอนที่ 6: แหล่งข้อมูลเพื่อก้าวต่อไป

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ LSM9DS0 และ ESP8266 โปรดดูที่ลิงก์ด้านล่าง:

  • เอกสารข้อมูลเซ็นเซอร์ LSM9DS0
  • LSM9DS0 แผนภาพการเดินสายไฟ
  • เอกสารข้อมูล ESP8266

แนะนำ: