Spisu treści:

Wirtualny przycisk drzwi przy użyciu Mongoose OS i XinaBox: 10 kroków
Wirtualny przycisk drzwi przy użyciu Mongoose OS i XinaBox: 10 kroków

Wideo: Wirtualny przycisk drzwi przy użyciu Mongoose OS i XinaBox: 10 kroków

Wideo: Wirtualny przycisk drzwi przy użyciu Mongoose OS i XinaBox: 10 kroków
Wideo: ELEKTROZACZEP funkcja PAMIĘĆ⚡ #elektryk#elektrozaczep#domofon#videofon#zamek#drzwi#dom#brama#remont 2024, Listopad
Anonim
Wirtualny przycisk drzwi przy użyciu systemu operacyjnego Mongoose i XinaBox
Wirtualny przycisk drzwi przy użyciu systemu operacyjnego Mongoose i XinaBox

Używając Mongoose i niektórych xChips, stworzyliśmy wirtualny przycisk drzwi. Zamiast fizycznego przycisku, aby wprowadzić personel, mogą teraz zrobić to sami.

Krok 1: Rzeczy użyte w tym projekcie

Komponenty sprzętowe

  • XinaBox CW02 x 1 Możesz zamiast tego użyć CW01
  • XinaBox IP01 x 1
  • XinaBox PU01 x 1 Możesz po prostu użyć IP01 do zasilania, jeśli nie zamierzasz programować więcej modułów.
  • XinaBox OC03 x 1
  • XinaBox XC10 x 1 „Klej”, który sprawia, że wszystko działa!

Aplikacje i usługi online

Mongoose OS Naprawdę niesamowite i proste narzędzie programistyczne IoT… i za darmo

Krok 2: Historia

W naszej recepcji nasz personel potrzebował pomocy, więc postanowiliśmy wziąć własne lekarstwo i stworzyć wirtualny przycisk. Ten kod pozwala na wysłanie RPC (Remote Procedure Call), które wygląda jak normalne wywołanie HTTP z dowolnej przeglądarki. Użyliśmy Mongoose, ponieważ jest on naprawdę łatwy i szybki w obsłudze i ma wbudowaną aktualizację kodu OTA (Over The Air), co oznacza, że możemy zainstalować naszą technologię i nadal aktualizować oprogramowanie układowe bez demontowania go w celu przeprogramowania.

Krok 3: Przygotowanie

  • Zainstaluj Mongoose-OS: Prosto, po prostu wykonaj te bardzo proste kroki dla swojego systemu operacyjnego tutaj:
  • Połącz razem IP01 i CW02 za pomocą złącza XC10. Zobacz obrazek poniżej:
Obraz
Obraz
  • Włóż IP01 do portu USB
  • Upewnij się, że przełączniki IP01 znajdują się w pozycji B i DCE.
  • Flash Mongoose-OS do CW02 z wiersza poleceń. Lubię to:

Płyta CD

eksportuj MOS_PORT= bin/mos flash esp32

Możesz też po prostu wejść do konsoli i zrobić większość z niej, ale tutaj robimy to z wiersza poleceń, więc praca jest szybko wykonywana. Aby wejść do konsoli:

Płyta CD

kosz/mos

Krok 4: Konfiguracja

Chociaż te kroki można wykonać w jednym długim oświadczeniu, postanowiliśmy je podzielić, a ponieważ i tak je skopiowałeś i wkleiłeś, ułatwmy to:

Ustaw piny I2C na standard xChips:

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

Podłącz swój CW02 do Wi-Fi:

bin/mos wifi

Odłącz WiFi w trybie AP i skonfiguruj nazwę domeny, abyś mógł połączyć się z CW01 za pomocą nazwy hosta zamiast wyszukiwania prawidłowego adresu IP. To zadziała tylko wtedy, gdy:

  • Rozłączasz Wi-Fi w trybie AP, tak jak robimy to poniżej.
  • Użyj komputera Mac lub zainstaluj Bonjour na swoim komputerze z systemem Windows.

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

Wywołanie bin/mos Config. Set '{"config": {"dns_sd": {"enable": true}}}' bin/mos call Config. Set '{"config": {"dns_sd": {"host- name": "xinabox_switch"}}}

I na koniec musisz zrestartować CW02, aby konfiguracja działała

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

Bardzo szybko po tym powinieneś być w stanie pingować xinabox_switch.local

Krok 5: Instalacja

Odłącz IP01 od komputera i zmontuj obwód jak na górnym obrazku.

Podłącz PU01 (lub jeśli zdecydowałeś się trzymać IP01) do źródła zasilania USB. Podłącz przewody równolegle z istniejącego przełącznika (zostaw to na wszelki wypadek) do OC03 (polaryzacja nie ma znaczenia). Zobacz rysunek Fritzing.

Po włączeniu i zobaczeniu, że faktycznie rozmawiasz ze swoim xCW02, co ze skanowaniem magistrali, czyli magistrali I2C:

bin/mos --port ws://xinabox_switch.local/rpc wywołanie I2C. Scan

Jeśli to wszystko działa i twój xOC03 jest zainstalowany poprawnie, powinieneś zobaczyć zwróconą liczbę '56'. To jest adres I2C OC03 w postaci dziesiętnej (w szesnastce to 0x38).

Krok 6: Programowanie

  • Teraz otwórz Mongoose w trybie konsoli, patrz wyżej. Powinien otworzyć się w oknie, w którym poprosi o numer portu, wpisz: ws://xinabox_switch.local/rpc
  • Będzie komunikował się z CW02 i zda sobie sprawę, że urządzenie jest już flashowane i podłączone do Wi-Fi, więc pokaże tylko 3 znaczniki wyboru. Zamknij okno i odśwież listę plików
  • Skopiuj i wklej poniższy kod do init.js i kliknij na save+reboot
  • Twój obwód jest teraz zaprogramowany.

Krok 7: Test

Zaimplementowałeś teraz kolejne wywołanie RPC, więc ze swojego terminala możesz wpisać:

bin/mos --port ws://xinabox_switch.local/rpc przełącznik wywołań

… i brzęczyk powinien przejść przez 2 sekundy. Możesz też po prostu zrobić to z - prawie - dowolnej przeglądarki:

xinabox_switch.local/rpc/Switch

… z tym samym efektem.

Krok 8: Następny krok

Możesz użyć dowolnego narzędzia, które może uruchomić adres URL. Robię to z aplikacji Apple o nazwie Workflow, która pozwala mi to zrobić z telefonu lub jako komplikacja z mojego Apple Watch, ale istnieje wiele innych opcji. Oto mój skrypt Workflow, ale z zakodowanym adresem IP: Miłej zabawy!

Obraz
Obraz

Aplikacja Apple: Workflow – tutaj z zakodowanym adresem IP

Krok 9: Schematy

Obwód brzęczyka Zainstaluj OC03 równolegle z istniejącym przyciskiem.

Pobierz to tutaj.

Obwód OC03 Zainstaluj OC03 równolegle z istniejącym przyciskiem.

Pobierz to tutaj.

Obraz
Obraz

Krok 10: Kod

init.js JavaScript Twój główny i jedyny kod dla tego projektu.

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"); niech led = Cfg.get('pins.led'); niech adr = 0x38; niech autobus = I2C.get(); I2C.writeRegB(magistrala, adres, 3, 0); I2C.writeRegB(magistrala, adres, 1, 0); /* wyłącz dla pewności */ let delay = 2000; GPIO.set_mode(led, GPIO. MODE_OUTPUT); RPC.addHandler('Switch', function(args) { GPIO.toggle(led); I2C.writeRegB(bus, adr, 3, 0); /* w przypadku ponownego połączenia OC03 */ I2C.writeRegB(bus, adr, 1, 1); Timer.set(delay, false, function() { GPIO.toggle(led); I2C.writeRegB(bus, adr, 1, 0); }, null); return true; });

Zalecana: