Índice:
- Etapa 1: Especificação de Hardware e Software
- Etapa 2: Sensores de temperatura e pressão sem fio
- Etapa 3: Conectando-se ao Wi-Fi
- Etapa 4: Configurando UbiDots no ESP32
- Etapa 5: Publicação de leituras de sensor para UbiDots
- Etapa 6: visualizando os dados
- Etapa 7: Código geral
Vídeo: Publicação de dados do sensor de pressão sem fio usando MQTT: 7 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
ESP32 e ESP 8266 são SoC muito familiares no campo da IoT. Isso é uma espécie de benção para os projetos de IoT. O ESP 32 é um dispositivo com WiFi e BLE integrados. Basta fornecer o seu SSID, senha e configurações de IP e integrar as coisas na nuvem. Aqui neste instrutível, refletiremos sobre alguns dos termos básicos da IoT, como plataforma IoT, MQTT, portais cativos etc.
- A Arquitetura IoT em palavras muito simples consiste em um dispositivo integrado e uma plataforma IoT para colocar o dispositivo na nuvem. Aqui, estamos usando a plataforma UbiDots IoT para visualizar os dados do sensor.
- Gerenciar as configurações de IP e as credenciais do usuário pode ser uma dor de cabeça para o usuário. E se o usuário quiser alterar as credenciais do WiFi? E se o usuário quiser mudar as configurações de DHCP / IP estático? Atualizar o ESP32 sempre não é confiável e nem mesmo a solução para esses problemas. Portanto, iremos através do portal cativo para salvar as credenciais WiFi e outras configurações.
- MQTT agora está se tornando um termo muito comum no mundo da IoT. ele ultrapassou solicitações e respostas (HTTP) por Publicar e Assinar devido à arquitetura rápida, robusta e enxuta.
Aqui neste instrutível, iremos demonstrar.
- Dando credenciais de WiFi e MQTT usando o Captive Portal.
- Publicação e assinatura de dados de vários sensores para UbiDots.
- Lendo os dados do sensor do sensor sem fio de pressão e temperatura
- Hospedar um formulário da web do ESP32.
- Leitura e gravação de SPIFFS ESP32.
Etapa 1: Especificação de Hardware e Software
Especificação de Hardware
- ESP32 WiFi / BLE
- Sensor de pressão e temperatura sem fio
Especificação de Software
- IDE Arduino
- XCTU
- Utilitário Labview
Etapa 2: Sensores de temperatura e pressão sem fio
Recursos
- Sensor de grau industrial Sensor de temperatura de pressão sem fio de longo alcance
- Faixa de operação 0 a 14000 mbar -40 ° a + 85 ° C (-40 ° a 185 ° F)
- Resolução de pressão de cálculo interno configurável 0,012 a 0,065 mbar
- Resolução de temperatura de cálculo interno configurável 0,002 a 0,012 ° C
- Precisão ± 2,5 mbar, ± 2 ° C
- Saídas de pressão absoluta, pressão relativa e mudança de altitude relativa
- Alcance de linha de visão de 2 milhas com antena a bordo
- Alcance LOS superior de até 28 milhas com antenas de alto ganho
- Interface para Raspberry Pi, Microsoft® Azure®, Arduino e mais
- Rede de malha sem fio usando DigiMesh®
Configurando o sensor de pressão e temperatura sem fio usando o Labview Utility e o XCTU
O sensor funciona em dois modos
- Modo de configuração: Configure o Pan ID, atraso, número de tentativas, etc. Mais sobre isso está além do escopo deste instrutível e será explicado no próximo instrutível.
- Modo de execução: estamos executando o dispositivo no modo de execução. E para analisar esses valores, estamos usando o utilitário Labview
Esta IU do Labview mostra os valores em bons gráficos. Mostra os valores atuais e passados. Você pode acessar este link para baixar a IU do Labview. clique no ícone Executar no menu da página de destino para ir para o modo de execução.
Etapa 3: Conectando-se ao Wi-Fi
Estamos usando o portal cativo para salvar as credenciais de WiFi e passar o mouse pelas configurações de IP. Para obter uma introdução detalhada sobre o portal cativo, você pode seguir as instruções a seguir.
O portal cativo nos dá a opção de escolher entre configurações estáticas e DHCP. Basta inserir as credenciais como IP estático, máscara de sub-rede, gateway e o gateway do sensor sem fio será configurado nesse IP.
Uma página da web está sendo hospedada onde uma lista mostrando as redes WiFi disponíveis e RSSI. Selecione a rede WiFi e a senha e insira enviar. As credenciais serão salvas na EEPROM e a configuração de IP será salva no SPIFFS. Mais sobre isso pode ser encontrado neste instrutível.
Etapa 4: Configurando UbiDots no ESP32
Aqui, estamos usando sensores sem fio de pressão e temperatura com o dispositivo ESP 32 para obter os dados de temperatura e umidade. Estamos enviando os dados para UbiDots usando o protocolo MQTT. MQTT segue um mecanismo de publicação e assinatura em vez de solicitação e resposta. É mais rápido e confiável do que HTTP. Isso funciona da seguinte maneira.
- Estamos fazendo uso do Agendador de Tarefas para Agendar a tarefa, como buscar dados de sensores, Publicar as leituras do sensor, Inscrever-se no tópico MQTT.
- Primeiro, inclua os arquivos de cabeçalho do Agendador de Tarefas, sua instância e agende as tarefas.
- Agendamos duas tarefas referentes a duas operações de controle diferentes.
#define _TASK_TIMEOUT # include Scheduler ts; // --------- Tarefas ------------ // Tarefa tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL, & taskSensorDisable); Tarefa tWiFi (10 * TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable);
- A tarefa 1 é para ler o valor do sensor, esta tarefa é executada por 1 segundo até atingir o tempo limite de 10 segundos.
- Quando a Tarefa1 atinge o seu tempo limite, estamos nos conectando ao Wifi local e ao corretor MQTT.
- Agora a Tarefa 2 está ativada e estamos desativando a Tarefa 1
- A tarefa 2 é para publicar os dados do sensor no broker MQTT UbiDots, esta tarefa é executada por 20 segundos até atingir o tempo limite de 20 segundos
- Quando a Tarefa2 atinge seu tempo limite, a Tarefa 1 é habilitada novamente e a Tarefa2 é desabilitada. Novamente, estamos obtendo o valor atualizado e o processo continua.
Lendo os dados do sensor I2C
Estamos obtendo um quadro de 29 bytes dos sensores sem fio de temperatura e umidade. Este quadro é manipulado para obter os dados reais de temperatura e umidade
if (Serial1.available ())
{dados [0] = Serial1.read (); atraso (k); if (data [0] == 0x7E) {while (! Serial1.available ()); para (i = 1; i <36; i ++) {dados = Serial1.read (); atraso (1); } if (data [15] == 0x7F) /////// para verificar se os dados recive estão corretos {if (data [22] == 0x06) //////// certifique-se do tipo de sensor está correto {int cTemp = ((((dados [24]) * 256) + dados [25])); int16_t abs_pressure = ((((uint16_t) (dados [26]) << 8) | dados [27]) * 0,001); int rlt_pressure = ((((dados [28]) * 256) + dados [29]) * 0,001); int16_t delta_alt = ((((uint16_t) (dados [30]) << 8) | dados [31]) * 0,01); bateria flutuante = ((dados [18] * 256) + dados [19]); tensão flutuante = 0,00322 * bateria; Serial.print ("Número do sensor"); Serial.println (dados [16]); Serial.print ("Tipo de sensor"); Serial.println (dados [22]); Serial.print ("Versão do firmware"); Serial.println (dados [17]); Serial.print ("Temperatura em Celsius:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("Pressão absoluta:"); Serial.println (abs_pressure); Serial.print ("mbar"); Serial.print ("Pressão relativa:"); Serial.println (rlt_pressure); Serial.print ("mbar"); Serial.print ("Delta Altitude:"); Serial.println (delta_alt); Serial.print ("medidor"); Serial.print ("valor ADC:"); Serial.println (bateria); Serial.print ("Voltagem da bateria:"); Serial.print (voltagem); Serial.println ("\ n"); if (voltagem <1) {Serial.println ("Hora de substituir a bateria"); }}} else {for (i = 0; i <36; i ++) {Serial.print (data ); Serial.print (","); atraso (1); }}}}
Conectando-se à UbiDots MQTT API
Inclua o arquivo de cabeçalho para o processo MQTT
#incluir
definir outras variáveis para MQTT, como nome do cliente, endereço do corretor, o ID do token
#define TOKEN "BBFF - ************************************" // Your Ubidots TOKEN # define MQTT_CLIENT_NAME "******************************"
char mqttBroker = "things.ubidots.com";
carga útil char [100]; char tópico [150]; // crie uma variável para armazenar o toke de ID do token
Etapa 5: Publicação de leituras de sensor para UbiDots
Crie variáveis para armazenar diferentes dados do sensor e crie uma variável char para armazenar o tópico
#define VARIABLE_LABEL_TEMPF "tempF" // Atribuindo o rótulo da variável # define VARIABLE_LABEL_TEMPC "tempC" // Atribuindo o rótulo da variável #define VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "úmido" // Atribuindo o rótulo da variável
char topic1 [100];
char topic2 [100]; char topic3 [100];
publicar os dados no tópico MQTT mencionado, a carga útil será semelhante a {"tempc": {value: "tempData"}}
sprintf (tópico1, "% s", ""); sprintf (tópico1, "% s% s", "/v1.6/dispositivos/", DEVICE_LABEL); sprintf (carga útil, "% s", ""); // Limpa a carga útil sprintf (carga útil, "{"% s / ":", VARIABLE_LABEL_TEMPC); // Adiciona o valor sprintf (carga útil, "% s {" valor / ":% s}", carga útil, str_cTemp); // Adiciona o valor sprintf (payload, "% s}", payload); // Fecha os colchetes do dicionário Serial.println (carga útil); Serial.println (client.publish (tópico1, carga útil)? "Publicado": "não publicado"); // Faça o mesmo para outro tópico também
client.publish () publica os dados para UbiDots
Etapa 6: visualizando os dados
- Vá para Ubidots e faça login em sua conta.
- Navegue até o Painel a partir da guia Dados listada na parte superior.
- Agora clique no ícone "+" para adicionar os novos widgets.
- Selecione um widget da lista e adicione uma variável e dispositivos.
- Os dados do sensor podem ser visualizados no painel usando diferentes widgets.
Etapa 7: Código geral
O código Over para HTML e ESP32 pode ser encontrado neste repositório GitHub.
Créditos
- placa de breakout ncd ESP32.
- Sensores de pressão e temperatura sem fio ncd
- pubsubclient
- UbiDots
- Agendador de tarefas
Recomendado:
Dados do sensor de vibração e temperatura sem fio para MySQL usando Node-RED: 40 etapas
Dados do sensor de vibração e temperatura sem fio para MySQL usando Node-RED: Apresentando o sensor de vibração e temperatura industrial de IoT de longo alcance da NCD, ostentando um alcance de até 2 milhas com o uso de uma estrutura de rede mesh sem fio. Incorporando um sensor de vibração e temperatura de 16 bits de precisão, este dispositivo trans
Enviando dados de sensor de temperatura e vibração sem fio para o Excel usando Node-RED: 25 etapas
Envio de dados de sensor de temperatura e vibração sem fio para o Excel usando o Node-RED: Apresentando o sensor de vibração e temperatura industrial de IoT de longo alcance da NCD, ostentando um alcance de até 2 milhas com o uso de uma estrutura de rede de malha sem fio. Incorporando um sensor de vibração e temperatura de 16 bits de precisão, este dispositivo trans
Enviando dados de vibração e temperatura sem fio para planilhas do Google usando Node-RED: 37 etapas
Enviando dados de vibração e temperatura sem fio para o Google Sheets usando Node-RED: Apresentando o sensor de vibração e temperatura industrial de IoT de longo alcance da NCD, ostentando um alcance de até 2 milhas com o uso de uma estrutura de rede mesh sem fio. Incorporando um sensor de vibração e temperatura de 16 bits de precisão, este dispositivo trans
Robô Arduino sem fio usando módulo sem fio HC12: 7 etapas
Robô Arduino sem fio usando módulo sem fio HC12: Olá pessoal, bem-vindos de volta. Em meu post anterior, eu expliquei o que é um circuito de ponte H, L293D motor driver IC, pegando carona L293D Motor driver IC para dirigir drivers de motor de alta corrente e como você pode projetar e fazer sua própria placa de driver de motor L293D
Visualizando dados do sensor sem fio usando gráficos do Google: 6 etapas
Visualizando Dados do Sensor Wireless Usando Google Charts: A análise preditiva das máquinas é muito necessária para minimizar o tempo de inatividade da máquina. A verificação regular ajuda a aumentar o tempo de serviço da máquina e, por sua vez, aumenta sua tolerância a falhas. Sinal de vibração e temperatura sem fio