Mục lục:

Cảm biến thông báo máy giặt: 6 bước (có hình ảnh)
Cảm biến thông báo máy giặt: 6 bước (có hình ảnh)

Video: Cảm biến thông báo máy giặt: 6 bước (có hình ảnh)

Video: Cảm biến thông báo máy giặt: 6 bước (có hình ảnh)
Video: Máy Giặt Cửa Ngang, Đổ Xà Phòng Vào Ngăn Nào 2024, Tháng mười một
Anonim
Image
Image
Nguyên mẫu
Nguyên mẫu

Cảm biến máy giặt này nằm trên đầu máy giặt của tôi và sử dụng cảm biến gia tốc để phát hiện rung động từ máy. Khi cảm thấy chu trình giặt đã kết thúc, nó sẽ gửi cho tôi một thông báo trên điện thoại của tôi. Tôi đã tạo ra điều này vì bản thân máy không còn phát ra tiếng bíp khi kết thúc và tôi đã cảm thấy mệt mỏi khi quên lấy đồ giặt ra.

Bạn có thể tìm thấy mã tại đây:

Danh sách các bộ phận đầy đủ:

  • WEMOS LOLIN32
  • Half-size Breadboard (để tạo mẫu)
  • Hộp dự án ABS với bảng ma trận 59x88x30mm
  • Sparkfun LIS3DH - Đột phá về gia tốc kế ba trục
  • 1x ZVP3306A MOSFET kênh P, 160 mA, 60 V, 3 chân E-Line
  • 1x bóng bán dẫn NPN BC549B TO92 30V
  • 5mm LED Blue 68 mcd
  • Điện trở CF 1x 100k 0,125W
  • Điện trở CF 1x 330k 0,125W
  • Điện trở CF 2x 10k 0,250W
  • Điện trở CF 1x 100 0,250W
  • Cáp kiểu JST PH 2 chân dành cho nữ (14cm)
  • Nam châm đĩa 4x M1219-8 Neodymium 6x4mm

Bước 1: Nguyên mẫu

Nguyên mẫu
Nguyên mẫu

Thiết bị sử dụng vi điều khiển ESP32. Trong trường hợp này, tôi đang sử dụng bảng phát triển Lolin32 của Wemos mà bạn có thể mua trên AliExpress với giá khoảng $ 7. Gia tốc kế là Sparkfun LIS3DH - điều quan trọng là gia tốc kế là kỹ thuật số chứ không phải tương tự như bạn sẽ thấy ở phần sau. Pin tôi lấy từ một bộ loa bluetooth cũ.

ESP32 kết nối với gia tốc kế thông qua I2C. Phiên bản đầu tiên của mã chỉ đơn giản là thăm dò ba trục gia tốc (x, y và z) để biết giá trị gia tốc đo được sau mỗi 20ms. Đặt nguyên mẫu breadboard vào máy giặt và tôi đã tạo ra biểu đồ trên cho thấy các đỉnh gia tốc trong các giai đoạn khác nhau của chu kỳ giặt. Những đỉnh mà gia tốc tuyệt đối lớn hơn 125mg (125 phần nghìn trọng lực bình thường) được thể hiện bằng màu cam. Chúng tôi muốn phát hiện những khoảng thời gian này và sử dụng chúng để xác định tình trạng của máy giặt.

Làm thế nào để xác định xem máy đang bật hay tắt?

Một trong những mục tiêu của việc xây dựng thiết bị này là nó sẽ hoàn toàn thụ động. I E. không cần nhấn nút; nó sẽ chỉ hoạt động. Nó cũng phải có điện năng rất thấp vì không thực sự có thể kéo dài dây cáp điện cho máy giặt trong trường hợp của tôi.

May mắn thay, gia tốc kế LIS3DH có một tính năng mà nó có thể kích hoạt ngắt khi gia tốc vượt quá ngưỡng nhất định (lưu ý, điều này yêu cầu sử dụng bộ lọc thông cao tích hợp của gia tốc kế - xem mã trên Github để biết chi tiết) và ESP32 có thể được đánh thức từ chế độ ngủ sâu của nó thông qua một ngắt. Chúng tôi có thể sử dụng kết hợp các tính năng này để tạo chế độ ngủ công suất rất thấp được kích hoạt bằng chuyển động.

Mã giả sẽ trông giống như sau:

# Đánh thức thiết bị

thông báo_threshold = 240 counter = 10 speedrometer.set_threshold (96) # 96mg trong khi bộ đếm> 0: if speedrometer.above_threshold (): counter ++ else: counter-- nếu counter> notification_threshold: # chu kỳ quay cuối cùng đã phát hiện thấy trạng thái ngủ (1 giây) Accrometer.set_threshold_interrupt () esp32.set_wakeup_trigger_on_interrupt () esp32.deep_sleep ()

Bạn có thể thấy ở đây rằng chúng tôi sử dụng bộ đếm để phát hiện số giây tăng tốc mà chúng tôi đã phát hiện trong khoảng thời gian đánh thức hiện tại. Nếu bộ đếm giảm xuống 0 thì chúng ta có thể đặt thiết bị trở lại chế độ ngủ. Nếu bộ đếm đạt đến 240 (ngưỡng thông báo) thì điều đó có nghĩa là chúng tôi đã phát hiện thấy 4 phút rung động. Chúng tôi có thể điều chỉnh giá trị của các ngưỡng này để đảm bảo thiết bị phát hiện chính xác chu kỳ vắt cuối cùng. Sau khi phát hiện đủ độ rung, chúng tôi có thể chỉ cần ngủ thêm 5 phút nữa (trong trường hợp của tôi, đây là khoảng thời gian cho đến khi quá trình rửa thực sự hoàn tất) trước khi gửi thông báo.

Bước 2: Gửi thông báo qua Blynk

Gửi thông báo qua Blynk
Gửi thông báo qua Blynk

Blynk là một dịch vụ được thiết kế để cho phép tương tác với các thiết bị IoT bằng một ứng dụng trên điện thoại của bạn. Trong trường hợp này, tôi đang sử dụng API thông báo đẩy được kích hoạt bởi một HTTP POST đơn giản đến Blynk API.

Bước 3: Đo mức tiêu thụ điện năng và ước tính thời lượng pin

Đo mức tiêu thụ điện năng và ước tính thời lượng pin
Đo mức tiêu thụ điện năng và ước tính thời lượng pin

Chip ESP32 được quảng cáo là có mức tiêu thụ điện năng rất thấp khi ở trạng thái ngủ sâu (thấp nhất là 5uA). Thật không may, mạch trên nhiều bảng phát triển khác nhau cung cấp các đặc tính tiêu thụ điện năng rất khác nhau - không phải tất cả các bảng nhà phát triển ESP32 đều được tạo ra như nhau. Ví dụ: khi tôi lần đầu tiên bắt đầu dự án này, tôi đã sử dụng Sparkfun ESP32 Thing sẽ tiêu thụ điện năng khoảng 1mA ở chế độ ngủ sâu (ngay cả sau khi tắt đèn LED nguồn). Kể từ đó, tôi đã sử dụng Lolin32 (không phải phiên bản Lite), trên đó tôi đo được dòng điện 144,5uA khi ở chế độ ngủ sâu. Để thực hiện phép đo này, tôi chỉ cần đấu nối tiếp một đồng hồ vạn năng với pin và thiết bị. Điều này chắc chắn dễ thực hiện hơn trong khi tạo mẫu với breadboard. Tôi cũng đo mức sử dụng hiện tại khi thiết bị ở chế độ thức:

  • Ngủ sâu: 144,5uA
  • Thức tỉnh: 45mA
  • Đã bật Wi-Fi: 150mA

Giả sử tôi sử dụng máy hai lần một tuần, tôi đã ước tính các khoảng thời gian sau cho thời gian cảm biến sử dụng ở mỗi trạng thái:

  • Ngủ sâu: 604090 giây (~ 1 tuần)
  • Thức tỉnh: 720 giây (12 phút)
  • Đã bật Wi-Fi: 10 giây

Từ những số liệu này, chúng tôi có thể ước tính thời lượng pin sẽ sử dụng được. Tôi đã sử dụng máy tính tiện dụng này để nhận được mức tiêu thụ điện năng trung bình là 0,2mA. Thời lượng pin ước tính là 201 ngày hoặc khoảng 6 tháng! Trong thực tế, tôi thấy thiết bị sẽ ngừng hoạt động sau khoảng 2 tháng nên có thể có một số sai sót trong phép đo hoặc dung lượng của pin.

Bước 4: Đo mức pin

Đo mức pin
Đo mức pin
Đo mức pin
Đo mức pin

Tôi nghĩ sẽ rất tuyệt nếu thiết bị có thể cho tôi biết khi nào pin sắp hết để tôi biết khi nào cần sạc. Để đo điều này, chúng ta cần đo điện áp của pin. Pin có dải điện áp từ 4.3V - 2.2V (điện áp hoạt động tối thiểu của ESP32). Thật không may, dải điện áp của các chân ADC của ESP32 là 0-3,3V. Điều này có nghĩa là, chúng ta cần giảm điện áp của pin từ mức tối đa 4,3 xuống 3,3 để tránh quá tải ADC. Điều này có thể làm được với bộ chia điện áp. Đơn giản chỉ cần nối hai điện trở có giá trị thích hợp từ pin xuống đất và đo hiệu điện thế ở giữa.

Thật không may, một mạch phân chia điện áp đơn giản sẽ tiêu hao năng lượng từ pin ngay cả khi không đo điện áp. Bạn có thể giảm thiểu điều này bằng cách sử dụng các điện trở có giá trị cao nhưng mặt trái của nó là ADC có thể không thể tạo đủ dòng điện để thực hiện phép đo chính xác. Tôi quyết định sử dụng các điện trở có giá trị 100kΩ và 330kΩ sẽ giảm 4,3V xuống 3,3V theo công thức phân áp này. Với tổng điện trở là 430kΩ, chúng tôi mong đợi dòng điện rút ra là 11,6uA (sử dụng định luật Ohm). Với mức sử dụng hiện tại cho giấc ngủ sâu của chúng tôi là 144uA, đó là một mức tăng hợp lý đáng kể.

Vì chúng tôi chỉ muốn đo điện áp pin một lần ngay trước khi gửi thông báo, nên tắt mạch phân áp trong thời gian chúng tôi không đo bất cứ thứ gì. May mắn thay, chúng ta có thể làm điều này với một vài bóng bán dẫn được kết nối với một trong các chân GPIO. Tôi đã sử dụng mạch được đưa ra trong câu trả lời stackexchange này. Bạn có thể thấy tôi đang kiểm tra mạch với Arduino và breadboard trong ảnh trên (lưu ý rằng có một lỗi trong mạch đó là lý do tôi đang đo điện áp cao hơn mong đợi).

Với mạch ở trên, tôi sử dụng mã giả sau để lấy giá trị phần trăm pin:

pin_percentage ():

# bật mạch điện áp pin gpio_set_level (BATTERY_EN_PIN, CAO) # Mức pin được trả về dưới dạng số nguyên từ 0 đến 4095 adc_value = adc1_get_value (ADC_PIN) # bật mạch điện áp pin gpio_set_level (PIN_EN_PIN, THẤP) float adc_value * 3.3 / 4095 # điện áp bộ chia sử dụng điện trở 100k / 330k ohm # 4.3V -> 3.223, 2.4 -> 1.842 dự kiến_max = 4.3 * 330 / (100 + 330) dự kiến_phút = 2.4 * 330 / (100 + 330) pin_level = (adc_voltage-dự kiến_phút) / (dự kiến_max -enced_min) trả về pin_level * 100.0

Bước 5: Làm cho nó đẹp hơn

Làm cho nó đẹp hơn
Làm cho nó đẹp hơn
Làm cho nó đẹp hơn
Làm cho nó đẹp hơn
Làm cho nó đẹp hơn
Làm cho nó đẹp hơn

Trong khi phiên bản breadboard hoạt động tốt, tôi muốn đưa nó vào một gói gọn gàng hơn và đáng tin cậy hơn (không có dây nào có thể bị lỏng hoặc ngắn). Tôi đã cố gắng tìm được hộp dự án hoàn hảo cho nhu cầu của mình có kích thước phù hợp, bao gồm bảng ghim, giá đỡ và vít để gắn tất cả lại với nhau. Ngoài ra, nó đã chết với giá rẻ hơn 2 bảng Anh. Sau khi nhận được hộp, tất cả những gì tôi phải làm là hàn các thành phần vào bảng ghim.

Có lẽ phần khó nhất của việc này là lắp tất cả các thành phần mạch điện áp pin vào không gian nhỏ bên cạnh Lolin32. May mắn thay, với một chút jiggery pokery và các kết nối thích hợp được thực hiện bằng chất hàn, mạch vừa khít với nhau. Ngoài ra, vì Wemos Lolin32 không có chân cắm để tiếp xúc với cực dương của pin, tôi đã phải hàn một dây từ đầu nối pin vào bảng ghim.

Tôi cũng đã thêm một đèn LED nhấp nháy khi thiết bị phát hiện chuyển động.

Bước 6: Hoàn thiện các lần chạm

Image
Image
Kết thúc các lần chạm
Kết thúc các lần chạm
Kết thúc các lần chạm
Kết thúc các lần chạm

Tôi siêu dán 4 nam châm neodymium 6mm x 4mm vào đế hộp cho phép nó dính chặt vào đầu kim loại của máy giặt.

Hộp dự án đã đi kèm với một lỗ nhỏ để cung cấp quyền truy cập vào cáp. May mắn thay, tôi đã có thể đặt bo mạch ESP32 gần lỗ này để cấp quyền truy cập vào đầu nối micro USB. Sau khi mở rộng lỗ bằng dao thủ công, cáp vừa vặn hoàn hảo để cho phép dễ dàng sạc pin.

Nếu bạn quan tâm đến bất kỳ thông tin chi tiết của dự án này, xin vui lòng để lại bình luận. Nếu bạn muốn xem mã, vui lòng kiểm tra trên Github:

github.com/alexspurling/washingmachine

Đề xuất: