Turinys:

Virtualių durų mygtukas naudojant „Mongoose OS“ir „XinaBox“: 10 žingsnių
Virtualių durų mygtukas naudojant „Mongoose OS“ir „XinaBox“: 10 žingsnių

Video: Virtualių durų mygtukas naudojant „Mongoose OS“ir „XinaBox“: 10 žingsnių

Video: Virtualių durų mygtukas naudojant „Mongoose OS“ir „XinaBox“: 10 žingsnių
Video: 25 Playstation 4 Triukai ir Gudrybės! Naujokams ir ne tik. 2024, Lapkritis
Anonim
Virtualių durų mygtukas naudojant „Mongoose OS“ir „XinaBox“
Virtualių durų mygtukas naudojant „Mongoose OS“ir „XinaBox“

Naudodami „Mongoose“ir kai kuriuos „xChips“, sukūrėme virtualų durų mygtuką. Vietoj fizinio mygtuko, skirto darbuotojams, jie dabar gali tai padaryti patys.

1 žingsnis: šiame projekte naudojami dalykai

Techninės įrangos komponentai

  • XinaBox CW02 x 1 Vietoj to galite naudoti CW01
  • „XinaBox“IP01 x 1
  • „XinaBox PU01 x 1“Jei neketinate užprogramuoti daugiau modulių, galite tiesiog naudoti maitinimo šaltinį IP01.
  • XinaBox OC03 x 1
  • XinaBox XC10 x 1 „Klijai“, dėl kurių viskas veikia!

Programinės įrangos programos ir internetinės paslaugos

„Mongoose OS“Tikrai nuostabus ir lengvas daiktų interneto kūrimo įrankis … ir nemokamai

2 žingsnis: istorija

Mūsų priėmime mūsų darbuotojai turėjo būti sujaudinti, todėl nusprendėme paimti savo vaistus ir sukurti virtualų mygtuką. Šis kodas leidžia jums siųsti RPC (nuotolinės procedūros skambutį), kuris atrodo kaip įprastas HTTP skambutis iš bet kurios naršyklės. Mes naudojome „Mongoose“, nes su juo tikrai lengva ir greita dirbti, o jame yra įmontuotas OTA („Over The Air“) kodo atnaujinimas, reiškia, kad galėtume įdiegti savo technologiją ir vis tiek laikui bėgant atnaujinti programinę-aparatinę įrangą, neišardydami jos perprogramuoti.

3 žingsnis: Paruošimas

  • Įdiekite „Mongoose-OS“: tiesiai į priekį, tiesiog atlikite šiuos labai paprastus savo OS veiksmus čia:
  • Spustelėkite IP01 ir CW02 kartu naudodami XC10 jungtį. Žiūrėkite paveikslėlį žemiau:
Vaizdas
Vaizdas
  • Įdėkite IP01 į USB prievadą
  • Įsitikinkite, kad IP01 jungikliai yra B ir DCE padėtyse.
  • Iš komandinės eilutės paleiskite „Mongoose-OS“į CW02. Kaip šitas:

cd

eksportuoti MOS_PORT = bin/mos flash esp32

Taip pat galite tiesiog įeiti į konsolę ir atlikti daugumą iš ten, tačiau čia tai darome iš komandinės eilutės, todėl darbas greitai atliekamas. Norėdami įeiti į konsolę:

cd

bin/mos

4 žingsnis: konfigūravimas

Nors šiuos veiksmus galima atlikti vienu ilgu pareiškimu, mes nusprendėme juos padalyti, o kadangi jūs bet kokiu atveju juos nukopijuosite ir įklijuosite, tai palengvins:

Nustatykite „I2C“kaiščius į „xChips“standartą:

bin/mos konfigūracijos rinkinys i2c.scl_gpio = 14 i2c.sda_gpio = 2

Prijunkite CW02 prie „WiFi“:

bin/mos wifi

Atjunkite „WiFi“AP režimu ir nustatykite domeno pavadinimą, kad galėtumėte prisijungti prie CW01 pagal pagrindinio kompiuterio pavadinimą, o ne rasti teisingą IP adresą. Tai veiks tik tuo atveju, jei:

  • Jūs atjungiate „WiFi“AP režimu, kaip tai darome žemiau.
  • Naudokite „Mac“arba įdiekite „Bonjour“savo „Windows“kompiuteryje.

bin/mos skambinkite konfig. Nustatykite '{"config": {"wifi": {"ap": {"enable": false}}}}"

bin/mos skambinkite Config. Set '{"config": {"dns_sd": {"enable": true}}} "bin/mos skambinti Config. Set' {" config ": {" dns_sd ": {" host- pavadinimas ":" xinabox_switch "}}}

Ir galiausiai turite iš naujo paleisti CW02, kad konfigūracija veiktų

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

Labai greitai po to turėtumėte sugebėti pateikti ping xinabox_switch.local

5 žingsnis: diegimas

Atjunkite IP01 nuo kompiuterio ir surinkite grandinę pagal viršutinį vaizdą.

Prijunkite PU01 (arba jei nusprendėte laikytis IP01) prie USB maitinimo šaltinio. Prijunkite laidus lygiagrečiai nuo esamo jungiklio (palikite tai, tik tuo atveju) prie OC03 (poliškumas nesvarbu). Žr. Fritzing piešinį.

Kai įjungsite maitinimą ir pamatysite, kad iš tikrųjų kalbate su savo „xCW02“, ką daryti, kai nuskaitote autobusą, dar žinomą kaip I2C magistralė:

bin/mos --port ws: //xinabox_switch.local/rpc call I2C. Scan

Jei viskas veikia ir jūsų xOC03 yra tinkamai įdiegtas, turėtumėte pamatyti skaičių „56“. Tai yra OC03 I2C adresas dešimtainiu skaičiumi (šešioliktainis yra 0x38).

6 žingsnis: programavimas

  • Dabar atidarykite „Mongoose“konsolės režimu, žr. Jis turėtų būti atidarytas su langu, kuriame jis prašo prievado numerio, įveskite: ws: //xinabox_switch.local/rpc
  • Jis bendraus su „CW02“ir supras, kad įrenginys jau mirksi ir prijungtas prie „WiFi“, todėl bus tik 3 žymės. Uždarykite langą ir atnaujinkite failų sąrašą
  • Nukopijuokite ir įklijuokite žemiau esantį kodą į init.js, tada spustelėkite išsaugoti+perkrauti
  • Jūsų grandinė dabar užprogramuota.

7 žingsnis: išbandykite

Dabar įgyvendinote kitą RPC skambutį, todėl iš savo terminalo galite įvesti:

bin/mos --port ws: //xinabox_switch.local/rpc call Switch

… ir jūsų garsinis signalas turėtų veikti 2 sekundes. Taip pat galite tai padaryti beveik iš bet kurios naršyklės:

xinabox_switch.local/rpc/Switch

… Su tuo pačiu poveikiu.

8 žingsnis: Kitas žingsnis

Galite naudoti bet kurį įrankį, kuris gali suaktyvinti URL. Aš tai darau iš „Apple“programos, vadinamos „Workflow“, kuri leidžia tai padaryti iš savo telefono arba kaip „Apple Watch“komplikacija, tačiau yra daug kitų variantų. Čia yra mano darbo eigos scenarijus, tačiau su koduotu IP adresu: Mėgaukitės!

Vaizdas
Vaizdas

„Apple“programa: darbo eiga - čia su koduotu IP adresu

9 žingsnis: schemos

Signalinė grandinė Įdiekite OC03 lygiagrečiai su esamu mygtuku.

Atsisiųskite jį čia.

OC03 grandinė Įdiekite OC03 lygiagrečiai su esamu mygtuku.

Atsisiųskite jį čia.

Vaizdas
Vaizdas

10 žingsnis: kodas

init.js JavaScript Jūsų pagrindinis ir vienintelis šio projekto kodas.

apkrova ('api_config.js');

apkrova ('api_gpio.js'); apkrova ('api_i2c.js'); apkrova ('api_net.js'); apkrova ('api_sys.js'); įkelti ('api_timer.js'); apkrova ("api_rpc.js"); tegul led = Cfg.get ('pins.led'); tegul adr = 0x38; tegul autobusas = I2C.get (); I2C.writeRegB (magistralė, adr, 3, 0); I2C.writeRegB (magistralė, adr, 1, 0); / * išjunkite, kad būtumėte tikri */ let delay = 2000; GPIO.set_mode (LED, GPIO. MODE_OUTPUT); RPC.addHandler („Switch“, funkcija (args) {GPIO.toggle (led); I2C.writeRegB (magistralė, adr, 3, 0); / * tuo atveju, jei OC03 vėl bus prijungtas * / I2C.writeRegB (magistralė, adr, 1, 1); Timer.set (delay, false, function () {GPIO.toggle (led); I2C.writeRegB (bus, adr, 1, 0);}, null); return true;});

Rekomenduojamas: