Sadržaj:

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

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

Video: Gumb za virtualna vrata pomoću Mongoose OS -a i XinaBox -a: 10 koraka
Video: How to open a broken trunk lock (boot unlock) VW Golf Mk5, Golf GTI, Passat, Seat, Audi 2024, Studeni
Anonim
Gumb za virtualna vrata pomoću Mongoose OS -a i XinaBox -a
Gumb za virtualna vrata pomoću Mongoose OS -a i XinaBox -a

Koristeći Mongoose i neke xChips, napravili smo virtualni gumb za vrata. Umjesto fizičkog gumba za uključivanje osoblja, sada to mogu učiniti sami.

Korak 1: Stvari korištene 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" zbog kojeg 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 trebalo biti zaposleno naše osoblje, pa smo odlučili uzeti vlastiti lijek i stvoriti virtualni gumb. Ovaj kôd omogućuje vam slanje RPC -a (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 ipak 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:
Slika
Slika
  • Umetnite IP01 u USB priključak
  • Provjerite jesu li prekidači IP01 u položaju B i DCE.
  • Prebacite Mongoose-OS na CW02 iz naredbenog retka. Kao ovo:

CD

izvoz MOS_PORT = bin/mos flash esp32

Također možete samo ući u konzolu i odatle učiniti većinu, ali ovdje to radimo iz naredbenog retka, tako da je posao brzo obavljen. Za ulazak u konzolu:

CD

kanta/mos

Korak 4: Konfiguracija

Iako su se ti koraci mogli izvesti 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 po 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 upotrijebite Mac ili instalirajte Bonjour na Windows računalo.

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 kako bi konfiguracija radila

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

Vrlo brzo nakon ovoga trebali biste moći pingati xinabox_switch.local

Korak 5: Instaliranje

Isključite IP01 iz računala i sastavite krug prema gornjoj slici.

Priključite PU01 (ili ako ste se odlučili držati IP01) u USB izvor napajanja. Spojite žice paralelno s postojećim prekidačem (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, što 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 ispravno instaliran, trebali biste vidjeti da se vraća broj '56'. To je I2C adresa OC03 u decimalnom obliku (u heksadecimalnom iznosu 0x38).

Korak 6: Programiranje

  • Sada otvorite Mongoose u načinu konzole, pogledajte gore. Trebao 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 popis datoteka
  • Kopirajte i zalijepite donji kôd u init.js, a zatim kliknite spremi+ponovno podizanje sustava
  • Vaš krug je sada programiran.

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š bi se zvučni signal trebao oglasiti 2 sekunde. To možete učiniti i iz - gotovo - bilo kojeg preglednika:

xinabox_switch.local/rpc/Switch

… s istim učinkom.

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ćuje da to učinim sa svog telefona ili kao komplikaciju s Apple Watch -a, ali postoje mnoge druge mogućnosti. Evo moje skripte tijeka rada, ali s IP adresom koja je kodirana: Uživajte!

Slika
Slika

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

Korak 9: Sheme

Krug zujalice Instalirajte OC03 paralelno s postojećim pritiskom na gumb.

Preuzmite ga ovdje.

Krug OC03 Ugradite OC03 paralelno s postojećim gumbom.

Preuzmite ga ovdje.

Slika
Slika

Korak 10: Kodirajte

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

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"); neka 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 */ neka odgoda = 2000; GPIO.set_mode (vodio, GPIO. MODE_OUTPUT); RPC.addHandler ('Switch', funkcija (args) {GPIO.toggle (led); I2C.writeRegB (sabirnica, adr, 3, 0); / * u slučaju da se OC03 ponovno poveže * / I2C.writeRegB (sabirnica, adr, 1, 1); Timer.set (delay, false, function () {GPIO.toggle (led); I2C.writeRegB (sabirnica, adr, 1, 0);}, null); return true;});

Preporučeni: