Construindo um contador de pessoas com Raspberry Pi e Ubidots
Ubidots é um serviço em nuvem que permite armazenar e analisar dados de sensores em tempo real . Ele possibilita a criação de aplicações para a Internet das Coisas, sem a edge em programação web, bancos de dados ou APIs.
– Uma pequena bateria externa, com seu cabo micro-USB:
– Sensor de movimento da Parallax:
ATUALIZAÇÃO: Seguindo uma sugestão de Doug Jefferies (Obrigado!), os GPIOs do Raspberry Pi são projetados para 3,3 V, mas estamos aplicando 5 V neles. Portanto, é melhor conectar:
V+ –> Pino nº 1 (3,3 V).
Como o sensor é muito sensível ao movimento, usei o jumper na parte traseira para definir a sensibilidade mais baixa. Além disso, coloquei-o em uma caixa escura com uma pequena abertura, para que a detecção de movimento se concentrasse em um ponto específico em vez de ser omnidirecional
Codificação
Crie um novo arquivo chamado “peoplecounter.py”:
$ sudo nano peoplecounter.py
E insira o seguinte código. Certifique-se de substituir os valores da chave da API e do ID da variável pelos valores da sua conta pessoal Ubidots .
(Observação: o código não é muito elegante, mas, ei, eu não sou um desenvolvedor Python, apenas um cara do hardware 🙂)
from ubidots import ApiClient import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) GPIO.setup(7, GPIO.IN) try: api = ApiClient("a21ebaf64e14d195c0044fcc3b9f6dab9d653af3") people = api.get_variable("5238cec3f91b282c7357a140") except: print "Não foi possível conectar à API, verifique sua conexão com a Internet" counter = 0 peoplecount = 0 while(1): presence = GPIO.input(7) if(presence): peoplecount += 1 presence = 0 time.sleep(1.5) time.sleep(1) counter += 1 if(counter==10): print peoplecount people.save_value({'value':peoplecount}) counter = 0 peoplecount = 0
$ python peoplecounter.py
Agora que os dados estão na nuvem, você pode adicionar widgets ao seu dashboard para exibir a atividade em tempo real. Você também pode configurar "Eventos" na sua conta Ubidots para receber uma notificação por SMS ou e-mail quando sua variável atingir um limite específico.
Conclusão
Este projeto fornece uma estimativa do número de pessoas que passam por um determinado ponto. Ele não fornece o número exato de pessoas, devido às limitações do sensor de movimento, mas em algumas aplicações, isso pode ser suficiente.
Contadores de pessoas mais sofisticados usam câmeras e algoritmos de processamento de imagem para detectar o que é o objeto em movimento (pessoa, carro, animal de estimação...), em que direção ele se move (para dentro/para fora, para a esquerda/para a direita) e poderiam até ser ampliados, em teoria, para saber a idade e o sexo da pessoa.
Outra forma de detectar pessoas seria captar passivamente os sinais de rádio dos seus smartphones, como Wi-Fi ou Bluetooth ( veja como este indivíduo detectou smartphones ao redor da sua casa ). Em última análise, a iBeacon também deverá ser um grande facilitador dessas aplicações.
Em qualquer caso, os dados coletados podem ser facilmente enviados para o Ubidots , onde podem ser interpretados através da criação de alertas, dashboards em tempo real ou integração com outros sistemas.