Cảnh báo trộm với ESP8266

Trong bài này mình xin chia sẻ cách làm hệ thống cảnh báo trộm đơn giản, rất đơn giản thôi, chỉ là mình gắn nó bên ngoài cửa phòng mình, nếu mẹ mình chuẩn bị mở cửa phòng ra thì nó sẽ phát tiếng lên trên máy tính để mình biết để ngụy trang ngay lập tức.

Chuẩn bị

Phần cứng

  • ESP8266 phiên bản bất kỳ. (mình dùng NodeMCU)
  • Cảm biến chuyển động PIR (hoạt động nguồn 5V)
  • Dây nối

Ở đây phần cứng được mình sử dụng là mạch NodeMCU, các bạn có thể dùng bất kỳ mạch nào có ESP8266 ở trên đó. Lưu ý là nếu chỉ dùng mấy modul ESP8266 v1/v7 thì cần có thêm mạch USB2UART như PL2303 để nạp chương trình nhé.

Phần mềm

Nếu bạn mới bắt đầu với ESP8266 thì có thể tham khảo thêm các bước làm quen ban đầu với ESP8266

Các khái niệm

Trước khi bắt đầu mình cùng tìm hiểu thêm một chút về các khái niệm, những khái niệm này sẽ rất quen thuộc vì nó được nói rất nhiều trong các group, diễn đàn như Restful, Nodejs,..

RESTful

Theo định nghĩa từ codehub thì REST (Representational State Transfer) là một kiểu kiến trúc được sử dụng trong việc giao tiếp giữa các máy tính (máy tính cá nhân và máy chủ của trang web) trong việc quản lý các tài nguyên trên internet. REST được sử dụng rất nhiều trong việc phát triển các ứng dụng Web Services sử dụng giao thức HTTP trong giao tiếp thông qua mạng internet. Các ứng dụng sử dụng kiến trúc REST này thì sẽ được gọi là ứng dụng phát triển theo kiểu RESTful.

Nó có 4 phương thức được sử dụng:

  • POST  – Tạo một tài nguyên trên máy chủ
  • GET  – Truy xuất một tài nguyên
  • PUT  – Thay đổi trạng thái một tài nguyên hoặc để cập nhật nó
  • DELETE – Huỷ bỏ hoặc xoá một tài nguyên

REST nó dính tới khá nhiều về CNTT, về Web nên mình xin ko đi sâu, chỉ tận dụng thư viện về RESTful có sẵn là AREST dùng với ESP8266.

NodeJS

Node.js chỉ là một môi trường – nghĩa là bạn phải tự tay làm mọi thứ. Không có một server HTTP mặc định, hoặc bất kỳ server nào cho vấn đề đó. Điều này có thể gây bối rối cho những người mới học, nhưng bù lại chúng ta sẽ xây dựng được ứng dụng web có tốc độ thực thi cao. Một script quản lý tất cả truyền thông với các client. Điều này giúp giảm đáng kể số lượng tài nguyên sử dụng bởi ứng dụng đó.

Node.js có các thư viện built-in để xử lý các web request và response – do đó bạn không cần một máy chủ web riêng biệt hoặc những thành phần phụ thuộc khác

Cài đặt

Phần lý thuyết chắc cũng có khá nhiều bài viết nói về nó rồi, thôi mình tập trung vào mục đích chính, xem coi nodejs, restful nó hoạt động thế nào nhé.

NodeJs

Trước tiên sẽ là cài đặt Nodejs cho Win10 tại Nodejs, phiên bản hiện tại là v6.9.6 LTS, tiếp theo là next như cài bao phần mềm khác

ExpressJs

Đây là một framework dùng cho nodejs, nó sẽ giúp cho các thao tác với nodejs được dễ dàng hơn. Các bạn có thể xem hình minh họa tổng quan về cách hoạt động hệ thống sử dụng express

Để cài đặt Expressjs thì các bạn mở Command Prompt(cmd) của Win (phím tắt Windows + X), nhập lệnh

npm install express jade

Xây dựng hệ thống

Coi như đã tạm xong các bước cài đặt và chuẩn bị, giờ thì bắt tay vào xây dựng hệ thống chống trộm này

Ở đây máy tính của mình sẽ đóng vai trò là server, nó sẽ nhận thông tin có hay không có người từ ESP8266 gửi lên và hiển thị thông tin cảnh báo về âm thanh, hình ảnh cho mình thông qua web browser.

Đọc cảm biến với ESP8266

Trong chương trình sẽ có một số thứ cần quan tâm

  • Host ở đây là địa chỉ IP của máy bạn, bạn có thể xem địa chỉ này tại Network Preferences hoặc vào cmd gõ lệnh ipconfig
  • Kết nối với server với  httpPort = 3000; 3000 là port của server dùng nodejs.
  • ESP8266 sẽ gửi yêu cầu POST lên server thông báo trạng thái của cảm biến.

Các bạn có thể tham khảo chương trình đầy đủ ở đây

Chương trình

Tạo cảnh báo lên server

Khi phát hiện có người, thông báo trên web browser sẽ có 2 option là cảnh báo bằng thông báo hoặc thông báo kèm âm thanh

Chương trình gồm 3 file:

  • app.js gồm code cho server, trong file sẽ có khởi tạo với expressjs, tạo một số biến để xác định trạng thái của cảm biến và phương thức get, post đưa thông tin về cảnh báo và trạng thái cảm biến, cuối cùng là khởi động web server.
  • interface.jade là giao diện hiển thị lên web
  • interface.js tạo liên kết giữa giao diện với server, với hàm refresh_motion để hiện query giá trị của cảm biến và thay đổi giao diện web. Nếu phát hiện chuyển động và tùy chọn âm thanh không được bật thì sẽ thay đổi trạng thái trên giao diện, nếu có chọn phát âm thanh thì sẽ có âm báo trên máy tính, hàm này được thực hiện mỗi 500ms
app.js

interface.jade

interface.js

Để tiện thì các bạn có thể tải tất cả tại đây, sau đó copy vào thư mục C:\Users\ten_pc với ten_pc là tên máy tính bạn

Đến đây là đã xong các bước lập trình

Khởi động nodejs trong thư mục alarm_system bằng lệnh trên cmd

cd alarm_system
node app.js

Mở trình duyệt vào địa chỉ http://localhost:3000/

Kết quả

Tạm kết

Mình đã trình bày một số khái niệm cơ bản, cách đưa nodejs,esp,restful, express vào trong một web đơn giản, nhận thông tin từ ESP8266 gửi lên, đây chỉ là bước khởi đầu, vẫn còn rất nhiều thứ để bạn học ở phía trước. Nếu bạn có biết về làm web, nodejs,.. thì chắc là khỏe hơn nhiều rồi 😀

16
Leave a Reply

avatar
10 Comment threads
6 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
10 Comment authors
HuyDatscTuấnShuu Do Recent comment authors

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.

  Subscribe  
newest oldest most voted
Notify of
Hiue
Guest
Hiue

Hình như thiếu file package.json đúng ko ad.

Thiên
Guest
Thiên

mình muốn nếu cho trộm thì có thông báo đến điện thoại thì làm cách nào vậy bạn

thien
Guest

mình muốn nếu có trộm thì gởi thông báo đến đt thì làm cách nào vậy bạn

Duy Lê
Guest
Duy Lê

Cảm ơn b vì bài viết. Với mình thử đưa lên heroku bị lỗi erro, bạn có bị như v không

Linh
Guest

Bạn có thử đưa len Heroku chưa, mình đưa lên bị lỗi thì phải

nhi
Guest
nhi

làm cho Esp kết nối wiffi và báo qua điện thoại cụ thể s vậy ad…thank ad.!

Shuu Do
Guest

Mình phải vào để comment cho các bạn xem sau dễ nắm bắt.
Khi đọc bài này các bạn cần biết điều sau :
– Đã hiểu các phần trước ( Connect WiFi, Start PORT … ).
Sau khi đã hiểu thì đọc bài viết này cần trọng tâm vào 2 thứ :
– Cách để ESP8266 gửi một request lên ( có thể là get,post… ).
– Cách mà website nhận request và trả giá trị lại.
Nếu bạn đã hiểu bài viết này thì bạn cũng hiểu mình nói gì rồi đó 🙂 .

Tuấn
Guest
Tuấn

Mình có 1 thắc mắc
Những thứ ở trên có thể áp dụng cho c# được ko ad

Dat
Guest
Dat

thế này chắc phải học web à ad, nhiều thứ quá, copy chắc không áp dụng làm cái khác đc, ad học web như nào cho e xin lộ trình với ạ

Huy
Guest
Huy

thư viện aRESH.h hình như k cần phải k ad mình add vào mà nó k đỏ lên ,xóa đi vẫn verify dc