Mục lục:

Cảm biến mức độ thu gom nước chạy bằng pin: 7 bước (có hình ảnh)
Cảm biến mức độ thu gom nước chạy bằng pin: 7 bước (có hình ảnh)

Video: Cảm biến mức độ thu gom nước chạy bằng pin: 7 bước (có hình ảnh)

Video: Cảm biến mức độ thu gom nước chạy bằng pin: 7 bước (có hình ảnh)
Video: Xây dần ước mơ "Bảo Tàng Tiền Tệ" 🏛 2024, Tháng mười một
Anonim
Cảm biến mức độ thu gom nước chạy bằng pin
Cảm biến mức độ thu gom nước chạy bằng pin
Cảm biến mức độ thu gom nước chạy bằng pin
Cảm biến mức độ thu gom nước chạy bằng pin

Nhà chúng tôi có một bể chứa nước do mưa rơi trên mái nhà, dùng cho nhà vệ sinh, máy giặt và tưới cây trong vườn. Trong ba năm qua, mùa hè rất khô, vì vậy chúng tôi luôn để ý đến mực nước trong bể. Cho đến nay, chúng tôi sử dụng một thanh gỗ, chúng tôi đặt trong bể và đánh dấu mức độ. Nhưng chắc chắn nó phải được cải thiện về điều này!

Đây là nơi mà dự án này xuất hiện. Ý tưởng là gắn một cảm biến khoảng cách siêu âm ở đầu bể. Cảm biến này hoạt động như một sóng siêu âm phát ra sóng âm thanh, sau đó sẽ bị phản xạ lại bởi mặt nước. Từ thời gian sóng trở lại và tốc độ âm thanh, bạn có thể tính được khoảng cách đến mặt nước và xác định độ đầy của bể.

Vì tôi không có kết nối nguồn điện gần bể chứa nên thiết bị hoàn chỉnh hoạt động bằng pin là điều cần thiết. Điều này có nghĩa là tôi phải có ý thức về mức tiêu thụ điện năng của tất cả các bộ phận. Để gửi lại dữ liệu, tôi quyết định sử dụng Wifi tích hợp của vi mạch ESP8266. Mặc dù Wifi khá ngốn điện, nhưng nó có lợi thế hơn so với một loại kết nối vô tuyến khác: bạn có thể kết nối trực tiếp với bộ định tuyến không dây của nhà mình mà không cần phải xây dựng một thiết bị khác hoạt động như một bộ chuyển tiếp.

Để tiết kiệm điện năng, tôi sẽ đặt ESP8266 ở chế độ ngủ sâu hầu hết thời gian và thực hiện phép đo mỗi giờ. Đối với mục đích của tôi là theo dõi mực nước, điều này là quá đủ. Dữ liệu sẽ được gửi đến ThingSpeak và sau đó có thể được đọc trên điện thoại thông minh thông qua một ứng dụng.

Một chi tiết nữa! Tốc độ âm thanh, điều cần thiết cho phép đo khoảng cách, phụ thuộc vào nhiệt độ và ở một mức độ nhỏ hơn vào độ ẩm. Để có một phép đo bên ngoài chính xác qua các mùa, chúng tôi sẽ đưa vào một bộ cảm biến BME280, đo nhiệt độ, độ ẩm và áp suất. Như một phần thưởng, điều này làm cho cảm biến mực nước của chúng tôi cũng trở thành một trạm thời tiết nhỏ.

Các bộ phận:

  • 1x ESP8266 ESP-12F.
  • 1x tấm tiếp hợp ESP-12F.
  • 1x FT232RL FTDI: Bộ chuyển đổi USB sang Nối tiếp.
  • 1x HC-SR04-P: mô-đun đo khoảng cách siêu âm. Lưu ý rằng chữ P rất quan trọng, vì đây là phiên bản có điện áp hoạt động tối thiểu thấp là 3V.
  • 1x BME280 phiên bản 3.3V: cảm biến nhiệt độ, áp suất và độ ẩm.
  • 1x IRL2203N: bóng bán dẫn MOSFET kênh n.
  • 1x MCP1700-3302E phiên bản 3.3V: bộ điều chỉnh điện áp.
  • 3x pin AA có thể sạc lại, ví dụ: 2600 mah.
  • 1x ngăn chứa pin cho 3 pin.
  • 1x breadboard.
  • Điện trở: 1x 470K, 1x 100K, 4x 10K.
  • Tụ điện: 2x gốm 1uF.
  • Công tắc bật tắt 3x.
  • Dây breadboard hình chữ U.
  • Dây nhảy.
  • Hộp đựng canh bằng nhựa 1l.
  • Vòng đính kèm cho hộp đựng.

Tôi đã tạo mã có sẵn trên GitHub.

Bước 1: Tìm hiểu về cảm biến khoảng cách siêu âm

Tìm hiểu về cảm biến khoảng cách siêu âm
Tìm hiểu về cảm biến khoảng cách siêu âm
Tìm hiểu về cảm biến khoảng cách siêu âm
Tìm hiểu về cảm biến khoảng cách siêu âm

Chúng tôi sẽ đo khoảng cách đến mặt nước bằng cảm biến siêu âm, HC-SR04-P. Giống như một con dơi, cảm biến này sử dụng sóng siêu âm: nó gửi một xung âm thanh có tần số quá cao đối với tai người, do đó siêu âm và đợi nó va vào một vật thể, phản xạ và quay trở lại. Khoảng cách sau đó có thể được tính toán dưới dạng thời gian cần thiết để nhận được tiếng vang và tốc độ của âm thanh.

Cụ thể, nếu chân Trig được kéo lên cao trong ít nhất 10 μs, cảm biến sẽ gửi một loạt 8 xung với tần số 40 Hz. Câu trả lời sau đó thu được trên chân Echo dưới dạng một xung có thời gian bằng khoảng thời gian từ khi gửi và nhận xung siêu âm. Sau đó, chúng ta phải chia cho 2, vì xung siêu âm đang đi tới đi lui và chúng ta cần thời gian di chuyển một chiều, và nhân với tốc độ âm thanh, khoảng 340 m / s.

Nhưng chờ một chút! Trên thực tế, tốc độ của âm thanh phụ thuộc vào nhiệt độ và ở mức độ nhỏ hơn là độ ẩm. Tôi có nitpicking hay điều này có liên quan không? Sử dụng một công cụ tính toán, chúng tôi thấy rằng vào mùa đông (lấy -5 ° C), chúng ta có thể có 328,5 m / s và vào mùa hè (lấy 25 ° C) là 347,1 m / s. Vì vậy, giả sử chúng ta tìm thấy thời gian di chuyển một chiều là 3 ms. Vào mùa đông, điều này có nghĩa là 98,55 cm và vào mùa hè là 104,13 cm. Đó là một sự khác biệt! Vì vậy, để có đủ độ chính xác trong suốt các mùa, thậm chí cả ngày và đêm, chúng ta phải thêm nhiệt kế vào thiết lập của mình. Tôi quyết định bao gồm BME280, đo nhiệt độ, độ ẩm và áp suất. Trong đoạn mã tôi đã sử dụng trong hàm speedOfSound, một công thức tính toán tốc độ âm thanh theo cả ba thông số, mặc dù nhiệt độ thực sự là yếu tố quan trọng nhất. Độ ẩm vẫn có ảnh hưởng nhỏ hơn, nhưng tác động của áp suất là không đáng kể. Chúng tôi có thể sử dụng một công thức đơn giản hơn chỉ tính đến nhiệt độ mà tôi đã triển khai trong speedOfSoundSimple.

Có một điểm quan trọng nữa trên HC-SR04. Có hai phiên bản có sẵn: phiên bản tiêu chuẩn hoạt động ở 5V, trong khi HC-SR04-P có thể hoạt động ở dải điện áp từ 3V đến 5V. Vì 3 pin AA có thể sạc lại cung cấp khoảng 3x1,25V = 3,75V nên điều quan trọng là phải có phiên bản P. Một số người bán có thể gửi nhầm. Vì vậy, hãy xem các hình ảnh nếu bạn mua một cái. Hai phiên bản trông khác nhau ở cả phía sau và phía trước như được giải thích trên trang này. Ở phía sau trên phiên bản P, cả ba chip đều nằm ngang trong khi trên phiên bản tiêu chuẩn, một chip nằm dọc. Ở phía trước, phiên bản tiêu chuẩn có thêm một chi tiết màu bạc.

Trong mạch điện tử, chúng tôi sẽ sử dụng một bóng bán dẫn làm công tắc để tắt nguồn cho cảm biến siêu âm khi thiết lập của chúng tôi chuyển sang chế độ ngủ sâu để tiết kiệm pin. Nếu không, nó vẫn sẽ tiêu thụ khoảng 2mA. Mặt khác, BME280 chỉ tiêu thụ khoảng 5 μl khi không hoạt động, vì vậy không cần thiết phải tắt nó bằng bóng bán dẫn.

Bước 2: Lựa chọn Bảng ESP8266

Lựa chọn của Ban ESP8266
Lựa chọn của Ban ESP8266

Để vận hành cảm biến lâu nhất có thể trên pin, chúng ta phải tiết kiệm điện năng tiêu thụ. Mặc dù Wifi của ESP8266 cung cấp một cách rất thuận tiện để kết nối cảm biến của chúng tôi với đám mây, nhưng nó cũng khá ngốn điện. Khi hoạt động, ESP8266 tiêu thụ khoảng 80mA. Vì vậy, với pin 2600 mAh, chúng tôi sẽ chỉ có thể chạy thiết bị của mình tối đa 32 giờ trước khi chúng cạn kiệt. Trong thực tế, nó sẽ ít hơn vì chúng tôi sẽ không thể sử dụng hết dung lượng 2600 mAh trước khi điện áp giảm xuống mức quá thấp.

May mắn thay, ESP8266 cũng có chế độ ngủ sâu, trong đó hầu hết mọi thứ đều tắt. Vì vậy, kế hoạch là đặt ESP8266 ở chế độ ngủ sâu hầu hết thời gian và đánh thức nó thường xuyên để đo và gửi dữ liệu qua Wifi tới ThingSpeak. Theo trang này, thời gian ngủ sâu tối đa trước đây là khoảng 71 phút, nhưng kể từ phiên bản ESP8266 Arduino core 2.4.1, nó đã tăng lên khoảng 3,5 giờ. Trong mã của tôi, tôi đã giải quyết trong một giờ.

Lần đầu tiên tôi dùng thử bảng phát triển NodeMCU tiện lợi, nhưng xin lỗi, trong giấc ngủ sâu, nó vẫn tiêu thụ khoảng 9 mA, mang lại cho chúng tôi nhiều nhất 12 ngày ngủ sâu mà không cần xem xét khoảng thời gian thức dậy. Một thủ phạm quan trọng là bộ điều chỉnh điện áp AMS1117, sử dụng nguồn điện ngay cả khi bạn cố gắng vượt qua nó bằng cách kết nối trực tiếp pin với chân 3,3V. Trang này giải thích cách tháo bộ điều chỉnh điện áp và USB UART. Tuy nhiên, tôi không bao giờ làm được điều đó mà không phá hủy bảng của mình. Hơn nữa, sau khi tháo USB UART, bạn không thể kết nối với ESP8266 nữa để tìm ra sự cố.

Hầu hết các bảng phát triển ESP8266 dường như sử dụng bộ điều chỉnh điện áp AMS1117 lãng phí. Một ngoại lệ là WEMOS D1 mini (hình bên trái) đi kèm với ME6211 tiết kiệm hơn. Thật vậy, tôi thấy rằng WEMOS D1 mini sử dụng khoảng 150 μA khi ngủ sâu, điều này giống với nó hơn. Hầu hết nguyên nhân có thể là do USB UART. Với bảng này, bạn phải tự hàn các đầu cắm cho các chân.

Tuy nhiên, chúng tôi có thể làm tốt hơn nhiều bằng cách sử dụng bo mạch trần như ESP-12F (hình bên phải), không có USB UART hoặc bộ điều chỉnh điện áp. Sử dụng pin 3.3V, tôi thấy mức tiêu thụ khi ngủ sâu chỉ 22 μA!

Nhưng để ESP-12F hoạt động, hãy chuẩn bị cho một số quá trình hàn và lập trình phức tạp hơn một chút! Hơn nữa, trừ khi pin trực tiếp cung cấp điện áp chính xác, nằm trong khoảng từ 3V đến 3,6V, chúng tôi cần cung cấp bộ điều chỉnh điện áp của riêng mình. Trong thực tế, rất khó để tìm thấy một hệ thống pin cung cấp điện áp trong phạm vi này trong suốt chu kỳ phóng điện đầy đủ của nó. Hãy nhớ rằng chúng ta cũng cần cấp nguồn cho cảm biến HC-SR04-P, về mặt lý thuyết có thể hoạt động với điện áp thấp đến 3V, nhưng hoạt động chính xác hơn nếu điện áp cao hơn. Hơn nữa trong sơ đồ của tôi, HC-SR04-P được bật bởi một bóng bán dẫn, gây ra giảm điện áp bổ sung nhỏ. Chúng ta sẽ sử dụng bộ điều chỉnh điện áp MCP1700-3302E. Điện áp đầu vào tối đa là 6V vì vậy chúng tôi cấp nguồn cho nó với tối đa 4 pin AA. Tôi quyết định sử dụng 3 pin AA.

Bước 3: Tạo kênh ThingSpeak

Chúng tôi sẽ sử dụng ThingSpeak, một dịch vụ đám mây IoT, để lưu trữ dữ liệu của mình. Truy cập https://thingspeak.com/ và tạo một tài khoản. Khi bạn đã đăng nhập, hãy nhấp vào nút Kênh mới để tạo kênh. Trong Cài đặt kênh điền tên và mô tả tùy thích. Tiếp theo, chúng tôi đặt tên cho các trường kênh và kích hoạt chúng bằng cách nhấp vào hộp kiểm ở bên phải. Nếu bạn sử dụng mã của tôi không thay đổi, các trường như sau:

  • Lĩnh vực 1: mực nước (cm)
  • Trường 2: mức pin (V)
  • Trường 3: nhiệt độ (° C)
  • Trường 4: độ ẩm (%)
  • Trường 5: áp suất (Pa)

Để tham khảo trong tương lai, hãy ghi lại ID kênh, Khóa API đọc và Khóa API ghi, bạn có thể tìm thấy khóa này trong các khóa API của menu.

Bạn có thể đọc dữ liệu ThingSpeak trên điện thoại thông minh của mình bằng một ứng dụng. Trên điện thoại Android của mình, tôi sử dụng tiện ích IoT ThingSpeak Monitor. Bạn phải định cấu hình nó bằng ID kênh và Khóa API đọc.

Bước 4: Cách lập trình ESP-12F

Cách lập trình ESP-12F
Cách lập trình ESP-12F
Cách lập trình ESP-12F
Cách lập trình ESP-12F

Chúng ta cần một bo mạch chủ để tiết kiệm pin, nhưng nhược điểm là nó khó lập trình hơn một chút so với bo mạch phát triển có tích hợp USB UART.

Chúng tôi sẽ sử dụng Arduino IDE. Có những Tài liệu hướng dẫn khác giải thích cách sử dụng nó nên tôi sẽ nói ngắn gọn ở đây. Các bước để chuẩn bị sẵn sàng cho ESP8266 là:

  • Tải xuống Arduino IDE.
  • Cài đặt hỗ trợ cho bo mạch ESP8266. Trong menu Tệp - Tùy chọn - Cài đặt, hãy thêm URL https://arduino.esp8266.com/stable/package_esp8266com_index.json vào URL Trình quản lý Bảng bổ sung. Tiếp theo trong menu Tools - Board - Boards Manager cài đặt esp8266 bởi cộng đồng esp8266.
  • Chọn làm bảng: Mô-đun ESP8266 chung.

Để xử lý ESP-12F, tôi đã sử dụng một tấm tiếp hợp, thường có sẵn trong các cửa hàng trực tuyến. Tôi hàn chip vào tấm và sau đó hàn các đầu vào tấm. Chỉ sau đó tôi mới phát hiện ra rằng tấm bộ điều hợp quá rộng đối với một breadboard tiêu chuẩn! Nó không để lại các chốt miễn phí ở bên cạnh để tạo kết nối của bạn.

Giải pháp mà tôi chọn là sử dụng dây hình chữ U và kết nối chúng như trong hình bên phải trước khi đặt ESP8266 với tấm bộ điều hợp trên breadboard. Vì vậy, GND và VCC được kết nối với các đường ray của breadboard và các chân còn lại được tạo sẵn dưới breadboard. Điểm bất lợi là breadboard của bạn sẽ có khá nhiều dây khi bạn hoàn thành mạch hoàn chỉnh. Một giải pháp khác là lắp hai breadboard lại với nhau như trong video này.

Tiếp theo, để lập trình ESP-12F thông qua cổng USB trên máy tính của bạn, chúng tôi cần một bộ chuyển đổi USB sang nối tiếp. Tôi đã sử dụng lập trình FT232RL FTDI. Bộ lập trình có một jumper để chọn giữa 3.3V hoặc 5V. Nó nên được đặt thành 3.3V cho ESP8266. Đừng quên nó vì 5V có thể làm hỏng chip của bạn! Việc cài đặt trình điều khiển phải tự động, nhưng nếu chương trình không hoạt động, bạn có thể thử cài đặt chúng theo cách thủ công từ trang này.

ESP8266 có chế độ lập trình để tải chương trình cơ sở mới lên flash và chế độ flash để chạy chương trình cơ sở hiện tại từ bộ nhớ flash. Để chọn giữa các chế độ này, một số chân phải nhận một giá trị nhất định tại thời điểm khởi động:

  • Lập trình: GPIO0: thấp, CH-PD: cao, GPIO2: cao, GPIO15: thấp
  • Đèn flash: GPIO0: cao, CH-PD: cao, GPIO2: cao, GPIO15: thấp

Tấm bộ điều hợp đã đảm nhận việc kéo CH-PD lên và kéo xuống GPIO15 với điện trở 10K.

Vì vậy, trong mạch điện tử của chúng ta, chúng ta vẫn cần kéo GPIO2 lên. Chúng tôi cũng cung cấp một công tắc để đặt ESP8266 trong lập trình hoặc ở chế độ flash và một công tắc để đặt lại nó, được thực hiện bằng cách kết nối RST với mặt đất. Hơn nữa, hãy đảm bảo rằng bạn kết nối chân TX của FT232RL với chân RXD của ESP8266 và ngược lại.

Trình tự lập trình như sau:

  • Đặt GPIO2 ở mức thấp bằng cách đóng công tắc lập trình.
  • Đặt lại ESP8266 bằng cách đóng và sau đó mở lại công tắc đặt lại. ESP8266 hiện khởi động ở chế độ lập trình.
  • Đặt GPIO2 trở lại mức cao bằng cách mở công tắc lập trình.
  • Tải lên chương trình cơ sở mới từ Arduino IDE.
  • Đặt lại ESP8266 bằng cách đóng và mở lại công tắc đặt lại. ESP8266 hiện khởi động ở chế độ flash và chạy chương trình cơ sở mới.

Bây giờ bạn có thể kiểm tra xem chương trình có hoạt động hay không bằng cách tải lên bản phác thảo Blink nổi tiếng.

Nếu tất cả điều này hoạt động thì ít nhất các chân GND, VCC, GPIO2, RST, TXD và RXD đã được hàn và kết nối chính xác. Thật là nhẹ nhõm! Nhưng trước khi tiếp tục, tôi cũng khuyên bạn nên kiểm tra các chân khác bằng đồng hồ vạn năng của bạn. Bản thân tôi đã gặp sự cố với một trong các chốt. Bạn có thể sử dụng bản phác thảo này, đặt tất cả các chân lên cao từng chân một trong 5 giây và sau đó đặt ESP8266 vào trạng thái ngủ sâu trong 20 giây. Để cho phép ESP8266 thức dậy sau khi ngủ sâu, bạn cần kết nối RST với GPIO16, tín hiệu này cung cấp tín hiệu đánh thức.

Bước 5: Tải lên bản phác thảo

Tôi đã tạo mã có sẵn trên GitHub, nó chỉ là một tệp: Level-Sensor-Deepsleep.ino. Chỉ cần tải xuống và mở nó trong Arduino IDE. Hoặc bạn có thể chọn Tệp - Mới và chỉ cần sao chép / dán mã.

Có một số thông tin bạn phải điền vào đầu tệp: tên và mật khẩu của mạng WLAN để sử dụng, chi tiết IP tĩnh và ID kênh và khóa API ghi của kênh ThingSpeak.

Theo mẹo trên blog này, thay vì DHCP nơi bộ định tuyến chỉ định IP động, chúng tôi sử dụng IP tĩnh, nơi chúng tôi tự đặt địa chỉ IP của ESP8266. Điều này hóa ra nhanh hơn nhiều, vì vậy chúng tôi tiết kiệm thời gian hoạt động và do đó tiết kiệm năng lượng pin. Vì vậy, chúng tôi phải cung cấp địa chỉ IP tĩnh có sẵn cũng như IP của bộ định tuyến (cổng vào), mặt nạ mạng con và máy chủ DNS. Nếu bạn không chắc chắn về những gì cần điền, hãy đọc về cách thiết lập IP tĩnh trong hướng dẫn sử dụng bộ định tuyến của bạn. Trên máy tính Windows được kết nối qua Wifi với bộ định tuyến của bạn, hãy khởi động trình bao (Windows button-r, cmd) và nhập ipconfig / all. Bạn sẽ tìm thấy hầu hết thông tin bạn cần trong phần Wi-Fi.

Kiểm tra mã bạn thấy rằng không giống như các mã Arduino khác, hầu hết hành động xảy ra trong chức năng thiết lập thay vì chức năng vòng lặp. Điều này là do ESP8266 chuyển sang chế độ ngủ sâu sau khi hoàn thành chức năng thiết lập (trừ khi chúng tôi bắt đầu ở chế độ OTA). Sau khi thức dậy, nó giống như một lần khởi động lại mới và nó sẽ chạy lại thiết lập.

Dưới đây là các tính năng nổi bật của mã:

  • Sau khi đánh thức, mã đặt switchPin (GPIO15 mặc định) thành cao. Điều này sẽ bật bóng bán dẫn, đến lượt nó sẽ bật cảm biến HC-SR04-P. Trước khi đi vào giấc ngủ sâu, nó đặt pin trở lại mức thấp, tắt bóng bán dẫn và HC-SR04-P, đảm bảo rằng nó không tiêu thụ thêm bất kỳ năng lượng pin quý giá nào.
  • Nếu modePIN (GPIO14 mặc định) thấp, mã sẽ ở chế độ OTA thay vì chế độ đo. Với OTA (cập nhật qua mạng), chúng ta có thể cập nhật firmware qua Wifi thay vì cổng nối tiếp. Trong trường hợp của chúng tôi, điều này khá thuận tiện vì chúng tôi không phải kết nối nối tiếp với bộ điều hợp USB nữa để cập nhật thêm. Chỉ cần đặt GPIO14 ở mức thấp (với công tắc OTA trong mạch điện tử), đặt lại ESP8266 (với công tắc đặt lại) và nó sẽ có sẵn trong Arduino IDE để tải lên.
  • Trên mã PIN tương tự (A0), chúng tôi đo điện áp của pin. Điều này cho phép chúng tôi tắt thiết bị của mình, hay còn gọi là chế độ ngủ sâu vĩnh viễn, nếu điện áp quá thấp, dưới mức minVoltage, để bảo vệ pin khỏi quá tải. Phép đo tương tự không chính xác lắm, chúng tôi thực hiện phép đo numMeasuresBattery (mặc định là 10) và lấy giá trị trung bình để cải thiện độ chính xác.
  • Đo khoảng cách của cảm biến HC-SR04-P được thực hiện trong khoảng cách chức năng. Để cải thiện độ chính xác, phép đo được lặp lại numMeasuresDistance (mặc định 3) lần.
  • Có một công cụ để tính toán speedOfSound từ nhiệt độ, độ ẩm và đo áp suất bằng cảm biến BME280. Địa chỉ I2C mặc định của BME280 là 0x76, nhưng nếu nó không hoạt động, bạn có thể cần phải thay đổi nó thành 0x77: bool bme280Started = bme280.begin (0x77);
  • Chúng tôi sẽ sử dụng BME280 ở chế độ bắt buộc, có nghĩa là nó sẽ thực hiện một phép đo và quay trở lại chế độ ngủ để tiết kiệm điện năng.
  • Nếu bạn đặt dung tích (l), fullDistance (cm) và area (m2), mã sẽ tính thể tích còn lại của bồn nước từ phép đo khoảng cách: double còn lạiVolume = dung lượng + 10.0 * (fullDistance-distance) * diện tích; và tải nó lên ThingSpeak. Nếu bạn giữ các giá trị mặc định, nó sẽ tính khoảng cách đến mặt nước tính bằng cm.

Bước 6: Xây dựng vi mạch điện tử

Xây dựng vi mạch điện tử
Xây dựng vi mạch điện tử

Trên đây là sơ đồ của mạch điện tử. Nó khá lớn cho một breadboard, đặc biệt là với tấm bộ điều hợp quá khổ và mẹo với dây hình chữ U. Tại một thời điểm nào đó, tôi chắc chắn đã ước rằng mình đã sử dụng phương pháp thay thế kết nối hai breadboard, nhưng cuối cùng thì tôi đã xoay sở được.

Dưới đây là các tính năng quan trọng của mạch:

  • Có hai điện áp đóng vai trò: điện áp đầu vào từ pin (khoảng 3,75V) và 3,3V cấp cho ESP8266 và BME280. Tôi đặt 3,3V trên đường ray bên trái của bảng và 3,75V trên đường ray bên phải. Bộ điều chỉnh điện áp chuyển đổi 3,75V thành 3,3V. Làm theo hướng dẫn trong biểu dữ liệu, tôi đã thêm các tụ điện 1 μF vào đầu vào và đầu ra của bộ điều chỉnh điện áp để tăng độ ổn định.
  • GPIO15 của ESP8266 được kết nối với cổng của bóng bán dẫn. Điều này cho phép ESP8266 bật bóng bán dẫn và do đó cảm biến siêu âm khi hoạt động và tắt nó khi đi vào giấc ngủ sâu.
  • GPIO14 được kết nối với một công tắc, công tắc OTA. Việc đóng công tắc sẽ cung cấp tín hiệu đến ESP8266 mà chúng tôi muốn bắt đầu ở chế độ OTA tiếp theo, tức là sau khi chúng tôi nhấn (đóng và mở) công tắc ĐẶT LẠI và tải lên bản phác thảo mới qua mạng.
  • Các chân RST và GPIO2 được kết nối như trong sơ đồ lập trình. Chân RST hiện cũng được kết nối với GPIO16 để cho phép ESP8266 thức dậy sau giấc ngủ sâu.
  • Các chân TRIG và ECHO của cảm biến siêu âm được kết nối với GPIO12 và GPIO13, trong khi các chân SCL và SDA của BME280 được kết nối với GPIO5 và GPIO4.
  • Cuối cùng, chân analog ADC thông qua bộ chia điện áp kết nối với điện áp đầu vào. Điều này cho phép đo điện áp đầu vào để kiểm tra điện tích của pin. Chân ADC có thể đo điện áp từ 0V đến 1V. Đối với bộ phân áp, chúng tôi chọn điện trở 100K và 470K. Điều này có nghĩa là điện áp tại chân ADC được cho bởi: V_ADC = 100K / (100K + 470K) V_in. Lấy V_ADC = 1V điều này có nghĩa là chúng ta có thể đo điện áp đầu vào lên đến V_in = 570/100 V_ADC = 5.7V. Đối với tiêu thụ điện năng cũng có một số dòng điện rò rỉ qua bộ phân áp. Với V_in = 3,75V từ pin, chúng tôi tìm thấy I_leak = 3,75V / 570K = 6,6 μA.

Ngay cả khi mạch đang chạy bằng pin, vẫn có thể kết nối USB với bộ chuyển đổi nối tiếp. Chỉ cần đảm bảo rút VCC của bộ điều hợp và kết nối GND, RX và TX như trong sơ đồ lập trình. Điều này giúp bạn có thể mở Serial Monitor trong Arduino IDE để đọc các thông báo gỡ lỗi và đảm bảo mọi thứ đang hoạt động như mong đợi.

Đối với mạch hoàn chỉnh, tôi đo dòng điện tiêu thụ là 50 μA ở chế độ ngủ sâu khi chạy bằng pin. Điều này bao gồm ESP8266, BME280, cảm biến siêu âm (bị tắt bởi bóng bán dẫn) và rò rỉ qua bộ chia điện áp và có lẽ là rò rỉ khác. Vì vậy, điều đó không quá tệ!

Tôi thấy rằng tổng thời gian hoạt động là khoảng 7 giây, trong đó 4,25 giây để kết nối với Wifi và 1,25 giây để gửi dữ liệu đến ThingSpeak. Vì vậy, với dòng điện hoạt động là 80mA, tôi tìm thấy 160 μAh mỗi giờ cho thời gian hoạt động. Thêm 50 μAh mỗi giờ cho trạng thái ngủ sâu, chúng ta có tổng cộng 210 μAh mỗi giờ. Điều này có nghĩa là pin 2600 mAh trên lý thuyết kéo dài 12400 giờ = 515 ngày. Đây là mức tối đa tuyệt đối nếu chúng tôi có thể sử dụng hết công suất của pin (trường hợp này không xảy ra) và không có rò rỉ nào mà tôi không tìm thấy với các phép đo hiện tại của mình. Vì vậy, tôi vẫn chưa biết liệu điều này có thực sự ổn hay không.

Bước 7: Hoàn thiện cảm biến

Hoàn thiện cảm biến
Hoàn thiện cảm biến
Hoàn thiện cảm biến
Hoàn thiện cảm biến
Hoàn thiện cảm biến
Hoàn thiện cảm biến

Tôi đặt cảm biến trong một cái thùng nhựa 1 lít, cái này dùng để đựng súp. Ở phía dưới, tôi tạo hai lỗ để lắp "mắt" của cảm biến HC-SR04-P. Ngoài các lỗ, thùng chứa phải không thấm nước. Sau đó nó được gắn vào thành bồn nước bằng một vòng tròn thường được sử dụng cho đường ống thoát nước mưa.

Chúc bạn vui vẻ với dự án!

Đề xuất: