Introduction: Intel Edison Espião + Bot Telegram

Projeto apresentado no Intel IoT Roadshow - São Paulo (Nov. 2015)

Exemplo de detecção de imagem com Intel Edison, webcam, programada com Python e OpenCV.

Neste exemplo será demonstrado como programar uma Intel Edison para vigiar um ambiente e enviar uma notificação via aplicativo (Bot) Telegram caso um rosto seja detectado. Muito útil para evitar que crianças fiquem esquecidas em carros ou pra controle de acessos em ambientes restritos.

Para executar este projeto, o ideal é que você já esteja familiarizado com a Intel Edison.

Caso seja sua primeira utilização, sugiro que leia este artigo:

http://www.embarcados.com.br/intel-edison-linux-di...

Link do projeto:

https://github.com/MuriloFerraz/Intel-Edison-Webca...

Step 1: Preparando a Intel Edison E Lista De Materiais E Pacotes.

Para este projeto é preciso:

- Intel Edison

- Webcam (eu usei a Logitech C270)

1 Cabo USB

1 Fonte 7~12 Vcc

Para o correto funcionamento, sua Intel Edison deve estar conectada à uma rede WiFi com acesso à Internet.

Os seguintes pacotes devem estar instalados na Intel Edison:

python-opencv, python-numpy, python-pip, telepot. Caso ainda não os tenha, execute os seguintes comandos no terminal da Intel Edison:

# echo -e "src/gz all http://repo.opkg.net/edison/repo/all\nsrc/gz edison http://repo.opkg.net/edison/repo/edison\nsrc/gz core2-32 http://repo.opkg.net/edison/repo/core2-32" > /etc/opkg/base-feeds.conf

# opkg update

# opkg install python-opencv

# opkg install python-numpy

# opkg install python-pip

# pip install telepot

É preciso baixar um arquivo para classificação e detecção de rostos para a Intel Edison ser capaz de reconhecer rostos, baixe o arquivo *.xml:

https://github.com/Itseez/opencv/blob/master/data/...

Transfira com o Filezila para o diretório "/home/hoot" da Intel Edison.

Step 2: Obtendo Um Bot Telegram (BotFather)

Link para instalação do Telegram no android:

https://play.google.com/store/apps/details?id=org....

Antes de começar a programar, é preciso obter um Bot Telegram, para isso, no seu celular ou cliente para PC do Telegram, converse com "BotFather" para obter um bot.

para mais informações a respeito, visite:

https://core.telegram.org/bots#botfather

Será solicitado que você escolha um nome de usuário e o nome do Bot, siga as instruções e você obterá uma chave com o seguinte formato:

111111111:AAAAaAaAAAAA1aaaaaA1Aaa1AAAAaa11a1

Para testar seu bot, no terminal da Intel Edison digite "python" e o console python será iniciado, digite os seguintes comandos:

>>> import telepot

>>> bot = telepot.Bot(' *** Sua Chave ***')

>>> bot.getMe()

#### você receberá informações sobre seu bot

>>> exit()

Step 3: Enviando E Recebendo Mensagens.

Agora é hora da Intel Edison mandar e receber mensagem.

Do seu celular ou cliente para PC envie uma mensagem para seu bot;

No terminal Intel Edison é hora de executar um pequeno listener, apenas para descobrir o ID do aplicativo instalado no celular ou PC, para isso siga os passos:

vi listener.py

#! /usr/bin/python

import sys

import time

import telepot

def handle(msg):

content_type, chat_type, chat_id = telepot.glance2(msg)

print (content_type, chat_id)

mensagem = msg['text'].strip().lower()

print mensagem

TOKEN = 'sua chave'

bot = telepot.Bot(TOKEN)

bot.notifyOnMessage(handle)

print 'Listening...'

while 1:

time.sleep(10)

### para sair do VI aperte 'Esc', 'w', 'q' e 'Enter'.

#chmod +x listener.py

# ./listener.py

Assim você receberá a mensagem que enviou do seu celular, anote o user_id ( neste formato = 111111111) para enviar mensagem para o celular.

https://github.com/MuriloFerraz/Intel-Edison-Webca...

Para mandar uma mensagem é mais simples ainda, após ter anotado o user_id, no terminal da Intel Edison basta executar:

python

>>> import telepot

>>> bot = telepot.Bot(' Sua chave ')

>>> bot.sendMessage(user_id, 'Aqui eh intel edison!!!)

>>> exit()

Step 4: Reconhecendo Rostos E Notificando.

Agora é hora de finalmente finalizar o projeto.

com a Intel Edison desligada, mude a chave da posição "Client" para "Host" conforme a imagem, "espete" a webcam na porta USB e volte a ligar sua Intel Edison, utilize a fonte e o cabo USB de debug para programar.

Sertifique-se que sua Intel Edison esteja conectada a uma rede WiFi com acesso a Internet.

vi spy.py

#! /usr/bin/python

import cv2

import time

import telepot
TOKEN = '111111111:AAAOaOaAaAAA1aataAq2qaa9XAAajAe35b8'

bot = telepot.Bot(TOKEN)

video_capture = cv2.VideoCapture(0)

face_cascade = cv2.CascadeClassifier('/home/root/haarcascade_frontalface_alt.xml')

while True:

ret, frame = video_capture.read()

faces = face_cascade.detectMultiScale(frame, 1.3, 5)

if len(faces) > 0:

mensagem = "Encontrei {0} pessoas, verifique! \n Proximo aviso em 5 minutos." .format(.len(faces)) bot.sendMessage(121111111, mensagem)

time.sleep(300)

video_capture.release()

### Salve o arquivo, de permissão para execução:

#chmod +x spy.py

### execute o programa:

# ./spy.py

## Se posicione na frente da webcam, quando um rosto for detectado, a notificação será enviada.

Se preferir acesse:

https://github.com/MuriloFerraz/Intel-Edison-Webca...

Step 5: Testando a Detecção Em Tempo Real E Streaming De Imagens

Se você gostaria de testar a detecção facial com envio de imagens em tempo real, transfira e execute este script.

https://github.com/MuriloFerraz/Intel-Edison-Webca...

Para o correto funcionamento deste programa, além dos itens do primeiro passo, é preciso baixar e transferir para o diretório "/home/root" o seguinte arquivo *.xml:

https://github.com/Itseez/opencv/blob/master/data/...

para criar um "cliente" no PC para receber as imagens do Intel Edison e ver o resultado do reconhecimento facial, por favor leia o excelente artigo do Prof. André Curvello em:

http://www.embarcados.com.br/visao-computacional-o...

Principalmente a parte " Codificação da Aplicação Cliente"