Mục lục:

Nút cửa ảo sử dụng Mongoose OS và XinaBox: 10 bước
Nút cửa ảo sử dụng Mongoose OS và XinaBox: 10 bước

Video: Nút cửa ảo sử dụng Mongoose OS và XinaBox: 10 bước

Video: Nút cửa ảo sử dụng Mongoose OS và XinaBox: 10 bước
Video: [Nodejs] Hướng dẫn cài đặt và sử dụng mongoose đơn giản | Hoàng Quân - Lập trình siêu tốc 2024, Tháng mười một
Anonim
Nút cửa ảo sử dụng Mongoose OS và XinaBox
Nút cửa ảo sử dụng Mongoose OS và XinaBox

Sử dụng Mongoose và một số xChips, chúng tôi đã tạo một nút cửa ảo. Thay vì một nút vật lý để thông báo cho nhân viên, giờ đây họ có thể tự làm việc đó.

Bước 1: Những thứ được sử dụng trong dự án này

Các thành phần phần cứng

  • XinaBox CW02 x 1 Bạn có thể sử dụng CW01 để thay thế
  • XinaBox IP01 x 1
  • XinaBox PU01 x 1 Bạn chỉ có thể sử dụng IP01 để cấp nguồn, nếu bạn không có ý định lập trình thêm mô-đun.
  • XinaBox OC03 x 1
  • XinaBox XC10 x 1 "Chất keo" làm cho tất cả hoạt động!

Ứng dụng phần mềm và dịch vụ trực tuyến

Mongoose OS Công cụ phát triển IoT thực sự tuyệt vời và dễ dàng… và miễn phí

Bước 2: Câu chuyện

Tại quầy lễ tân của chúng tôi, nhân viên của chúng tôi cần được chú ý, vì vậy chúng tôi quyết định lấy thuốc của riêng mình và tạo một nút ảo. Mã này cho phép bạn gửi RPC (Cuộc gọi thủ tục từ xa), giống như một cuộc gọi HTTP bình thường từ bất kỳ trình duyệt nào. Chúng tôi đã sử dụng Mongoose, vì nó thực sự dễ dàng và nhanh chóng và nó được tích hợp sẵn bản cập nhật mã OTA (Over The Air), có nghĩa là chúng tôi có thể cài đặt công nghệ của mình và vẫn nâng cấp phần sụn theo thời gian mà không cần phổ biến nó để lập trình lại.

Bước 3: Chuẩn bị

  • Cài đặt Mongoose-OS: Về phía trước, chỉ cần làm theo các bước rất dễ dàng cho hệ điều hành của bạn tại đây:
  • Nhấp vào IP01 và CW02 cùng nhau bằng cách sử dụng đầu nối XC10. Xem hình ảnh bên dưới:
Hình ảnh
Hình ảnh
  • Cắm IP01 vào cổng USB của bạn
  • Đảm bảo các công tắc IP01 ở vị trí B và DCE.
  • Flash Mongoose-OS sang CW02 từ dòng lệnh của bạn. Như thế này:

đĩa CD

export MOS_PORT = bin / mos flash esp32

Bạn cũng có thể chỉ cần vào bảng điều khiển và thực hiện hầu hết từ đó, nhưng ở đây chúng tôi thực hiện từ dòng lệnh, vì vậy công việc được thực hiện nhanh chóng. Để vào bảng điều khiển:

đĩa CD

bin / mos

Bước 4: Cấu hình

Mặc dù các bước này có thể được thực hiện trong một bản tuyên bố dài, nhưng chúng tôi quyết định tách chúng ra và vì bạn sẽ sao chép và dán chúng bằng mọi cách, hãy làm cho nó dễ dàng:

Đặt các chân I2C thành tiêu chuẩn xChips:

bin / mos config-set i2c.scl_gpio = 14 i2c.sda_gpio = 2

Kết nối CW02 với WiFi của bạn:

bin / mos wifi

Ngắt kết nối WiFi ở chế độ AP và thiết lập tên miền, vì vậy bạn có thể kết nối với CW01 bằng tên máy chủ thay vì tìm địa chỉ IP chính xác. Điều này sẽ chỉ hoạt động nếu:

  • Bạn ngắt kết nối WiFi ở chế độ AP như chúng tôi làm dưới đây.
  • Sử dụng máy Mac hoặc cài đặt Bonjour trên máy Windows của bạn.

bin / mos call Config. Đặt '{"config": {"wifi": {"ap": {"enable": false}}}}'

bin / mos call Config. Set '{"config": {"dns_sd": {"enable": true}}}' bin / mos call Config. Set '{"config": {"dns_sd": {"host- tên ":" xinabox_switch "}}}

Và cuối cùng bạn phải khởi động lại CW02 để cấu hình hoạt động

bin / mos call Config. Save '{"reboot": true}'

Rất nhanh sau đó, bạn sẽ có thể ping xinabox_switch.local

Bước 5: Cài đặt

Rút IP01 khỏi máy tính của bạn và lắp ráp mạch theo hình ảnh trên cùng.

Cắm PU01 (hoặc nếu bạn quyết định gắn với IP01) vào nguồn điện USB. Kết nối dây song song từ công tắc hiện có của bạn (để đó, chỉ trong trường hợp) với OC03 (phân cực không quan trọng). Xem bản vẽ Fritzing.

Sau khi được cấp nguồn và để thấy rằng bạn đang thực sự nói chuyện với xCW02 của mình, còn việc quét BUS, hay còn gọi là bus I2C:

bin / mos --port ws: //xinabox_switch.local/rpc gọi I2C. Scan

Nếu tất cả đều hoạt động và xOC03 của bạn được cài đặt đúng cách, bạn sẽ thấy số '56' được trả về. Đó là địa chỉ I2C của OC03 ở dạng thập phân (trong hệ thập lục phân là 0x38).

Bước 6: Lập trình

  • Bây giờ hãy mở Mongoose ở chế độ giao diện điều khiển, xem ở trên. Nó sẽ mở bằng một Cửa sổ nơi nó yêu cầu số cổng, nhập: ws: //xinabox_switch.local/rpc
  • Nó sẽ giao tiếp với CW02 và nhận ra rằng thiết bị đã được flash và kết nối với WiFi, vì vậy nó sẽ chỉ đưa ra 3 dấu kiểm. Đóng cửa sổ và làm mới danh sách tệp
  • Sao chép và dán mã bên dưới vào init.js và nhấp vào lưu + khởi động lại
  • Mạch của bạn bây giờ đã được lập trình.

Bước 7: Kiểm tra

Bây giờ bạn đã thực hiện một cuộc gọi RPC khác để từ thiết bị đầu cuối của bạn, bạn có thể nhập:

bin / mos --port ws: //xinabox_switch.local/rpc Chuyển đổi cuộc gọi

… Và bộ rung của bạn sẽ hoạt động trong 2 giây. Bạn cũng có thể làm điều đó từ - hầu như - bất kỳ trình duyệt nào:

xinabox_switch.local/rpc/Switch

… Với cùng một hiệu ứng.

Bước 8: Bước tiếp theo

Bạn có thể sử dụng bất kỳ công cụ nào có thể kích hoạt một URL. Tôi làm điều đó từ một Ứng dụng Apple có tên là Workflow, cho phép tôi làm điều đó từ điện thoại của mình hoặc một phần phức tạp từ Apple Watch của tôi, nhưng có nhiều tùy chọn khác ngoài đó. Đây là tập lệnh Dòng công việc của tôi, nhưng với địa chỉ IP được mã hóa cứng: Hãy tận hưởng!

Hình ảnh
Hình ảnh

Ứng dụng Apple: Quy trình làm việc - tại đây với địa chỉ IP được mã hóa cứng

Bước 9: Sơ đồ

Mạch Buzzer Cài đặt OC03 song song với nút nhấn hiện có.

Tải về tại đây.

Mạch OC03 Cài đặt OC03 song song với nút nhấn hiện có.

Tải về tại đây.

Hình ảnh
Hình ảnh

Bước 10: Mã

init.js JavaScript Mã chính và duy nhất của bạn cho dự án này.

load ('api_config.js');

load ('api_gpio.js'); load ('api_i2c.js'); load ('api_net.js'); load ('api_sys.js'); load ('api_timer.js'); load ("api_rpc.js"); let led = Cfg.get ('pin.led '); cho adr = 0x38; let bus = I2C.get (); I2C.writeRegB (bus, adr, 3, 0); I2C.writeRegB (bus, adr, 1, 0); / * tắt chỉ để chắc chắn * / let delay = 2000; GPIO.set_mode (đã dẫn, GPIO. MODE_OUTPUT); RPC.addHandler ('Switch', function (args) {GPIO.toggle (led); I2C.writeRegB (bus, adr, 3, 0); / * trong trường hợp OC03 được kết nối lại * / I2C.writeRegB (bus, adr, 1, 1); Timer.set (delay, false, function () {GPIO.toggle (led); I2C.writeRegB (bus, adr, 1, 0);}, null); return true;});

Đề xuất: