Button ng Virtual na Pinto Gamit ang Mongoose OS at XinaBox: 10 Hakbang
Button ng Virtual na Pinto Gamit ang Mongoose OS at XinaBox: 10 Hakbang
Anonim
Button ng Virtual na Pinto Gamit ang Mongoose OS at XinaBox
Button ng Virtual na Pinto Gamit ang Mongoose OS at XinaBox

Gamit ang Mongoose at ilang xChip, gumawa kami ng isang virtual na pindutan ng pintuan. Sa halip na isang pisikal na pindutan upang buzz ang mga tauhan, maaari na nila itong gawin mismo.

Hakbang 1: Mga Bagay na Ginamit sa Project na Ito

Mga bahagi ng hardware

  • XinaBox CW02 x 1 Maaari mong gamitin ang CW01 sa halip
  • XinaBox IP01 x 1
  • XinaBox PU01 x 1 Maaari mo lamang gamitin ang IP01 para sa lakas, kung hindi mo balak na mag-program ng higit pang mga module.
  • XinaBox OC03 x 1
  • XinaBox XC10 x 1 Ang "pandikit" na nagpapagana sa lahat!

Mga software app at serbisyong online

Mongoose OS Talagang kahanga-hangang at madaling IoT tool sa pag-unlad … at libre

Hakbang 2: Kwento

Sa aming pagtanggap ang aming tauhan ay kailangang ma-buzz, kaya nagpasya kaming kumuha ng aming sariling gamot at lumikha ng isang virtual na pindutan. Pinapayagan ka ng code na ito na magpadala ng isang RPC (Remote Procedure Call), na mukhang isang normal na HTTP na tawag mula sa anumang browser. Ginamit namin ang Mongoose, dahil ito ay talagang madali at mabilis na magtrabaho kasama at ang built-in na pag-update ng code ng OTA (Over The Air), nangangahulugang maaari naming mai-install ang aming tech at pa rin sa paglipas ng panahon ay i-upgrade ang firmware, nang hindi naalis ito para sa muling pag-program.

Hakbang 3: Paghahanda

  • I-install ang Mongoose-OS: Straight forward, sundin lamang ang mga napakadaling hakbang para sa iyong OS dito:
  • Mag-click sa IP01 at sa CW02 nang magkasama gamit ang isang XC10 konektor. Tingnan ang imahe sa ibaba:
Larawan
Larawan
  • Ipasok ang IP01 sa iyong USB port
  • Tiyaking ang mga switch ng IP01 ay nasa posisyon B at DCE.
  • I-flash ang Mongoose-OS sa CW02 mula sa iyong linya ng utos. Ganito:

cd

i-export ang MOS_PORT = bin / mos flash esp32

Maaari mo ring ipasok ang console at gawin ang karamihan mula doon, ngunit narito namin ito mula sa linya ng utos, kaya't mabilis na natapos ang trabaho. Upang ipasok ang console:

cd

bin / mos

Hakbang 4: Pag-configure

Habang ang mga hakbang na ito ay maaaring gawin sa isang mahabang pahayag, napagpasyahan naming paghiwalayin ang mga ito, at dahil makokopya at mai-paste mo sila kahit papaano, mapadali:

Itakda ang mga I2C pin sa pamantayan ng xChip:

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

Ikonekta ang iyong CW02 sa iyong WiFi:

bin / mos wifi

Idiskonekta ang WiFi sa AP mode at mag-set up ng isang domain name, upang makakonekta ka sa CW01 sa pamamagitan ng hostname sa halip na hanapin ang tamang IP address. Gagana lamang ito kung:

  • Idiskonekta mo ang WiFi sa AP mode tulad ng ginagawa namin sa ibaba.
  • Gumamit ng alinman sa Mac o i-install ang Bonjour sa iyong Windows machine.

tawagan ang bin / mos Config. Set '{"config": {"wifi": {"ap": {"paganahin": false}}}}'

tawagan / tawagan ang Config. Set '{"config": {"dns_sd": {"paganahin": true}}}' bin / mos tawagan ang Config. Set '{"config": {"dns_sd": {"host- pangalan ":" xinabox_switch "}}}

At sa wakas kailangan mong i-reboot ang CW02 upang gumana ang config

tawagan ang bin / mos na Config. Save '{"reboot": true}'

Napakabilis pagkatapos nito dapat mong ma-ping xinabox_switch.local

Hakbang 5: Pag-install

I-unplug ang IP01 mula sa iyong computer at tipunin ang isang circuit ayon sa nangungunang imahe.

I-plug ang PU01 (o kung nagpasya kang manatili sa IP01) sa isang mapagkukunan ng USB power. Ikonekta ang mga wire na parallel mula sa iyong mayroon nang switch (iwanan iyon, kung sakali) sa OC03 (hindi mahalaga ang polarity). Tingnan ang pagguhit ng Fritzing.

Kapag napagana at upang makita na talagang nakikipag-usap ka sa iyong xCW02, paano ang pag-scan sa BUS, aka ang I2C bus:

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

Kung gumagana ang lahat at ang iyong xOC03 ay na-install nang tama, dapat mong makita ang isang numerong '56' na ibabalik. Iyon ang I2C address ng OC03 sa decimal (sa hex ito ay 0x38).

Hakbang 6: Programming

  • Ngayon buksan ang Mongoose sa console mode, tingnan sa itaas. Dapat itong buksan sa isang Window kung saan humihingi ito ng isang numero ng port, ipasok ang: ws: //xinabox_switch.local/rpc
  • Makikipag-usap ito sa CW02, at mapagtanto na ang unit ay na-flash na at konektado sa WiFi, kaya bibigyan lamang nito ang 3 mga marka ng pag-check. Isara ang window at i-refresh ang listahan ng file
  • Kopyahin at i-paste ang code sa ibaba sa init.js, at mag-click sa i-save + reboot
  • Naka-program na ngayon ang circuit mo.

Hakbang 7: Pagsubok

Nagpatupad ka na ngayon ng isa pang tawag sa RPC kaya mula sa iyong terminal ay maaari kang magpasok:

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

… at ang iyong buzzer ay dapat pumunta para sa 2 sec. Maaari mo lamang itong gawin mula sa - halos - anumang browser:

xinabox_switch.local/rpc/Switch

… na may parehong epekto.

Hakbang 8: Susunod na Hakbang

Maaari kang gumamit ng anumang tool na maaaring mag-burn ng isang URL. Ginagawa ko ito mula sa isang Apple App na tinatawag na Workflow, na pinapayagan akong gawin ito mula sa aking telepono o bilang isang komplikasyon mula sa aking Apple Watch, ngunit maraming iba pang mga pagpipilian doon. Narito ang aking script ng Workflow, ngunit may hardcoded IP address: Masiyahan!

Larawan
Larawan

Apple App: Workflow - dito kasama ang hardcoded IP address

Hakbang 9: Mga Skematika

Buzzer Circuit I-install ang OC03 kahanay sa umiiral na pindutan ng push.

I-download ito dito.

OC03 Circuit I-install ang OC03 kahanay sa umiiral na pindutan ng push.

I-download ito dito.

Larawan
Larawan

Hakbang 10: Code

init.js JavaScript Ang iyong pangunahing at tanging code para sa proyektong ito.

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 ('pins.led'); hayaan ang adr = 0x38; hayaan ang bus = I2C.get (); I2C.writeRegB (bus, adr, 3, 0); I2C.writeRegB (bus, adr, 1, 0); / * patayin upang matiyak lamang * / hayaan ang pagkaantala = 2000; GPIO.set_mode (led, GPIO. MODE_OUTPUT); RPC.addHandler ('Switch', function (args) {GPIO.toggle (led); I2C.writeRegB (bus, adr, 3, 0); / * sakaling magkonektang muli ang OC03 * / I2C.writeRegB (bus, adr, 1, 1); Timer.set (pagkaantala, maling, pagpapaandar () {GPIO.toggle (led); I2C.writeRegB (bus, adr, 1, 0);}, null); return true;});