สารบัญ:
- ขั้นตอนที่ 1: อุปกรณ์ที่เราต้องการ.. !
- ขั้นตอนที่ 2: การเชื่อมต่อฮาร์ดแวร์
- ขั้นตอนที่ 3: รหัส
- ขั้นตอนที่ 4: การทำงานของโค้ด
- ขั้นตอนที่ 5: แอปพลิเคชันและคุณสมบัติ
- ขั้นตอนที่ 6: แหล่งข้อมูลเพื่อก้าวต่อไป
วีดีโอ: การวางแนวแผนที่ผ่านเว็บเซิร์ฟเวอร์: 6 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
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
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: 3 ขั้นตอน
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: ในบทช่วยสอนนี้ ฉันจะแสดงขั้นตอนสำคัญในการติดตั้งปลั๊กอิน WordPress ให้กับเว็บไซต์ของคุณ โดยทั่วไป คุณสามารถติดตั้งปลั๊กอินได้สองวิธี วิธีแรกคือผ่าน ftp หรือผ่าน cpanel แต่ฉันจะไม่แสดงมันเพราะมันสอดคล้องกับ
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
เครื่อง Rube Goldberg 11 ขั้นตอน: 8 ขั้นตอน
เครื่อง 11 Step Rube Goldberg: โครงการนี้เป็นเครื่อง 11 Step Rube Goldberg ซึ่งออกแบบมาเพื่อสร้างงานง่ายๆ ในรูปแบบที่ซับซ้อน งานของโครงการนี้คือการจับสบู่ก้อนหนึ่ง