Mục lục:

Cảm biến chuyển động ESP-01 với chế độ ngủ sâu: 5 bước
Cảm biến chuyển động ESP-01 với chế độ ngủ sâu: 5 bước

Video: Cảm biến chuyển động ESP-01 với chế độ ngủ sâu: 5 bước

Video: Cảm biến chuyển động ESP-01 với chế độ ngủ sâu: 5 bước
Video: CHẾ THIẾT BỊ BÁO KHÁCH TỰ ĐỘNG QUA ĐIỆN THOẠI [ESP 8266, BLYNK, HCSR501] 2024, Tháng mười một
Anonim
Image
Image

Tôi đang nghiên cứu chế tạo cảm biến chuyển động tự chế có thể gửi email khi được kích hoạt. Có rất nhiều hướng dẫn ví dụ và các ví dụ khác về việc này. Gần đây tôi cần thực hiện việc này với cảm biến chuyển động PIR hoạt động bằng pin và ESP-01. ESP-01 rất chức năng và có tất cả các khả năng cần thiết, vậy tại sao không sử dụng mức tối thiểu và ít tốn kém nhất cần thiết? Được thêm vào hỗn hợp là một mô-đun ESP-01 riêng biệt và từ xa khác đã kích hoạt còi khi cảm biến chuyển động được kích hoạt.

Mã và bố cục mạch cuối cùng đã được thu thập từ nhiều nguồn trên web và tôi không nghĩ rằng mình có thể xác định chúng một cách cụ thể. Ý tưởng gửi email qua gmail đến từ các nguồn có thể hướng dẫn và các nguồn khác và mã cuối cùng là hỗn hợp từ các nguồn đó. Ngủ một giấc thật sâu để làm việc đã dẫn tôi đến nhiều con đường mà thường không có kết quả. Điều buồn cười là, một khi một con đường trở nên hiệu quả, bạn sẽ ngừng tìm kiếm những con đường khác. Vì vậy, tôi nói lời cảm ơn đến tất cả những người đã đóng góp vào thành công của tôi mà tôi vẫn chưa được biết đến.

Tôi gặp vấn đề tương tự khi cảm biến PIR hoạt động để kích hoạt chế độ ngủ sâu ESP-01. Nhiều con đường cho đến khi có một con đường hoạt động.

Không cần phải nói, đã có một số rào cản thú vị hoặc có lẽ phù hợp hơn, để hiểu rõ hơn về các thiết bị điện tử mà tôi yêu cầu. Bạn tiếp tục học cho đến khi một cái gì đó hoạt động và sau đó bạn không cần phải học thêm nữa.

ESP-01 thực hiện chế độ ngủ sâu cũng như bất kỳ mô-đun ESP8266 nào khác miễn là bạn không yêu cầu thời gian ngủ. Nếu bạn muốn mô-đun hoạt động sau một khoảng thời gian đã đặt trước, thì ESP-01 không phải là mô-đun để sử dụng. Nhưng đó không phải là điều tôi muốn. Thời gian đã trôi qua là vô nghĩa khi sử dụng PIR. Tôi muốn ESP-01 chỉ hoạt động khi được kích hoạt bởi chuyển động do PIR cảm nhận. Nếu không có chuyển động nào được cảm nhận trong nhiều giờ hoặc nhiều ngày, ESP-01 sẽ ở chế độ ngủ khi sử dụng mức pin tối thiểu.

Bạn sẽ thấy nhiều mạch sử dụng GPIO16 được kết nối với Thiết lập lại ESP8266 vì GPIO16 là tín hiệu đánh thức. Điều này đúng, nhưng nó là tín hiệu đánh thức từ giấc ngủ đúng giờ. Chúng ta có thể bỏ qua mã PIN này, điều này tốt vì nó không có trên ESP-01.

Về cơ bản, tất cả những gì chúng ta cần là lấy tín hiệu từ PIR để kích hoạt chân Reset của ESP-01. Khó khăn đầu tiên bạn sẽ phỏng đoán là Reset được kích hoạt trên tín hiệu THẤP và PIR gửi tín hiệu CAO khi được kích hoạt. Đặt lại cũng cần ở mức CAO hoặc nổi khi khởi động. Vì vậy, để giữ cho điều này ngắn, sau khi thử một số mạch khác nhau, tôi đã quyết định sử dụng một bóng bán dẫn NPN với một điện trở kéo lên để giữ chân ĐẶT LẠI CAO trong khi khởi động. Đầu ra từ PIR là tối thiểu nhưng nó cung cấp đủ dòng điện cơ bản để bật bóng bán dẫn.

Như bạn sẽ thấy trong sơ đồ mạch bên dưới, ESP-01 được đánh thức sau giấc ngủ sâu mỗi khi PIR cảm nhận được chuyển động.

Nhưng có một vấn đề khác. Việc Reset của ESP-01 chỉ xảy ra sau khi PIR ngừng cảm biến chuyển động và trở về tín hiệu thấp, tắt bóng bán dẫn và đưa chân Reset về HIGH do điện trở pullup. Điều này có nghĩa là email sẽ không được gửi đi, cũng như bộ rung sẽ không được kích hoạt cho đến khi SAU KHI PIR ngừng phát hiện chuyển động. Tôi muốn kích hoạt xảy ra ngay khi cảm nhận được chuyển động.

Những gì tôi xác định được từ hành vi này là ESP-01 thực sự kích hoạt trên cạnh tăng của tín hiệu. Giữ chân Reset xuống đất không thực sự kích hoạt ESP-01 từ chế độ ngủ sâu nhưng thời điểm điện áp tăng lên đến tín hiệu CAO, thì quá trình đặt lại sẽ xảy ra.

Phản ứng rất đơn giản của tôi đối với hành vi này là thêm một tụ điện vào đường giữa đầu ra PIR và đế bóng bán dẫn. Điều này khiến bóng bán dẫn chỉ bật trong khi tụ điện đang sạc. Sau khi được sạc, không còn dòng điện nữa và bóng bán dẫn sẽ tắt. Điện trở 5k cho phép dòng điện thoát xuống đất. Tôi đã thử nghiệm điều này với đèn LED thay cho ESP-01 và có thể thấy đèn flash LED bật sáng trong một phần giây trước khi tắt. Xung nhỏ này đủ để kéo chốt Reset xuống đất trong giây lát và đủ lâu để kích hoạt Reset trong giấc ngủ sâu.

Bước 1: Mô-đun Ngủ sâu ESP-01

Mô-đun Ngủ sâu ESP-01
Mô-đun Ngủ sâu ESP-01
Mô-đun Ngủ sâu ESP-01
Mô-đun Ngủ sâu ESP-01

Mô-đun ngủ sâu sử dụng hai điện áp làm việc. 5v + ngẫu nhiên của bộ pin cho PIR và cũng là bảng điều chỉnh 3,3 volt cho ESP-01. Tôi cũng kết hợp một diode vào mạch để ngăn các bộ phận bị hư hỏng do điện áp ngược. Điều này sử dụng thêm một chút điện năng và làm giảm điện áp của bộ pin xuống 0,7 volt. Diode có thể được để ra khỏi mạch nếu bạn chắc chắn rằng bạn sẽ không bao giờ đảo ngược các dây dẫn của bộ pin. Một công tắc cũng được thêm vào để thuận tiện.

Mô-đun này là một bản cập nhật nhỏ cho bố cục giấc ngủ không sâu ban đầu của tôi. Trong cấu hình không ngủ sâu, PIR được kết nối trực tiếp với chân RX của ESP-01. Tôi đang sử dụng chân RX của ESP-01 làm chân đầu vào cho PIR vì một vài lý do. GPIO0 không hoạt động vì khi khởi động, mã PIN đầu ra PIR sẽ THẤP khiến ESP-01 chuyển sang chế độ flash. Tôi đã không sử dụng GPIO2 vì khi đó tôi không thể sử dụng đèn LED tích hợp cho nguồn cấp dữ liệu trực quan trở lại. Các chân RX và TX thường được mô tả là các chân IO phụ nhưng kinh nghiệm của tôi là RX là một chân INPUT bổ sung và TX là một chân OUTPUT bổ sung.

