สารบัญ:
- ขั้นตอนที่ 1: ข้อกำหนด
- ขั้นตอนที่ 2: ตั้งค่า
- ขั้นตอนที่ 3: การตั้งค่าฮาร์ดแวร์
- ขั้นตอนที่ 4: การตั้งค่าเฟิร์มแวร์
- ขั้นตอนที่ 5: การพัฒนาแอปพลิเคชัน Ubidots
- ขั้นตอนที่ 6: การกำหนดค่าแดชบอร์ด
วีดีโอ: วิธีสร้างระบบตรวจจับการเคลื่อนไหวด้วย Arduino: 7 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
สร้างตัวนับการผลิตแบบเคลื่อนไหวและการแสดงตนโดยใช้ Feather HUZZAH ที่ตั้งโปรแกรมด้วย Arduino และขับเคลื่อนโดย Ubidots
การตรวจจับการเคลื่อนไหวทางกายภาพและการแสดงตนอย่างมีประสิทธิภาพในบ้านอัจฉริยะและการผลิตอัจฉริยะสามารถเป็นประโยชน์อย่างมากในการใช้งานตั้งแต่โซลูชันการดำรงชีวิตแบบช่วยเหลือผู้สูงวัย (AAL) หรือระบบการนับการผลิตที่ป้อน MES ที่ใหญ่ขึ้น แอปพลิเคชันอื่นๆ สำหรับ Motion and Presence Detection รวมถึงแต่ไม่จำกัดเพียง:
- ประตูและประตูอัตโนมัติ
- เซ็นเซอร์จอดรถเพื่อกำหนดจุดว่าง
- การตรวจสอบระดับถังระยะไกล
- บ้านอัจฉริยะและสิ่งอำนวยความสะดวกสำหรับระบบแสงสว่างและความปลอดภัย
- การตรวจจับและนับหน่วยในสายพานลำเลียง
- การตรวจจับเครื่องหมายบนวัสดุพิมพ์
- การตรวจจับของเหลวภายในกระดาษแข็ง พลาสติก และกระดาษเอียง
- การตรวจจับระยะทาง
- เคาน์เตอร์ผู้คน
แม้ว่าจะมีแอปพลิเคชั่นมากมายสำหรับการมีอยู่และการเคลื่อนไหว แต่ก็มีเซ็นเซอร์จำนวนมากเท่ากันในการรวบรวมข้อมูล เช่น เซ็นเซอร์ capacitive, inductive, photoelectric และ Ultrasonic ขึ้นอยู่กับต้นทุน สภาพแวดล้อม และข้อกำหนดด้านความแม่นยำ เราควรเลือกฮาร์ดแวร์ที่เหมาะสมที่สุดสำหรับสภาพแวดล้อมและข้อกำหนดของแอพพลิเคชั่น
สำหรับบทช่วยสอนนี้ เราจะเน้นที่การสร้างตัวนับการผลิตแบบเรียลไทม์ แอปพลิเคชันจะนับทุกยูนิตที่ผ่านไปบนสายพานลำเลียง เราจะใช้ Arduino IDE เพื่อตั้งโปรแกรม Feather HUZZAH ESP8266 เซ็นเซอร์อัลตราโซนิก และ Ubidots เพื่อพัฒนาแอปพลิเคชันของเราและแสดงแดชบอร์ด IoT ของเรา
ขั้นตอนที่ 1: ข้อกำหนด
- ขนนก HUZZAH พร้อม ESP8266MB7389-100
- อัลตราโซนิกเซนเซอร์
- Arduino IDE 1.8.2 หรือสูงกว่า
- บัญชี Ubidots -หรือใบอนุญาต STEM
ขั้นตอนที่ 2: ตั้งค่า
- ฉันตั้งค่าฮาร์ดแวร์
- ครั้งที่สอง การตั้งค่าเฟิร์มแวร์
- สาม. Ubidots Application Development (เหตุการณ์ ตัวแปร และแดชบอร์ด)
ขั้นตอนที่ 3: การตั้งค่าฮาร์ดแวร์
Ultrasonic Sensor MB7389-100 เป็นตัวเลือกราคาประหยัดสำหรับงานอุตสาหกรรมที่มีความต้องการใช้พลังงานช่วงกว้างและใช้พลังงานต่ำในสภาพอากาศที่ท้าทายด้วยระดับ IPv67
ในการเริ่มต้น ให้จำลองแผนภาพด้านล่างเพื่อติดเซ็นเซอร์อัลตราโซนิกกับ Feather HUZZAH ESP8266
หมายเหตุ: การอ่านค่าเซ็นเซอร์สามารถใช้เป็นค่าการอ่านแบบแอนะล็อกหรือ PWM; ด้านล่างนี้เราจะอธิบายการตั้งค่าสำหรับการอ่าน PWM สำหรับข้อมูลเพิ่มเติม โปรดดูตัวอย่างที่แสดงด้านบน
[เลือกได้] วางไมโครคอนโทรลเลอร์และเซ็นเซอร์ไว้ในเคส IP67 เพื่อป้องกันฝุ่น น้ำ และปัจจัยแวดล้อมอื่นๆ ที่คุกคาม เคสมาตรฐานดูคล้ายกับที่แสดงในภาพด้านบน
ขั้นตอนที่ 4: การตั้งค่าเฟิร์มแวร์
ขั้นแรก คุณควรติดตั้ง Feather Huzzah ใน Arduino IDE และคอมไพล์โค้ด อย่าลืมตรวจสอบการตั้งค่านี้โดยทำการทดสอบการกะพริบแบบง่ายๆ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการเชื่อมต่ออุปกรณ์ Feather โปรดดูคู่มือการตั้งค่าฮาร์ดแวร์ที่เป็นประโยชน์นี้
ในการส่งข้อมูลเซ็นเซอร์ไปยัง Ubidots IoT Development Platform ให้คัดลอกและวางโค้ดด้านล่างลงใน Arduino IDE อย่าลืมกำหนดชื่อเครือข่าย Wi-Fi รหัสผ่าน และโทเค็นบัญชี Ubidots ของคุณตามที่ระบุไว้ในรหัส
/************************************ รวมห้องสมุด *************** ****************/#รวม /****************************** ** ค่าคงที่และอ็อบเจ็กต์ *************************************//* Ubidots */const char* SSID_NAME = "xxxxxxxx"; // ใส่ชื่อ SSID nameconst char* SSID_PASS = "xxxxxxxx"; // ใส่ passwordconst char* TOKEN = "Assig_your_ubidots_token"; // ใส่ TOKENconst char* DEVICE_LABEL = "motion-control"; // อุปกรณ์ของคุณ labelconst char* VARIABLE_LABEL = "distance"; // ตัวแปร labelconst char* ของคุณ USER_AGENT = "ESP8266";const char* VERSION = "1.0";const char* HTTPSERVER = "industrial.api.ubidots.com";// Ubidots Business users//const char* HTTPSERVER = " Things.ubidots.com"; // Ubidots ผู้ใช้ทางการศึกษา HTTPPORT = 80;/* Ultrasonic Sensor */const int pwPin1 = 5; // พิน PWM ที่เซ็นเซอร์เชื่อมต่อ WiFiClient clientUbi;/********************************** ฟังก์ชั่นเสริม *** ****************************//** รับความยาวของ body @arg ตัวแปร body ของประเภท char @return dataLen the ความยาวของตัวแปร*/int dataLen(ตัวแปรถ่าน*) { uint8_t dataLen = 0; สำหรับ (int i = 0; i distance / 25.4 */ float distance = pulseIn(pwPin1, HIGH); sendToUbidots(DEVICE_LABEL, VARIABLE_LABEL, distance); delay(1000);}void sendToUbidots(const char* device_label, const char* variable_label, float sensor_value) { char* body = (char *) malloc(sizeof(char) * 150); char* data = (char *) malloc(sizeof(char) * 300); /* พื้นที่สำหรับเก็บค่าที่จะส่ง * / char str_val[10]; /*---- เปลี่ยนค่าของเซ็นเซอร์เป็นประเภทถ่าน -----*/ /* 4 คือความกว้างขั้นต่ำ 2 คือความแม่นยำ ค่า float ถูกคัดลอกไปยัง str_val*/ dtostrf(sensor_value, 4, 2, str_val); /* สร้างเนื้อหาที่จะส่งไปยังคำขอ*/ sprintf(body, "{"%s\":%s}", variable_label, str_val); /* สร้าง HTTP ขอเป็น POST */ sprintf(data, "POST /api/v1.6/devices/%s", device_label); sprintf(data, "%s HTTP/1.1\r\n", data); sprintf(data, "%sHost: things.ubidots.com\r\n", data); sprintf(data, "%sUser-Agent: %s/%s\r\n", data, USER_AGENT, VERSION); sprintf(data, "%sX-Auth-Token: %s\r\n", data, TOKEN); sprint f(ข้อมูล, "%sการเชื่อมต่อ: ปิด\r\n", ข้อมูล); sprintf(data, "%sContent-Type: application/json\r\n", data); sprintf(data, "%sContent-Length: %d\r\n\r\n", data, dataLen(body)); sprintf(ข้อมูล "%s%s\r\n\r\n", ข้อมูล, เนื้อหา); /* การเชื่อมต่อเริ่มต้น */ clientUbi.connect(HTTPSERVER, HTTPPORT); /* ตรวจสอบการเชื่อมต่อไคลเอ็นต์ */ if (clientUbi.connect(HTTPSERVER, HTTPPORT)) { Serial.println(F("การโพสต์ตัวแปรของคุณ: ")); Serial.println (ข้อมูล); /* ส่งคำขอ HTTP */ clientUbi.print(data); } /* ในขณะที่ไคลเอ็นต์พร้อมใช้งาน โปรดอ่านการตอบสนองของเซิร์ฟเวอร์ */ while (clientUbi.available()) { char c = clientUbi.read(); Serial.write(c); } /* หน่วยความจำว่าง */ ฟรี (ข้อมูล); ฟรี(ร่างกาย); /* หยุดไคลเอนต์ */ clientUbi.stop();}
ProTip: คุณสามารถตรวจสอบว่าอุปกรณ์ของคุณเชื่อมต่ออย่างถูกต้องหรือไม่โดยเปิดมอนิเตอร์แบบอนุกรมใน Arduino IDE
คุณสามารถตรวจสอบว่าอุปกรณ์ถูกสร้างขึ้นในแบ็กเอนด์ Ubidots ของคุณโดยดูในบัญชีของคุณ การจัดการอุปกรณ์ -> อุปกรณ์
เมื่อคลิกอุปกรณ์ของคุณ คุณจะพบตัวแปรที่เรียกว่า "ระยะทาง" ซึ่งเก็บค่าการอ่านของเซ็นเซอร์ไว้ ชื่อนี้ถูกกำหนดในโค้ดที่คุณเพิ่งวางใน Arduino IDE หากคุณต้องการปรับตัวแปรอัตโนมัติ โปรดแก้ไขการ์ดอุปกรณ์หรือกระพริบโค้ดที่อัปเดตพร้อมระบบการตั้งชื่อตัวแปรที่ถูกต้องสำหรับแอปพลิเคชันของคุณ
ด้วยการเชื่อมต่อ Feather HUZZAH ESP8266 และการรายงานข้อมูลไปยัง Ubidots ตอนนี้ก็ถึงเวลาสร้างแอปพลิเคชันโดยใช้ Ubidots ที่ออกแบบการกำหนดค่าแอปพลิเคชันที่ปราศจากโค้ดอย่างพิถีพิถัน
ขั้นตอนที่ 5: การพัฒนาแอปพลิเคชัน Ubidots
การกำหนดค่าเหตุการณ์ Ubidots
การอ่านปัจจุบันที่เราส่งไปยัง Ubidots เป็นอินพุตระยะทาง สำหรับการแปลการอ่านเหล่านี้เป็นผลลัพธ์ที่เราต้องการ -นับหน่วย- เราควรสร้างเหตุการณ์ตามขั้นตอนเหล่านี้:
- ภายในอุปกรณ์ปัจจุบัน "การควบคุมการเคลื่อนไหว" ให้สร้างตัวแปรเริ่มต้นใหม่ที่เรียกว่า "กล่อง" ซึ่งจะได้รับ 1 ทุกครั้งที่มีการนับหน่วยใหม่
- ไปที่การจัดการอุปกรณ์ -> เหตุการณ์ แล้วคลิกไอคอนบวกสีน้ำเงินที่มุมบนขวาของหน้าเพื่อเพิ่มกิจกรรมใหม่
- กำหนดค่ากิจกรรมของคุณเริ่มต้นด้วย "ถ้าทริกเกอร์":
- เลือกตัวแปร: "ระยะทาง"
- ค่า: ค่า (ค่าเริ่มต้น)
- น้อยกว่าหรือเท่ากับ[ระยะทางที่คาดหวังสูงสุด} ระหว่างเซ็นเซอร์กับกล่องที่ผ่าน*แอปพลิเคชันของเรากำหนดให้ 500 มม
- เป็นเวลา 0 นาที
- บันทึก
4. เมื่อทริกเกอร์ได้รับการกำหนดค่าตามข้อกำหนดของแอปพลิเคชันของคุณแล้ว ให้คลิกไอคอน "บวก" สีส้มที่มุมบนขวาเพื่อเพิ่มการดำเนินการตามเงื่อนไข
5. เลือก “ตั้งค่าตัวแปร” เป็นการกระทำ
6. จากนั้นเลือก "กล่อง" ตัวแปรเริ่มต้นที่สร้างไว้ก่อนหน้านี้และค่า "1"
7. บันทึกการเปลี่ยนแปลง หากเหตุการณ์ได้รับการตั้งค่าอย่างถูกต้อง จะส่ง "1" ทุกครั้งที่ระยะห่างระหว่างเซนเซอร์กับตัวเครื่องยาวกว่าเกณฑ์ที่ระบุ ซึ่งบ่งชี้ว่าไม่มีวัตถุอยู่ใกล้ - และควรนับหน่วยใหม่ที่เพิ่งผ่านไป.
ในการ์ดอุปกรณ์เฉพาะ Feather คุณจะพบว่าตัวแปร "กล่อง" ที่ "1" ถูกส่งทุกครั้งที่ตรวจพบว่ามีหน่วยอยู่
มีประโยชน์อย่างยิ่งสำหรับสายพานลำเลียงอุตสาหกรรมและการนับหน่วย ต้นแบบนี้สามารถปรับแต่งให้เหมาะสมกับสภาพแวดล้อมหรือฮาร์ดแวร์ที่แตกต่างกันเพียงแค่ในการเข้ารหัสหรือการพัฒนาแอปพลิเคชันของคุณ
8. เห็นภาพจำนวนหน่วยที่รับรู้ (หรือครั้งที่ตรวจพบวัตถุ) ตอนนี้โดยใช้ตัวแปร "กล่อง" เราจะสร้างตัวแปรหน้าต่างกลิ้งใหม่เพื่อรวมจำนวนการอ่านทั้งหมดที่ได้รับจากตัวแปร "กล่อง" ใน สแปมที่กำหนด (นาที ชั่วโมง วัน สัปดาห์ ฯลฯ) ในการดำเนินการพัฒนานี้ ให้ทำตามขั้นตอนง่าย ๆ เหล่านี้:
กำหนดข้อมูลประจำตัวต่อไปนี้ให้กับตัวแปรหน้าต่างกลิ้งใหม่ของคุณ
เลือกอุปกรณ์: การควบคุมการเคลื่อนไหว (หรือชื่ออุปกรณ์ที่คุณกำลังส่งข้อมูล)
เลือกตัวแปร: กล่อง
คำนวณ: sum
ทุกๆ: "1" ชั่วโมง (หรือตามคำขอการสมัครของคุณ)
ตอนนี้ กำหนดชื่อให้กับตัวแปรใหม่ที่ระบุจำนวนกล่อง (หรือการเคลื่อนไหว) ที่นับในหนึ่งชั่วโมง เช่นเดียวกับ "กล่อง/ชั่วโมง" หรือ "หน่วย/ชั่วโมง
ขั้นตอนที่ 6: การกำหนดค่าแดชบอร์ด
สุดท้าย สร้างแดชบอร์ดเพื่อแสดงจำนวนหน่วยที่ตรวจจับได้
ไปที่การจัดการอุปกรณ์ -> แดชบอร์ด และเพิ่มวิดเจ็ตใหม่ วิดเจ็ตนี้จะแสดงจำนวนกล่องที่นับในวันนี้ โดยแยกเป็นชั่วโมง
กำหนดข้อมูลประจำตัวต่อไปนี้ให้กับวิดเจ็ตใหม่ของคุณเพื่อให้เห็นภาพการนับของคุณ
คุณต้องการดูข้อมูลของคุณอย่างไร: Chart
เลือกประเภทของวิดเจ็ต: แผนภูมิเส้น
เพิ่มอุปกรณ์: motion-control
เพิ่มตัวแปร: กล่อง/ชั่วโมง
เสร็จสิ้น. และด้วยการพัฒนาแดชบอร์ดขั้นสุดท้ายนี้ แอปพลิเคชันของคุณก็เสร็จสมบูรณ์ และตอนนี้คุณมีระบบตรวจจับการเคลื่อนไหวและการแสดงตนที่มีประสิทธิภาพและประสิทธิผล นี่คือผลลัพธ์สุดท้ายของเรา
แนะนำ:
การออกแบบเกมในการสะบัดใน 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++)
Arduino ที่ถูกที่สุด -- Arduino ที่เล็กที่สุด -- Arduino Pro Mini -- การเขียนโปรแกรม -- Arduino Neno: 6 ขั้นตอน (พร้อมรูปภาพ)
Arduino ที่ถูกที่สุด || Arduino ที่เล็กที่สุด || Arduino Pro Mini || การเขียนโปรแกรม || Arduino Neno:…………………………… โปรดสมัครสมาชิกช่อง YouTube ของฉันสำหรับวิดีโอเพิ่มเติม……. โปรเจ็กต์นี้เกี่ยวกับวิธีเชื่อมต่อ Arduino ที่เล็กที่สุดและถูกที่สุดเท่าที่เคยมีมา Arduino ที่เล็กที่สุดและถูกที่สุดคือ arduino pro mini คล้ายกับ Arduino