สารบัญ:

วิธีสร้างระบบตรวจจับการเคลื่อนไหวด้วย Arduino: 7 ขั้นตอน
วิธีสร้างระบบตรวจจับการเคลื่อนไหวด้วย Arduino: 7 ขั้นตอน

วีดีโอ: วิธีสร้างระบบตรวจจับการเคลื่อนไหวด้วย Arduino: 7 ขั้นตอน

วีดีโอ: วิธีสร้างระบบตรวจจับการเคลื่อนไหวด้วย Arduino: 7 ขั้นตอน
วีดีโอ: EP. 7 Arduino | ESP32 + IR Sensor ตรวจจับวัตถุหรือการเคลื่อนไหว แจ้งเตือนผ่าน Line Notify 2024, กรกฎาคม
Anonim
วิธีสร้างระบบตรวจจับความเคลื่อนไหวด้วย Arduino
วิธีสร้างระบบตรวจจับความเคลื่อนไหวด้วย Arduino

สร้างตัวนับการผลิตแบบเคลื่อนไหวและการแสดงตนโดยใช้ Feather HUZZAH ที่ตั้งโปรแกรมด้วย Arduino และขับเคลื่อนโดย Ubidots

การตรวจจับการเคลื่อนไหวทางกายภาพและการแสดงตนอย่างมีประสิทธิภาพในบ้านอัจฉริยะและการผลิตอัจฉริยะสามารถเป็นประโยชน์อย่างมากในการใช้งานตั้งแต่โซลูชันการดำรงชีวิตแบบช่วยเหลือผู้สูงวัย (AAL) หรือระบบการนับการผลิตที่ป้อน MES ที่ใหญ่ขึ้น แอปพลิเคชันอื่นๆ สำหรับ Motion and Presence Detection รวมถึงแต่ไม่จำกัดเพียง:

  1. ประตูและประตูอัตโนมัติ
  2. เซ็นเซอร์จอดรถเพื่อกำหนดจุดว่าง
  3. การตรวจสอบระดับถังระยะไกล
  4. บ้านอัจฉริยะและสิ่งอำนวยความสะดวกสำหรับระบบแสงสว่างและความปลอดภัย
  5. การตรวจจับและนับหน่วยในสายพานลำเลียง
  6. การตรวจจับเครื่องหมายบนวัสดุพิมพ์
  7. การตรวจจับของเหลวภายในกระดาษแข็ง พลาสติก และกระดาษเอียง
  8. การตรวจจับระยะทาง
  9. เคาน์เตอร์ผู้คน

แม้ว่าจะมีแอปพลิเคชั่นมากมายสำหรับการมีอยู่และการเคลื่อนไหว แต่ก็มีเซ็นเซอร์จำนวนมากเท่ากันในการรวบรวมข้อมูล เช่น เซ็นเซอร์ capacitive, inductive, photoelectric และ Ultrasonic ขึ้นอยู่กับต้นทุน สภาพแวดล้อม และข้อกำหนดด้านความแม่นยำ เราควรเลือกฮาร์ดแวร์ที่เหมาะสมที่สุดสำหรับสภาพแวดล้อมและข้อกำหนดของแอพพลิเคชั่น

สำหรับบทช่วยสอนนี้ เราจะเน้นที่การสร้างตัวนับการผลิตแบบเรียลไทม์ แอปพลิเคชันจะนับทุกยูนิตที่ผ่านไปบนสายพานลำเลียง เราจะใช้ Arduino IDE เพื่อตั้งโปรแกรม Feather HUZZAH ESP8266 เซ็นเซอร์อัลตราโซนิก และ Ubidots เพื่อพัฒนาแอปพลิเคชันของเราและแสดงแดชบอร์ด IoT ของเรา

ขั้นตอนที่ 1: ข้อกำหนด

  1. ขนนก HUZZAH พร้อม ESP8266MB7389-100
  2. อัลตราโซนิกเซนเซอร์
  3. Arduino IDE 1.8.2 หรือสูงกว่า
  4. บัญชี 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 Application Development
Ubidots Application Development
Ubidots Application Development
Ubidots Application Development
Ubidots Application Development
Ubidots Application Development

การกำหนดค่าเหตุการณ์ Ubidots

การอ่านปัจจุบันที่เราส่งไปยัง Ubidots เป็นอินพุตระยะทาง สำหรับการแปลการอ่านเหล่านี้เป็นผลลัพธ์ที่เราต้องการ -นับหน่วย- เราควรสร้างเหตุการณ์ตามขั้นตอนเหล่านี้:

  1. ภายในอุปกรณ์ปัจจุบัน "การควบคุมการเคลื่อนไหว" ให้สร้างตัวแปรเริ่มต้นใหม่ที่เรียกว่า "กล่อง" ซึ่งจะได้รับ 1 ทุกครั้งที่มีการนับหน่วยใหม่
  2. ไปที่การจัดการอุปกรณ์ -> เหตุการณ์ แล้วคลิกไอคอนบวกสีน้ำเงินที่มุมบนขวาของหน้าเพื่อเพิ่มกิจกรรมใหม่
  3. กำหนดค่ากิจกรรมของคุณเริ่มต้นด้วย "ถ้าทริกเกอร์":
  • เลือกตัวแปร: "ระยะทาง"
  • ค่า: ค่า (ค่าเริ่มต้น)
  • น้อยกว่าหรือเท่ากับ[ระยะทางที่คาดหวังสูงสุด} ระหว่างเซ็นเซอร์กับกล่องที่ผ่าน*แอปพลิเคชันของเรากำหนดให้ 500 มม
  • เป็นเวลา 0 นาที
  • บันทึก

4. เมื่อทริกเกอร์ได้รับการกำหนดค่าตามข้อกำหนดของแอปพลิเคชันของคุณแล้ว ให้คลิกไอคอน "บวก" สีส้มที่มุมบนขวาเพื่อเพิ่มการดำเนินการตามเงื่อนไข

5. เลือก “ตั้งค่าตัวแปร” เป็นการกระทำ

6. จากนั้นเลือก "กล่อง" ตัวแปรเริ่มต้นที่สร้างไว้ก่อนหน้านี้และค่า "1"

7. บันทึกการเปลี่ยนแปลง หากเหตุการณ์ได้รับการตั้งค่าอย่างถูกต้อง จะส่ง "1" ทุกครั้งที่ระยะห่างระหว่างเซนเซอร์กับตัวเครื่องยาวกว่าเกณฑ์ที่ระบุ ซึ่งบ่งชี้ว่าไม่มีวัตถุอยู่ใกล้ - และควรนับหน่วยใหม่ที่เพิ่งผ่านไป.

ในการ์ดอุปกรณ์เฉพาะ Feather คุณจะพบว่าตัวแปร "กล่อง" ที่ "1" ถูกส่งทุกครั้งที่ตรวจพบว่ามีหน่วยอยู่

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

8. เห็นภาพจำนวนหน่วยที่รับรู้ (หรือครั้งที่ตรวจพบวัตถุ) ตอนนี้โดยใช้ตัวแปร "กล่อง" เราจะสร้างตัวแปรหน้าต่างกลิ้งใหม่เพื่อรวมจำนวนการอ่านทั้งหมดที่ได้รับจากตัวแปร "กล่อง" ใน สแปมที่กำหนด (นาที ชั่วโมง วัน สัปดาห์ ฯลฯ) ในการดำเนินการพัฒนานี้ ให้ทำตามขั้นตอนง่าย ๆ เหล่านี้:

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

เลือกอุปกรณ์: การควบคุมการเคลื่อนไหว (หรือชื่ออุปกรณ์ที่คุณกำลังส่งข้อมูล)

เลือกตัวแปร: กล่อง

คำนวณ: sum

ทุกๆ: "1" ชั่วโมง (หรือตามคำขอการสมัครของคุณ)

ตอนนี้ กำหนดชื่อให้กับตัวแปรใหม่ที่ระบุจำนวนกล่อง (หรือการเคลื่อนไหว) ที่นับในหนึ่งชั่วโมง เช่นเดียวกับ "กล่อง/ชั่วโมง" หรือ "หน่วย/ชั่วโมง

ขั้นตอนที่ 6: การกำหนดค่าแดชบอร์ด

การกำหนดค่าแดชบอร์ด
การกำหนดค่าแดชบอร์ด

สุดท้าย สร้างแดชบอร์ดเพื่อแสดงจำนวนหน่วยที่ตรวจจับได้

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

กำหนดข้อมูลประจำตัวต่อไปนี้ให้กับวิดเจ็ตใหม่ของคุณเพื่อให้เห็นภาพการนับของคุณ

คุณต้องการดูข้อมูลของคุณอย่างไร: Chart

เลือกประเภทของวิดเจ็ต: แผนภูมิเส้น

เพิ่มอุปกรณ์: motion-control

เพิ่มตัวแปร: กล่อง/ชั่วโมง

เสร็จสิ้น. และด้วยการพัฒนาแดชบอร์ดขั้นสุดท้ายนี้ แอปพลิเคชันของคุณก็เสร็จสมบูรณ์ และตอนนี้คุณมีระบบตรวจจับการเคลื่อนไหวและการแสดงตนที่มีประสิทธิภาพและประสิทธิผล นี่คือผลลัพธ์สุดท้ายของเรา

แนะนำ: