Ubidots

Construindo um contador de pessoas com Raspberry Pi e Ubidots

Agustin Pelaez
· 5 minutos de leitura
Enviar por e-mail
Os contadores de pessoas são usados ​​principalmente no setor varejista para obter informações mais precisas sobre o comportamento dos consumidores. Eles também são encontrados em aplicações de segurança, gestão de eventos e cidades inteligentes. Imagine que você gerencia um grande shopping: esses contadores permitem saber quantas pessoas entram e saem, quais caminhos percorrem, onde param e, o mais importante, quando tudo isso acontece.
Assim como a maioria dos sensores, os contadores de pessoas já existem há algum tempo. No entanto, seus dados nem sempre são centralizados e conectados aos sistemas corporativos para embasar a tomada de decisões.
Neste artigo, apresentaremos um contador de pessoas muito básico, feito em casa, e transmitiremos seus dados para a nuvem Ubidots , onde poderão ser geradas análises mais precisas.
Construí isto 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 projeto "faça você mesmo" rápido e de baixo custo!
# **O que é Ubidots?**

recursosTrigger2

# [**Cadastre-se gratuitamente**](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 aedge em programação web, bancos de dados ou APIs.

## **O que você vai precisar**

Raspberry Pi Modelo B:

imagem

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

imagem

– Adaptador USB Wi-Fi:

imagem

 Sensor de movimento da Parallax:

imagem

– 3 fios fêmea-fêmea
– Uma caixa pequena para acomodar todos os componentes
## **Fiação e Revestimento**
Como você pode ver, o sensor de movimento tem apenas três pinos: V+, GND e um terceiro que emite o sinal: “1” quando há movimento e “0” quando não há. Não é necessário soldar nada, nem escrever funções I2C ou seriais para detectar esse 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)
Eis como ficou:

imagem

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

imagem

imagem

Codificação

Neste ponto, vamos assumir que você já configurou o básico do seu Raspberry Pi e está visualizando a linha de comando do Linux. Caso contrário, recomendamos [consultar este guia primeiro](ubidots). Você também pode consultar [este post sobre a configuração de Wi-Fi no Raspberry Pi](/setup-wifi-on-raspberry-pi-using-wicd)
Vamos garantir 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 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 pessoal Ubidots conta.

(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

O script consiste em um loop que verifica o estado do pino #7 (o sensor de movimento). Se a leitura for "1", indicando que houve movimento, o script incrementa a variável "peoplecount" e aguarda 1,5 segundos para que o sensor de movimento retorne ao estado normal. Esse processo é repetido 10 vezes, com um intervalo mínimo de 1 segundo entre cada ciclo. Em seguida, o script envia a soma total de "movimentos" para o Ubidots. Caso seja necessário calibrar o contador de pessoas, você pode ajustar os valores das linhas "time.sleep".
Quando o script terminar, você estará pronto para executá-lo a partir do console:
 

$ python peoplecounter.py

É isso! Eis como os dados brutos se apresentaram 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" 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

imagem

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, em tempo real dashboards ou integração com outros sistemas.

Você tem ideias para projetos com sensores?

Crie uma Ubidots contae faça acontecer!