Mục lục:

IOToilet: 7 bước (có hình ảnh)
IOToilet: 7 bước (có hình ảnh)

Video: IOToilet: 7 bước (có hình ảnh)

Video: IOToilet: 7 bước (có hình ảnh)
Video: skibidi toilet multiverse 022 bloopers 2024, Tháng mười một
Anonim

IOToilet là ngăn đựng giấy vệ sinh thông minh đầu tiên, theo dõi việc sử dụng giấy vệ sinh hàng ngày của chúng ta và cho phép tích lũy số liệu thống kê hiển thị các số liệu này. Và tại sao tôi nên quan tâm đến việc sử dụng giấy vệ sinh hàng ngày của tôi, bạn có thể hỏi? Hóa ra, sức khỏe vùng bụng của chúng ta, đặc biệt là chu trình tiêu hóa, có liên quan rất nhiều đến sức khỏe thể chất và tinh thần của chúng ta. Ví dụ: đây là một bài nói chuyện hay của TED (nhân tiện, một trong số khá ít) trình bày chi tiết về chủ đề này:

Ban đầu, tôi được giao nhiệm vụ chế tạo 10 đơn vị thiết bị này cho một đại lý xây dựng thương hiệu, có clip bạn có thể xem ở trên (vị trí thứ 2), cho một chiến dịch tiếp thị có chủ đích cho một công ty lớn. Lúc đầu, tôi bác bỏ ý tưởng này vì ý tưởng này xuất phát từ một bộ óc sáng tạo quá mức đang cố gắng giành lấy tài khoản khách hàng, nhưng dần dần nó lớn lên trong tôi, cho đến khi tôi nhận ra giá trị của thông tin thu thập được qua thiết bị này.

Việc xây dựng dựa trên một phần cứng hiện có mà khách hàng của tôi nhận được từ EBay, một thiết bị ghi âm giọng nói được gói gọn trong hộp đựng giấy vệ sinh. Nó có hệ số hình thức phù hợp và tất cả các thiết bị ngoại vi cần thiết đã được tích hợp sẵn, chẳng hạn như loa, cảm biến chuyển động để kích hoạt thiết bị, lò xo để giữ giấy vệ sinh, ngăn chứa pin và công tắc bật-tắt, vì vậy tôi rất vui khi chọn bằng cách sử dụng cái này được tạo sẵn hơn là tạo mẫu và in ấn của riêng tôi.

Bước 1: Công cụ và vật liệu

Công cụ và Vật liệu
Công cụ và Vật liệu
Công cụ và Vật liệu
Công cụ và Vật liệu
Công cụ và Vật liệu
Công cụ và Vật liệu
Công cụ và Vật liệu
Công cụ và Vật liệu

Vật liệu sử dụng:

Giữ giấy vệ sinh

Wemos D1 Mini

Chip ATTiny85, đóng gói DIP

Bóng bán dẫn 2 x 2n2222

Điện trở 220 Ohm

Điện trở 2 * 1KOhm

Máy đo gia tốc MPU6050

Tùy chọn, trong trường hợp không sử dụng PCB của tôi:

Khiên tạo mẫu Wemos

dây, vật hàn, v.v.

Công cụ được sử dụng:

Dremel với đĩa cắt

Bảng nhà phát triển ATTiny (để tải lên chương trình cơ sở một cách thuận tiện)

Bộ lập trình ISP tí hon USB

tuốc nơ vít hình tam giác, tôi đã sử dụng bộ này: https://www.aliexpress.com/item/45-in-1-Pre precision…

Bước 2: Phân loại đơn vị gốc

Làm suy yếu Đơn vị gốc
Làm suy yếu Đơn vị gốc
Làm suy yếu Đơn vị gốc
Làm suy yếu Đơn vị gốc
Làm suy yếu Đơn vị gốc
Làm suy yếu Đơn vị gốc

Sau khi lấy được trục xoay giấy vệ sinh ban đầu, tôi đã mở hộp đựng của nó bằng tuốc nơ vít hình tam giác và tháo PCB ban đầu, ngắt kết nối loa và để càng nhiều dây kết nối với nó càng tốt.

Sau đó, tôi hàn đèn LED và cảm biến độ nghiêng khỏi PCB ban đầu, để sau đó được nhúng vào mạch điện mới. Chú ý không để công tắc nghiêng quá nóng vì có thể làm hỏng. Ảnh của tôi có màu xám, nhưng vì tôi không chụp tốt nó khi tháo khỏi thiết bị gốc, nên tôi phải sử dụng ảnh từ mạng (xem ở trên), nơi nó có màu xanh lục. Chỉ là một chi tiết nhỏ.

Sau khi mở vỏ và tháo các thiết bị điện tử, tôi cũng sử dụng Dremel để loại bỏ phần nhựa thừa được sử dụng để giữ PCB ban đầu tại chỗ, những giá nhựa nhỏ này và một trong số 4 ống vít. Bạn có thể hoãn việc này sang giai đoạn lắp ráp nếu muốn, nhưng trong bất kỳ trường hợp nào bạn cũng sẽ phải cắt tỉa nhựa.

Bước 3: Giải thích về mạch điện

Giải thích về mạch điện
Giải thích về mạch điện
Giải thích về mạch điện
Giải thích về mạch điện

Vì vậy, đây là một chút về logic đằng sau mạch:

Để pin sử dụng được lâu, tôi phải đặt cả gia tốc kế MPU6050 và bộ xử lý ESP8266 trong Wemos D1 Mini ở chế độ ngủ giữa các lần kích hoạt. Việc đầu tiên được thực hiện dễ dàng bằng cách sử dụng một bóng bán dẫn để bật và tắt MPU6050.

Lưu ý: Ban đầu tôi nghĩ rằng tôi có thể lập trình nó để gửi tín hiệu ngắt sẽ đánh thức bộ xử lý chính. Than ôi, tôi không thể tìm ra cách để điều đó xảy ra, việc định cấu hình các thanh ghi thích hợp của MPU6050 là một nhiệm vụ khó khăn mà tôi vẫn không biết liệu có thể xảy ra hay không…

Tùy chọn thứ hai của tôi là sử dụng công tắc nghiêng được cung cấp cùng với thiết bị gốc để đánh thức ESP. Đầu tiên tôi buộc nó trực tiếp vào chân Wemos RESET như được mô tả trong các bức ảnh ở trên, sử dụng một bóng bán dẫn để kích hoạt / hủy kích hoạt cơ chế. Khi đế của bóng bán dẫn ở mức cao, GND có thể đi qua công tắc nghiêng và khiến nó kết nối tạm thời với chân RESET, gây ra thiết lập lại MCU (dường như đây là cách duy nhất để đánh thức ESP khỏi chế độ ngủ sâu). Sau đó, tôi kết nối D0 với đế bóng bán dẫn, theo tiền đề rằng chân này là CAO miễn là MCU đang ngủ và ngay khi nó thức dậy, D0 quay trở lại LOW, vô hiệu hóa cơ chế đặt lại. Rốt cuộc, tôi không cần đặt lại định kỳ, chỉ là lần đầu tiên khi ngăn đựng giấy vệ sinh bắt đầu di chuyển.

Tuy nhiên, những gì tôi phát hiện ra là pin D0 mất khá nhiều thời gian sau khi thiết lập lại MCU để trở về mức THẤP, khoảng 200ms. Điều này có nghĩa là nếu tôi xoay ngăn đựng giấy vệ sinh đủ nhanh trong khi MCU đang ngủ, nó sẽ xảy ra nhiều lần ĐẶT LẠI, thay vì đếm số vòng như bình thường.

Vì vậy, tôi đã thử giải quyết tình huống mới này với một số thành phần rời rạc (tụ điện, bóng bán dẫn, v.v.) nhưng tôi chỉ tìm được giải pháp một phần cho vấn đề.

Tôi đã kết thúc thêm một MCU khác, ATTiny85, sẽ được đánh thức từ chế độ ngủ bằng công tắc nghiêng, sau đó, đánh thức ESP8266 và đợi một lúc trước khi quay lại chế độ ngủ. Tôi biết đây có lẽ không phải là giải pháp tiết kiệm nhất cho vấn đề, nhưng tôi đã có thời hạn…

Bạn có thể xem giải pháp chi tiết trong lược đồ mà tôi đã đưa vào. Xin lưu ý rằng các điện trở 10K đã được thay thế bằng 1K vì các điện trở 10k là quá cao để các bóng bán dẫn có thể mở hoàn toàn.

Bước 4: Chuẩn bị ATTiny85

Chuẩn bị ATTiny85
Chuẩn bị ATTiny85

Nếu bạn chưa bao giờ lập trình ATTiny85, đừng lo! Sử dụng Arduino IDE yêu quý có thể giúp bạn thực hiện mọi cách. Bắt đầu với các hướng dẫn sau về cách định cấu hình Arduino IDE:

github.com/SpenceKonde/ATTinyCore/blob/mas…

Tiếp theo, cài đặt trình điều khiển cho USBTinyISP từ đây:

learn.adafruit.com/usbtinyisp/drivers

Bây giờ, hãy tải mã kiểm tra đính kèm: WakeOnExternalInterruptTest.ino

và kết nối (xem sơ đồ Sơ đồ ATTiny85):

1. Nút xác định giữa chốt 3 và mặt đất

2. Một led và một điện trở 220 Ohm mắc nối tiếp giữa chân 2 và đất

Kế tiếp, Chọn USBTinyISP làm trình lập trình (trong Công cụ -> Lập trình viên) và tải bản phác thảo thử nghiệm lên bảng.

Đèn LED sẽ nhấp nháy trong 5 lần, sau đó chip sẽ chuyển sang chế độ ngủ. Nhấn nút sẽ làm cho nó thức dậy và lặp lại trình tự đó.

Có nó để làm việc? tuyệt vời! Tải bản phác thảo cuối cùng "Awakener" lên ATTiny, để được sử dụng trong mạch cuối cùng.

Bước 5: Xây dựng Lá chắn Wemos

Xây dựng Lá chắn Wemos
Xây dựng Lá chắn Wemos
Xây dựng Lá chắn Wemos
Xây dựng Lá chắn Wemos
Xây dựng Lá chắn Wemos
Xây dựng Lá chắn Wemos
Xây dựng Lá chắn Wemos
Xây dựng Lá chắn Wemos

Vì vậy, để xây dựng lá chắn, bạn có 3 tùy chọn bạn có thể chọn:

1. Sử dụng một protoshield tiêu chuẩn cho Wemos và hàn mạch điện vào nó.

2. Chế tạo PCB, dựa trên các tệp EAGLE được đính kèm.

3. Yêu cầu tôi một PCB mà tôi có thể gửi cho bạn qua đường bưu điện (Tôi có một vài chiếc nằm xung quanh, chi phí không có gì bên cạnh).

Trong mọi trường hợp, tôi khuyên bạn nên xây dựng mạch trên breadboard trước khi cam kết với PCB!

Nếu sử dụng các tùy chọn PCB, hãy đảm bảo kết nối dây đen như trong ảnh, ở mặt trước hoặc mặt sau của bo mạch (loại dây này hoạt động tốt nhất đối với tôi). Dây này kết nối GND từ Wemos đến ATTiny85 và nếu không có nó, việc đánh thức sẽ không diễn ra.

Chỉ cần xem kỹ các hình ảnh và đọc các chú thích mà tôi đã thêm, điều này là đủ.

Bước 6: Chuẩn bị Wemos

Nếu bạn chưa bao giờ sử dụng Arduino IDE để lập trình bảng Wemos, hãy bắt đầu bằng cách cài đặt trình quản lý bảng và chọn bảng trong menu Công cụ -> Bảng, như được mô tả ở đây:

github.com/esp8266/Arduino

Bắt đầu bằng cách tải bản phác thảo nháy lên bảng của bạn, đảm bảo mã được tải lên chính xác.

Bước 7: Kết hợp tất cả lại với nhau

Để tất cả chúng cùng nhau
Để tất cả chúng cùng nhau
Để tất cả chúng cùng nhau
Để tất cả chúng cùng nhau
Để tất cả chúng cùng nhau
Để tất cả chúng cùng nhau

Lắp tấm chắn vào Wemos. Bạn có thể hàn nó, nhưng tôi khuyên bạn nên sử dụng các đầu cái được hàn vào Wemos sẽ cho phép kết nối tạm thời giữa Wemos và lá chắn, trong trường hợp có bất kỳ sự cố nào. Chỉ cần lưu ý rằng tiêu đề nữ sẽ phải tháo rời trong giai đoạn lắp ráp cuối cùng để thiết bị có thể lắp vào vỏ nhựa. Ngoài ra, để làm cho mọi thứ phức tạp hơn một chút, rất có thể khi lá chắn được kết nối với Wemos, quá trình tải lên mã sẽ bị vô hiệu hóa. Tôi đã gặp phải hiện tượng đó một cách không nhất quán và không có thời gian để nghiên cứu nó.

Lời khuyên: hãy lên kế hoạch trước.

Bây giờ, đang thử nghiệm!

Sau khi cài đặt, hãy bắt đầu bằng cách tải bản phác thảo thử nghiệm BlinkAccelerometer lên Wemos và đảm bảo rằng nó bật và tắt đèn LED MPU6050. Nếu không, hãy kiểm tra hệ thống dây điện của bóng bán dẫn chịu trách nhiệm cấp nguồn cho MPU6050. Đế của nó phải được kết nối với chân D5 của Wemos, bộ thu phải được kết nối với GND của gia tốc kế và bộ phát phải được kết nối với GND chung.

Tiếp theo, tải bản phác thảo TurnCountTest1 lên bảng Wemos và mở Serial Monitor. Bạn sẽ thấy dữ liệu đến từ gia tốc kế được hiển thị trên màn hình. Nếu không hoạt động, hãy kiểm tra đồng hồ và dây dữ liệu: CLK nên được kết nối với D1 và DATA nên được kết nối với D2.

Bây giờ, hàn công tắc nghiêng vào các lỗ được chỉ định trên bảng (xem chú thích), đảm bảo rằng nó vuông góc với trục quay để trục quay quay sẽ đóng và mở kết nối giữa hai dây dẫn của nó.

Tiếp theo, kết nối đầu vào Pin 3V với Wemos VCC và đầu cuối trừ của nó với Wemos GND. Đảm bảo rằng việc bật công tắc sẽ bật thiết bị. Cuối cùng, kết nối loa với GND và chân D4 của Wemos.

Tải mã cuối cùng lên Wemos - một bản phác thảo có tên là SmartWipe. Mở màn hình nối tiếp và đảm bảo rằng thiết bị chuyển sang chế độ ngủ sau 3 phút và được đánh thức bằng cách di chuyển công tắc nghiêng (các thông báo tương ứng sẽ xuất hiện trên màn hình).

Nếu bạn muốn giảm thời gian Wemos hoạt động (chủ yếu cho mục đích thử nghiệm), hãy làm mờ giá trị của WIFI_CONFIGURATION_IDLE_TIMEOUT được xác định trong params.h và tải bản phác thảo lên bảng. Đảm bảo rằng sau khi Wemos đi vào giấc ngủ sâu, việc di chuyển công tắc nghiêng sẽ khiến ATTiny thức giấc (được báo hiệu bằng đèn LED), từ đó đánh thức Wemos.

Thay đổi giá trị của tham số trở lại 180000L (3 phút, tính bằng mili giây) và đảm bảo Wemos kích hoạt Điểm phát sóng có tên IOToilet_XXXXXXXX nơi XXXXXXX sẽ được truy xuất từ địa chỉ MAC của chip. Kết nối với Wifi này bằng điện thoại thông minh và bạn sẽ được chuyển đến biểu mẫu đăng ký (cơ chế có tên Captive Portal). Điền vào các thông tin chi tiết, đặc biệt quan trọng là SSID và mật khẩu wifi cục bộ của bạn và gửi biểu mẫu. Sau đó, thiết bị sẽ cố gắng kết nối với mạng bằng thông tin đăng nhập được cung cấp và nếu thành công, hãy phát 3 âm thanh tăng dần trên loa. Nếu có sự cố khi kết nối với Wifi, 3 âm thanh giảm dần sẽ được phát. Sau đó, Wemos sẽ đi vào giấc ngủ sâu, cho đến khi được đánh thức bởi cử động.

Cuối cùng: End to end Kiểm tra hệ thống.

Cuộn ngăn đựng giấy vệ sinh dọc theo trục quay của nó vài vòng, sau đó đặt nó lên một bề mặt ổn định (để báo hiệu việc sử dụng cuộn giấy đã kết thúc và kích hoạt tải lên dữ liệu). Chờ khoảng 10 giây để số lượng cuộn được gửi đến đám mây, sau đó truy cập https://smartwipe-iot.appspot.com/ và nhấp vào Truy vấn. Bạn sẽ thấy chi tiết đăng ký và số lần sử dụng gần đây của mình trên đám mây! Hãy nhớ viết ra uuid của bạn, đó là id duy nhất của bạn trong hệ thống, được trích xuất từ địa chỉ MAC của Wemos của bạn.

Nếu bạn chỉ muốn trích xuất số liệu thống kê của mình ở định dạng JSON, hãy sử dụng URL tương tự như sau:

smartwipe-iot.appspot.com/api?action=query&uuid=1234567890

chỉ cần thay thế uuid bằng của bạn.

Tôi đã bao gồm tất cả các nguồn cho ứng dụng web, được lưu trữ trên Google App engine để những người dùng muốn có thêm quyền riêng tư đối với dữ liệu, có thể triển khai nó trên chính người dùng Google của họ, thêm xác thực, v.v.

Khi mọi thứ đều hoạt động, hãy lắp các thiết bị điện tử vào vỏ nhựa, cắt nhựa bằng khuôn nếu cần. Toàn bộ phần phải vừa vặn với nhà ở.

Rắc rối? Viết thư cho tôi!

UNITED WE POOP!

Đề xuất: