Mục lục:

Thông báo sự kiện thời gian thực sử dụng NodeMCU (Arduino), Google Firebase và Laravel: 4 bước (có hình ảnh)
Thông báo sự kiện thời gian thực sử dụng NodeMCU (Arduino), Google Firebase và Laravel: 4 bước (có hình ảnh)

Video: Thông báo sự kiện thời gian thực sử dụng NodeMCU (Arduino), Google Firebase và Laravel: 4 bước (có hình ảnh)

Video: Thông báo sự kiện thời gian thực sử dụng NodeMCU (Arduino), Google Firebase và Laravel: 4 bước (có hình ảnh)
Video: ESP8266 - ESP32 FIREBASE - FIREBASE REALTIME - FIREBASE CLOUD 2024, Tháng sáu
Anonim
Image
Image
Thông báo sự kiện thời gian thực sử dụng NodeMCU (Arduino), Google Firebase và Laravel
Thông báo sự kiện thời gian thực sử dụng NodeMCU (Arduino), Google Firebase và Laravel

Bạn đã bao giờ muốn được thông báo khi có một hành động được thực hiện trên trang web của bạn nhưng email không phù hợp? Bạn có muốn nghe một âm thanh hoặc một tiếng chuông mỗi khi bán hàng không? Hay bạn cần sự quan tâm ngay lập tức vì trường hợp khẩn cấp ở nhà?

Thiết bị này có thể cảnh báo cho bạn theo thời gian thực về bất kỳ thứ gì bạn thích.

Bước 1: Lên dây mạch

Lên dây mạch
Lên dây mạch
Lên dây mạch
Lên dây mạch

Thiết bị tôi đã chế tạo bao gồm một bảng NodeMCU với một bộ rung để cảnh báo cho tôi về doanh số bán hàng được thực hiện trên một trang web. Bộ vi điều khiển được lập trình bằng phần mềm Arduino và phần kích hoạt có thể là bất kỳ ứng dụng web, iOS hoặc Android nào. Tôi đã tạo hai ứng dụng web đơn giản, một trong Laravel và một trong HTML thuần túy và JavaScript chẳng hạn.

Vì bo mạch NodeMCU có thể hoạt động an toàn cho đến khi dòng điện khoảng 12mA trên các chân cắm, bộ rung được kết nối thông qua một bóng bán dẫn NPN. Tôi đã sử dụng 2N2222 vì tôi có nhiều trong số chúng đặt xung quanh nhưng tôi chắc chắn rằng nguyên tắc sẽ giống với bất kỳ bóng bán dẫn NPN nào khác.

Để đấu dây cho mạch, kết nối bộ thu của bóng bán dẫn với chân Vin trên bảng. Bộ rung hoạt động ở 5V và vì chúng tôi cấp nguồn cho thiết bị từ USB, chân này sẽ cung cấp cho chúng tôi điện áp trước bộ điều chỉnh 3,3V trên bo mạch.

Tiếp theo, kết nối cực dương của bộ rung trên bộ phát của bóng bán dẫn và chân âm của bộ rung với bất kỳ chân nối đất nào trên bảng. Tôi đã sử dụng chân 2, nhưng bạn cũng có thể kết nối nó ở chân 9, 25 hoặc 29.

Đế của bóng bán dẫn được kết nối với chân D2 tương quan với GPIO 4 trên phần mềm Arduino. Với thiết lập này, bóng bán dẫn sẽ hoạt động hiệu quả như một công tắc bật còi vào mỗi sự kiện. Thay vì còi, bạn có thể kết nối rơ le theo cách tương tự để có thể điều khiển bất kỳ thiết bị điện lưới nào như bóng đèn, máy móc hoặc còi báo động nếu bạn đang tạo một thiết bị báo động nào đó.

Bước 2: Chuẩn bị ứng dụng web

Chuẩn bị ứng dụng web
Chuẩn bị ứng dụng web
Chuẩn bị ứng dụng web
Chuẩn bị ứng dụng web
Chuẩn bị ứng dụng web
Chuẩn bị ứng dụng web

