Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
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:
- 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!
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.
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; });