Realizado

Iot: Sensor de ruídos, temperatura e luminosidade em Esp 12

Publicado em 05 de Novembro de 2020 dias na TI e Programação

Sobre este projeto

Aberto

O dispositivo deve:

Ser alimentado por carregador USB;
Ter uma ou duas baterias CR2477 que suporte sua atividade durante um mínimo de 24 horas caso falte energia elétrica, e que a bateria seja sempre mantida com carga;
Obter o nível médido de ruído durante 10 segundos;
Obter a temperatura;
Obter a luminosidade;
Enviar as leituras para uma API;
Ter conexão com a API via WebSocket, para enviar e receber dados instantaneamente;

O envio das leituras será feito neste formato: (https://arduinojson.org/)
[
    {
        "guid": "<guid>",
        "light": 36,
        "noise": 85,
        "temperature": 23,
        "when": "<event datetime in ticks format>"
    },
    {
        "guid": "<guid>",
        "light": 36,
        "noise": 85,
        "temperature": 23,
        "when": "<event datetime in ticks format>"
    }
]

Guid é um identificador colocado numa varíável do momento da gravação da firmware para que a API saiba qual dispositivo está enviando a informação.
When é a data e hora da leitura.
Se um envio falhar, esta leitura será mantida em variável para que seja enviado na próxima tentativa como mais uma posição no array.




A API poderá enviar estes dados ao dispositivo:

{
    "NoisyTimes":
    [
        {
            "from": "06:00",
            "to": "08:30",
            "noise": 78
        },
        {
            "from": "08:30",
            "to": "22:30",
            "noise": 85
        },
        {
            "from": "22:30",
            "to": "00:00",
            "noise": 77
        },
        {
            "from": "00:00",
            "to": "06:00",
            "noise": 73
        }
    ]
}

Estes dados definem os intervalos de horários que o dispositivo irá ter como limite de ruído para enviar para as leituras para a API, caso ultrapasse o nível de ruído de cada horário.
Para manter um controle do relógio interno, a API sempre irá responder qualquer comando com o datetime atualizado no header de qualquer resposta.

Também pode vir esta mensagem:

{
    "WorkingTime":
    {
        "from": "24/10/2020 13:00",
        "to": "26/10/2020 12:00"
    }
}

Esta propriedade define o dia e hora que o dispositivo começa a monitorar os ruídos. Fora deste horário, o dispositivo dorme e acorda a cada 2 minutos para medir o ruído

E, por fim, também pode vir esta mensagem:

{
    "Durations":
    {
        "sleep": 60,
        "eco": 120,
        "interval": 1800,
        "wait": 10,
        "average": 5
    }
}

Sleep é o período que o dispositivo dorme quando está fora do WorkingTime.
Eco é o período que o dispositivo dorme quando está em modo de bateria.





Interval é o período que o dispositivo irá automaticamente enviar os dados, havendo ou não ruídos.
Wait é o período que o dispositivo espera em cada loop (antes efetuar cada medição de ruído).
Average é o período que o dispositivo monitora o ruído para tirar a média de decibeis.





Para tal, deve-se utilizar um ESP 12, adicionando um demultiplexador na analógica para ler os 3 sensores, conforme mostrado neste link:
https://internetofhomethings.com/homethings/?p=530
https://diyi0t.com/increase-the-number-of-analog-inputs-with-an-analog-multiplexer/

Segue também um exemplo da conexão com a API:
https://github.com/gilmaimon/ArduinoWebsockets


Coloquei em anexo um diagrama de como é a lógica de execução.

Categoria TI e Programação
Subcategoria Outros
Tamanho do projeto Pequeño
Isso é um projeto ou uma posição de trabalho? Um projeto
Tenho, atualmente Eu tenho especificações
Disponibilidade requerida Conforme necessário
Funções necessárias Desenvolvedor

Prazo de Entrega: Não estabelecido

Habilidades necessárias

Outro projetos publicados por B. C.