Đối với phần kích hoạt và thời gian thực của thiết bị, chúng tôi sẽ sử dụng Cơ sở dữ liệu thời gian thực Firebase của Google. Đây là cơ sở dữ liệu đám mây NoSQL tuyệt vời do Google tạo ra, cung cấp đồng bộ hóa dữ liệu theo thời gian thực giữa từng nền tảng mà nó đang được sử dụng.

Đầu tiên, hãy tạo dự án với tên bạn chọn. Sau khi được tạo, hãy tạo một nút duy nhất được gọi là “count” và bắt đầu nó với giá trị nếu 0. Đây sẽ là số lượng bắt đầu mà chúng tôi muốn theo dõi trong tương lai.

Ứng dụng Laravel sử dụng gói “firebase-php” từ Kreait và nó được liên kết bên dưới. Cài đặt gói bằng cách chạy “trình soạn nhạc yêu cầu kreait / firebase-php”. Sau khi cài đặt xong, chúng ta cần tạo bộ điều khiển nơi hành động sẽ xảy ra. Tôi đặt tên cho phương pháp là "cập nhật" và tôi đã kết nối nó trong các tuyến trên một hành động ĐĂNG.

Để truy xuất phiên bản Firebase, bạn cần có tệp json mà bạn cần tải xuống từ bảng điều khiển Firebase của mình. Đặt tệp này vào thư mục gốc của dự án Laravel của bạn và đặt tên là firebase.json. Khi truy xuất phiên bản firebase, chúng tôi cần cung cấp đường dẫn đến tệp này bằng phương thức withCredentials.

Sau khi chúng tôi có phiên bản firebase, chúng tôi cần lấy tham chiếu đến cơ sở dữ liệu và đến nút mà chúng tôi đã tạo trước đó. Trên mỗi hành động, chúng tôi sẽ nhận được giá trị hiện tại của nút, tăng nó lên một và lưu nếu quay lại cơ sở dữ liệu. Điều này sẽ theo dõi các sự kiện của chúng tôi mà chúng tôi cần thông báo.

Điều này cũng có thể đạt được với HTML và JavaScript thuần túy, sử dụng thư viện firebase được cung cấp. Với nó, trước tiên, chúng tôi cần cung cấp mảng cấu hình với các cài đặt thích hợp từ bảng điều khiển Firebase và khởi chạy ứng dụng. Sau khi khởi tạo, chúng tôi nhận được một tham chiếu đến nút nơi chúng tôi lưu trữ số lượng sự kiện và đính kèm một trình lắng nghe để truy xuất bất kỳ thay đổi giá trị nào.

Ngoài ra, thay vì gửi biểu mẫu như trong ví dụ Laravel, giờ đây chúng ta có một hàm JavaScript được gọi khi nhấp vào nút, cập nhật số lượng và ghi giá trị đã cập nhật trở lại cơ sở dữ liệu.

Bước 3: Lập trình NodeMCU Board

Lập trình bảng NodeMCU
Lập trình bảng NodeMCU
Lập trình bảng NodeMCU
Lập trình bảng NodeMCU
Lập trình bảng NodeMCU
Lập trình bảng NodeMCU

Để lập trình NodeMCU, tôi đã sử dụng phần mềm Arduino và sau khi cài đặt bo mạch vào đó, tôi đảm bảo chọn phiên bản và cổng phù hợp để có thể tải phần mềm lên. Của tôi là phiên bản 1.0 vì vậy hãy kiểm tra kỹ với hội đồng quản trị của bạn trước khi tiếp tục.

Phần đầu tiên của mã Arduino, thiết lập tất cả các định nghĩa cần thiết mà bạn sẽ cần điều chỉnh trên thiết bị của mình. Cài đặt đầu tiên như vậy là ssid của WiFi và mật khẩu của nó, sau đó chúng ta cần thiết lập url firebase và bí mật db firebase. Thật không may, đây không phải là cách được khuyến nghị để kết nối với cơ sở dữ liệu nhưng hiện tại nó là cách duy nhất mà thư viện hỗ trợ. Bạn có thể tìm thấy bí mật này trong menu Cài đặt dự án, tài khoản dịch vụ trong bảng điều khiển firebase.