Trong cấu hình ngủ sâu, kết nối RX không hoàn toàn cần thiết. Tôi chỉ sử dụng nó để theo dõi thời gian PIR được kích hoạt bằng cách bật đèn LED trong khi đầu vào ở mức CAO. Như đã đề cập trước đây, nếu bạn xóa chức năng vòng lặp và chỉ sử dụng quy trình thiết lập thì kết nối RX là không cần thiết.

Đây là danh sách các bộ phận của mô-đun ngủ sâu ESP-01:

Bảng nguyên mẫu PCB 1 - 5 x 7 cm

Đầu nối 1 - 2 chân

2 - 1 x 3 tiêu đề cái

1 - Bảng mạch điều chỉnh điện áp AMS1117 - 3.3

1 - 1 x 3 Góc bên phải Ghim đầu nam

1 - 1 x 3 chân cắm đầu cắm cái

1 - 1 x 4 chân cắm đầu cắm cái

Tiêu đề cái 1 - 2 x 4

Tụ điện 1 - 1uf

1 - Cảm biến chuyển động HC-SR501 PIR

1 - Bóng bán dẫn 2N2222

Điện trở 1 - 10k

1 - Điện trở 4,7k

Điện trở 1 - 1k

1 - 1N4148 diode

1 - công tắc SS12D00G4 SPDT

1 - ESP-01

Bộ pin 1 - 4AA

Xin lưu ý rằng trong video, bảng mạch sử dụng bộ điều hợp bảng mạch điện tử ESP-01 thay vì đầu cắm 2 x 4. Mặc dù bộ điều hợp này dễ hàn hơn, nhưng tiêu đề 2 x 4 hoạt động tốt và thực sự vừa vặn hơn.

Bước 2: Mã giấc ngủ sâu ESP-01

Mã Deep Sleep thực hiện hai chức năng. Gửi tin nhắn email (qua gmail theo mặc định) và gửi yêu cầu web http đến mô-đun bộ rung ESP-01 được liên kết để kích hoạt bộ rung.

Khi được kích hoạt, mô-đun này cung cấp hai tùy chọn thông báo và có thể đặc biệt hữu ích khi bạn không chú ý đến các email.

Bạn sẽ cần cập nhật sáu dòng mã với các giá trị cụ thể của mình để làm cho bản phác thảo hoạt động:

const char * ssid = "xxxxx"; // WiFi SSIDconst của bạn char * password = "xxxxx"; // Chuỗi mật khẩu WiFi của bạn Senders_Login = "xxxxx"; // đăng nhập nhà cung cấp email của bạn String Senders_Password = "xxxxx"; // mật khẩu nhà cung cấp email của bạn

Tới = "xxxxxx"; Từ = "xxxxxx"; // Gmail thường thích điều này giống với Senders_Login và có thể thay thế

Tôi nhận thấy mô-đun ngủ sâu hoạt động không thể đoán trước khi cảm biến PIR được đặt ở mức dưới 10 giây cho độ dài của sự kiện kích hoạt. Tôi đã đặt của tôi thành 20 giây. Điều này đã được chứng minh là rất đáng tin cậy nhưng nó cũng có nghĩa là các sự kiện kích hoạt có thể xảy ra với tần suất đó.

Tôi cũng đã thêm mã vào chức năng vòng lặp để giữ cho đèn LED ESP-01 bật miễn là PIR vẫn cảm nhận được chuyển động. Tất cả mã trong chức năng vòng lặp có thể được loại bỏ và lệnh gọi ngủ sâu được chuyển đến cuối chức năng cài đặt.

Tôi sử dụng chức năng nhấp nháy cho chỉ báo trực quan về hoạt động với mô-đun ESP-01.

Mặc dù tôi đã sử dụng và thử nghiệm kết nối với gmail, các nhà cung cấp dịch vụ email khác cũng hoạt động. Tôi đã thử một vài. Trong thực tế, tôi đã thấy gmail rắc rối hơn. Gmail yêu cầu bạn phải định cấu hình tài khoản của mình để các ứng dụng kém an toàn truy cập. Cài đặt tài khoản này được TẮT theo mặc định, vì vậy hãy đảm bảo bạn tìm thấy và thay đổi cài đặt này thành kém an toàn hơn. Gmail sẽ KHÔNG hoạt động theo cách khác.

Nếu bạn chọn có nhiều hơn một mô-đun buzzer, chỉ cần thêm các lệnh gọi bổ sung của máy khách http (lặp lại ba dòng mã nhưng thay đổi địa chỉ ip được sử dụng và cũng chỉ xác định biến httpCode là int một lần!

Lưu ý rằng địa chỉ ip của bộ rung được mã hóa cứng trong mô-đun này. Bạn không cần phải sử dụng địa chỉ ip mà tôi đã chọn, nhưng bạn phải khớp địa chỉ ip của cuộc gọi web trong mô-đun này với địa chỉ ip của thiết lập máy chủ web trong mô-đun tiếp theo.

Bước 3: Mô-đun Bộ rung ESP-01

Mô-đun Bộ rung ESP-01
Mô-đun Bộ rung ESP-01
Mô-đun Bộ rung ESP-01
Mô-đun Bộ rung ESP-01
Mô-đun Bộ rung ESP-01
Mô-đun Bộ rung ESP-01

Mô-đun buzzer có một thiết lập khá đơn giản. Nó sử dụng đầu nối USB thay vì một bộ pin vì tôi không nghĩ rằng mô-đun này phù hợp với một bộ pin. Nó phải luôn bật và kết nối nework / wifi mọi lúc vì nó không bao giờ biết khi nào một yêu cầu web sẽ được thực hiện. Điều này đòi hỏi nhiều năng lượng liên tục hơn so với các bộ pin hữu ích.

Mô-đun Buzzer có thể được đặt thuận tiện ở nhiều vị trí, cung cấp thông báo về sự kiện kích hoạt cảm biến chuyển động cho dù bạn đang ở đâu!

Bộ rung được kết nối với 5v của đầu nối USB và có một bảng điều chỉnh 3,3v khác cung cấp điện cho ESP-01.

Mô-đun bộ rung sẽ hoạt động bằng cách sử dụng TX, GPIO0 hoặc GPIO2 cho đầu ra. Trong cấu hình của tôi, tôi đang sử dụng GPIO0. (Trong hình của mô-đun, dây được kết nối với GPIO2 nhưng tôi đã di chuyển nó.) Mặc dù GPIO0 không hoạt động đối với mô-đun ngủ sâu (như INPUT), nó hoạt động tốt với bố cục này là OUTPUT. Nó không được kéo xuống đất khi khởi động sẽ gây ra sự cố. Tôi đã sử dụng GPIO2 nhưng sau đó tôi không thể sử dụng đèn LED trên bo mạch cho bất kỳ phản hồi nào nhưng bằng cách sử dụng GPIO0 cho OUTPUT, tôi có thể sử dụng đèn LED trên bo mạch.

Tôi đã thử sử dụng bóng bán dẫn NPN để cấp nguồn cho bộ rung trong mạch khi ESP-01 đặt tín hiệu CAO trên chân GPIO0 nhưng kết quả không nhất quán một cách đáng kinh ngạc. Bộ rung dường như muốn phát ra mọi lúc, ngay cả khi chỉ cần rất ít công suất. Vì vậy, thay vào đó tôi đã sử dụng MOSFET kênh N (2n7000) và kết quả thật tuyệt vời. Chân IO điều khiển Cổng theo yêu cầu.

Trong khi chúng tôi chỉ cần hai chân từ đầu nối USB Vcc (+) và Gnd (-), tôi sử dụng đầu cắm 5 chân để kết nối với bảng mạch PCB để tăng độ ổn định và để hàn trước khi kết nối USB với bộ điều chỉnh. Bảng điều chỉnh 3.3v của tôi đi kèm với các chân được cài đặt sẵn và trong tâm trí tôi, nó bị lộn ngược. Vì vậy, để đặt bộ điều chỉnh vào các chân tiêu đề, bạn có thể thấy rằng bảng mạch bị ẩn, nhưng tệ hơn là vcc và gnd trên bộ điều chỉnh được đảo ngược từ vcc và gnd trên đầu nối USB. Vì vậy, các dây chéo nhau.

Cũng lưu ý rằng + nguồn cho bộ rung hoạt động đến từ 5v của USB. Ngoài ra, đầu cắm ổ cắm 4 chân cái hoạt động tốt với vị trí chân cắm của bộ rung.

Danh sách bộ phận mô-đun bộ rung ESP-01:

Bo mạch PCB 1 - 5 x 7

1 - Đầu nối mini USB với đầu cắm chân (7 chân)

2 - 1 x 3 tiêu đề cái

1 - Bảng điều chỉnh điện áp AMS1117-3.3 v

Tiêu đề nữ 1 - 2 x 4

2 - 1 x 4 đầu cắm ổ cắm cái

1 - MOSFET kênh N 2N7000

Điện trở 1 - 10 ohm

Bộ rung hoạt động 1 - 5v

Bước 4: Mã mô-đun Bộ rung ESP-01

Mô-đun bộ rung hoạt động như một máy chủ web ESP-01 đơn giản. Nó phản hồi bằng một thông báo đơn giản cho một yêu cầu gốc và khi nhận được yêu cầu buzz, nó sẽ kích hoạt buzzer. GPIO0 được sử dụng cho chân GPIO cho tín hiệu còi.

Lưu ý rằng ESP-01 được cấu hình bằng địa chỉ ip được mã hóa cứng. Điều này là bắt buộc để mô-đun ngủ sâu được ghép nối với địa chỉ bộ rung.

Giống như mô-đun trước, bạn sẽ phải cập nhật hai dòng mã với các giá trị cụ thể của mình:

// SSID và Mật khẩu của bộ định tuyến WiFi của bạnconst char * ssid = "xxxxxxx";

const char * password = "xxxxxxxx";

Nếu bạn đã tạo nhiều mô-đun buzzer, mỗi mô-đun phải được tải bằng địa chỉ ip duy nhất của riêng nó.

Bạn cũng có thể thêm các phương pháp buzz khác nhau để tạo ra các giai điệu buzzer khác nhau. Ví dụ: nếu bạn có một cảm biến PIR ở cửa trước và một ở cửa sau, chúng có thể đưa ra yêu cầu web cho từng mô-đun buzzer của bạn nhưng một cảm biến có thể có một bản phác thảo gọi buzz và bản phác thảo kia có thể gọi buzz2 để bạn có thể biết cảm biến nào đã được kích hoạt từ âm thanh. Và vân vân! Hàm buzz2 không tồn tại mà chỉ cần sao chép hàm buzz và thay đổi các giá trị độ trễ.

Đối với máy chủ web, bạn chỉ cần thêm một dòng mã như sau:

server.on ("/ buzz2", buzz2);

Bước 5: Kết luận

Đây là hướng dẫn đầu tiên của tôi vì vậy tôi có thể đã bỏ lỡ một số điều thực tế mà tôi nên đưa vào. Bảng điều khiển AMS1117-3.3 mà tôi đã sử dụng bao gồm một đèn LED nhỏ sáng lên khi bật nguồn. Đối với mô-đun ngủ sâu, tôi không muốn điều này dẫn đến và tiêu hao năng lượng một cách không cần thiết. Vì vậy, tôi không bán những gì tôi có thể ở một bên của đèn led trên bảng và sau đó sử dụng một con dao tiện ích để cắt đường dấu vết. Điều này dễ dàng hơn tôi nghĩ và ngăn đèn LED sáng. Tôi chưa thể xác định mức tiêu thụ điện là gì khi ESP-01 đang ở trạng thái ngủ sâu nhưng tôi có thể có câu trả lời sau một vài tuần. Một đồng nghiệp của tôi đang chạy cảm biến (không ở chế độ ngủ sâu) và thấy pin cạn kiệt (5AA) trong khoảng một tuần. Tôi nghĩ rằng thiết lập này sẽ kéo dài một tháng hoặc thậm chí nhiều hơn. Chúng ta sẽ thấy.

Mô-đun chế độ ngủ sâu có giá khoảng 8 đô la CDN cho các bộ phận (không bao gồm pin!) Và mô-đun bộ rung 5 đô la.

Đề xuất: