Construindo um contador de pessoas com Raspberry Pi e Ubidots

Os contadores de pessoas são usados ​​principalmente no setor de varejo para obter melhores insights sobre como os compradores se comportam. Eles também são encontrados em aplicações de segurança, gerenciamento de eventos e cidades inteligentes. Imagine que você administra um grande shopping: esses balcões informam quantas pessoas entram e saem, quais caminhos elas tomam, onde param e, o mais importante, quando tudo acontece.
Assim como a maioria dos sensores, os contadores de pessoas já existem há algum tempo. No entanto, os seus dados nem sempre estão centralizados e ligados aos sistemas empresariais para informar a tomada de decisões.
Neste artigo, apresentaremos um contador de pessoas muito básico e caseiro e transmitiremos seus dados para a nuvem Ubidots , onde melhores insights podem ser criados.
Eu construí isso um dia antes de uma demonstração no [Boston New Tech Meetup](http://www.youtube.com/watch?v=cSbjFs7XOQs) na semana passada, então posso dizer que foi um DIY rápido e de baixo custo projeto!
# **O que é Ubidots ?**

# [**Inscreva-se gratuitamente**]( ubidots )

Ubidots é um serviço em nuvem que permite armazenar e analisar dados de sensores em tempo real . Permite criar aplicações para a Internet das Coisas, sem nenhum conhecimento profundo de programação web, bancos de dados ou APIs.

## **O que você precisa**

Raspberry Pi Modelo B:

– Uma pequena bateria, com seu cabo micro-USB:

– Dongle USB Wi-Fi:

 Sensor de movimento da Parallax:

– 3 fios fêmea-fêmea
– Uma pequena caixa para acomodar todos os componentes
## **Fiação e revestimento**
Como você pode ver, o sensor de movimento possui apenas três pinos: V+, Terra e um terceiro que emite o sinal: “1” quando há movimento e “0” quando não há. Não há necessidade de soldar nada, nem escrever funções I2C ou seriais para detectar este sinal; basta conectar os cabos diretamente aos pinos GPIO do seu Raspberry Pi:
 ![contador de pessoas](http://media.tumblr.com/b47fa377202358ca34ca4b883ed90e2e/tumblr_inline_mtlkq6C4oX1s0d61y.png)
Veja como ficou:

ATUALIZAÇÃO Seguindo uma sugestão de Doug Jefferies (Obrigado!), Os GPIOs do Raspberry Pi são projetados para 3,3 V, mas estamos colocando 5 V lá. Portanto, é uma ideia melhor conectar:

V+ -> Pino nº 1 (3,3 V).

Como o sensor é muito sensível ao movimento, usei o jumper atrás dele 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 concentre em um ponto em vez de ser tão omnidirecional:

Codificação

Neste ponto, presumiremos que você fez uma configuração básica do Raspberry Pi e está olhando a linha de comando do Linux. Caso contrário, recomendamos [ler primeiro este guia]( ubidots ). Você também pode verificar [esta postagem sobre a configuração do Raspberry Pi WiFi.](/setup-wifi-on-raspberry-pi-using-wicd)
Vamos ter certeza de que temos todas as bibliotecas:
$ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get install python-setuptools $ sudo easy_install pip $ pip install ubidots

Crie um novo arquivo chamado “peoplecounter.py”:

$ sudo nano peoplecounter.py

E escreva o seguinte código nele. Certifique-se de substituir os valores da chave API e do ID da variável pelos da sua conta pessoal Ubidots .

(Observação: o código não é muito elegante, mas ei, não sou um desenvolvedor Python, apenas um cara de hardware 🙂

de ubidots importar ApiClient importar RPi.GPIO como tempo de importação GPIO GPIO.setmode (GPIO.BCM) GPIO.setup (7, GPIO.IN) tentar: api = ApiClient ("a21ebaf64e14d195c0044fcc3b9f6dab9d653af3") pessoas = api.get_variable ("5238cec3f91b282c735) 7a140") exceto: print "Não foi possível conectar-se à API, verifique sua conexão com a Internet" contador = 0 peoplecount = 0 while(1): presença = GPIO.input(7) if(presence): peoplecount += 1 presença = 0 tempo. sleep(1.5) time.sleep(1) counter += 1 if(counter==10): print peoplecount people.save_value({'value':peoplecount}) counter = 0 peoplecount = 0

O script consiste em um loop que verifica o estado do pino nº 7 (o sensor de movimento). Se aparecer “1”, significando que houve movimento, então ele incrementa a variável “peoplecount” e espera 1,5 segundos para que o sensor de movimento volte ao normal. Isso é feito 10 vezes, garantindo que haja pelo menos 1 segundo entre cada ciclo, depois envia a soma total dos “movimentos” para Ubidots . Se precisar calibrar o People Counter, você deve então brincar com as linhas “time.sleep” com outros valores.
Quando o script for concluído, você estará pronto para executá-lo no console:
 

$ python contador de pessoas.py

É isso! Esta é a aparência dos dados brutos no meu caso:
![imagem](http://media.tumblr.com/a3b6312a2a69679f5b9c71ce3246b141/tumblr_inline_mtlpgceZIm1s0d61y.jpg)

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” em 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 dica do número de pessoas que passam por um determinado ponto. Não fornece o número exato de pessoas, dadas as limitações do sensor de movimento, mas em algumas aplicações, isso pode ser suficiente.

Contadores de pessoas mais elaborados utilizam 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, esquerda/direita) e poderiam até ser estendidos, em teoria , para saber a idade e o sexo da pessoa.

Outra forma de detectar pessoas seria sentir passivamente os sinais de rádio de seus smartphones, como Wifi ou Bluetooth ( veja como esse cara detectou smartphones em sua casa ). Em última análise, a iBeacon também deverá ser um grande facilitador destas aplicações.

Em qualquer caso, os dados recolhidos podem ser facilmente enviados para Ubidots , onde podem ser interpretados através da criação de alertas, dashboards ao vivo ou conectando-os a outros sistemas.

Você tem ideias para projetos de sensores?

Crie uma conta Ubidots e faça acontecer!