Construindo uma rede de sensores sem fio em sua casa
Este tutorial irá ensiná-lo a criar uma rede de módulos de sensores sem fio com boa relação custo-benefício. Muitos dos módulos sem fio prontos podem ser muito caros para uso em várias unidades de sensor. Embora os módulos Wi-Fi e Zigbee sejam populares e fáceis de usar, seu custo pode tornar seu uso em uma variedade de sensores impraticável. Existem, no entanto, módulos de RF de baixo custo sem todos os recursos caros que funcionam bem para esses fins. A plataforma Arduino pode usar módulos de rádio de baixo custo para se comunicar de forma fácil e confiável.
Depois que o hardware estiver montado, você aproveitará a plataforma Raspberry Pi para postar os dados no serviço de Internet das Coisas da Xively, onde você pode rastrear os valores ao longo do tempo e disparar nas condições de limite.
Reúna os componentes e ferramentas
Este projeto incluirá três partes, duas unidades transmissoras e uma unidade receptora. Os transmissores são compostos de uma placa Arduino, sensor e transmissor RF. A unidade receptora é composta por uma placa Arduino, um receptor RF, um conversor de nível lógico e um Raspberry Pi.
Há uma grande variedade de placas compatíveis com Arduino que podem ser usadas neste projeto. O requisito mínimo para a placa para este projeto são dois pinos GPIO digitais e um pino analógico. Selecione uma placa compatível com Arduino que corresponda às necessidades de custo e simplicidade deste projeto.
Neste tutorial, usei um conjunto de placas Arduino Nano que se encaixam bem em uma placa de ensaio e são simples de programar. No entanto, as versões 5V do Arduino pro mini ou Trinket também funcionarão bem e com um preço muito mais baixo. No entanto, isso requer um pouco mais de experiência para programar e usar. Escolha sabiamente.
Receptor
- Raspberry Pi - Modelo B com fonte de alimentação, capa e cartão SD - Verifique se os pinos GPIO estão acessíveis com a capa que você escolher
- Adaptador Wi-Fi compatível com Pi
- Arduino
- Fios de conexão da placa de ensaio
- Fios jumper de homem para mulher
- Conversor de nível lógico
- receptor RF 434 MHz
- Meia placa de ensaio
Transmissores (duas unidades)
- 2 x Arduino
- 2 x sensores de temperatura / umidade
- Transmissor RF 2 x 434 MHz
- 2 x meia placa de ensaio
- 2 x jack de cano CC de 2,1 mm compatível com placa de ensaio
- Adaptador de alimentação 2 x 9V com 2,1 mm x 5
- Fios de conexão da placa de ensaio
Ferramentas
- PC / Mac com IDE de programação Arduino instalado
- Cabo USB para programação de placas Arduino
- Teclado e mouse USB. Combinado ou com um hub para que ambos possam ser usados com uma única porta USB.
- O pacote de origem associado a este tutorial em sua estação de trabalho de programação
Montagem de transmissores
Os próprios transmissores são circuitos relativamente simples. Apenas um pino é usado para recuperar as informações do sensor de temperatura e umidade e um pino é usado para enviar esses dados ao transmissor RF. O diagrama do breadboard é mostrado abaixo.
A fonte de alimentação de 9 V será conectada ao conector cilíndrico tornando os trilhos inferiores de 9 V. O regulador de energia no Arduino produzirá 5 V que são seguros para uso para o rádio e sensores, o barramento de alimentação superior do diagrama.
O sensor vem com um resistor de 10k ohm que conecta o pino de dados à alimentação como um resistor pull up, enquanto outro fio o conecta ao GPIO D3.
Tenha o cuidado de seguir a configuração abaixo e certifique-se de verificar a folha de dados do sensor e do módulo de RF para garantir que os componentes estejam posicionados na placa de ensaio corretamente e que os pinos de alimentação, aterramento e sinal estejam conectados aos pinos corretos. O diagrama fritzing está incluído no pacote de origem para mais detalhes.
A antena é uma parte importante da placa porque o módulo RF não tem uma antena embutida. Usei um jumper de fêmea para macho de 6 polegadas conectado à placa de ensaio e funcionou bem o suficiente para permitir a recepção de todas as partes da minha casa e um pouco de fora. Conforme observado no diagrama, 6,5 polegadas é ideal para esta antena se você precisar de alcance adicional.
Uma nota sobre o uso de RF. Existem diferentes leis e regras sobre o uso de frequências em diferentes países. Certifique-se de estar em conformidade com essas regras antes de transmitir. Dito isso, os sinais desses módulos mal são potentes o suficiente para passar para fora de sua casa. Em condições perfeitas, porém, esses módulos podem transmitir até 150 metros.
Baixar bibliotecas para componentes
O transmissor usa duas bibliotecas que não vêm com o Arduino IDE. Baixe as bibliotecas conforme descrito abaixo e descompacte-as em seu diretório de esboço em um subdiretório denominado Bibliotecas.
- Baixe o pacote de origem VirtualWire para este tutorial e descompacte a pasta de esboço wirelesstransmitter em sua pasta de esboço do Arduino
- Na pasta wirelesstransmitter, crie uma pasta chamada Bibliotecas
- Baixe a versão mais recente do código VirtualWire, 1.23 no momento em que este texto foi escrito, da página do projeto
- Extraia a pasta VirtualWire para a pasta wirelesstransmitter / Libraries / para que você tenha outra subpasta chamada VirtualWire
- Baixe a biblioteca de sensores DHT da página github do projeto
- Extraia a pasta DHT para a pasta Bibliotecas também. Agora você deve ter as duas pastas de biblioteca necessárias DHT e VirtualWire em sua pasta wirelesstransmitter / Libraries.
Programe a placa Arduino
Este tutorial presume que você tenha alguma experiência com o Arduino e como programá-los usando o IDE do Arduino. Caso contrário, há instruções muito boas no site oficial do Arduino.
- Abra o esboço do wirelesstransmitter do arquivo de origem no Arduino IDE e salve uma cópia localmente
- Certifique-se de que o Arduino NÃO esteja conectado à alimentação por meio do conector cilíndrico
- Conecte a placa à sua estação de trabalho de programação com um cabo USB apropriado
- Defina o tipo de placa para a placa Arduino selecionada no menu Ferramentas> Placa
- Defina a porta serial para a porta detectada quando você conectou a placa Arduino no menu Ferramentas> Porta
- Certifique-se de que o MYID define está definido como 1 e o TRANSPIN e DHTPIN estão corretamente definidos para os pinos conectados ao módulo transmissor de RF e sensor DHT, respectivamente. Se você construiu sua placa de acordo com o diagrama acima, tudo já deve estar configurado. Veja o exemplo de código abaixo.
- Certifique-se de que a UNIDADE está configurada corretamente para sua preferência Fahrenheit ou Celsius.
12345 | # define MYID 1 // o número de ID desta placa. Altere isso para cada placa que você piscar. // O ID será transmitido com os dados para que você possa saber qual dispositivo está transmitindo # define TRANSPIN 3 // qual pino transmitir # define DHTPIN 4 // qual pino o DHT está conectado # define UNIT 0 // 0 para Fahrenheit e 1 para Celsius |
O MYID define é um ID numérico que o transmissor usa para se identificar exclusivamente. Como você terá vários transmissores em locais diferentes, é importante ter uma ID exclusiva para cada um. Este número será usado novamente quando você configurar o script do receptor.
- Verifique o código pressionando Control-R para garantir que as bibliotecas sejam incluídas e compiladas corretamente.
- Envie o código para o quadro clicando no botão Upload na barra de ferramentas.
- Abra as janelas do Serial Monitor pressionando Control-Shift-M
A janela Serial Monitor redefine o Arduino, então você deve ver uma linha de código na tela semelhante a:
12 | Umidade:44,00% Temperatura:60,80 * F Enviando mensagem:ID:1:TS:23143:TF:60,79:RH:44,00 |
A mensagem é composta por pares Nome:Valor que o destinatário tratará. O transmissor irá ler e transmitir seu sinal em um longo intervalo aleatório. Os sensores não mudam muito ou frequentemente, portanto, transmitir mais frequentemente do que uma vez a cada minuto não agrega valor. O tempo de espera aleatório é para permitir a coexistência de vários sensores.
Mesmo se houver duplicação e o sinal de ambos os transmissores for perdido, o intervalo aleatório garantirá que suas próximas transmissões não se sobreponham. A semente aleatória para este intervalo é definida a partir de um analogRead em uma porta analógica não utilizada que retornará valores aleatórios para garantir que não haja dois transmissores no mesmo padrão.
O código de exemplo que gera a saída acima está configurado para usar Fahrenheit. Você pode ver o identificador TF:60.79 na string da mensagem, indicando que meu laboratório é de fato apenas um fio de cabelo abaixo de 61 graus. No entanto, a umidade relativa RH:44,00 é um confortável 44%. Pode-se inferir do ambiente úmido e frio que meu laboratório fica no porão. Alguém pode estar certo.
Os transmissores são configurados para esperar 2 a 5 minutos entre as transmissões por padrão. Se você deseja acelerar isso para fins de depuração, modifique o valor de delay () no final do esboço para ser mais como 5000 (ms). É altamente recomendável que você altere isso de volta e carregue novamente o código para seus transmissores quando estiver pronto para uso em tempo integral.
- Construa a segunda placa transmissora
- Modifique o esboço do transmissor para que a definição de MYID seja definida como 2
- Faça upload do código para o segundo painel
- Abra as janelas do Serial Monitor pressionando Control-Shift-M e verifique se a saída se parece com a primeira placa do transmissor, exceto que a mensagem transmitida começa com ID:2
Construir o painel receptor
A placa receptora será responsável por receber a mensagem de transmissão em seu componente receptor RF e enviar essa mensagem por fios seriais para o Raspberry Pi. A placa Arduino é usada para receber o sinal por alguns motivos muito importantes. O código VirtualWire usa a natureza em tempo real do Arduino para gerenciar a modulação e demodulação do sinal.
Isso significa que a unidade receptora precisa estar operando na mesma frequência. Além disso, há pouco espaço para jitter no processador receptor, ao qual o Raspberry Pi é propenso, devido ao seu sistema operacional preemptivo e não em tempo real. Comparando os custos de um Arduino Pro Mini mais o módulo receptor de RF com o de um módulo Zigbee que podia falar diretamente com o Raspberry Pi revelou que usar um Arduino externo ainda era bastante econômico.
Neste ponto, NÃO conecte os cabos de 5 V e terra do Pi à placa de ensaio. Mantenha os cabos de ligação à mão, mas você não quer alimentar o Arduino tanto da porta USB quanto do Raspberry Pi.
Observe que o conversor de nível lógico na lista de materiais acima não é exatamente igual ao da biblioteca Fritzing, mas as pinagens estão bem identificadas, apenas em lugares diferentes. Certifique-se de que os fios corretos estejam conectados aos pinos corretos no conversor de nível lógico real.
Este componente é necessário para converter o sinal serial do Arduino de 5 V em um sinal serial do Raspberry Pi de 3,3 V e não danificar o Pi. Veja a imagem abaixo para obter ajuda adicional.
Para obter mais detalhes:Construindo uma rede de sensores sem fio em sua casa
Processo de manufatura
- Redes de sensores sem fio:6 coisas a serem lembradas ao trocar de tecnologia
- O que é uma rede de sensores sem fio de baixa potência?
- Interface para o Sensor Wireless Driveway
- Construindo uma rede de sensores para um moinho do século 18
- Como alimentar e cuidar de suas redes de sensores sem fio
- Transferência de dados magnéticos sem fio
- Monitoramento de CO2 com Sensor K30
- Qual é sua altura?
- Sensor capacitivo de impressão digital com um Arduino ou ESP8266
- Rede de sensores sem fio de longo alcance