Obsah:

Tlačítko virtuálnych dverí pomocou systému Mongoose OS a XinaBox: 10 krokov
Tlačítko virtuálnych dverí pomocou systému Mongoose OS a XinaBox: 10 krokov

Video: Tlačítko virtuálnych dverí pomocou systému Mongoose OS a XinaBox: 10 krokov

Video: Tlačítko virtuálnych dverí pomocou systému Mongoose OS a XinaBox: 10 krokov
Video: 🚀 RUTUBE и ТОЧКА. Разработка РУТУБА за 5 часов *БЕЗ ВОДЫ* [Next / React / Nest / PostgreSQL / Redux] 2024, November
Anonim
Tlačítko virtuálnych dverí pomocou systému Mongoose OS a XinaBox
Tlačítko virtuálnych dverí pomocou systému Mongoose OS a XinaBox

Použitím Mongoose a niektorých xChipov sme vytvorili virtuálne dverové tlačidlo. Namiesto fyzického tlačidla, ktorým by ste mohli zamestnancov upozorniť, to teraz môžu urobiť sami.

Krok 1: Veci použité v tomto projekte

Hardvérové komponenty

  • XinaBox CW02 x 1 Namiesto toho môžete použiť CW01
  • XinaBox IP01 x 1
  • XinaBox PU01 x 1 Ak nemáte v úmysle programovať viac modulov, môžete na napájanie použiť iba IP01.
  • XinaBox OC03 x 1
  • XinaBox XC10 x 1 „Lepidlo“, vďaka ktorému všetko funguje!

Softvérové aplikácie a online služby

Mongoose OS Naozaj úžasný a ľahký nástroj na vývoj IoT … a zadarmo

Krok 2: Príbeh

Na našej recepcii bolo potrebné upozorniť našich zamestnancov, a preto sme sa rozhodli vziať si vlastný liek a vytvoriť virtuálne tlačidlo. Tento kód vám umožňuje odoslať RPC (Remote Procedure Call), ktoré vyzerá ako bežné volanie HTTP z ľubovoľného prehliadača. Použili sme Mongoose, pretože práca s ním je skutočne jednoduchá a rýchla a je vstavanou aktualizáciou kódu OTA (Over The Air), čo znamená, že môžeme nainštalovať naše technológie a stále aktualizovať firmvér bez toho, aby sme ho museli demontovať kvôli preprogramovaniu.

Krok 3: Príprava

  • Nainštalujte Mongoose-OS: Vpred, postupujte podľa týchto jednoduchých krokov pre svoj operačný systém tu:
  • Kliknite na IP01 a CW02 spoločne pomocou konektora XC10. Pozri obrázok nižšie:
Obrázok
Obrázok
  • Vložte IP01 do vášho USB portu
  • Uistite sa, že prepínače IP01 sú v polohe B a DCE.
  • Flashujte systém Mongoose-OS na CW02 z príkazového riadka. Páči sa ti to:

cd

export MOS_PORT = bin/mos flash esp32

Môžete tiež jednoducho vstúpiť do konzoly a odtiaľto vykonávať väčšinu činností, ale tu to robíme z príkazového riadka, takže práca je rýchlo hotová. Vstup do konzoly:

cd

bin/mos

Krok 4: Konfigurácia

Aj keď tieto kroky bolo možné vykonať v jednom dlhom vyhlásení, rozhodli sme sa ich rozdeliť a keďže ich v každom prípade skopírujete a prilepíte, uľahčíme vám to:

Nastavte piny I2C na štandard xChips:

konfiguračná sada bin/mos i2c.scl_gpio = 14 i2c.sda_gpio = 2

Pripojte CW02 k WiFi:

bin/mos wifi

Odpojte WiFi v režime AP a nastavte doménové meno, aby ste sa k CW01 mohli pripojiť podľa názvu hostiteľa, namiesto toho, aby ste našli správnu IP adresu. Bude to fungovať iba vtedy, ak:

  • V režime AP odpojíte WiFi rovnako ako nižšie.
  • Buď použite počítač Mac, alebo si nainštalujte Bonjour na svoj počítač so systémom Windows.

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

bin/mos call Config. Set '{"config": {"dns_sd": {"enable": true}}}' bin/mos call Config. Set '{"config": {"dns_sd": {"host- názov ":" xinabox_switch "}}}}

A nakoniec musíte reštartovať CW02, aby konfigurácia fungovala

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

Potom by ste mali veľmi rýchlo urobiť príkaz ping na xinabox_switch.local

Krok 5: Inštalácia

Odpojte IP01 od počítača a zostavte obvod podľa horného obrázku.

Pripojte PU01 (alebo ak ste sa rozhodli držať sa IP01) do zdroja napájania USB. Pripojte vodiče paralelne k existujúcemu prepínaču (nechajte to, pre prípad) k OC03 (na polarite nezáleží). Pozri kresbu Fritzing.

Po zapnutí a zistení, že skutočne hovoríte so svojim xCW02, čo skenovanie BUSU, alias zbernice I2C:

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

Ak to všetko funguje a váš xOC03 je správne nainštalovaný, malo by sa vám vrátiť číslo „56“. To je adresa I2C OC03 v desatinnom čísle (v hexadecimálnom formáte je 0x38).

Krok 6: Programovanie

  • Teraz otvorte Mongoose v konzolovom režime, pozri vyššie. Malo by sa otvoriť v okne, kde požiada o číslo portu, zadajte: ws: //xinabox_switch.local/rpc
  • Bude komunikovať s CW02 a uvedomí si, že jednotka je už flashovaná a pripojená k WiFi, takže dá iba 3 začiarknutia. Zatvorte okno a obnovte zoznam súborov
  • Skopírujte a prilepte nižšie uvedený kód do súboru init.js a kliknite na tlačidlo uložiť+reštartovať
  • Váš obvod je teraz naprogramovaný.

Krok 7: Test

Teraz ste implementovali ďalšie volanie RPC, takže z vášho terminálu môžete zadať:

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

… a váš bzučiak by mal trvať 2 sekundy. Môžete to tiež urobiť takmer z akéhokoľvek prehliadača:

xinabox_switch.local/rpc/Switch

… s rovnakým účinkom.

Krok 8: Ďalší krok

Môžete použiť akýkoľvek nástroj, ktorý môže spustiť adresu URL. Robím to z aplikácie Apple s názvom Workflow, ktorá mi to umožňuje robiť z telefónu alebo ako komplikácia z hodiniek Apple Watch, ale existuje veľa ďalších možností. Tu je môj skript pracovného toku, ale s pevne zadanou IP adresou: Užite si to!

Obrázok
Obrázok

Aplikácia Apple: Pracovný postup - tu s pevne zadanou IP adresou

Krok 9: Schémy

Obvod bzučiaka Nainštalujte OC03 paralelne s existujúcim tlačidlom.

Stiahnuť tu.

Okruh OC03 Nainštalujte OC03 paralelne s existujúcim tlačidlom.

Stiahnuť tu.

Obrázok
Obrázok

Krok 10: Kód

init.js JavaScript Váš hlavný a jediný kód pre tento projekt.

load ('api_config.js');

načítať ('api_gpio.js'); load ('api_i2c.js'); načítať ('api_net.js'); load ('api_sys.js'); load ('api_timer.js'); načítať ("api_rpc.js"); let led = Cfg.get ('pins.led'); nech adr = 0x38; nech bus = I2C.get (); I2C.writeRegB (zbernica, adr, 3, 0); I2C.writeRegB (zbernica, adr, 1, 0); / * pre istotu vypni */ nechaj zdržanie = 2000; GPIO.set_mode (led, GPIO. MODE_OUTPUT); RPC.addHandler ('Switch', function (args) {GPIO.toggle (led); I2C.writeRegB (bus, adr, 3, 0); / * if the OC03 gets againconnection * / I2C.writeRegB (bus, adr, 1, 1); Timer.set (delay, false, function () {GPIO.toggle (led); I2C.writeRegB (bus, adr, 1, 0);}, null); return true;});

Odporúča: