Пример драйвера и прохождение

Prev Next

Введение

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.

Как протестировать пользовательский драйвер Edge Driver, используя плату разработки ESP32 и готовый датчик температуры и влажности DHT22.

Что вам понадобится (предварительные условия):* LOLIN S3 Mini под управлением CircuitPython* Ваша IDE (интегрированная среда разработки) на выбор - Visual Studio Code* Node.js и NPM

В этом руководстве мы рассмотрим пример создания и тестирования пользовательского драйвера Edge Driver для платы ESP32 и готового датчика температуры и влажности DHT22.

Подготовка оборудования

В этом примере мы будем использовать плату разработки LOLIN S3 Mini (на базе микроконтроллера ESP32-S3) под управлением CircuitPython для считывания данных с датчика температуры и влажности DHT22.

Подключение датчика DHT22 к ESP32

Подключение датчика DHT22 к S3 Mini осуществляется просто:1. GND (-) на DHT22 → GND контакт на S3 Mini2. VCC (+) на DHT22 → контакт 3V3 на S3 Mini3. OUT (S) на DHT22 → вывод D1 на S3 Mini (или любой доступный вывод ввода-вывода).

Считывание данных с датчика

Вот ссылка на настройку CircuitPython.

Ниже представлен простой скрипт CircuitPython, который считывает значения температуры и влажности с датчика DHT22 каждую секунду и печатает данные в формате JSON через последовательный интерфейс USB. Мы также добавляем текст "ESP:" перед каждым сообщением, чтобы наш драйвер мог игнорировать другие последовательные сообщения, такие как журналы и информация о загрузке.

Сохраните этот скрипт как на диске CIRCUITPY, и он автоматически начнет отправлять данные через последовательный порт:``import adafruit_dhtimport boardimport timeimport json

dht = adafruit_dht.DHT22(board.D1)

while True: print( "ESP:", json.dumps( { "температура": dht.temperature, "влажность": dht.humidity, } ), ) time.sleep(1)```

Создание драйвера Edge

Чтобы создать пользовательский драйвер Edge, вам потребуется установить Node.js и NPM. Если вы еще не установили Node.js и NPM, следуйте этому руководству.

Создание нового проекта драйвера Edge

Выполните следующую команду, чтобы создать новый проект Edge Driver:npx @tulip/create-edge-driver

Следуйте подсказкам, чтобы настроить драйвер. В этом примере мы назовем наш драйвер "esp32-diy-sensor" и включим службу Serial для считывания данных с S3 Mini через его USB-интерфейс.SDK

После завершения настройки перейдите в каталог проекта и выполните:npm run buildЭтакоманда:* Проверит файл manifest.json.* Скомпилирует код TypeScript.* Соберет драйвер в JavaScript-файл, который можно загрузить в Tulip Player.

Обновление файла manifest.json

Во-первых, нам нужно определить события и функции, реализуемые нашим драйвером. События устройства можно использовать в качестве триггеров для логики в Tulip Apps. Например, вы можете настроить триггер приложения следующим образом:

"Когда мой датчик выдает событие измерения, сохраните данные о температуре в переменной 'Температура в цеху'".

Драйверы также могут реализовывать функции устройства, которые могут выполняться в ответ на триггеры в приложении. Например:

"Когда я нажму на эту кнопку, вызовите функцию 'Toggle Light' на моем устройстве".

В этом примере наш драйвер не будет иметь функций, но будет вызывать событие "data", когда наш датчик произведет измерение. Обновите раздел functions в файле src/manifest.json, оставив его пустым или удалив полностью:

json... "functions":``[],...Затем обновите секцию events, чтобы определить форму события "data". Это событие будет представлять собой объект с двумя float-свойствами, "температура" и "влажность":json... "events": [ { "name": "data", "schema": { "type": "object", "properties": { "temperature": { "type": "float" }, "humidity": { "type": "float" } } } } ],...

Обновление

Теперь мы напишем код драйвера, который использует Edge Driver SDK для поиска и подключения к последовательному порту USB S3 Mini, считывает входящие последовательные данные, разбирает сообщения JSON и запускает событие "data" с помощью fireEvent(). Замените код примера в файле src/index.ts этим новым кодом:

``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();});``В этом примере мы автоматически пытаемся найти устройство, используя Product ID USB-устройства при первом запуске драйвера. Однако Edge Driver SDK также поддерживает настройку драйверов на запуск при обнаружении системой новых устройств, что может помочь создать более надежные производственные драйверы.

Сборка и запуск драйвера

После обновления кода драйвера и файла manifest.json снова выполните сборку драйвера:npm run buildЭтосгенерирует скомпилированный и собранный JavaScript-файл, а также копию проверенного манифеста в каталоге dist.

SDK

Тестирование драйвера в Tulip Player

По умолчанию Tulip Player запускается со встроенными драйверами, которые работают из коробки. Однако вы также можете запустить свой собственный драйвер локально в Tulip Player, даже без экземпляра Tulip. Для этого вы можете запустить Player из командной строки, указав путь к директории dist вашего драйвера. Скачать и установить Tulip Player можно здесь.

В Windows это делается с помощью команды set в терминале, чтобы установить переменную окружения TULIP_PLAYER_CUSTOM_DRIVERS_PATH, а затем запустить "Tulip Player.exe" из того же терминала:

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"

После запуска плеера откройте Browser Developer Tools в приложении Player и перейдите на вкладку Console.SDK

Отфильтруйте сообщения с помощью "[CED]", чтобы увидеть журналы драйверов.

SDK

В случае успеха вы должны увидеть события "data", регистрирующие значения температуры и влажности в реальном времени.

Использование вашего водителя в приложении Tulip

Скоро вы сможете загружать пользовательские драйверы в свой экземпляр Tulip. А пока мы можем импортировать готовый пример драйвера.

Перейдите в библиотеку Tulip и установите любой драйвер, у которого есть кнопка установки, как у этого.

Установите драйвер при появлении соответствующего запроса. Создайте новое приложение Tulip App и добавьте триггер "Машины и устройства" в ваш шаг.

SDK

В списке устройств вы должны увидеть импортированный датчик температуры и влажности ESP32.

SDK

Теперь вы можете создать триггер, который будет обновлять некоторые переменные приложения с помощью данных датчика.

SDK

Создайте несколько виджетов, использующих эти переменные на вашем шаге, чтобы вы могли визуализировать данные о температуре и влажности в вашем приложении.

SDK

Запуск приложения Tulip

После того как приложение настроено, запустите его в Tulip Player. Если все настроено правильно, вы должны увидеть обновление значений датчиков в реальном времени в вашем приложении!

SDK

Вот и все! Вы успешно создали, протестировали и интегрировали пользовательский драйвер Edge Driver в Tulip!