Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Sistema de Controle de Piscina com Azure IoT: Sensores Inteligentes e Monitoramento Remoto

Componentes e Materiais

Componente Quantidade Observações
Sensor de Temperatura Digital à Prova d'Água DS18B20 2 Vermelho: 3-5V, Azul/Preto: GND, Amarelo/Branco: Dados
Relé de Potência IoT 1
Resistor 4.75k ohm (1/4W, 5%) 2
Raspberry Pi 2 Model B 1
Arduino UNO R3 1

Aplicações e Serviços Online

Sobre o Projeto

Visão Geral

O objetivo deste projeto é controlar e monitorar uma piscina usando sensores de temperatura, relés e Microsoft Azure.

A inspiração veio da necessidade de operar e monitorar remotamente a piscina das crianças, uma Intex redonda de 15' x 48", com aproximadamente 19.000 litros. A piscina está conectada a um Filtro de Areia/Bomba, um Aquecedor de 11KW e um Sistema de Água Salgada. O objetivo era monitorar a temperatura da água e do ar, e controlar a bomba, aquecedor e sistema de sal para garantir que a piscina estivesse quente o suficiente para as crianças, sem funcionar excessivamente.

Sistema de Controle de Piscina com Azure IoT: Sensores Inteligentes e Monitoramento Remoto

O diagrama arquitetural acima mostra todos os componentes principais da solução.

Sistema de Controle de Piscina com Azure IoT: Sensores Inteligentes e Monitoramento Remoto

O Raspberry Pi, Arduino, Relé IoT e protoboard estão fixados com abraçadeiras em uma caixa plástica para proteção contra umidade. Furos foram feitos para cabos e ventilação.

Sensores

O monitoramento da temperatura da água da piscina e do ar é feito com dois sensores DS18B20 à prova d'água, conectados a um Arduino Uno R3 usando as bibliotecas Dallas Controls e OneWire. Os dados de temperatura (em Celsius) são enviados ao Raspberry Pi a cada 1 segundo via I2C. Os dois valores são delimitados por "|".

temperatureData = padRight(String(poolSensor.getTempCByIndex(0)) + "|" + String(outsideSensor.getTempCByIndex(0)), I2C_BUFFER_LEN);

Os sensores DS18B20 vêm pré-cabeados:

Usei fio de campainha (20 AWG) barato para estender o alcance do DS18B20 que mede a temperatura da água. Este sensor fica submerso na piscina.

Sistema de Controle de Piscina com Azure IoT: Sensores Inteligentes e Monitoramento Remoto

O segundo sensor DS18B20 para temperatura do ar fica colado na parte externa da caixa plástica.

Relé

O Raspberry Pi controla uma régua de energia IoT Power Relay, à qual a Bomba e o Sistema de Água Salgada estão conectados em 110V. Isso é feito usando o pino de 3V do Pi. Alternar o pino de 3V habilita/desabilita um par de tomadas 110V no relé (o par vem desligado por padrão).

Sistema de Controle de Piscina com Azure IoT: Sensores Inteligentes e Monitoramento Remoto

Não foi necessário conectar relé ao Aquecedor, pois ele tem sensor de fluxo embutido e para/inicia aquecimento baseado na ausência/presença de fluxo de água. Além disso, não encontrei relé para controlar circuito 220V/60A usando 3V ou 5V.

No futuro, pretendo adicionar sensores para medir consumo elétrico dos circuitos 110V e 220V. Recomendações são bem-vindas.

Raspberry Pi

O Raspberry Pi roda Windows IoT Core Build 10.0.10586.0 e realiza:

O IoTPoolRaspiBackgroundApp é uma aplicação C# headless, criada com o template Background Application (IoT) no Visual Studio 2015 Update 3.

Envia o seguinte payload JSON ao Azure IoT Hub a cada minuto via AMQP (configurável para HTTPS ou MQTT):

{ "PoolName" : "iotpool", "PoolWaterTempC" : 30, "OutsideAirTempC" : 27, "IsPoolPowerOn" : false, "SampleDateTime" : "2016-07-05T23:35:58.0882185Z" }

O Raspberry Pi é registrado como dispositivo no Azure IoT Hub. A forma mais fácil é usar o Device Explorer, que também obtém a connection string, monitora mensagens D2C e testa C2D.

Edite em StartupTask.cs para conectar ao seu IoT Hub:

static string iotPoolConnString = "HostName=<iothubname>.azure-devices.net;DeviceId=iotpool;SharedAccessKey=<key>";
static string deviceName = "iotpool";

Arduino Uno

Conectado a dois sensores DS18B20 via bibliotecas Dallas Controls e OneWire. Alimentado pelo Raspberry Pi via USB (5V) e envia leituras de temperatura ao Pi via I2C (pinos SDA/SCL).

Sistema de Controle de Piscina com Azure IoT: Sensores Inteligentes e Monitoramento Remoto

Use o código Two-DS18B20-I2C.ino para rodar no Arduino.

Azure

Todos os componentes Azure foram criados na mesma região (West US) para minimizar custos de tráfego de saída.

Azure IoT Hub

Usada a edição gratuita (8.000 msg/dia, 500 bytes cada). O app envia 1.440 msg/dia (1/min) de 158 bytes, sobrando margem para C2D.

Registre o dispositivo no IoT Hub via Device Explorer para obter a connection string.

Sistema de Controle de Piscina com Azure IoT: Sensores Inteligentes e Monitoramento Remoto

Azure Streaming Analytics

Job ASA conecta entrada do IoT Hub à saída Azure SQL Database com query simples:

SELECT PoolName, PoolWaterTempC, OutsideAirTempC, IsPoolPowerOn, SampleDateTime INTO sql FROM iothub

Escreve cada mensagem D2C (1/min) na tabela Pools do Azure SQL Database. Futuras melhorias podem incluir agregações para alertas (ex: média temp > 35°C).

Azure SQL Database

Para minimizar custo, usa S0 Standard (10 DTUs). Banco único com tabela única para armazenar mensagens D2C.

Schema:

CREATE TABLE [dbo].[Pools] (
  [Id] INT IDENTITY (1, 1) NOT NULL,
  [PoolName] NVARCHAR (MAX) NULL,
  [PoolWaterTempC] FLOAT (53) NOT NULL,
  [OutsideAirTempC] FLOAT (53) NOT NULL,
  [IsPoolPowerOn] INT NOT NULL,
  [SampleDateTime] DATETIME NOT NULL,
  CONSTRAINT [PK_dbo.Pools] PRIMARY KEY CLUSTERED ([Id] ASC)
);

Azure API App

API RESTful em ASP.NET Web API. Clientes autenticam via API Key no header HTTP:

api-key: {sua_api_key}

A key é definida em IoTPoolAPI\Controllers\PoolControllers.cs. Apps Mobile e Web devem usar esta key.

Sistema de Controle de Piscina com Azure IoT: Sensores Inteligentes e Monitoramento Remoto

Melhorias futuras: colocar atrás do Azure API Management, adicionar Azure AD.

Azure Web App

IoTPoolWebApp contém aplicação ASP.NET Web Forms para interagir com a API.

Sistema de Controle de Piscina com Azure IoT: Sensores Inteligentes e Monitoramento Remoto

Há também versão mobile-friendly. Edite default.aspx.cs para configurar URLs da API e chave.

Integrado com Azure Active Directory (AAD) para autenticação. Registre o web app no seu tenant AAD e configure web.config com o Client ID.

Mobile App

Escrito em Xamarin Forms. Compilado para Windows Phone e Windows 10, mas deve compilar para iOS/Android.

Sistema de Controle de Piscina com Azure IoT: Sensores Inteligentes e Monitoramento Remoto

Edite Core.cs, DataService.cs e PoolPage.xaml.cs para configurar URL da API e chave.

Power BI

Power BI (edição gratuita) usado para criar e publicar dashboard em tempo real dos dados da piscina IoT.

Sistema de Controle de Piscina com Azure IoT: Sensores Inteligentes e Monitoramento Remoto

Processo: baixar Power BI Desktop, conectar ao Azure SQL DB (DirectQuery), criar relatórios com visuais, publicar .pbix no PowerBI.com, fixar no dashboard. Futuramente, usar Power BI Embedded para embutir no web app. Por enquanto, visualizo via PowerBI.com ou app mobile Power BI.

Referências

Agradecimentos especiais a Miles Burton (biblioteca Dallas Controls) e Mike Mackes (código Arduino/I2C/DS18B20 e inspiração geral).

Código

Formato JSON Payload para Mensagens D2C

Nota: "IsPoolPowerOn" - 0 = desligado; 1 = ligado

{ "PoolName" : "IoTPool", "PoolWaterTempC" : 30, "OutsideAirTempC" : 27, "IsPoolPowerOn" : false, "SampleDateTime" : "2016-07-05T23:35:58.0882185Z" }

Schema Tabela "Pools" do SQL Database

CREATE TABLE [dbo].[Pools] (
  [Id] INT IDENTITY (1, 1) NOT NULL,
  [PoolName] NVARCHAR (MAX) NULL,
  [PoolWaterTempC] FLOAT (53) NOT NULL,
  [OutsideAirTempC] FLOAT (53) NOT NULL,
  [IsPoolPowerOn] INT NOT NULL,
  [SampleDateTime] DATETIME NOT NULL,
  CONSTRAINT [PK_dbo.Pools] PRIMARY KEY CLUSTERED ([Id] ASC)
);

Repositório GitHub do IoT Pool

Todo código fonte: https://github.com/khilscher/iotpool

Esquemáticos

Conexão Raspberry Pi ↔ Arduino via I2C com 2 Sensores DS18B20

Sistema de Controle de Piscina com Azure IoT: Sensores Inteligentes e Monitoramento Remoto
Sistema de Controle de Piscina com Azure IoT: Sensores Inteligentes e Monitoramento Remoto

Processo de manufatura

  1. Guia Completo para Projeto e Construção de Piscinas Enterradas e Elevadas
  2. Arduino Lança Portenta H7: Placa IoT Industrial‑Grade Estreia na CES
  3. Azure RTOS Expande nas Principais Plataformas Embarcadas com Novos Kits de Desenvolvimento
  4. Azure vs AWS: Qual Plataforma de Nuvem Vence para IoT?
  5. Construa um Datalogger GPS com Análise Espacial no Azure IoT Hub
  6. Monitoramento de Qualidade da Água IoT e IA Protege Vida Aquática
  7. Monitor de Frequência Cardíaca IoT em Tempo Real com Arduino e MAX30100
  8. Controle IoT Remoto de Braço Robótico Personalizado
  9. Construa um Pote Inteligente IoT com ESP8266, Arduino e Sensor Ultrassônico – Monitoramento em Tempo Real
  10. Rastreador Solar IoT: Gestão Inteligente de Energia com Arduino