Przykład i instrukcja sterownika

Prev Next

Wprowadzenie

Version Compatibility

Users will not be able to have a driver run in an app until the Edge Driver Page is added. Please reach out to developer@tulip.co in the meantime.

Jak przetestować niestandardowy sterownik Edge Driver przy użyciu płytki rozwojowej ESP32 i łatwo dostępnego czujnika temperatury i wilgotności DHT22.

Co będzie potrzebne (wymagania wstępne):* LOLIN S3 Mini z uruchomionym CircuitPython* Wybrane IDE (zintegrowane środowisko programistyczne) - Visual Studio Code* Node.js i NPM

W tym przewodniku omówimy przykład tworzenia i testowania niestandardowego sterownika Edge Driver dla płytki rozwojowej ESP32 i łatwo dostępnego czujnika temperatury i wilgotności DHT22.

Przygotowanie sprzętu

W tym przykładzie użyjemy płytki rozwojowej LOLIN S3 Mini (opartej na mikrokontrolerze ESP32-S3) z uruchomionym CircuitPython do odczytu danych z czujnika temperatury i wilgotności DHT22.

Podłączanie czujnika DHT22 do ESP32

Podłączenie czujnika DHT22 do S3 Mini jest proste:1. GND (-) na DHT22 → pin GND na S3 Mini2. VCC (+) na DHT22 → pin 3V3 na S3 Mini3. OUT (S) na DHT22 → pin D1 na S3 Mini (lub dowolny dostępny pin IO).

Odczyt danych z czujnika

Oto link do konfiguracji CircuitPython.

Poniżej znajduje się prosty skrypt CircuitPython, który odczytuje wartości temperatury i wilgotności z czujnika DHT22 co sekundę i drukuje dane jako JSON przez interfejs szeregowy USB. Dodajemy również tekst "ESP:" przed każdą wiadomością, aby nasz sterownik mógł ignorować inne wiadomości szeregowe, takie jak dzienniki i informacje o rozruchu.

Zapisz ten skrypt jako na dysku CIRCUITPY, a automatycznie rozpocznie wysyłanie danych przez port szeregowy: ``import adafruit_dhtimport boardimport timeimport json

dht = adafruit_dht.DHT22(board.D1)

while True: print( "ESP:", json.dumps( { "temperature": dht.temperature, "humidity": dht.humidity, } ), ) time.sleep(1)```

Tworzenie sterownika Edge Driver

Aby utworzyć niestandardowy sterownik Edge, musisz zainstalować Node.js i NPM. Jeśli nie zainstalowałeś Node.js i NPM, postępuj zgodnie z tym przewodnikiem.

Tworzenie nowego projektu Edge Driver

Uruchom następujące polecenie, aby utworzyć nowy projekt Edge Driver: npx @tulip/create-edge-driver

Postępuj zgodnie z instrukcjami, aby skonfigurować sterownik. W tym przykładzie nazwiemy nasz sterownik "esp32-diy-sensor" i włączymy usługę Serial, aby odczytywać dane z S3 Mini przez interfejs USB.SDK

Po zakończeniu konfiguracji przejdź do katalogu projektu i uruchom:npm run buildTopolecenie:* Zatwierdzi plik manifest.json.* Skompiluje kod TypeScript.* Spakuje sterownik do pliku JavaScript, który można załadować w odtwarzaczu Tulip Player.

Aktualizacja manifest.json

Najpierw musimy zdefiniować zdarzenia i funkcje zaimplementowane przez nasz sterownik. Zdarzenia urządzenia mogą być używane jako wyzwalacze logiki w aplikacjach Tulip. Na przykład można skonfigurować wyzwalacz aplikacji w następujący sposób:

"Gdy mój czujnik uruchomi zdarzenie pomiaru, zapisz dane temperatury w zmiennej 'Shop Floor Temperature'".

Sterowniki mogą również implementować funkcje urządzenia, które mogą być wykonywane w odpowiedzi na wyzwalacze w aplikacji. Na przykład:

"Kiedy kliknę ten przycisk, wywołaj funkcję 'Toggle Light' na moim urządzeniu".

W tym przykładzie nasz sterownik nie będzie miał żadnych funkcji, ale wywoła zdarzenie o nazwie "data", gdy nasz czujnik wykona pomiar. Zaktualizuj sekcję funkcji w pliku src/manifest.json, pozostawiając ją pustą lub całkowicie usuwając:

json... "functions":``[],...Następnie zaktualizuj sekcję zdarzeń, aby zdefiniować kształt zdarzenia "data". To zdarzenie będzie obiektem z dwiema zmiennymi właściwościami, "temperatura" i "wilgotność": json... "events": [ { "name": "data", "schema": { "type": "object", "properties": { "temperature": { "type": "float" }, "humidity": { "type": "float" } } } } ],...

Aktualizacja

Teraz napiszemy kod sterownika, który wykorzystuje Edge Driver SDK do znajdowania i łączenia się z portem szeregowym USB S3 Mini, odczytuje przychodzące dane szeregowe, analizuje wiadomości JSON i uruchamia zdarzenie "data" za pomocą funkcji fireEvent(). Zastąp przykładowy kod w pliku src/index.ts nowym kodem:

``jsedgeDriverSdk.SerialPort.listAvailablePorts().then((ports) => { const esp32port = ports.find((port) => port.productId == 33128); const serial = new edgeDriverSdk.SerialPort(esp32port.path, { baudRate: 115200, });

serial.onData((data) => { try { const decoder = new TextDecoder(); const stringData = decoder.decode(new Uint8Array(data)); const espData = JSON.parse(stringData.split("ESP: ")[1]); edgeDriverSdk.fireEvent("data", espData); } catch (error) { console.error(error); } });

serial.open(); }); ``` W tym przykładzie automatycznie próbujemy znaleźć urządzenie przy użyciu identyfikatora produktu urządzenia USB przy pierwszym uruchomieniu sterownika. Jednak Edge Driver SDK obsługuje również konfigurowanie sterowników tak, aby były uruchamiane po wykryciu nowych urządzeń przez system, co może pomóc w tworzeniu bardziej niezawodnych sterowników produkcyjnych.

Tworzenie i uruchamianie sterownika

Po zaktualizowaniu kodu sterownika i manifest.json, ponownie zbuduj sterownik:npm run buildTowygeneruje skompilowany i dołączony plik JavaScript, a także kopię zweryfikowanego manifestu wewnątrz katalogu dist.

SDK

Testowanie sterownika w Tulip Player

Domyślnie Tulip Player działa z wbudowanymi sterownikami, które działają po wyjęciu z pudełka. Można jednak również uruchomić niestandardowy sterownik lokalnie w Tulip Player, nawet bez instancji Tulip. Aby to zrobić, możesz uruchomić Player z wiersza poleceń ze ścieżką do katalogu dist sterownika. Pobierz i zainstaluj Tulip Player stąd.

W systemie Windows odbywa się to za pomocą polecenia set w terminalu, aby ustawić zmienną środowiskową TULIP_PLAYER_CUSTOM_DRIVERS_PATH, a następnie uruchomić "Tulip Player.exe" z tego samego terminala:

batC:\Users\Bob> set "TULIP_PLAYER_CUSTOM_DRIVERS_PATH=C:\Users\Bob\Documents\esp32-diy-sensor\dist "C:\Users\Bob> "C:\Users\Bob\AppData\Local\tulip-player-desktop\Tulip Player.exe".

Po uruchomieniu odtwarzacza otwórz narzędzia Browser Developer Tools w aplikacji Player i przejdź do zakładki Console.SDK

Przefiltruj wiadomości za pomocą "[CED]", aby zobaczyć dzienniki sterownika.

SDK

Jeśli się powiedzie, powinieneś zobaczyć zdarzenia "data" rejestrujące wartości temperatury i wilgotności w czasie rzeczywistym.

Używanie sterownika w aplikacji Tulip

Wkrótce będzie można przesyłać niestandardowe sterowniki do instancji Tulip. Do tego czasu możemy zaimportować wstępnie zdefiniowany przykładowy sterownik.

Przejdź do biblioteki Tulip i zainstaluj dowolny sterownik, który ma przycisk instalacji, taki jak ten.

Zainstaluj sterownik po wyświetleniu monitu. Utwórz nową aplikację Tulip i dodaj wyzwalacz "Machines & devices" do swojego kroku.

SDK

Zaimportowany czujnik temperatury i wilgotności ESP32 powinien pojawić się na liście urządzeń.

SDK

Teraz możesz utworzyć wyzwalacz, który zaktualizuje niektóre zmienne aplikacji danymi z czujnika na żywo.

SDK

Utwórz kilka widżetów, które używają tych zmiennych w kroku, aby móc wizualizować dane temperatury i wilgotności w aplikacji.

SDK

Uruchamianie aplikacji Tulip

Po skonfigurowaniu aplikacji uruchom ją w Tulip Player. Jeśli wszystko zostało poprawnie skonfigurowane, w aplikacji powinny być widoczne aktualizowane w czasie rzeczywistym wartości z czujników!

SDK

I to wszystko! Pomyślnie zbudowałeś, przetestowałeś i zintegrowałeś niestandardowy Edge Driver w Tulip!