Mục lục:

Trình thông báo: 17 bước
Trình thông báo: 17 bước

Video: Trình thông báo: 17 bước

Video: Trình thông báo: 17 bước
Video: Giải thể công ty qua mạng bước một - thông báo quyết định giải thể 2022 (có lời). 2024, Tháng mười một
Anonim
Người thông báo
Người thông báo

Ví dụ, thiết bị có thể được kết nối với hệ thống IFTTT và phản ứng khi có thư mới xuất hiện. Tại app.remoteme.org, chúng tôi sẽ tạo một liên kết sau khi gọi byte nào sẽ được gửi đến Arduino và Arduino sẽ hiển thị một số hiệu ứng ánh sáng và phát một số mp3 từ SDcard

Bước 1: Những gì cần thiết

Những gì là cần thiết
Những gì là cần thiết
Những gì là cần thiết
Những gì là cần thiết
  • NodeMCU, WemOS hoặc thứ gì đó tương tự
  • Hai vòng LED với điốt WS2812B (Tôi đã sử dụng vòng LED thứ 16)
  • DFRobotDFPlayerMini - đây là máy nghe nhạc mp3. Nó phát mp3 từ SDcard và giao tiếp với Arduino bằng RX / TX
  • Loa
  • Thẻ SD
  • Bộ chuyển đổi logic -Tôi đã sử dụng bộ chuyển đổi này, máy nghe nhạc mp3 sử dụng 5V và Arduino 3.3, đó là lý do tại sao chúng tôi cần bộ chuyển đổi này
  • Kiến thức và kỹ năng tự chế tạo PCB đơn giản

Tháp:

  • bìa cứng - hai độ dày khác nhau
  • Giấy truy tìm
  • giấy nhôm

Bước 2: Tòa nhà Tháp

Tòa nhà tháp
Tòa nhà tháp
Tòa nhà tháp
Tòa nhà tháp
Tòa nhà tháp
Tòa nhà tháp
Tòa nhà tháp
Tòa nhà tháp

Phía trên mặt bằng của tòa tháp ở chế độ xem bên (cuộc phiêu lưu của tôi với bản vẽ kỹ thuật đã kết thúc ở trường tiểu học), tất cả các kích thước đều tính bằng milimét.

Nguyên lý hoạt động

  1. vòng đèn LED chiếu sáng
  2. Giấy truy tìm
  3. Hình nón cắt ngắn, làm bằng bìa cứng và được phủ bằng lá nhôm, vì vậy nó phản chiếu ánh sáng từ các vòng đèn led, trong hình 3 ‘= lưới cắt
  4. ống carton - giữ các tháp thẳng đứng, bên trong ống là dây cáp cho đèn led
  5. Chiều cao tùy thuộc vào bạn, tôi có 85mm
  6. Chân đế bên trong tất cả các bộ phận điện tử

Tất cả các yếu tố nằm ngang nên được làm bằng bìa cứng dày hơn.

Bước 3: Sơ đồ đấu dây

Sơ đồ hệ thống dây điện
Sơ đồ hệ thống dây điện
Sơ đồ hệ thống dây điện
Sơ đồ hệ thống dây điện
Sơ đồ hệ thống dây điện
Sơ đồ hệ thống dây điện
Sơ đồ hệ thống dây điện
Sơ đồ hệ thống dây điện

Máy nghe nhạc mp3 được cung cấp điện áp 5V và giao tiếp với Arduino qua TX / RX, cần có bộ chuyển đổi logic vì bản thân Arduino hoạt động trên điện áp 3.3V. Việc điều khiển các vòng cũng được kết nối với Arduino (D5, D6) thông qua bộ chuyển đổi logic.

Tại kho lưu trữ, bạn sẽ tìm thấy các tệp đại bàng với các gói PCB

Tôi khuyên bạn không nên hàn Arduino vĩnh viễn và máy nghe nhạc mp3 chỉ để sử dụng ghim vàng nữ

Bước 4: Nguyên lý hoạt động

Arduino của chúng tôi kết nối với hệ thống app.remoteme.org bằng WebSockets (có các thư viện sẵn sàng) thông qua kết nối này, các thông báo 5 byte được gửi:

  • byte đầu tiên của hiệu ứng ánh sáng cho vòng LED phía trên
  • hiệu ứng ánh sáng byte thứ hai cho vòng LED dưới cùng
  • số lượng tệp mp3 sẽ được phát
  • số giây hiệu ứng ánh sáng và mp3 sẽ được phát trong bao lâu
  • liệu mp3 nên được phát một lần hay lặp lại

mã nguồn

Toàn bộ mã nguồn Bạn có thể tìm thấy ở đây

trong các tệp SingleRing.cpp và SingleRing.h có một lớp để kiểm soát hiệu ứng của các vòng LED. Tôi khuyên bạn nên bắt đầu bằng cách xem hàm setMode (int m):

void SingleRing:: setMode (int m) {switch (m) {case 0: setConfiguration (0, 0, 50, 0, 5, 1); break; // off = 0 case 1: setConfiguration (6, 0, 50, 0, 0, 20); break; // solid standard green case 2: setConfiguration (6, 0, 0, 50, 0, 20); break; // solid standard blue case 3: setConfiguration (6, 50, 0, 0, 0, 20); break; // solid standard red case 4: setConfiguration (6, 50, 10, 0, 0, 20); break; // trường hợp màu cam chuẩn rắn 5: setConfiguration (1, 0, 100, 0, 5, 2); break; // trường hợp màu xanh lá cây theo chiều kim đồng hồ cảnh sát 6: setConfiguration (1, 0, 100, 0, 5, -2); break; // Police revert green case 7: setConfiguration (1, 0, 0, 100, 5, 2); break; // trường hợp màu xanh lam theo chiều kim đồng hồ cảnh sát 8: setConfiguration (1, 0, 0, 100, 5, -2); break; // Police revert blue case 9: setConfiguration (1, 100, 0, 0, 5, 2); break; // trường hợp đỏ chuẩn cảnh sát 10: setConfiguration (1, 100, 0, 0, 5, -2); break; // cảnh sát hoàn nguyên trường hợp màu đỏ 11: setConfiguration (1, 100, 20, 0, 5, 2); break; // trường hợp màu cam chuẩn cảnh sát 12: setConfiguration (1, 100, 20, 0, 5, -2); break; // cảnh sát hoàn nguyên trường hợp màu cam 13: setConfiguration (2, 0, 0, 50, 8, 10); break; // gạch chéo chữ hoa tiêu chuẩn màu xanh 14: setConfiguration (2, 0, 0, 50, 8, -10); break; // hoàn nguyên chéo trường hợp màu xanh lam 15: setConfiguration (5, 0, 50, 0, 0, 20); break; // nhấp nháy chữ hoa xanh tiêu chuẩn 16: setConfiguration (5, 0, 50, 0, 0, -20); break; // nhấp nháy odwyrtka green case 17: setConfiguration (5, 0, 0, 50, 0, 20); break; // nhấp nháy chữ hoa xanh tiêu chuẩn 18: setConfiguration (5, 0, 0, 50, 0, -20); break; // nhấp nháy hoàn nguyên màu xanh trường hợp 19: setConfiguration (5, 50, 0, 0, 0, 20); break; // nhấp nháy chữ hoa đỏ chuẩn 20: setConfiguration (5, 50, 0, 0, 0, -20); break; // nhấp nháy hoàn nguyên trường hợp màu đỏ 21: setConfiguration (5, 50, 10, 0, 0, 20); break; // nhấp nháy trường hợp màu cam tiêu chuẩn 22: setConfiguration (5, 50, 10, 0, 0, -20); break; // nhấp nháy hoàn nguyên màu cam mặc định: setConfiguration (0, 0, 50, 0, 5, 1); break; // tắt = 0}}

tùy thuộc vào thông số cho trước, vòng sẽ hiển thị hiệu ứng. Bạn có thể thêm hiệu ứng của riêng mình bằng cách gọi hàm setConfiguration với các thông số mới (thay đổi màu sắc, tốc độ hiển thị) bằng cách thêm chế độ mới hoặc thêm hiệu ứng hoàn toàn mới - hoặc cho tôi biết trong phần nhận xét nếu tôi thích, tôi sẽ thêm hiệu ứng mới

arduino.ino:

#include "Arduino.h" #include "SoftwareSerial.h" #include "DFRobotDFPlayerMini.h"

#bao gồm

#include #include #include "SingleRing.h"

#bao gồm

#include #include

#bao gồm

#define WIFI_NAME ""

#define WIFI_PASSWORD "" #define DEVICE_ID 205 #define DEVICE_NAME "còi báo động" #define TOKEN ""

#define DIODES_COUNT 16

SingleRing đầu = SingleRing (DIODES_COUNT, D5);

SingleRing bottom = SingleRing (DIODES_COUNT, D6);

SoftwareSerial mySoftwareSerial (D4, D3); // RX, TX

DFRobotDFPlayerMini myDFPlayer; RemoteMe & remoteMe = RemoteMe:: getInstance (TOKEN, DEVICE_ID);

ESP8266WiFiMulti WiFiMulti;

void setup () {mySoftwareSerial.begin (9600); Serial.begin (115200);

if (! myDFPlayer.begin (mySoftwareSerial)) {// Sử dụng softwareSerial để giao tiếp với mp3.

Serial.println (F ("Không thể bắt đầu:")); Serial.println (F ("1. Vui lòng kiểm tra lại kết nối!")); Serial.println (F ("2. Vui lòng lắp thẻ SD!")); while (đúng); } Serial.println (F ("DFPlayer Mini online."));

myDFPlayer.setTimeOut (500); // Đặt thời gian chờ thông báo nối tiếp 500ms

myDFPlayer.volume (30);

myDFPlayer. EQ (DFPLAYER_EQ_NORMAL);

myDFPlayer.outputDevice (DFPLAYER_DEVICE_SD); WiFiMulti.addAP (WIFI_NAME, WIFI_PASSWORD); while (WiFiMulti.run ()! = WL_CONNECTED) {delay (100); }

remoteMe.setUserMessageListener (onUserMessage);

remoteMe.setupTwoWayCommunication ();

remoteMe.sendRegisterDeviceMessage (DEVICE_NAME);

top.setup ();

bottom.setup (); top.clear (); bottom.clear (); }

boolean turnOff = true;

không dấu dài turnOffMillis = 0;

void onUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t * data) {

uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (data, pos); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (data, pos); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (data, pos); uint8_t time = RemoteMeMessagesUtils:: getUint8 (data, pos); uint8_t mode = RemoteMeMessagesUtils:: getUint8 (data, pos);

bottom.setMode (Chế độ đáy);

top.setMode (topMode); if (mode == 1) {myDFPlayer.loop (trackNumber); } else {myDFPlayer.play (trackNumber); } turnOff = false; turnOffMillis = millis () + 1000 * thời gian; }

void loop ()

{remoteMe.loop (); top.loop (); bottom.loop (); if (turnOffMillis

}

giải trình:

#define WIFI_NAME "" #define WIFI_PASSWORD "" #define DEVICE_ID 205 #define DEVICE_NAME "thông báo" #define TOKEN ""

Chúng tôi cần cung cấp dữ liệu ở trên, hướng dẫn chi tiết tại đây tại liên kết. Tôi cũng đã chỉ ra cách đăng ký trong remoteme.org và tạo mã thông báo, void onUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t * data) {uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (data, pos); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (data, pos); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (data, pos); uint8_t time = RemoteMeMessagesUtils:: getUint8 (data, pos); uint8_t mode = RemoteMeMessagesUtils:: getUint8 (data, pos);

bottom.setMode (Chế độ đáy);

top.setMode (topMode); if (mode == 1) {myDFPlayer.loop (trackNumber); } else {myDFPlayer.play (trackNumber); } turnOff = false; turnOffMillis = millis () + 1000 * thời gian; }

Chức năng này sẽ được gọi khi thông báo đến Arduino và hiển thị thông báo. Mã rõ ràng đến mức nó mô tả chính nó. Em tham khảo tài liệu chi tiết các lớp tại đây và tại đây

void loop () {remoteMe.loop (); top.loop (); bottom.loop (); if (turnOffMillis <millis ()) {

if (! turnOff) {

top.clear ();

bottom.clear (); myDFPlayer.stop (); turnOff = true; }}

Trong vòng lặp, chúng tôi gọi các chức năng vòng lặp của các đối tượng, và nếu thời gian hiển thị thông báo đã trôi qua, chúng tôi sẽ tắt điốt và âm thanh.

Bước 5: Trình phát Mp3

Máy nghe nhạc mp3
Máy nghe nhạc mp3

Nó giao tiếp với Arduino qua TX / RX - Thông tin chi tiết về chính trình phát tại đây và thư viện tại đây

Chúng tôi tải các tệp mp3 lên thẻ SD. Các tệp trên thẻ được sắp xếp theo thứ tự bảng chữ cái và sau đó gọi:

myDFPlayer.play (5);

Chúng tôi phát tệp thứ năm từ thẻ SD từ thư mục gốc. Đó là lý do tại sao tốt nhất là cung cấp các tệp trên thẻ SD có tiền tố 01, 02, v.v. Trong trường hợp của tôi, nó trông giống như màn hình in ở trên

Để tạo lệnh thoại Bạn có thể sử dụng trang này.

Bước 6: Tải chương trình lên Arduino

Tải chương trình lên Arduino
Tải chương trình lên Arduino
Tải chương trình lên Arduino
Tải chương trình lên Arduino

Trước khi tải bản phác thảo lên Arduino, bạn phải tải xuống các thư viện cần thiết tại đây, bạn sẽ tìm thấy hướng dẫn chi tiết

ngoài ra, chúng ta cần cài đặt thư viện DFRobotDFPlayerMini và Adafruit_NeoPixel

Bước 7: Kiểm soát

Điều khiển
Điều khiển
Điều khiển
Điều khiển

Chúng tôi gửi tới Arduino của chúng tôi năm byte

  • byte đầu tiên của hiệu ứng ánh sáng cho vòng LED phía trên
  • hiệu ứng ánh sáng byte thứ hai cho vòng LED dưới cùng
  • số lượng tệp mp3 sẽ được phát
  • số giây hiệu ứng ánh sáng và mp3 sẽ được phát trong bao lâu
  • liệu mp3 nên được phát một lần hay trong một vòng lặp (1 nếu nó nên được phát trong một vòng lặp)

Bằng cách gửi các byte

07 0F 01 05 01

Vòng trên cùng sẽ hiển thị đèn cảnh sát (chế độ 6) màu xanh lá cây nhấp nháy dưới cùng (chế độ 15) (kiểm tra chức năng setMode tại singleRing.cpp và nhận xét bên cạnh nó). Dạng tệp đầu tiên thẻ SD sẽ được phát trong 5 giây. Và tệp sẽ được phát trong vòng lặp (kiểm tra chức năng onUserMessage tại arduino.ino)

Hãy gửi những byte này. Nhìn vào màn hình phía trên và nhấp vào các biểu tượng theo thứ tự được viết bởi 1, 2, 3. Cửa sổ xuất hiện

Sau đó nhìn vào màn hình thứ hai - và điền vào cửa sổ như ở màn hình thứ hai

Cửa sổ xuất hiện được sử dụng để gửi tin nhắn đến thiết bị. Trong trường 1, chọn thiết bị người gửi - vì chúng tôi chỉ có một thiết bị nên chúng tôi chọn thiết bị đó (đây là trường bắt buộc và không quan trọng nó là cùng một thiết bị mà chúng tôi gửi tin nhắn) Trong trường 2, chúng tôi cho byte gửi (màu đỏ giá trị chúng ta đã nhập vào 2 sẽ được biểu thị dưới dạng chuỗi) sau đó nhấp vào nút Gửi.

Sau khi gửi tin nhắn, trình thông báo của chúng tôi sẽ phản ứng bằng cách hiển thị các hiệu ứng ánh sáng thích hợp và phát mp3 đã chọn. Tôi khuyến khích bạn thử các hiệu ứng khác nhau bằng cách cho hai byte đầu tiên của một số từ 0 đến 22 (xem mô tả trong hàm setMode).

Bước 8: Gửi tin nhắn bằng URL

Gửi tin nhắn bằng URL
Gửi tin nhắn bằng URL
Gửi tin nhắn bằng URL
Gửi tin nhắn bằng URL
Gửi tin nhắn bằng URL
Gửi tin nhắn bằng URL
Gửi tin nhắn bằng URL
Gửi tin nhắn bằng URL

Nếu chúng ta muốn hiển thị thông báo từ một ứng dụng bên ngoài, ví dụ với IFTTT, chúng ta cần có một URL sẽ thực hiện chính xác những điều tương tự như chúng ta đã làm trong cửa sổ ở bước trước. remoteme.org cung cấp REST APi. Truy cập nó bằng cách nhấp vào tab swagger ở bên trái (tab cuối cùng). Một trang sẽ được hiển thị, trên trang này chúng ta cũng có thể thử các URL của mình.

Tại màn hình đầu tiên Bạn có chức năng Bạn cần mở rộng, sau đó điền dữ liệu như ở màn hình thứ hai.

điền vào dữ liệu như trong ảnh chụp màn hình ở trên. Sau khi nhấp vào thực thi, chúng tôi sẽ gửi một tin nhắn

070F010501

Người nhận là thiết bị có id 205, thiết bị tương tự cũng là người gửi. MessageId với cài đặt “No_RENEVAL” không liên quan. Và sau đó nhấp vào Execute. Notificator sẽ phản ứng theo cách tương tự như khi gửi tin nhắn từ ứng dụng. Sau khi gọi REST, bên dưới là URL đã được gọi - hãy nhìn vào màn hình thứ ba. Và sao chép và dán vào URL của trình duyệt được đánh dấu bằng đường viền màu xanh lá cây. Ở màn hình thứ tư, trình duyệt chrome của tôi sau khi dán URL

Trong trường hợp của tôi, URL là:

app.remoteme.org/api/*/rest/v1/message/sendUserMessageHexString/205/1/NO_RENEWAL/1/070F010501/

Bước 9: URL bất kỳ để gửi tin nhắn

URL không giống nhau để gửi tin nhắn
URL không giống nhau để gửi tin nhắn

Ở bước trước, bạn có một URL sẽ gửi dữ liệu đến thiết bị của bạn. Thật không may, sau khi đăng xuất khỏi app.remoteme.org, nó sẽ ngừng hoạt động. Điều này là do chúng tôi đã không cung cấp mã thông báo xác thực và chúng tôi không còn đăng nhập nữa. Hãy lấy mã thông báo của chúng tôi (hoặc tạo một mã mới) và dán vào URL thay vì dấu sao.

Nhìn vào màn hình và thay thế * trong URL bằng mã thông báo của bạn

trong trường hợp của tôi mã thông báo là:

~ 267_ZxoWtJ) 0ph & 2c

vì vậy URL cuối cùng của tôi trông giống như:

app.remoteme.org/api/~267_ZxoWtJ)0ph&2c/rest/v1/message/sendUserMessageHexString/205/1/NO_RENEWAL/1/070F010501/

Bây giờ chúng tôi có thể gọi nó ngay cả khi chúng tôi không đăng nhập. Và khi nó được gọi, một tin nhắn sẽ được gửi đến thiết bị của chúng tôi 205

Bước 10: Tích hợp với IFTTT 1/7

Tích hợp với IFTTT 1/7
Tích hợp với IFTTT 1/7

Url được tạo ở bước trên phù hợp để các ứng dụng bên ngoài thực thi. Cách sử dụng nó, tôi sẽ trình bày trên IFTTT. Tôi sẽ định cấu hình nó để trình thông báo bật khi có email đến địa chỉ email (tài khoản Gmail).

Đăng nhập vào IFTTT, sau đó chuyển đến tab My Applet rồi đến “New Applet” - màn hình đầu tiên

Bước 11: Tích hợp với IFTTT 2/7

Tích hợp với IFTTT 2/7
Tích hợp với IFTTT 2/7

Tiếp theo, nhấp vào “+ cái này”

Bước 12: Tích hợp với IFTTT 3/7

Tích hợp với IFTTT 3/7
Tích hợp với IFTTT 3/7

Sau đó, trong trường “Dịch vụ tìm kiếm”, hãy viết “Gmail”

Sau đó, "email mới trong hộp thư đến" (Có thể cần một số cấu hình).

Bước 13: Tích hợp với IFTTT 4/7

Tích hợp với IFTTT 4/7
Tích hợp với IFTTT 4/7

bây giờ chúng tôi nhấp vào “+ cái đó”

Bước 14: Tích hợp với IFTTT 5/7

Tích hợp với IFTTT 5/7
Tích hợp với IFTTT 5/7

tìm “Webhooks” và nhấp vào nó

Bước 15: Tích hợp với IFTTT 6/7

Tích hợp với IFTTT 6/7
Tích hợp với IFTTT 6/7

sau đó "Thực hiện một yêu cầu web"

Bước 16: Tích hợp với IFTTT 7/7

Tích hợp với IFTTT 7/7
Tích hợp với IFTTT 7/7

chúng tôi hoàn thành URL của url của chúng tôi với mã thông báo. Nhập nội dung vào ứng dụng / json và nhấp vào “tạo hành động” và Hoàn tất. Bây giờ chúng ta có applet của mình:

Bước 17: Tóm tắt

Trong hướng dẫn này, tôi đã chỉ ra cách gửi các thông điệp Arduino của chúng tôi từ các hệ thống bên ngoài. Chúng tôi cũng tích hợp một số hệ thống khác sau đó IFTTT theo cách tương tự. Nó không nhất thiết phải là “công cụ thông báo” mà tôi muốn chỉ ra trong ví dụ này về cách gửi tin nhắn từ các hệ thống bên ngoài tới Arduino của chúng tôi.

sourcecodesFanPage tại Facebook

Chúc mừng, Maciek

Đề xuất: