Mục lục:

Máy pha cà phê được kích hoạt IoT: 9 bước (có hình ảnh)
Máy pha cà phê được kích hoạt IoT: 9 bước (có hình ảnh)

Video: Máy pha cà phê được kích hoạt IoT: 9 bước (có hình ảnh)

Video: Máy pha cà phê được kích hoạt IoT: 9 bước (có hình ảnh)
Video: Đại ca lớp 12A | Đào Nguyễn Ánh x Ngân Bello x @Tomchannelofficial97 | Nhạc chế | #shorts 2024, Tháng mười một
Anonim
Image
Image
Thiết bị cần thiết
Thiết bị cần thiết

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

Thiết bị cần thiết
Thiết bị cần thiết
Thiết bị cần thiết
Thiết bị cần thiết
Thiết bị cần thiết
Thiết 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

Giao thức Jura
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

Bỏ qua bảo hành
Bỏ qua bảo hành
Bỏ qua bảo hành
Bỏ qua bảo hành
Bỏ qua bảo hành
Bỏ qua bảo hành
Bỏ qua bảo hành
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

Đấu dây bên logic
Đấu dây bên logic
Đấu dây bên logic
Đấu dây bên logic
Đấu dây phía logic
Đấu dây phía 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

Lập trình mô-đun
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.

Cuộc thi Internet of Things 2017
Cuộc thi Internet of Things 2017
Cuộc thi Internet of Things 2017
Cuộc thi Internet of Things 2017

Giải nhất Cuộc thi Internet of Things 2017

Đề xuất: