Mục lục:
- Bước 1: Chúng tôi sẽ thực hiện như thế nào
- Bước 2: Trang bị cần thiết
- Bước 3: Giao thức Jura
- Bước 4: Tháo rời
- Bước 5: Bỏ qua bảo hành
- Bước 6: Đấu dây cho Mặt logic
- Bước 7: Lập trình mô-đun
- Bước 8: Làm cho nó thành công việc…
- Bước 9: Sàng lọc / Todo
Video: Máy pha cà phê được kích hoạt IoT: 9 bước (có hình ảnh)
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:34
Hướng dẫn này được tham gia cuộc thi IoT - Nếu bạn thích nó, hãy bình chọn cho nó
CẬP NHẬT: Hiện hỗ trợ kết nối 2 chiều và cập nhật OTA
Từ lâu tôi đã có một chiếc máy pha cà phê Jura và tôi luôn muốn tự động hóa nó bằng cách nào đó.
Tôi đã điều hành một hệ thống tự động hóa cơ bản tại nhà được vài năm nhưng máy pha cà phê không phải là thứ đơn giản để sửa đổi (hoặc tôi nghĩ vậy). Máy pha cà phê Jura thường có 'Cổng chẩn đoán' và / hoặc cổng được sử dụng để thêm hệ thống thanh toán vào máy, tuy nhiên tôi không thể tìm thấy bất kỳ thông tin nào về cách sử dụng nó. Gần đây hơn, giao thức đã được một số cá nhân thiết kế ngược lại và công khai. Vấn đề là, hầu hết các tham chiếu đến các chức năng có sẵn dành cho các máy lớn hơn nhiều so với máy của tôi (Ena 7).
Hơn hết, máy của tôi không có nguồn điện ở chế độ chờ vĩnh viễn như các máy lớn hơn, thay vào đó nó có một công tắc HV giúp cho nguồn điện 'chốt'. Nút vật lý trên máy thực sự kích hoạt 2 công tắc - Một điện áp thấp (bên logic, tắt) và một điện áp cao (Bật nguồn). Cả hai công tắc đều là tạm thời.
Tôi cũng cần đảm bảo rằng máy vẫn hoạt động độc lập 100% với bất kỳ cơ chế điều khiển nào, tức là máy vẫn hoạt động bình thường như khi chưa kích hoạt IoT.
Để tự động hóa máy cần hai điều: 1) Có thể điều khiển nguồn điện vào máy 2) Có thể giao tiếp với máy để kích hoạt các chức năng pha cà phê, tráng, v.v.
Bước 1: Chúng tôi sẽ thực hiện như thế nào
Chúng tôi sẽ sử dụng mô-đun ESP8266 'ESP-01' để kết nối với wifi gia đình và đăng ký máy chủ / chủ đề MQTT nghe lệnh. 'Giao diện người dùng' mà tôi đã sử dụng là OpenHAB2 nhưng không có lý do gì bạn không thể thêm vào giao diện web trên thiết bị và điều khiển trực tiếp nếu bạn muốn hoặc thông qua các lệnh HTTP Get.
ESP8266 sẽ đảm nhiệm việc điều khiển 2 rơ le liên quan đến nút nguồn và cũng xử lý các lệnh nối tiếp đến / đi từ máy pha cà phê.
CẢNH BÁO - Hướng dẫn này phác thảo quy trình tôi đã sử dụng để sửa đổi máy pha cà phê Jura Ena7 của mình để được điều khiển thông qua tự động hóa tại nhà. Nó đề cập đến việc sửa đổi một thiết bị điện lưới có thể gây nguy hiểm nếu thực hiện không chính xác. Thông tin ở đây có thể không đầy đủ, không chính xác và không an toàn. Tiến hành thận trọng. Không chấp nhận trách nhiệm pháp lý.
Bước 2: Trang bị cần thiết
Các bộ phận
- Mô-đun ESP-01 và cách lập trình (Arduino IDE và bộ điều hợp vật lý để lập trình)
- Mô-đun chuyển tiếp 2 chiều EBAY
- 5v -> 3.3v Bộ điều chỉnh EBAY
- Bộ sạc điện thoại nguồn điện chính 5v nhỏ
- Bộ chuyển đổi mức logic * Freetronics
- Dây khác, đầu ghim, co nhiệt, v.v. để kết nối tất cả.
Công cụ
- Sắt hàn nghiêng tốt
- Hàn
- Dụng cụ cắt dây rất tiện dụng
- Trình điều khiển Torx T15
- Công cụ bảo mật hình bầu dục (hoặc tạo một công cụ, chỉ mất vài phút)
* Ban đầu tôi sử dụng arduino UNO trong quá trình thử nghiệm tất cả các lệnh nối tiếp cho máy và nó hoạt động hoàn hảo, tuy nhiên mô-đun ESP từ chối hoạt động. Tôi đã kiểm tra ba lần mã và tôi chắc chắn rằng các lệnh thoát ra khỏi mô-đun ESP cũng giống như arduino, tuy nhiên, đó là một lệnh cấm. Tôi đặt điều này xuống mô-đun ESP chỉ hoạt động trên logic 3.3v chứ không phải 5V. Sau khi tôi đưa vào bộ chuyển đổi Logic, nó hoạt động tốt. Điều này có thể được yêu cầu hoặc không trong các máy khác.
Lý tưởng nhất là bạn sẽ có một hệ thống tự động hóa gia đình hiện có hỗ trợ giao thức MQTT (chẳng hạn như openhab) vì đây là những gì dự án hướng tới. Nếu bạn chỉ muốn điều khiển nó thông qua các nút trên một trang web mà không cần bất kỳ hệ thống hỗ trợ nào, bạn sẽ cần thực hiện một số thay đổi đối với mã trang web được nhúng. Nó không quá phức tạp để đạt được (có thể là phiên bản 2.)
Bước 3: Giao thức Jura
Dữ liệu đến / từ máy chỉ là serial @ 9600 nhưng Jura cũng có một số thủ thuật. Giao thức sử dụng điều này cho ECC bổ sung và / hoặc để loại bỏ giao tiếp. Nói một cách đơn giản, mỗi byte dữ liệu (ký tự) được chia thành các bit 2 và 5 của 4 byte nối tiếp tiêu chuẩn được kéo theo khoảng dừng 8ms. Nếu bạn muốn tìm hiểu cách thức hoạt động của nó, có rất nhiều thông tin trong các liên kết ở đây.
Thông tin giao thức được trích xuất từ:
Mã arduino đơn giản hóa điều này, cho phép bạn truyền các lệnh tiêu chuẩn, con người có thể đọc được và sau đó nó chuyển sang giao thức Jura.
Mã của tôi là sự kết hợp của mã từ: https://github.com/oliverk71/Coffeemaker-Payment-…
Các lệnh được tham chiếu tại các trang web ở trên không chính xác đối với máy của tôi nhưng thông qua phương pháp thử và sai, tôi có thể đưa ra kết quả bên dưới:
FA: 01 - Tắt (nhưng dường như không rửa sạch, ngay cả khi cần) FA: 02 - Trả lời 'ok' nhưng không chắc nó làm gì. FA: 03 - Thông báo xả (Nhấn thông báo 'xả' trên màn hình, nhấn máy xả quay) FA: 04 - Hành động xả - Rửa sạch khi thông báo 'Nhấn nút Xoay' xuất hiện, nếu không thì không có gì FA: 05 - Mạnh trên màn hình (Có lẽ kết hợp điều này với pha cà phê cho mạnh) FA: 06 - Strong on screen (Có lẽ kết hợp điều này với pha cà phê cho mạnh) FA: 07 - 'Đặc biệt' trên màn hình nhưng không thực sự làm gì cả, không rõ điều này là gì: 08 - Steam FA: 09 - Small Coffee FA: 0A - Large Coffee
Có những lệnh khác nhưng điều này là rất nhiều đối với tôi…
Hãy thận trọng khi đưa ra các lệnh không xác định, chẳng hạn như AN: 0A sẽ xóa sạch EEPROM của máy …
Bước 4: Tháo rời
Việc tự mở máy không quá dễ dàng vì bạn cần một số công cụ hơi đặc biệt nhưng một người nhạy bén sẽ tìm ra cách - Bạn cần một bit T15 Torx và 'chìa khóa hình bầu dục' cho 2 ốc vít. Torx mà tôi đã có, công cụ hình bầu dục mà tôi tạo ra từ một bu lông đầu ổ cắm 4mm được khoan ra và làm phẳng một chút bằng một cái búa.
Các hướng dẫn ở đây được trình bày khá tốt -
Bước 5: Bỏ qua bảo hành
Khi vào máy, bạn sẽ thấy các thành phần chính. Đầu vào nguồn chính có một vị trí đẹp bên dưới nó để thêm bộ sạc 5v.
Tôi đã thêm dây (xếp hạng chính) vào khối đầu cuối ở đầu vào của máy và hàn / rắc các dây này vào các chân chính của bộ sạc 5v. Mô hình cụ thể của tôi không phải là loại cổng USB mà là loại có đầu gắn cố định. Bạn có thể không có đủ chỗ cho cổng usb loại một để có thể sử dụng cáp USB thực tế nhưng nếu bạn đã mở bộ sạc, bạn có thể tháo cổng USB và thay thế bằng dây tiêu chuẩn đến điểm 5v và Gnd.
Bạn có thể thay thế một nguồn điện chính được xếp hạng 5v khác nếu bạn muốn. 500ma chắc là nhiều.
Có rất nhiều chỗ cho mô-đun tiếp điện gần máy mài. Chúng ta phải đấu dây để hai rơ le hoạt động song song với các công tắc điện chính. Tôi chỉ đơn giản là cắt các dây hiện có, tước, đóng hộp, thêm một dây thừa vào và hàn lại với nhau (đừng quên heatshrink). Có đủ độ trễ trong dây để làm điều này.
Mô-đun tiếp điện được giữ cố định bằng băng keo hai mặt chất lượng tốt. Với các dây được kết nối và chỉ có không gian hạn chế để di chuyển, ngay cả khi băng bị mất độ bám, mô-đun sẽ không đi quá xa và không thể tiếp xúc với bất kỳ vật kim loại nào.
Tôi cũng dự phòng lại cổng chẩn đoán trên máy của mình để xác định vị trí của các kết nối bên trong để tôi có thể đạt được tích hợp hoàn toàn ẩn. Chỉ sử dụng dây tx, rx và Gnd.
Nếu bạn có một máy thương mại hơn hỗ trợ điện áp chờ và / hoặc bạn không muốn vô hiệu hóa bảo hành trên máy của mình, bạn có thể kết nối trực tiếp với cổng chẩn đoán thay thế nhưng có thể không bật nguồn được máy bằng thiết bị này.
Máy của tôi sử dụng đầu nối 7 chân. Từ trái sang phải là:
NC Tx G Rx NC 5v NC
Các chân tương ứng trên mainboard: Red = Gnd Orange = Rx Black = Tx
Có thể tìm thấy thêm thông tin về sơ đồ chân tại đây:
Bước 6: Đấu dây cho Mặt logic
Xem lại sơ đồ - Nó trông quá phức tạp nhưng thực sự không phải vậy.
Tôi đã gắn bộ chuyển đổi mức vào mặt sau của bộ điều chỉnh điện áp (đã lắp) bằng một số băng dính hai mặt. Sau đó, tôi sử dụng một số chân linh kiện để hàn các chân nguồn và chân nối đất ở hai bên của bộ chuyển đổi mức với các chân mô-đun nguồn tương ứng. Toàn bộ mô-đun này sau đó hoạt động giống như một 'đường truyền' cho tất cả logic và nguồn cung cấp cho ESP-01.
Tôi đã sử dụng hai bộ chuyển đổi giữa cho dữ liệu nối tiếp và hai bộ chuyển đổi bên ngoài cho tín hiệu điều khiển chuyển tiếp nhưng bạn sử dụng cái nào không quan trọng.
Nó không thực sự cần thiết với các mô-đun chuyển tiếp này để chạy một logic 5v vì chúng đang hoạt động THẤP nhưng nó chỉ hoạt động tốt vì vậy tôi đã làm điều đó.
Tôi đã sử dụng tiêu đề cái 4x2 để kết nối với mô-đun ESP. Điều này cho phép dễ dàng tải lên mã hoặc thay thế mô-đun.
Không phải trong hình trong sơ đồ là đầu vào 5V - Tôi đã đấu dây trực tiếp vào mô-đun rơle (xem hình thứ hai). Dây màu đen ở dưới cùng bên trái của hình ảnh là dữ liệu nối tiếp tắt vào bo mạch chính. Tôi đã sử dụng một phần của cáp mở rộng tai nghe 3,5 mm được che chắn chỉ để giúp giảm khả năng nhiễu đường truyền dữ liệu.
Mã 12f sử dụng SoftwareSerial thay vì nối tiếp phần cứng - Điều này cho phép mô-đun báo cáo trạng thái gỡ lỗi thông qua nối tiếp thông thường. Thay vào đó, kết nối thông qua chân 4 và 5. Tôi đã điều chỉnh cùng một tiêu đề để làm cho ESP12F trở thành một phích cắm hoán đổi cho ESP-01, chỉ cần hoán đổi các chân nối tiếp đó
Bước 7: Lập trình mô-đun
Mã được biên dịch dựa trên Arduino 1.8.1 với addon bo mạch ESP8266 và PubSubClient 2.6.0 (là Thư viện MQTT)
Sửa đổi mã theo yêu cầu của bạn và tải mã lên mô-đun ESP-01 và kết nối với máy. Hãy cẩn thận với hướng của các chân!
Cấu hình
Lựa chọn 1)
Chỉ dựa trên mã cơ sở trong zip. Khi mô-đun ESP khởi động lần đầu tiên, nó sẽ chuyển sang chế độ AP và đặt IP của nó thành 192.168.4.1. Sau đó, bạn có thể kết nối với mô-đun và thay đổi IP và kết nối với điểm truy cập của riêng bạn. Bạn cũng sẽ cần đặt IP cho máy của mình trong phạm vi đó vì không có DHCP trên mô-đun.
AP SSID mặc định là 'ESPSwitch' và mật khẩu là '12345678'
Nó vẫn ở chế độ AP trong 2 phút theo mặc định. Bạn có thể thay đổi cài đặt này trong 'global.h' - Nó được gọi là 'adminTimeout' và tính bằng mili giây. Tôi khuyên bạn nên thay đổi điều này thành mức thấp sau khi bạn có cấu hình hợp lệ trong EEPROM vì nó sẽ chỉ gây ra sự chậm trễ không cần thiết trong quá trình khởi động của thiết bị.
Lựa chọn 2)
Đây là chế độ mặc định cho mã mới hơn hỗ trợ kết nối 2 chiều, tùy chọn 1 không khả dụng. Bạn cũng có thể thay đổi cài đặt SSID / Mật khẩu mặc định trong tệp ino chính (tìm kiếm '// DEFAULT CONFIG') để nó sẽ tải các cài đặt đó vào EEPROM trong lần khởi động đầu tiên và thay đổi độ trễ của chế độ quản trị thành mức thấp trong 'global.h'. Điều này tránh phải kết nối lộn xộn với AP tạm thời.
Thiết bị sẽ tự động đặt id MQTT (và đường dẫn đăng ký) thành 4 chữ số cuối của số sê-ri mô-đun. Đường dẫn theo mặc định là ha / mod // #, hãy thay đổi khi bạn thấy phù hợp nhưng hãy đọc các chú thích trong mã để đảm bảo mảng thích hợp có độ dài chính xác.
Tôi làm điều này vì điều đó có nghĩa là tôi không phải tạo một ID duy nhất cho mọi mô-đun trên mạng của mình.
ID thiết bị hiển thị và máy chủ MQTT có thể được đặt thông qua trang máy chủ MQTT trên máy chủ web nội bộ
Bước 8: Làm cho nó thành công việc…
Các lệnh MQTT là
ha / mod / xxxx / 0 hoặc 1 = Chuyển đổi quyền lực
Bất kỳ chuỗi nào khác sẽ được coi như một lệnh và được gửi qua cổng nối tiếp. Tình trạng được báo cáo cho / ha / cà phê trong HEX
Với OpenHAB
coffeemachine.items
Number Coffee_Machine_Power "Power" {mqtt = "> [control: ha / mod / 8002 /: command: *: default]"} String Coffee_Machine_Status {mqtt = "<[control: ha / coffee: state: default]"}
Sơ đồ trang web
Mục nhóm = "Máy pha cà phê" {Switch item = Coffee_Machine_Power label = "Power" mappings = [1 = "Toggle"] Chuyển mục = Coffee_Machine_Cmd label = "" mappings = ["FA: 09" = "Nhỏ"] Chuyển mục = Coffee_Machine_Cmd label = "" mappings = ["FA: 0A" = "Large"] Chuyển mục = Coffee_Machine_Cmd label = "" mappings = ["FA: 04" = "Rinse"] Mục văn bản = Coffee_Status label = "Trạng thái [% s] "}
voicecontrol.rules
import org.openhab.model.script.actions. * import org.openhab.core.library.types. * import java.util. *
quy tắc "Quy tắc lệnh thoại"
khi Item VoiceCommand nhận được lệnh thì var String command = VoiceCommand.state.toString.toLowerCase logInfo ("Voice. Rec", "VoiceCommand đã nhận" + lệnh)
if (command.contains ("bật máy pha cà phê") || command.contains ("tắt máy pha cà phê")) {
sendCommand (Coffee_Machine_Power, 1)} if (command.contains ("pha cho tôi một ly cà phê nhỏ")) {sendCommand (Coffee_Machine_Cmd, "FA: 09")} if (command.contains ("pha cho tôi một ly cà phê nhỏ")) { sendCommand (Coffee_Machine_Cmd, "FA: 0A")} if (command.contains ("rửa máy pha cà phê")) {sendCommand (Coffee_Machine_Cmd, "FA: 04")}} end
Quy tắc (để diễn giải phản hồi HEX thành giá trị 'thực'):
quy tắc "Trạng thái Máy pha cà phê" khi Mục Coffee_Machine_Status nhận được bản cập nhật thì var String response = Coffee_Machine_Status.state.toString () if (response.indexOf ("ic:")> -1) {var String hexString = response.substring (3, 5)
var int num = (Integer.parseInt (hexString, 16));
var String binaryString = String.format ("% 8s", Integer.toBinaryString (num)). Replace ('', '0')
var int khayBit = binaryString.substring (0, 1)
var int tankBit = binaryString.substring (2, 3) var int HeatBit = binaryString.substring (7, 8) var int RiveBit = binaryString.substring (6, 7)
if (khayBit == "0") {
postUpdate (Coffee_Status, "Tray Thiếu")} if (tankBit == "1") {postUpdate (Coffee_Status, "Fill Tank")} if (washBit == "1") {postUpdate (Coffee_Status, "Press Rotary")} if (khayBit == "1" && tankBit == "0" && washingBit == "0") {postUpdate (Coffee_Status, "Ready")}
}
if (response == "Off") {postUpdate (Coffee_Status, "Off")} end
Bước 9: Sàng lọc / Todo
Đơn giản hóa thiết lập ban đầu kết nối với wifi - Đã xong. Từ bỏ ý tưởng về 'chế độ quản trị' vì nó gây khó chịu. Bây giờ chỉ cần nhập SSID và mật khẩu trong mã. Lưu vào EEPROM nếu bạn cập nhật / thay đổi qua giao diện web.
Mã mới hơn cũng hỗ trợ cập nhật OTA nhưng bạn sẽ cần nâng cấp EEPROM trên mô-đun ESP-01 để mã này hoạt động hoặc nhận xét các mục OTA tương ứng
Thêm mã để xử lý phản hồi từ máy và đọc trạng thái như không có khay, nền trống và bể chứa - Đã xong. Tôi đã thêm mã để đọc lại trạng thái và xuất bản lên ha / coffee. Đây chỉ là các câu trả lời thô và tôi vẫn đang làm việc để giải thích chúng nhưng cho đến nay tôi vẫn thiếu Khay và Thùng rỗng hoạt động. Nó sẽ thăm dò ý kiến của máy sau mỗi 9 giây khi bật và công bố phản hồi cho MQTT
Phản hồi ở dạng HEX nhưng các bit riêng lẻ chỉ ra các cảm biến
Thêm mã vào các trang web để điều khiển trực tiếp thông qua HTTP GET Commands.
Giải nhất Cuộc thi Internet of Things 2017
Đề xuất:
Máy bơm máy pha cà phê thông minh được điều khiển bằng cảm biến siêu âm Raspberry Pi & HC-SR04 và Cloud4RPi: 6 bước
Máy bơm máy pha cà phê thông minh được điều khiển bằng cảm biến siêu âm Raspberry Pi & HC-SR04 và Cloud4RPi: Về lý thuyết, mỗi khi bạn đến máy pha cà phê để lấy tách buổi sáng, chỉ có một trong hai mươi cơ hội là bạn sẽ phải đổ đầy nước xe tăng. Tuy nhiên, trong thực tế, có vẻ như máy móc bằng cách nào đó đã tìm ra cách để luôn đặt việc vặt này cho bạn. Các
EqualAir: Màn hình NeoPixel có thể đeo được Kích hoạt bởi Cảm biến Ô nhiễm Không khí: 7 Bước (có Hình ảnh)
EqualAir: Màn hình NeoPixel có thể đeo được Kích hoạt bởi Cảm biến Ô nhiễm Không khí: Mục đích của dự án là tạo ra một chiếc áo thun có thể mặc được hiển thị hình ảnh gợi liên tưởng khi ô nhiễm không khí vượt quá ngưỡng đã định. Đồ họa được lấy cảm hứng từ trò chơi cổ điển " máy cắt gạch ", trong đó chiếc xe giống như một mái chèo mà sp
JavaStation (Máy pha cà phê IoT hoàn toàn tự động nạp đầy tự động): 9 bước (có hình ảnh)
JavaStation (Máy pha cà phê IoT tự động hoàn toàn tự động): Mục tiêu của dự án này là tạo ra một máy pha cà phê được điều khiển bằng giọng nói hoàn toàn tự động, tự động nạp đầy nước và tất cả những gì bạn thực sự cần làm là thay thế những người khách quen và uống cà phê của bạn; )
Đồng hồ hoạt ảnh LED SMART được kết nối web với bảng điều khiển dựa trên web, máy chủ thời gian được đồng bộ hóa: 11 bước (có hình ảnh)
Đồng hồ hoạt hình LED thông minh được kết nối web với bảng điều khiển dựa trên web, máy chủ thời gian được đồng bộ hóa: Câu chuyện về chiếc đồng hồ này đã trở lại một chặng đường dài - hơn 30 năm. Cha tôi đã đi tiên phong trong ý tưởng này khi tôi chỉ mới 10 tuổi, rất lâu trước cuộc cách mạng đèn LED - trở lại khi đèn LED có độ sáng 1/1000 so với độ chói lóa hiện tại của chúng. Một sự thật
Quà tặng Valentine được kích hoạt bằng ánh sáng: 8 bước (có hình ảnh)
Quà tặng Valentine được kích hoạt bằng ánh sáng: Với ngày lễ tình nhân sắp đến gần, tôi đã có cảm hứng để thêm một số thứ bổ sung để làm cho món quà trở nên đặc biệt hơn một chút. Tôi đang thử nghiệm trình phát Mini với Arduino và tự hỏi liệu tôi có thể thêm cảm biến ánh sáng để nó phát bài hát cho m