Định nghĩa tiếp theo là đường dẫn mà chúng tôi sẽ kiểm tra các bản cập nhật và id thiết bị. ID thiết bị là cần thiết, vì vậy trong trường hợp chúng tôi có nhiều thiết bị thông báo về các sự kiện giống nhau, chúng tôi cần biết thiết bị nào đã thông báo cho chúng tôi về sự kiện đó và lưu hồ sơ về điều đó. Cuối cùng, chúng tôi cần thiết lập chân mà chúng tôi đã kết nối bộ rung và đây là D2 trong trường hợp của chúng tôi.

Chức năng thiết lập xác định chân led tích hợp và chân D2 làm đầu ra, bắt đầu giao tiếp nối tiếp để biết điều gì đang xảy ra và kết nối với mạng WiFi được chỉ định. Khi kết nối được thiết lập, nó sẽ bắt đầu giao tiếp với Firebase và nhận giá trị cuối cùng mà chúng tôi đã báo cáo. Sau đó, nó bắt đầu lắng nghe các thay đổi trên đường dẫn được chỉ định.

Trong vòng lặp chính, có một lệnh gọi đến chức năng nhấp nháy làm nhấp nháy đèn LED tích hợp trong 500 mili giây để chúng tôi có thể biết rằng thiết bị đang hoạt động. Khi một thay đổi được phát hiện và có sẵn dữ liệu mà chúng tôi có thể đọc bằng chức năng có sẵn, giá trị mới của nút đang được đọc, sự khác biệt được tính toán vì có thể có nhiều sự kiện trong thời gian chờ đợi và một tiếng bíp được tạo ra cho mỗi lần của sự khác biệt.

Ví dụ: nếu sự khác biệt giữa giá trị được báo cáo cuối cùng và giá trị mới là 4, 4 tiếng bíp sẽ được tạo ra để cho bạn biết rằng 4 giao dịch mua mới đã được thực hiện. Chức năng tiếng bíp sử dụng chức năng âm báo có sẵn để phát một tần số xác định thông qua bộ rung trong một khoảng thời gian nhất định.

Sau khi phát ra tiếng bíp, giá trị mới được cập nhật cho thiết bị được chỉ định và quá trình phát trực tuyến được khởi động lại lần nữa. Hiện tại có một vấn đề mở trên thư viện arduino firebase đó là quá trình phát trực tuyến không tự động tiếp tục sau khi chúng tôi lưu một giá trị theo cách thủ công, vì vậy chúng tôi cần khởi động lại nó.

Bước 4: Tận hưởng thiết bị của bạn

Tận hưởng thiết bị của bạn!
Tận hưởng thiết bị của bạn!

Toàn bộ mã tôi đã sử dụng có sẵn trên tài khoản GitHub của tôi được liên kết bên dưới cùng với liên kết đến sơ đồ của dự án.

Mã nguồn

Sơ đồ

Mã có thể dễ dàng được sử dụng để hoạt động cho nhiều tình huống và sự kiện khác nhau và tôi chắc chắn rằng bạn sẽ rất vui khi chơi với nó.

Đối với tôi, đây là một công trình thực sự thú vị và tôi đã cố gắng học hỏi được khá nhiều điều về nó và vì điều đó, tôi thực sự hạnh phúc. Tôi hy vọng rằng nó có thể giúp bạn với dự án của mình nhưng nếu bạn thấy mình bị mắc kẹt với bất kỳ phần nào của nó hoặc bạn cần giải thích thêm, vui lòng cho tôi biết trong phần nhận xét và tôi sẽ cố gắng hết sức để giúp bạn.

Nếu bạn thích dự án thì hãy đăng ký kênh YouTube của tôi:

Nếm thử mã

Đề xuất: