Mục lục:

IDC2018IOT GarbageCan-Online: 7 bước
IDC2018IOT GarbageCan-Online: 7 bước

Video: IDC2018IOT GarbageCan-Online: 7 bước

Video: IDC2018IOT GarbageCan-Online: 7 bước
Video: Học lập trình Arduino KHÔNG HỀ KHÓ - Bộ KIT học tập Arduino Uno R3 BLK 2024, Tháng bảy
Anonim
Image
Image
Các bộ phận bắt buộc
Các bộ phận bắt buộc

Giới thiệu

Ai cũng biết điều gì sẽ xảy ra khi chúng ta để thùng rác quá lâu mà không lấy ra. Chà, điều rõ ràng nhất là không còn chỗ cho thêm thùng rác, mà nó cũng bắt đầu bốc mùi, bốc mùi rất khó chịu.

Với dự án này, chúng tôi mong muốn giúp bạn giám sát các thùng rác xung quanh nhà / không gian làm việc / etc, vì vậy bạn luôn có thể biết khi nào chúng đầy và có thể hành động ngay lập tức bằng cách đổ rác ra ngoài.

Hệ thống sẽ cảnh báo bạn bằng thông báo qua điện thoại hoặc cảnh báo trên bảng điều khiển rằng bạn phải dọn sạch thùng rác. Hệ thống tính đến mức độ đầy của thùng rác, cũng như nhiệt độ và độ ẩm được đo bên trong thùng rác. Tất cả chúng ta đều quen thuộc với sự khẩn trương của việc dọn sạch các thùng rác trong những ngày nóng ẩm…

Những đặc điểm chính

  1. Bảng điều khiển giám sát:

    • Phần chính:

      • Mức độ đầy của mỗi thùng rác.
      • Nhiệt độ và độ ẩm của từng thùng rác.
    • Phần thống kê:

      • Thùng rác đầy đủ nhất.
      • Thùng rác nóng nhất.
  2. Hệ thống Cảnh báo & Thông báo:

    • Các sự kiện sau được hỗ trợ:

      • Thùng rác đã đầy.
      • Đã xảy ra lỗi cảm biến.
    • Cảnh báo đầy có tính đến mức độ đầy của thùng rác, cũng như mức nhiệt độ và độ ẩm của thùng rác.
    • Cảnh báo có thể được gửi qua thông báo điện thoại và cảnh báo trên bảng điều khiển.
    • Mỗi kênh cảnh báo có thể được bật và tắt thông qua bảng điều khiển.
  3. Khả năng mở rộng:

    • Sử dụng nút hiệu chỉnh, có thể điều chỉnh hệ thống cho các thùng rác khác nhau với dung tích khác nhau.
    • Có thể bỏ thêm nhiều thùng rác tương đối dễ dàng. Người ta có thể lắp ráp cùng một hệ thống trên một thùng rác mới, đặt ID thùng rác và hiệu chỉnh nó (nhấn một nút). Có nhiều hơn 3 thùng rác sẽ yêu cầu mở rộng Bảng điều khiển (tác vụ dễ thực hiện).

Chúng ta là ai?

Dự án này được tạo (với tình yêu và sự cống hiến!) Bởi Rom Cyncynatus và Daniel Alima - Sinh viên của IDC Herzliya như một dự án cuối cùng cho khóa học IoT của chúng tôi. Chúng tôi hy vọng bạn sẽ thấy công việc của chúng tôi hữu ích và thích sử dụng nó!

Bước 1: Các bộ phận bắt buộc

Để xây dựng hệ thống, bạn sẽ có các thành phần và bộ phận sau:

  1. Thùng rác (tốt nhất là có nắp): Cái này sẽ được dùng để… à.. bạn biết chúng ta sẽ làm gì với cái này không, hả?;)
  2. Breadboard: Để kết nối tất cả các thành phần khác nhau mà không cần sử dụng bất kỳ mối hàn nào.
  3. NodeMCU (ESP-8266): Phụ trách việc đọc các cảm biến và gửi thông tin lên đám mây.
  4. Cảm biến IR khoảng cách - Sharp 0A41SK: Cảm biến này sẽ đo lượng rác (mức độ đầy) bên trong lon.
  5. Cảm biến Nhiệt độ & Độ ẩm - DHT11: Cảm biến này sẽ đo nhiệt độ và độ ẩm bên trong thùng rác.
  6. Công tắc tạm thời: Sẽ được sử dụng để hiệu chỉnh cảm biến khoảng cách theo kích thước của thùng rác.
  7. Lá nhôm: Sẽ được sử dụng để tạo thành một máy dò tình trạng nắp - cho dù nó đang mở hay đóng.
  8. Dây nhảy: Nhận được nhiều, với độ dài và màu sắc khác nhau. Sẽ kết nối mọi thứ với nhau.
  9. Duct Tape: Chúng ta sẽ phải gắn các thứ vào đúng vị trí.
  10. Cáp Micro-USB: Để kết nối NodeMCU với máy tính của bạn để lập trình và sau này là nguồn điện.
  11. Nguồn điện USB (bộ sạc điện thoại thông minh): Sẽ cung cấp nguồn điện cho NodeMCU khi được lắp trên thùng rác.

Bước 2: Nối dây và lắp ráp

Đấu dây & Lắp ráp
Đấu dây & Lắp ráp
Hệ thống dây điện & lắp ráp
Hệ thống dây điện & lắp ráp
Hệ thống dây điện & lắp ráp
Hệ thống dây điện & lắp ráp

Đấu dây

Đặt NodeMCU trên breadboard để thuận tiện khi gắn nó vào thùng rác sau này và kết nối cáp USB với nó. Sau đó, hãy tham khảo hình ảnh sơ đồ đấu dây ở trên để kết nối các thành phần khác nhau với NodeMCU. Đảm bảo sử dụng dây dài cho các cảm biến và dây trạng thái để thuận tiện cho việc lắp đặt hệ thống và sử dụng thùng rác cùng với nó.

  • Cảm biến IR khoảng cách - Sharp 0A41SK:

    • Vin (Đỏ) Vin
    • GND (Đen) GND
    • Vout (Vàng) A0
  • Cảm biến nhiệt độ & độ ẩm - DHT11:

    • Vin (Đỏ) 3V3
    • GND (Đen) GND
    • DATA (Vàng) D4
  • Chuyển đổi tạm thời:

    • Pin1 D3
    • Pin2 GND
  • Trạng thái nắp (mở / đóng) dây:

    • Wire1 D2
    • Wire2 GND

cuộc họp

Việc lắp ráp hệ thống trên thùng rác khá đơn giản. Gắn Breadboard vào thùng rác, tốt nhất là để gần nắp. Sử dụng băng dính hoặc dây buộc cáp để cố định nó vào vị trí. Sau đó:

  1. Đặt cảm biến khoảng cách IR ở giữa nắp (từ phía bên trong!). Đảm bảo bảo mật nó đúng cách, nếu không bạn sẽ gặp phải các kết quả đọc sai!
  2. Đặt cảm biến nhiệt độ và độ ẩm ở đâu đó bên trong thùng rác. Bảo mật bằng băng dính.
  3. Dùng giấy nhôm đậy kín mặt bên của nắp và đầu của thùng rác. Đảm bảo tiếp xúc tốt khi đóng nắp. Điều này sẽ báo hiệu hệ thống rằng thùng rác đã được mở hoặc đóng. Sau đó, dán từng dây trạng thái của nắp vào một trong các lá nhôm và cố định bằng băng dính.

Bước 3: Thiết lập MQTT, Node-RED và IFTTT

Thiết lập MQTT, Node-RED và IFTTT
Thiết lập MQTT, Node-RED và IFTTT
Thiết lập MQTT, Node-RED và IFTTT
Thiết lập MQTT, Node-RED và IFTTT
Thiết lập MQTT, Node-RED và IFTTT
Thiết lập MQTT, Node-RED và IFTTT

Hầu hết logic của dự án thực sự được thực hiện trên đám mây. NodeMCU gửi dữ liệu đến máy chủ MQTT và Node-RED sử dụng dữ liệu đó và áp dụng logic của nó trên đó (thêm về kiến trúc phía trước). Cuối cùng, để truyền thông báo đẩy (cảnh báo) đến điện thoại thông minh của chúng tôi, chúng tôi đã sử dụng IFTTT.

Chúng tôi sẽ sử dụng các dịch vụ đám mây CloudMQTT và FRED làm máy chủ MQTT và Node-RED tương ứng, đồng thời chúng tôi sẽ sử dụng IFTTT cho các thông báo đẩy.

  1. Đăng ký CloudMQTT với gói miễn phí. Lưu ý thông tin đăng nhập của bạn vào máy chủ MQTT (tên người dùng và mật khẩu).
  2. Đăng ký IFTTT. Tạo một applet mới "Thông báo ứng dụng Webhooks IFTTT". Sử dụng "Thông báo trên điện thoại di động" làm tên sự kiện WebHookds. Tham khảo hình ảnh ở trên để biết chi tiết về hạt nitty. Lưu ý khóa API trình tạo của bạn.
  3. Tải ứng dụng IFTTT xuống điện thoại của bạn và đăng nhập bằng thông tin đăng nhập của bạn. Điều này sẽ cho phép bạn nhận thông báo đẩy.
  4. Đăng ký FRED với gói miễn phí.
  5. Khi bạn đã thiết lập và chạy phiên bản FRED, hãy nhập các luồng đính kèm vào nó (nút 3 Thanh Nhập từ khay nhớ tạm). Chỉ cần dán nội dung của mỗi tệp (widgest.json, alerts.json, Statistics.json) và nhập nó.
  6. Chỉnh sửa một trong các nút MQTT (một nút là đủ) để cập nhật thông tin đăng nhập CloudMQTT của bạn.
  7. Chỉnh sửa nút IFTTT để cập nhật khóa API trình tạo IFTTT của bạn.

Bước 4: Lập trình hiệu chỉnh dung lượng NodeMCU và Thùng rác

Khi chúng ta đã có mọi thứ, chúng ta cần lập trình NodeMCU với phần mềm thích hợp (bản phác thảo) để nó thực sự sử dụng tất cả những thứ được kết nối với nó và giao tiếp với internet.

  1. Tải xuống và cài đặt Arduino IDE từ đây.
  2. Cài đặt và thiết lập loại bảng NodeMCU như được giải thích trong phần đầu của hướng dẫn sau.
  3. Cài đặt các thư viện sau (Sketch Bao gồm Thư viện Quản lý Thư viện…):

    1. Thư viện MQTT Adafruit (bởi Adafruit)
    2. Thư viện cảm biến DHT (Theo Adafruit)
    3. SharpIR (bởi Giuseppe Masino)
    4. EEPROMAnything - giải thích ở đây.
  4. Mở tệp GarbageCanOnline.ino và cập nhật những thứ sau:

    1. Thông tin đăng nhập WiFi của bạn (WLAN_SSID, WLAN_PASS)
    2. Thông tin đăng nhập CloudMQTT của bạn (MQTT_USERNAME, MQTT_PASSWORD)
    3. Nếu đây là thùng rác thứ hai trở lên, hãy thay đổi ID thùng rác (GARBAGECAN_ID)
  5. Tải bản phác thảo cập nhật lên NodeMCU của bạn.
  6. Mở cửa sổ theo dõi nối tiếp (Ctrl + M) và đảm bảo rằng nó quản lý để xuất bản dữ liệu cảm biến lên CloudMQTT.
  7. Bây giờ, khi đã đóng nắp và thùng rác đã trống, hãy nhấn và giữ nút hiệu chỉnh để hiệu chỉnh dung tích thùng rác.
  8. Thùng rác đã được thiết lập xong. Bạn có thể ngắt kết nối nó khỏi máy tính và kết nối nó ở vị trí được chỉ định bằng nguồn điện USB.

Bước 5: Sử dụng Hệ thống

Sử dụng hệ thống
Sử dụng hệ thống
Sử dụng hệ thống
Sử dụng hệ thống
Sử dụng hệ thống
Sử dụng hệ thống

Nếu bạn đã đạt đến mức này, mọi thứ sẽ bắt đầu và hoạt động. Hãy để chúng tôi làm tổng quan nhanh về các khía cạnh sử dụng khác nhau của hệ thống.

Chúng tôi giả định rằng bạn chỉ có một thùng rác duy nhất được kết nối, nhưng bạn có thể dễ dàng thêm nhiều thùng rác sau này!

Đầu tiên, hãy chú ý đến bảng điều khiển chính. Bạn sẽ ở trong màn hình chính, nhìn thấy độ đầy của thùng rác, nhiệt độ và độ ẩm. Bạn có thể kiểm soát thông báo điện thoại và cảnh báo Trang tổng quan bằng cách sử dụng các công tắc ở bên trái.

Khi lượng rác bên trong thùng rác thay đổi, bạn sẽ thấy thước đo thay đổi tương ứng. Đây cũng là trường hợp của đồ thị nhiệt độ và độ ẩm.

Khi mức đầy đạt đến 85% -90% (ngưỡng chính xác phụ thuộc vào nhiệt độ và độ ẩm) hoặc xảy ra lỗi cảm biến, bạn sẽ nhận được thông báo qua (các) phương pháp bạn muốn. Bạn sẽ được thông báo mỗi giờ một lần cho mỗi thùng rác.

Trong chế độ xem Thống kê, bạn sẽ có thể xem thùng rác đầy đủ nhất hiện tại và thùng rác nóng nhất. Tiêu đề không hay ho, nếu chúng ta có thể nói…

Bước 6: Hiểu quy trình

Hiểu dòng chảy
Hiểu dòng chảy
Hiểu dòng chảy
Hiểu dòng chảy
Hiểu dòng chảy
Hiểu dòng chảy
Hiểu dòng chảy
Hiểu dòng chảy

Như bạn có thể nhận thấy bây giờ, hệ thống có rất nhiều "bộ phận chuyển động". Chúng tôi sẽ cố gắng làm rõ mọi thứ được kết nối với nhau như thế nào.

Đầu tiên, chúng tôi có thùng rác với NodeMCU và các cảm biến của nó. Chúng ta có thể có rất nhiều thứ này - chỉ là "bản sao" của nhau.

NodeMCU đo lường các cảm biến khác nhau được đặt trong thùng rác và xuất bản dữ liệu lên máy chủ MQTT (giao thức MQTT). Bạn có thể coi máy chủ MQTT như một nơi trao đổi thông tin lớn, mà nhiều thùng rác có thể báo cáo thông tin của họ.

Một thực thể khác kết nối với máy chủ MQTT là Node-RED. Node-RED lắng nghe các thông báo khác nhau đến từ (các) thùng rác mang dữ liệu cảm quan và áp dụng logic của nó trên đó. Nó hoạt động bằng cách tận dụng các "luồng" thông tin. Mỗi khi nhận được tin nhắn, dựa trên loại của nó (chủ đề MQTT), nó sẽ đi vào các chuỗi hoạt động cụ thể để kích hoạt các tính năng khác nhau của hệ thống (cập nhật trang tổng quan, gửi cảnh báo, v.v.) Sẽ rất đúng khi nói rằng Node-RED là "bộ não" của hệ thống. Nó nhận thức được mọi thứ xảy ra ở mọi nơi và có thể thực hiện các hành động phù hợp.

Bên trong Node-RED, chúng tôi đã xây dựng 3 luồng thông tin chính:

  1. Widget - Thông tin cảm biến được đưa vào Node-RED sau đó được hiển thị trên bảng điều khiển thông qua đồng hồ đo và đồ thị.
  2. Cảnh báo - Thông tin cảm biến được xử lý để kết luận xem có nên kích hoạt cảnh báo hay không (trên bảng điều khiển hoặc ứng dụng điện thoại thông minh). Mức độ đầy, với nhiệt độ và độ ẩm được tính đến để quyết định thông báo cho người dùng rằng thùng rác đã đầy. Ngoài ra, các lỗi cảm quan được báo cáo theo cùng một luồng.
  3. Thống kê - Thông tin cảm quan được tổng hợp để hiển thị đầy đủ và nóng nhất các thùng rác.

Để Node-RED gửi thông báo đẩy, nó kết nối với một dịch vụ gọi là IFTTT (bằng giao thức HTTP). Nó kích hoạt một sự kiện IFTTT nhất định với văn bản thông báo liên quan và IFTTT gửi thông báo đến điện thoại thông minh của chúng tôi (giao thức HTTP & XMPP).

Tham khảo các hình ảnh trên để hiểu rõ hơn (a) cấu trúc chung của hệ thống và (b) 3 luồng thông tin khác nhau bên trong Node-RED

Bước 7: Thách thức, hạn chế và kế hoạch cho tương lai…

Thách thức

Những thách thức chính trong dự án này chủ yếu là xử lý các dịch vụ MQTT và Node-RED. Lần đầu tiên chúng tôi sử dụng AdafruitIO, nhưng việc triển khai MQTT tùy chỉnh của nó không hoàn toàn tốt cho chúng tôi. Nó không thuận tiện khi làm việc với "nguồn cấp dữ liệu" của nó bên trong Node-RED. Do đó, cuối cùng chúng tôi đã chọn CloudMQTT, dựa trên máy chủ Mosquitto MQTT và tiêu chuẩn hơn nhiều. Sau đó, chúng tôi chuyển sang xử lý Node-RED, điều này khá thách thức, chủ yếu là vì Node-RED là một con quái vật. Ví dụ, theo quan điểm của chúng tôi, nó toàn diện và chuyên nghiệp hơn nhiều so với IFTTT. Chúng tôi đã phải điều chỉnh và học cách sử dụng phương pháp thiết kế dựa trên luồng để xây dựng các tính năng cần thiết của hệ thống. Hơn nữa, một trong những lợi thế lớn nhất của nó là hỗ trợ mã javascript, nhưng phải mất một thời gian để làm quen vì chúng tôi không phải là lập trình viên javascript. Bất chấp tất cả những điều đó, chúng tôi thực sự thích làm việc với công cụ cụ thể này và chúng tôi thấy nó rất thú vị và hữu ích.

Hạn chế

Về các hạn chế, điều đầu tiên sẽ là thực tế là chúng tôi chỉ sử dụng các dịch vụ miễn phí và chúng sẽ không cho phép mở rộng quy mô đầy đủ. Gói miễn phí của CloudMQTT sẽ không cho phép có nhiều hơn 5 kết nối song song, nghĩa là chúng ta chỉ có thể có 4 thùng rác và Node-RED. Gói miễn phí FRED Node-RED chỉ cho phép sử dụng liên tục 24 giờ, sau đó bạn phải đăng nhập thủ công và đặt lại bộ hẹn giờ. Tuy nhiên, những vấn đề này có thể dễ dàng giải quyết bằng cách chạy các dịch vụ này cục bộ hoặc trả thêm một chút để giải quyết các hạn chế. Hạn chế thứ hai là thực tế là khi một người thêm thùng rác thứ tư trở đi, anh ta phải chỉnh sửa thủ công luồng widget trong Node-RED để thêm các widget thích hợp của nó.

Kế hoạch cho tương lai

Chúng tôi đã có một số ý tưởng để nâng cao hơn nữa hệ thống của mình và mở rộng nó:

  1. Chuyển sang các dịch vụ đám mây không miễn phí. (một ngày làm việc).
  2. Thêm một máy nén rác vào thùng rác, do đó giảm tần suất đổ rác. (4 tháng làm việc)
  3. Làm việc với các thùng rác đô thị và công nghiệp để nâng cao hiệu quả của các xe tải thành phố xử lý thùng rác trong thành phố. Điều này có nghĩa là phải cải thiện đáng kể hệ thống thông báo và bảng điều khiển để người lái xe tải có thể lập kế hoạch tuyến đường của họ tốt hơn nhiều khi xử lý thùng rác. (6 tháng làm việc).
  4. Thêm khả năng tái chế cho thùng rác, chẳng hạn như khả năng đổ các dung dịch sinh học đặc biệt vào thùng rác và giúp tái chế nó khi nó vẫn còn bên trong thùng rác. Điều này có thể được sử dụng trong nước, chẳng hạn như để sản xuất phân trộn cho các khu vườn, nhưng rõ ràng cũng có thể được sử dụng trên các lon công nghiệp. (6 tháng làm việc).

Đề xuất: