Mục lục:

Cách xây dựng hệ thống phát hiện chuyển động với Arduino: 7 bước
Cách xây dựng hệ thống phát hiện chuyển động với Arduino: 7 bước

Video: Cách xây dựng hệ thống phát hiện chuyển động với Arduino: 7 bước

Video: Cách xây dựng hệ thống phát hiện chuyển động với Arduino: 7 bước
Video: Arduino | Cảm biến thân nhiệt chuyển động PIR SR501 2024, Tháng bảy
Anonim
Cách xây dựng hệ thống phát hiện chuyển động với Arduino
Cách xây dựng hệ thống phát hiện chuyển động với Arduino

Xây dựng bộ đếm sản xuất chuyển động và hiện diện bằng Feather HUZZAH được lập trình với Arduino và được cung cấp bởi Ubidots.

Phát hiện chuyển động vật lý và hiện diện hiệu quả trong Nhà thông minh và Sản xuất thông minh có thể rất hữu ích trong các ứng dụng khác nhau, từ các giải pháp Môi trường xung quanh có hỗ trợ người già (AAL) hoặc Hệ thống đếm sản xuất cung cấp MES lớn hơn. Các ứng dụng khác để phát hiện chuyển động và hiện diện bao gồm nhưng không giới hạn ở:

  1. Tự động hóa cửa và cổng
  2. Cảm biến đỗ xe để chỉ định các điểm miễn phí
  3. Giám sát mức bể từ xa
  4. Ngôi nhà thông minh và các tiện ích chiếu sáng và an ninh
  5. Các đơn vị phát hiện và đếm trong dây chuyền băng tải
  6. Đánh dấu phát hiện trên vật liệu in
  7. Phát hiện chất lỏng bên trong bìa cứng, nhựa và giấy nghiêng
  8. Phát hiện khoảng cách
  9. Quầy người

Mặc dù có nhiều ứng dụng cho sự hiện diện và chuyển động, nhưng cũng có nhiều cảm biến để thu thập dữ liệu, chẳng hạn như cảm biến điện dung, cảm ứng, quang điện và siêu âm. Tùy thuộc vào chi phí, điều kiện môi trường và yêu cầu về độ chính xác, người ta nên chọn phần cứng phù hợp nhất cho môi trường và yêu cầu ứng dụng.

Đối với hướng dẫn này, chúng tôi sẽ tập trung vào việc xây dựng bộ đếm sản xuất thời gian thực; ứng dụng sẽ đếm mọi đơn vị đi qua trên băng chuyền. Chúng tôi sẽ sử dụng Arduino IDE để lập trình Feather HUZZAH ESP8266, một cảm biến siêu âm và Ubidots để phát triển ứng dụng và hiển thị bảng điều khiển IoT của chúng tôi.

Bước 1: Yêu cầu

  1. Lông vũ HUZZAH với ESP8266MB7389-100
  2. Thiết bị cảm biến sóng siêu âm
  3. Arduino IDE 1.8.2 trở lên
  4. Tài khoản Ubidots -hoặc Giấy phép STEM

Bước 2: Thiết lập

  • Tôi thiết lập phần cứng
  • II. Thiết lập chương trình cơ sở
  • III. Phát triển ứng dụng Ubidots (sự kiện, biến và bảng điều khiển)

Bước 3: Thiết lập phần cứng

Thiết lập phần cứng
Thiết lập phần cứng
Thiết lập phần cứng
Thiết lập phần cứng

Cảm biến siêu âm MB7389-100 là một lựa chọn chi phí thấp cho các ứng dụng công nghiệp với yêu cầu tiêu thụ điện năng trên phạm vi rộng và ít trong điều kiện thời tiết khắc nghiệt nhờ xếp hạng IPv67.

Để bắt đầu, hãy phản chiếu sơ đồ bên dưới để gắn cảm biến siêu âm vào Feather HUZZAH ESP8266.

LƯU Ý: Số đọc cảm biến có thể được coi là số đọc tương tự hoặc PWM; dưới đây, chúng tôi sẽ giải thích thiết lập cho phần đọc PWM, để biết thêm thông tin, vui lòng xem các ví dụ được hiển thị ở trên.

[Tùy chọn] đặt bộ điều khiển vi mô và các cảm biến bên trong vỏ đạt tiêu chuẩn IP67 để bảo vệ chúng khỏi bụi, nước và các yếu tố môi trường đe dọa khác. Vỏ tiêu chuẩn trông tương tự như trong các bức ảnh ở trên.

Bước 4: Thiết lập chương trình cơ sở

Thiết lập chương trình cơ sở
Thiết lập chương trình cơ sở
Thiết lập chương trình cơ sở
Thiết lập chương trình cơ sở

Đầu tiên, bạn nên cài đặt Feather Huzzah trong Arduino IDE và biên dịch mã. Hãy nhớ xác minh thiết lập này bằng cách thực hiện một bài kiểm tra nhấp nháy đơn giản. Để biết thêm thông tin về cách kết nối thiết bị Feather của bạn, hãy xem hướng dẫn thiết lập phần cứng hữu ích này.

Để gửi dữ liệu cảm biến đến Nền tảng phát triển IoT của Ubidots, hãy sao chép và dán mã bên dưới vào Arduino IDE. Hãy nhớ gán tên mạng Wi-Fi, mật khẩu và Mã thông báo tài khoản Ubidots của bạn ở nơi được chỉ ra trong mã.

/ ******************************** Bao gồm các thư viện *************** ****************/#bao gồm /****************************** ** Hằng số và đối tượng ******************************* // * Ubidots * / const char * SSID_NAME = "xxxxxxxx"; // Đặt ở đây tên biểu tượng SSID của bạn char * SSID_PASS = "xxxxxxxx"; // Đặt mật khẩu của bạn ở đây char * TOKEN = "Assig_your_ubidots_token"; // Đặt ở đây TOKENconst char * DEVICE_LABEL = "motion-control"; // Thiết bị của bạn labelconst char * VARIABLE_LABEL = "distance"; // Biến labelconst của bạn char * USER_AGENT = "ESP8266"; const char * VERSION = "1.0"; const char * HTTPSERVER = "industrial.api.ubidots.com"; // Ubidots Người dùng doanh nghiệp // const char * HTTPSERVER = " things.ubidots.com "; // Ubidots Người dùng giáo dục HTTPPORT = 80; / * Cảm biến siêu âm * / const int pwPin1 = 5; // Chân PWM nơi kết nối cảm biếnWiFiClient clientUbi; / ******************************** Các chức năng khác thường *** **************************** // ** Lấy độ dài của biến body @arg, body của kiểu char @return dataLen the độ dài của biến * / int dataLen (char * variable) {uint8_t dataLen = 0; for (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); / * Khoảng trống để lưu trữ các giá trị cần gửi * / char str_val [10]; / * ---- Chuyển các giá trị của cảm biến thành kiểu char ----- * / / * 4 là chiều rộng cực tiểu, 2 là độ chính xác; giá trị float được sao chép vào str_val * / dtostrf (sensor_value, 4, 2, str_val); / * Tạo phần thân để gửi vào yêu cầu * / sprintf (body, "{"% s / ":% s}", variable_label, str_val); / * Tạo HTTP yêu cầu trở thành 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 (data, "% sConnection: close / r / n", data); sprintf (data, "% sContent-Type: application / json / r / n", data); sprintf (data, "% sContent-Length:% d / r / n / r / n", data, dataLen (body)); sprintf (data, "% s% s / r / n / r / n", data, body); / * Kết nối ban đầu * / clientUbi.connect (HTTPSERVER, HTTPPORT); / * Xác minh kết nối máy khách * / if (clientUbi.connect (HTTPSERVER, HTTPPORT)) {Serial.println (F ("Đăng các biến của bạn:")); Serial.println (dữ liệu); / * Gửi yêu cầu HTTP * / clientUbi.print (dữ liệu); } / * Trong khi máy khách khả dụng, hãy đọc phản hồi của máy chủ * / while (clientUbi.available ()) {char c = clientUbi.read (); Serial.write (c); } / * Bộ nhớ trống * / free (dữ liệu); cơ thể miễn phí); / * Dừng máy khách * / clientUbi.stop ();}

Mẹo: bạn có thể kiểm tra xem thiết bị của mình có được kết nối chính xác hay không bằng cách mở màn hình nối tiếp trong Arduino IDE.

Bạn có thể xác minh một thiết bị được tạo trong chương trình phụ trợ Ubidots của mình bằng cách xem thiết bị đó trong tài khoản Quản lý thiết bị -> Thiết bị.

Bằng cách nhấp vào thiết bị của mình, bạn sẽ tìm thấy một biến được gọi là "khoảng cách" nơi lưu trữ các kết quả đọc của cảm biến. Tên này đã được gán trong mã bạn vừa dán vào Arduino IDE. Nếu bạn muốn điều chỉnh các biến tự động của mình, hãy làm như vậy bằng cách chỉnh sửa thẻ Thiết bị hoặc bằng cách nhấp nháy mã cập nhật với danh pháp biến chính xác cho ứng dụng của bạn.

Với Feather HUZZAH ESP8266 được kết nối và báo cáo dữ liệu cho Ubidots, giờ đã đến lúc xây dựng ứng dụng bằng cách sử dụng cấu hình ứng dụng không có mã được thiết kế cẩn thận của Ubidots.

Bước 5: Phát triển ứng dụng Ubidots

Phát triển ứng dụng Ubidots
Phát triển ứng dụng Ubidots
Phát triển ứng dụng Ubidots
Phát triển ứng dụng Ubidots
Phát triển ứng dụng Ubidots
Phát triển ứng dụng Ubidots

Cấu hình sự kiện Ubidots

Các bài đọc hiện tại mà chúng tôi đang gửi đến Ubidots là đầu vào khoảng cách. Để dịch các bài đọc này thành đầu ra mong muốn mà chúng ta muốn -đơn vị đếm- chúng ta nên tạo một sự kiện theo các bước sau:

  1. Bên trong thiết bị hiện tại "điều khiển chuyển động" tạo một biến mặc định mới được gọi là "hộp", biến này sẽ nhận được 1 mỗi khi một đơn vị mới được đếm.
  2. Chuyển đến Quản lý thiết bị -> Sự kiện và nhấp vào biểu tượng dấu cộng màu xanh lam ở góc trên bên phải của trang để thêm sự kiện mới.
  3. Định cấu hình sự kiện của bạn bắt đầu bằng "Nếu kích hoạt":
  • Chọn một biến: "khoảng cách"
  • Giá trị: giá trị (mặc định)
  • Nhỏ hơn hoặc bằng [khoảng cách dự kiến tối đa} giữa cảm biến và các hộp đi qua * ứng dụng của chúng tôi gọi là 500mm
  • Trong 0 phút
  • Cứu

4. Khi trình kích hoạt đã được định cấu hình theo thông số kỹ thuật của ứng dụng của bạn, hãy nhấp vào biểu tượng "dấu cộng" màu cam ở góc trên bên phải để thêm hành động có điều kiện.

5. Chọn “Đặt biến” làm hành động.

6. Tiếp theo, chọn "hộp" biến mặc định đã tạo trước đó và giá trị "1".

7. Lưu các thay đổi. Nếu sự kiện được thiết lập đúng cách, nó sẽ gửi "1" mỗi khi khoảng cách giữa cảm biến và thiết bị dài hơn ngưỡng được chỉ định, điều này cho thấy rằng không có vật thể nào ở gần - và sẽ đếm một đơn vị mới vừa đi qua.

Trong thẻ Thiết bị cụ thể của Feather, bạn sẽ thấy rằng biến "hộp" trong đó "1" được gửi bất kỳ khi nào cảm nhận được sự hiện diện của đơn vị.

Đặc biệt hữu ích cho băng tải công nghiệp và đơn vị đếm mẫu thử nghiệm này có thể được tùy chỉnh để phù hợp với các môi trường hoặc phần cứng khác nhau chỉ đơn giản là mã hóa hoặc phát triển ứng dụng của bạn.

8. Hình dung số lượng đơn vị được cảm nhận (hoặc số lần một đối tượng được phát hiện) Bây giờ, bằng cách sử dụng biến "hộp", chúng ta sẽ tạo một biến cửa sổ cuốn mới để tính tổng số lần đọc nhận được từ biến "hộp" trong một thư rác xác định (phút, giờ, ngày, tuần, v.v.). Để thực hiện sự phát triển này, hãy làm theo các bước đơn giản sau:

Gán các thông tin đăng nhập sau cho biến cửa sổ cuốn mới của bạn

Chọn một thiết bị: điều khiển chuyển động (hoặc tên của thiết bị bạn đang gửi dữ liệu của mình)

Chọn một biến: hộp

Tính toán: sum

Mỗi: "1" giờ (hoặc theo yêu cầu ứng dụng của bạn)

Bây giờ, hãy gán tên cho biến mới cho biết số hộp (hoặc chuyển động) được tính trong một giờ, giống như "hộp / giờ" hoặc "đơn vị / giờ.

Bước 6: Cấu hình trang tổng quan

Cấu hình bảng điều khiển
Cấu hình bảng điều khiển

Cuối cùng, tạo một bảng điều khiển để hiển thị số lượng đơn vị được cảm nhận.

Đi tới Quản lý thiết bị -> Trang tổng quan và thêm tiện ích con mới. Widget này sẽ hiển thị số lượng hộp được đếm ngày hôm nay được chia nhỏ theo giờ.

Gán các thông tin đăng nhập sau cho tiện ích con mới của bạn để trực quan hóa số lượng của bạn.

Bạn muốn xem dữ liệu của mình như thế nào ?: Biểu đồ

Chọn một loại tiện ích con: biểu đồ đường

Thêm thiết bị: điều khiển chuyển động

Thêm một biến: hộp / giờ

Kết thúc. Và với sự phát triển bảng điều khiển cuối cùng này - ứng dụng của bạn đã hoàn tất và bây giờ bạn có một hệ thống phát hiện chuyển động và hiện diện hiệu quả và hiệu quả. Đây là cái nhìn cuối cùng về kết quả của chúng tôi.

Đề xuất: