Lập trình trực quan cho Sonoff Basic

Lập trình trực quan cho Sonoff Basic
Bài viết về cách tạo bộ điều khiển logic khả trình từ thiết bị giá rẻ của Trung Quốc. Một thiết bị như vậy sẽ được sử dụng cả trong tự động hóa gia đình và trong các lớp học thực hành về khoa học máy tính ở trường học.
Để tham khảo, theo mặc định, chương trình Sonoff Basic hoạt động với ứng dụng di động thông qua dịch vụ đám mây của Trung Quốc; sau khi sửa đổi được đề xuất, tất cả các tương tác tiếp theo với thiết bị này sẽ có thể thực hiện được trong trình duyệt.

Phần I. Kết nối Sonoff với dịch vụ MGT24

Bước 1: Tạo bảng điều khiển

Đăng ký trên trang web mgt24 (nếu chưa đăng ký) và đăng nhập bằng tài khoản của bạn.
Đăng nhậpLập trình trực quan cho Sonoff Basic

Để tạo bảng điều khiển cho thiết bị mới, hãy nhấp vào nút “+”.
Ví dụ về tạo một bảng điều khiểnLập trình trực quan cho Sonoff Basic

Sau khi bảng được tạo, nó sẽ xuất hiện trong danh sách bảng của bạn.

Trong tab “Cài đặt” của bảng đã tạo, hãy tìm các trường “ID thiết bị” và “Khóa ủy quyền”; trong tương lai, thông tin này sẽ được yêu cầu khi thiết lập thiết bị Sonoff.
Ví dụ về tabLập trình trực quan cho Sonoff Basic

Bước 2. Flash lại thiết bị

Sử dụng tiện ích XTCOM_UTIL tải xuống chương trình cơ sở PLC Sonoff cơ bản vào thiết bị, để làm được điều này, bạn sẽ cần bộ chuyển đổi USB-TTL. Đây hướng dẫn и hướng dẫn bằng video.

Bước 3. Thiết lập thiết bị

Cấp nguồn cho thiết bị, sau khi đèn LED sáng lên, nhấn nút và giữ cho đến khi đèn LED bắt đầu nhấp nháy định kỳ đều.
Lúc này sẽ xuất hiện một mạng wi-fi mới có tên “PLC Sonoff Basic”, hãy kết nối máy tính của bạn với mạng này.
Giải thích về chỉ báo LED

Chỉ báo LED
Tình trạng thiết bị

nhấp nháy đôi định kỳ
không có kết nối với bộ định tuyến

tỏa sáng liên tục
kết nối được thiết lập với bộ định tuyến

nhấp nháy đồng phục định kỳ
chế độ điểm truy cập wi-fi

dập tắt
Không có điện

Mở trình duyệt Internet và nhập dòng chữ “192.168.4.1” vào thanh địa chỉ, truy cập trang cài đặt mạng của thiết bị.

Điền vào các trường như sau:

  • “Tên mạng” và “Mật khẩu” (để liên kết thiết bị với bộ định tuyến wi-fi tại nhà của bạn).
  • “ID thiết bị” và “Khóa ủy quyền” (để cấp phép thiết bị trên dịch vụ MGT24).

Ví dụ về cài đặt thông số mạng của thiết bịLập trình trực quan cho Sonoff Basic

Lưu cài đặt và khởi động lại thiết bị.
Здесь hướng dẫn bằng video.

Bước 4. Kết nối cảm biến (tùy chọn)

Phần sụn hiện tại hỗ trợ tối đa bốn cảm biến nhiệt độ ds18b20. Đây hướng dẫn bằng video để lắp đặt các cảm biến. Rõ ràng, bước này sẽ khó khăn nhất vì nó đòi hỏi cánh tay thẳng và bàn ủi hàn.

Mục II. Lập trình trực quan

Bước 1: Tạo tập lệnh

Được sử dụng làm môi trường lập trình Chặn, môi trường dễ học nên bạn không cần phải là lập trình viên mới có thể tạo các tập lệnh đơn giản.

Tôi đã thêm các khối chuyên dụng để ghi và đọc thông số thiết bị. Bất kỳ tham số nào cũng được truy cập theo tên. Đối với các tham số của thiết bị từ xa, tên ghép được sử dụng: “parameter@device”.
Danh sách tùy chọn thả xuốngLập trình trực quan cho Sonoff Basic

Kịch bản ví dụ về bật và tắt tải theo chu kỳ (1Hz):
Lập trình trực quan cho Sonoff Basic

Một ví dụ về tập lệnh đồng bộ hóa hoạt động của hai thiết bị riêng biệt. Cụ thể, rơle của thiết bị đích lặp lại hoạt động của rơle của thiết bị từ xa.
Lập trình trực quan cho Sonoff Basic

Kịch bản cho bộ điều nhiệt (không có độ trễ):
Lập trình trực quan cho Sonoff Basic

Để tạo các tập lệnh phức tạp hơn, bạn có thể sử dụng các biến, vòng lặp, hàm (có đối số) và các cấu trúc khác. Tôi sẽ không mô tả chi tiết tất cả những điều này ở đây; trên mạng đã có khá nhiều rồi. tài liệu giáo dục về Blockly.

Bước 2: Thứ tự của tập lệnh

Kịch bản chạy liên tục và ngay khi kết thúc, nó sẽ bắt đầu lại. Trong trường hợp này, có hai khối có thể tạm dừng tập lệnh là “delay” và “pause”.
Khối "độ trễ" được sử dụng cho độ trễ mili giây hoặc micro giây. Khối này duy trì nghiêm ngặt khoảng thời gian, chặn hoạt động của toàn bộ thiết bị.
Khối "tạm dừng" được sử dụng cho độ trễ thứ hai (hoặc ít hơn) và nó không chặn việc thực thi các quy trình khác trong thiết bị.
Nếu bản thân tập lệnh chứa một vòng lặp vô hạn, phần thân của vòng lặp đó không chứa “tạm dừng”, thì trình thông dịch sẽ bắt đầu một khoảng dừng ngắn một cách độc lập.
Nếu ngăn xếp bộ nhớ được phân bổ đã cạn kiệt, trình thông dịch sẽ ngừng thực thi tập lệnh ngốn điện như vậy (hãy cẩn thận với các hàm đệ quy).

Bước 3: Gỡ lỗi tập lệnh

Để gỡ lỗi tập lệnh đã được tải vào thiết bị, bạn có thể chạy theo dõi chương trình từng bước. Điều này có thể cực kỳ hữu ích khi hành vi của kịch bản hóa ra khác với những gì tác giả dự định. Trong trường hợp này, việc truy tìm cho phép tác giả nhanh chóng tìm ra nguồn gốc của vấn đề và sửa lỗi trong tập lệnh.

Kịch bản tính giai thừa ở chế độ gỡ lỗi:
Lập trình trực quan cho Sonoff Basic

Công cụ gỡ lỗi rất đơn giản và bao gồm ba nút chính: “bắt đầu”, “tiến một bước” và “dừng” (chúng ta cũng đừng quên chế độ gỡ lỗi “enter” và “exit”). Ngoài việc theo dõi từng bước, bạn có thể đặt điểm dừng trên bất kỳ khối nào (bằng cách nhấp vào khối).
Để hiển thị giá trị hiện tại của các thông số (cảm biến, rơle) trên màn hình, hãy sử dụng khối “in”.
Здесь video tổng quan về việc sử dụng trình gỡ lỗi.

Phần dành cho người tò mò. Có gì dưới mui xe?

Để các tập lệnh hoạt động trên thiết bị mục tiêu, một trình thông dịch mã byte và trình biên dịch mã với 38 lệnh đã được phát triển. Mã nguồn của Blockly có một trình tạo mã chuyên dụng được tích hợp sẵn để chuyển đổi các khối trực quan thành hướng dẫn lắp ráp. Sau đó, chương trình biên dịch mã này được chuyển đổi thành mã byte và chuyển đến thiết bị để thực thi.
Kiến trúc của máy ảo này khá đơn giản và không có điểm cụ thể nào để mô tả nó, trên Internet bạn sẽ tìm thấy nhiều bài viết về thiết kế các máy ảo đơn giản nhất.
Tôi thường phân bổ 1000 byte cho ngăn xếp máy ảo của mình, đủ để dự phòng. Tất nhiên, các phép đệ quy sâu có thể làm cạn kiệt bất kỳ ngăn xếp nào, nhưng chúng khó có thể có bất kỳ ứng dụng thực tế nào.

Mã byte kết quả khá nhỏ gọn. Ví dụ: mã byte để tính cùng một giai thừa chỉ có 49 byte. Đây là hình thức trực quan của nó:
Lập trình trực quan cho Sonoff Basic

Và đây là chương trình lắp ráp của anh ấy:

shift -1
ldi 10
call factorial, 1
print
exit
:factorial
ld_arg 0
ldi 1
gt
je 8
ld_arg 0
ld_arg 0
ldi 1
sub
call factorial, 1
mul
ret
ldi 1
ret

Nếu hình thức biểu diễn lắp ráp không có bất kỳ giá trị thực tế nào, thì ngược lại, tab “javascrit” mang lại giao diện quen thuộc hơn các khối trực quan:

function factorial(num) {
  if (num > 1) {
    return num + factorial(num - 1);
  }
  return 1;
}

window.alert(factorial(10));

Về hiệu suất. Khi tôi chạy tập lệnh flasher đơn giản nhất, tôi nhận được sóng vuông 47 kHz trên màn hình máy hiện sóng (ở tốc độ xung nhịp của bộ xử lý là 80 MHz).
Lập trình trực quan cho Sonoff BasicLập trình trực quan cho Sonoff Basic
Tôi nghĩ đây là một kết quả tốt, ít nhất tốc độ này nhanh hơn gần mười lần so với lấy и Tiếng Espruino.

Phần cuối cùng

Tóm lại, tôi sẽ nói rằng việc sử dụng tập lệnh cho phép chúng ta không chỉ lập trình logic hoạt động của một thiết bị riêng biệt mà còn giúp kết nối nhiều thiết bị thành một cơ chế duy nhất, trong đó một số thiết bị ảnh hưởng đến hành vi của những thiết bị khác.
Tôi cũng lưu ý rằng phương pháp lưu trữ tập lệnh đã chọn (trực tiếp trong chính thiết bị chứ không phải trên máy chủ) sẽ đơn giản hóa việc chuyển đổi các thiết bị đã hoạt động sang một máy chủ khác, chẳng hạn như sang Raspberry tại nhà, tại đây hướng dẫn.

Chỉ vậy thôi, tôi sẽ rất vui khi được nghe lời khuyên và những lời phê bình mang tính xây dựng.

Nguồn: www.habr.com

Thêm một lời nhận xét