Exemplo de driver e passo a passo

Prev Next

Introdução

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.

Como testar um Edge Driver personalizado usando uma placa de desenvolvimento ESP32 e um sensor de temperatura e umidade DHT22 prontamente disponível.

O que você precisará (pré-requisitos):* LOLIN S3 Mini executando o CircuitPython* Seu IDE (ambiente de desenvolvimento integrado) preferido - Visual Studio Code* Node.js e NPM

Neste guia, apresentaremos um exemplo de criação e teste de um Edge Driver personalizado para uma placa de desenvolvimento ESP32 e um sensor de temperatura e umidade DHT22 prontamente disponível.

Preparação do hardware

Para este exemplo, usaremos uma placa de desenvolvimento LOLIN S3 Mini (baseada no microcontrolador ESP32-S3) executando o CircuitPython para ler dados de um sensor de temperatura e umidade DHT22.

Ligação do sensor DHT22 ao ESP32

A conexão do sensor DHT22 ao S3 Mini é simples:1. GND (-) no DHT22 → pino GND no S3 Mini2. VCC (+) no DHT22 → pino 3V3 no S3 Mini3. OUT (S) no DHT22 → pino D1 no S3 Mini (ou qualquer pino IO disponível)

Leitura dos dados do sensor

Aqui está um link para configurar o CircuitPython.

Abaixo está um script CircuitPython simples que lê os valores de temperatura e umidade do sensor DHT22 a cada segundo e imprime os dados como JSON pela interface serial USB. Também estamos adicionando o texto "ESP:" antes de cada mensagem, para que nosso driver possa ignorar outras mensagens seriais, como logs e informações de inicialização.

Salve esse script como na unidade CIRCUITPY e ele começará a enviar dados automaticamente pela porta serial:```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)```

Criando seu Edge Driver

Para criar um Edge Driver personalizado, você precisará do Node.js e do NPM instalados. Se você não tiver instalado o Node.js e o NPM, siga este guia.

Criação de um novo projeto de driver do Edge

Execute o seguinte comando para criar um novo projeto de Edge Driver:npx @tulip/create-edge-driver

Siga as instruções para configurar seu driver. Para este exemplo, nomearemos nosso driver como "esp32-diy-sensor" e habilitaremos o serviço Serial para ler dados do S3 Mini por meio de sua interface USB.SDK

Quando a configuração estiver concluída, navegue até o diretório do projeto e execute:npm run buildEssecomando:* Validará o arquivo manifest.json.* Compilará o código TypeScript.* Agrupará o driver em um arquivo JavaScript que pode ser carregado no Tulip Player.

Atualização do manifest.json

Primeiro, precisamos definir os eventos e as funções implementadas pelo nosso driver. Os eventos do dispositivo podem ser usados como gatilhos para a lógica nos aplicativos Tulip. Por exemplo, você pode configurar um acionador de aplicativo como:

"Quando meu sensor disparar um evento de medição, armazene os dados de temperatura na variável 'Shop Floor Temperature'".

Os drivers também podem implementar funções de dispositivo, que podem ser executadas em resposta a acionadores em um aplicativo. Por exemplo:

"Quando eu clicar neste botão, chame a função 'Toggle Light' no meu dispositivo."

Neste exemplo, nosso driver não terá funções, mas disparará um evento chamado "data" quando nosso sensor fizer uma medição. Atualize a seção de funções no seu arquivo src/manifest.json deixando-a vazia ou removendo-a completamente:

json... "functions":``[],...Em seguida, atualize a seção de eventos para definir a forma do evento "data". Esse evento será um objeto com duas propriedades de flutuação, "temperatura" e "umidade":json... "events": [ { "name": "data", "schema": { "type": "object", "properties": { "temperature" (temperatura): { "type": "float" }, "humidity": { "type": "float" } } } } ],...

Atualização

Agora, escreveremos o código do driver que usa o Edge Driver SDK para localizar e se conectar à porta serial USB do S3 Mini, ler os dados seriais recebidos, analisar as mensagens JSON e disparar o evento "data" usando fireEvent(). Substitua o código de exemplo em seu arquivo src/index.ts por este novo código:



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();});```Neste exemplo, tentamos automaticamente localizar o dispositivo usando o ID do produto do dispositivo USB quando o driver é iniciado pela primeira vez. Entretanto, o Edge Driver SDK também suporta a configuração de drivers para serem iniciados quando novos dispositivos são detectados pelo sistema, o que pode ajudar a criar drivers de produção mais robustos.


### Criação e execução do driver


Depois de atualizar o código do driver e o manifest.json, compile o driver novamente`:npm run buildIsso`gerará o arquivo JavaScript compilado e empacotado, bem como uma cópia do manifesto validado dentro do diretório **dist**.


![SDK](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Screenshot%202025-03-27%20at%2011.12.19%20AM.png){height="" width=""}


### Testando o driver no Tulip Player


Por padrão, o Tulip Player é executado com drivers incorporados que funcionam imediatamente. Entretanto, você também pode executar seu driver personalizado localmente no Tulip Player, mesmo sem uma instância do Tulip. Para fazer isso, você pode iniciar o Player a partir da linha de comando com o caminho para o diretório dist do seu driver. Faça o download e instale **o Tulip Player** [aqui](https://download.tulip.co/). 


No Windows, isso é feito usando o comando `set` no terminal para definir a variável de ambiente `TULIP_PLAYER_CUSTOM_DRIVERS_PATH` e, em seguida, executando o "Tulip Player.exe" no mesmo terminal:


`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"`


Quando o player for iniciado, abra o **Browser Developer Tools** no aplicativo Player e vá para a guia Console.![SDK](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Screenshot%202025-03-27%20at%2011.12.26%20AM.png){height="" width=""}


Filtre as mensagens com "[CED]" para ver os registros do driver.


![SDK](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Screenshot%202025-03-27%20at%2011.12.30%20AM.png){height="" width=""}


Se for bem-sucedido, você verá eventos de "dados" registrando valores de temperatura e umidade em tempo real.


### Uso do driver em um aplicativo Tulip


Em breve, você poderá fazer upload de drivers personalizados para sua instância do Tulip. Até lá, podemos importar um driver de exemplo predefinido.


Vá até a biblioteca do Tulip e instale qualquer driver que tenha um botão de instalação como [este](https://library.tulip.co/devices/espressif-esp32).


Instale o driver quando solicitado. Crie um novo aplicativo Tulip e adicione um acionador "Machines & devices" à sua etapa.


![SDK](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Screenshot%202025-03-27%20at%2011.12.41%20AM.png){height="" width=""}


Você deverá ver o sensor de temperatura e umidade ESP32 importado na lista de dispositivos.


![SDK](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Screenshot%202025-03-27%20at%2011.12.46%20AM.png){height="" width=""}


Agora, você pode criar um acionador que atualiza algumas variáveis do aplicativo com dados do sensor em tempo real.


![SDK](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Screenshot%202025-03-27%20at%2011.12.51%20AM.png){height="" width=""}


Crie alguns widgets que usem essas variáveis em sua etapa para que você possa visualizar os dados de temperatura e umidade em seu aplicativo.


![SDK](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Screenshot%202025-03-27%20at%2011.12.58%20AM.png){height="" width=""}


### Execução do aplicativo Tulip


Depois que o aplicativo estiver configurado, execute-o no Tulip Player. Se tudo estiver configurado corretamente, você verá os valores do sensor em tempo real sendo atualizados em seu aplicativo!


![SDK](https://cdn.document360.io/7c6ff534-cad3-4fc8-9583-912c4016362f/Images/Documentation/Screenshot%202025-03-27%20at%2011.13.05%20AM.png){height="" width=""}


E é isso! Você construiu, testou e integrou com sucesso um Edge Driver personalizado no Tulip!