Агуулгын хүснэгт:

Mongoose OS болон XinaBox ашиглан виртуал хаалганы товчлуур: 10 алхам
Mongoose OS болон XinaBox ашиглан виртуал хаалганы товчлуур: 10 алхам

Видео: Mongoose OS болон XinaBox ашиглан виртуал хаалганы товчлуур: 10 алхам

Видео: Mongoose OS болон XinaBox ашиглан виртуал хаалганы товчлуур: 10 алхам
Видео: Architecture Kata #1 - Разбор с экспертом [Как работает настоящий Solution Architect] #ityoutubersru 2024, Арваннэгдүгээр
Anonim
Mongoose OS болон XinaBox ашиглан виртуал хаалганы товчлуур
Mongoose OS болон XinaBox ашиглан виртуал хаалганы товчлуур

Mongoose болон зарим xChips ашиглан бид виртуал хаалганы товчлуурыг хийв. Ажилтнуудыг дуудах физик товчлуурын оронд тэд өөрсдөө үүнийг хийх боломжтой болжээ.

Алхам 1: Энэхүү төсөлд ашигласан зүйлс

Тоног төхөөрөмжийн бүрэлдэхүүн хэсгүүд

  • XinaBox CW02 x 1 Та оронд нь CW01 ашиглаж болно
  • XinaBox IP01 x 1
  • XinaBox PU01 x 1 Хэрэв та илүү олон модулийг програмчлахгүй бол IP01 -ийг ашиглах боломжтой.
  • XinaBox OC03 x 1
  • XinaBox XC10 x 1 Энэ бүгдийг бүтээдэг "цавуу"!

Програм хангамж, онлайн үйлчилгээ

Mongoose OS Үнэхээр гайхалтай бөгөөд хялбар IoT хөгжүүлэх хэрэгсэл … үнэгүй

Алхам 2: Түүх

Манай хүлээн авалт дээр манай ажилтнууд дуу чимээ гаргах шаардлагатай байсан тул бид өөрсдөө эм ууж, виртуал товчлуур үүсгэхээр шийдсэн бөгөөд энэ код нь ямар ч браузераас ердийн HTTP дуудлага шиг харагдах RPC (Алсын горимын дуудлага) илгээх боломжийг танд олгоно. Бид Mongoose-ийг ашигласан, учир нь түүнтэй ажиллахад үнэхээр хялбар бөгөөд хурдан бөгөөд OTA (Over The Air) кодын шинэчлэлт нь бидний технологийг суулгаж, дахин програмчлах зорилгоор задлахгүйгээр firmware-ийг шинэчлэх боломжтой гэсэн үг юм.

Алхам 3: Бэлтгэл ажил

  • Mongoose-OS-ийг суулгах: Шууд урагшлахын тулд энд үйлдлийн системээ ажиллуулах маш энгийн алхмуудыг дагана уу:
  • XC10 холбогчийг ашиглан IP01 ба CW02 дээр дарна уу. Доорх зургийг үзнэ үү:
Зураг
Зураг
  • IP01 -ийг USB порт руу оруулна уу
  • IP01 унтраалга нь B ба DCE байрлалд байгаа эсэхийг шалгаарай.
  • Mongoose-OS-ийг тушаалын мөрөөс CW02 руу асаана уу. Үүн шиг:

cd

экспорт MOS_PORT = bin/mos flash esp32

Та мөн консол руу орж, ихэнхийг нь тэндээс хийж болно, гэхдээ энд бид үүнийг тушаалын мөрөөс хийдэг тул ажил хурдан хийгддэг. Консол руу орохын тулд:

cd

бин/мос

Алхам 4: Тохиргоо

Эдгээр алхмуудыг нэг урт мэдэгдэлд хийх боломжтой байсан ч бид тэдгээрийг хуваахаар шийдсэн бөгөөд та ямар ч байсан хуулж аваад буулгах тул үүнийг хялбарчлах болно.

I2C тээглүүрийг xChips стандарт болгон тохируулна уу.

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

CW02 -ийг WiFi сүлжээнд холбоно уу.

bin/mos wifi

AP горимд WiFi -г салгаж, домэйн нэрийг тохируулснаар та зөв IP хаягийг олохын оронд CW01 -т хост нэрээр холбогдох боломжтой болно. Энэ нь зөвхөн дараах тохиолдолд л ажиллах болно:

  • Та доорх шиг AP горимд WiFi -г салгаж байна.
  • Mac ашиглах эсвэл Bonjour -ийг Windows машин дээрээ суулгаарай.

bin/mos дуудлага Config. Set '{"config": {"wifi": {"ap": {"enable": false}}}}'

bin/mos дуудлага Config. Set '{"config": {"dns_sd": {"enable": true}}}' bin/mos дуудлага Config. Set '{"config": {"dns_sd": {"host- нэр ":" xinabox_switch "}}}

Эцэст нь тохиргоог ажиллуулахын тулд та CW02 -ийг дахин ачаалах хэрэгтэй

bin/mos дуудлага Config. Save '{"reboot": true}'

Үүний дараа та xinabox_switch.local руу ping хийх боломжтой болно

Алхам 5: Суулгаж байна

IP01 -ийг компьютерээсээ салгаад дээд зургийн дагуу хэлхээг угсарна уу.

PU01 -ийг (эсвэл хэрэв та IP01 -тэй байхаар шийдсэн бол) USB тэжээлийн эх үүсвэрт холбоно уу. Одоо байгаа унтраалгаас утсыг OC03 -тэй зэрэгцээ холбоно уу (туйлшрал нь хамаагүй). Fritzing зургийг үзнэ үү.

Идэвхжүүлээд xCW02 -тойгоо ярьж байгааг харахын тулд I2C автобусны автобусыг сканнердах талаар юу хэлэх вэ?

bin/mos --port ws: //xinabox_switch.local/rpc I2C дуудлага хийх.

Хэрэв энэ бүхэн ажиллаж, таны xOC03 -ийг зөв суулгасан бол '56' гэсэн тоог буцаах ёстой. Энэ бол OC03 -ийн I2C хаяг аравтын бутархайгаар (зургаан өнцөгт 0x38).

Алхам 6: Програмчлал

  • Одоо Mongoose -ийг консол горимд нээнэ үү. Энэ нь портын дугаар хүссэн цонхоор нээгдэх ёстой: ws: //xinabox_switch.local/rpc
  • Энэ нь CW02 -тэй харилцах бөгөөд төхөөрөмж аль хэдийн анивчсан бөгөөд WiFi сүлжээнд холбогдсон болохыг ойлгох тул 3 шалгах тэмдэг өгөх болно. Цонхыг хааж файлуудын жагсаалтыг сэргээнэ үү
  • Доорх кодыг хуулж, init.js руу оруулаад save+reboot дээр дарна уу
  • Таны хэлхээ одоо програмчлагдсан байна.

Алхам 7: Туршилт

Та одоо өөр RPC дуудлага хийсэн тул терминалаасаа дараахийг оруулах боломжтой.

bin/mos --port ws: //xinabox_switch.local/rpc дуудлага солих

… таны дуугаралт 2 секундын турш явах ёстой. Та үүнийг бараг ямар ч хөтөч дээрээс хийж болно.

xinabox_switch.local/rpc/Switch

… ижил нөлөөтэй.

Алхам 8: Дараагийн алхам

Та URL хаях боломжтой ямар ч хэрэгслийг ашиглаж болно. Би үүнийг Workflow нэртэй Apple App -аас хийдэг бөгөөд энэ нь үүнийг утсаараа хийх эсвэл Apple Watch -аасаа хүндрэл учруулах боломжийг олгодог боловч өөр олон сонголтууд байдаг. Энд миний ажлын урсгалын скрипт байна, гэхдээ хатуу кодчилсон IP хаягтай: сайхан өнгөрүүлээрэй!

Зураг
Зураг

Apple App: Ажлын урсгал - энд хатуу кодчилсон IP хаяг байна

Алхам 9: Схем

Buzzer Circuit OC03 -ийг одоо байгаа товчлууртай зэрэгцүүлэн суулгана уу.

Эндээс татаж авна уу.

OC03 хэлхээ OC03 -ийг одоо байгаа товчлууртай зэрэгцүүлэн суулгана уу.

Эндээс татаж авна уу.

Зураг
Зураг

Алхам 10: Код

init.js JavaScript Энэ төслийн үндсэн ба цорын ганц код.

ачаалал ('api_config.js');

ачаалал ('api_gpio.js'); ачаалал ('api_i2c.js'); ачаалал ('api_net.js'); ачаалал ('api_sys.js'); ачаалал ('api_timer.js'); ачаалал ("api_rpc.js"); led = Cfg.get ('pins.led'); adr = 0x38; автобус = I2C.get (); I2C.writeRegB (автобус, адр, 3, 0); I2C.writeRegB (автобус, адр, 1, 0); / * итгэлтэй байхын тулд унтраагаарай */ let delay = 2000; GPIO.set_mode (удирдсан, GPIO. MODE_OUTPUT); RPC.addHandler ('Switch', function (args) {GPIO.toggle (led); I2C.writeRegB (bus, adr, 3, 0); / * OC03 дахин холбогдох тохиолдолд * / I2C.writeRegB (автобус, adr, 1, 1); Timer.set (саатал, худал, функц () {GPIO.toggle (удирдсан); I2C.writeRegB (автобус, адр, 1, 0);}, null); буцаах үнэн;});

Зөвлөмж болгож буй: