Sadržaj:

Dugme za virtualna vrata pomoću Mongoose OS -a i XinaBox -a: 10 koraka
Dugme za virtualna vrata pomoću Mongoose OS -a i XinaBox -a: 10 koraka

Video: Dugme za virtualna vrata pomoću Mongoose OS -a i XinaBox -a: 10 koraka

Video: Dugme za virtualna vrata pomoću Mongoose OS -a i XinaBox -a: 10 koraka
Video: 100 Misterioznih Vrata, ali Samo JEDNA su Izlaz 2024, Novembar
Anonim
Tipka za virtualna vrata pomoću Mongoose OS -a i XinaBox -a
Tipka za virtualna vrata pomoću Mongoose OS -a i XinaBox -a

Koristeći Mongoose i neke xChips -ove, napravili smo virtualno dugme za vrata. Umjesto fizičkog dugmeta za uključivanje osoblja, sada to mogu učiniti sami.

Korak 1: Stvari koje se koriste u ovom projektu

Hardverske komponente

  • XinaBox CW02 x 1 Umjesto toga možete koristiti CW01
  • XinaBox IP01 x 1
  • XinaBox PU01 x 1 Možete koristiti samo IP01 za napajanje, ako ne namjeravate programirati više modula.
  • XinaBox OC03 x 1
  • XinaBox XC10 x 1 "Ljepilo" koje čini da sve funkcionira!

Softverske aplikacije i mrežne usluge

Mongoose OS Zaista sjajan i jednostavan IoT razvojni alat … i besplatno

Korak 2: Priča

Na našoj recepciji je bilo potrebno obavijestiti naše osoblje, pa smo odlučili uzeti vlastite lijekove i stvoriti virtualno dugme. Ovaj kôd vam omogućava da pošaljete RPC (Remote Procedure Call), koji izgleda kao uobičajeni HTTP poziv iz bilo kojeg preglednika. Koristili smo Mongoose, jer je s njim vrlo jednostavno i brzo raditi, a ugrađeno je OTA (Over The Air) ažuriranje koda, što znači da bismo mogli instalirati našu tehnologiju i s vremenom nadograditi firmver, bez da ga rastavljamo radi ponovnog programiranja.

Korak 3: Priprema

  • Instalirajte Mongoose-OS: Odmah naprijed, samo slijedite ove vrlo jednostavne korake za vaš OS ovdje:
  • Pritisnite IP01 i CW02 zajedno pomoću XC10 konektora. Pogledajte sliku ispod:
Image
Image
  • Umetnite IP01 u svoj USB port
  • Uvjerite se da su prekidači IP01 u položaju B i DCE.
  • Prebacite Mongoose-OS na CW02 sa svoje komandne linije. Volim ovo:

cd

izvoz MOS_PORT = bin/mos flash esp32

Možete i samo ući u konzolu i odatle učiniti najviše, ali ovdje to radimo iz naredbenog retka, tako da je posao brzo obavljen. Da biste ušli u konzolu:

cd

bin/mos

Korak 4: Konfiguracija

Iako su ovi koraci mogli biti izvedeni u jednoj dugoj izjavi, odlučili smo ih podijeliti, a budući da biste ih u svakom slučaju kopirali i zalijepili, olakšajte:

Postavite I2C pinove na standard xChips:

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

Priključite svoj CW02 na WiFi:

bin/mos wifi

Odspojite WiFi u načinu AP -a i postavite naziv domene, tako da se možete povezati s CW01 prema imenu hosta umjesto da pronađete ispravnu IP adresu. Ovo će funkcionirati samo ako:

  • Isključujete WiFi u načinu rada AP kao što dolje radimo.
  • Ili koristite Mac ili instalirajte Bonjour na Windows mašinu.

bin/mos poziv Config. Set '{"config": {"wifi": {"ap": {"enable": false}}}}'

bin/mos poziva Config. Set '{"config": {"dns_sd": {"enable": true}}}' bin/mos poziva Config. Set '{"config": {"dns_sd": {"host- name ":" xinabox_switch "}}}

I na kraju morate ponovno pokrenuti CW02 da bi konfiguracija radila

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

Vrlo brzo nakon ovoga trebali biste biti u mogućnosti pingati xinabox_switch.local

Korak 5: Instaliranje

Isključite IP01 iz računara i sastavite kolo prema gornjoj slici.

Priključite PU01 (ili ako ste se odlučili držati IP01) u USB izvor napajanja. Spojite žice paralelno sa postojećeg prekidača (ostavite to, za svaki slučaj) na OC03 (polaritet nije bitan). Pogledajte crtež Fritzing.

Nakon uključivanja i da vidite da zapravo razgovarate sa svojim xCW02, šta je sa skeniranjem BUS -a, poznatim i kao I2C sabirnica:

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

Ako sve radi i vaš xOC03 je pravilno instaliran, trebali biste vidjeti da se vraća broj '56'. To je I2C adresa OC03 u decimalnom obliku (u heksadecimalnom iznosu je 0x38).

Korak 6: Programiranje

  • Sada otvorite Mongoose u načinu konzole, pogledajte gore. Trebalo bi se otvoriti s prozorom u kojem se traži broj porta, unesite: ws: //xinabox_switch.local/rpc
  • On će komunicirati s CW02 i shvatiti da je jedinica već bljeskala i spojena na WiFi, pa će samo dati 3 kvačice. Zatvorite prozor i osvježite listu datoteka
  • Kopirajte i zalijepite donji kôd u init.js, a zatim kliknite spremi+ponovno pokretanje
  • Vaše kolo je sada programirano.

Korak 7: Testirajte

Sada ste implementirali još jedan RPC poziv pa sa svog terminala možete unijeti:

bin/mos --port ws: //xinabox_switch.local/rpc Prekidač poziva

… i vaš zvučni signal bi trebao trajati 2 sekunde. To možete učiniti i iz - gotovo - bilo kojeg preglednika:

xinabox_switch.local/rpc/Switch

… sa istim efektom.

Korak 8: Sljedeći korak

Možete koristiti bilo koji alat koji može aktivirati URL. Radim to iz Appleove aplikacije koja se zove Workflow, što mi omogućava da to radim sa svog telefona ili kao komplikaciju sa svog Apple Watch -a, ali postoje mnoge druge opcije. Evo moje skripte toka posla, ali sa IP kodiranom IP adresom: Uživajte!

Image
Image

Apple App: Tijek rada - ovdje sa tvrdo kodiranom IP adresom

Korak 9: Sheme

Krug zujalice Instalirajte OC03 paralelno sa postojećim dugmetom.

Preuzmite ga ovdje.

OC03 Krug Instalirajte OC03 paralelno sa postojećim dugmetom.

Preuzmite ga ovdje.

Image
Image

Korak 10: Kodirajte

init.js JavaScript Vaš glavni i jedini kod za ovaj projekat.

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'); neka je adr = 0x38; neka sabirnica = I2C.get (); I2C.writeRegB (sabirnica, adr, 3, 0); I2C.writeRegB (sabirnica, adr, 1, 0); / * isključite samo da biste bili sigurni */ let delay = 2000; GPIO.set_mode (led, GPIO. MODE_OUTPUT); RPC.addHandler ('Switch', funkcija (args) {GPIO.toggle (led); I2C.writeRegB (sabirnica, adr, 3, 0); / * u slučaju da se OC03 ponovo poveže * / I2C.writeRegB (sabirnica, adr, 1, 1); Timer.set (delay, false, function () {GPIO.toggle (led); I2C.writeRegB (bus, adr, 1, 0);}, null); return true;});

Preporučuje se: