A moda dos mini Pc’s pegou! Muitos são já os equipamentos disponíveis no mercado para este segmento mas, a verdade é que o projecto Raspberry Pi continua a liderar a preferencia dos utilizadores. O Raspberry Pi foi anunciado em Maio de 2011 e desde aí que são muitos os projectos que vão sendo publicados na Internet, como por exemplo usar o Raspberry Pi para ligar/desligar uma simples lâmpada (ver aqui).
Hoje vamos conhecer uma ideia simples, funcional e low cost, utilizado um Raspberry PI e um scanner antigo.
O Raspberry Pi é um dos mini PCs mais populares e potentes que tem servido de base a muitos projectos interessantes (pode consultar alguns dos projectos aqui). Este pequeno equipamento tem um custo reduzido (aproximadamente 35€) e basta apenas ter um exemplar e dar asas à imaginação para criar excelentes projectos.
O projecto que vos apresentamos hoje é do português Eduardo Luís e consiste em usar um Raspberry PI e um scanner USB. Segundo o mentor do projecto, a ideia surgiu essencialmente pela necessidade de ter uma solução barata para o digitalizar e enviar documentos para o e-mail, numa filial da empresa onde trabalha, aproveitando um scanner antigo. Na filial existem apenas 3 pessoas a trabalhar e uma vez que havia know how optou por criar uma solução recorrendo ao Raspberry PI.
A Solução: Um scanner antigo e um Raspberry PI
Na solução apresentada, consiste num Raspberry PI a correr o SO Raspbian com um conjunto de serviços/ferramentas como por exemplo o Sendmail, Bind, Python, Bash, Sane, Imagemagick e Mutt.
A Ideia: O scanner antigo é ligado ao Raspberry PI via porta USB (necessita de ser compatível com Sane) e depois existe um botão que inicializa o processo de scanning, invocando um conjunto de scripts que serão responsáveis pelos processos de envio do documento digitalizado.
Hardware
Relativamente ao hardware, mais concretamente ao Raspberry PI, são necessários 3 pinos: um para o botão de inicialização e outros dois para indicar o estado do sistema.
O Scanner é um equipamento já antigo, com ligação via porta USB
Sistema ocupado Pino 18 (RED) – LED acende quando o sistema está em funcionamento digitalização/envio de fax)
Botão de inicialização Este botão dá inicio ao processo. Está ligado ao pino 18 e a uma resistência de 10.000 omh .
System status: Pino 14 (GREEN) – Mostra o estado do sistema a cada 5 segundos. O estado do sistema é verificado através de um simples script em bash (carregado no boot) e que se encontra localizado em /etc/rc.local
Scripts/Configurações
rc.local
#initiate PINS 14 and 18 on GPIO
echo 14 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio14/direction
echo 18 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio18/direction
#turns leds 14 and 18 off
echo 0 > /sys/class/gpio/gpio14/value
echo 0 > /sys/class/gpio/gpio18/value
#bash script to initiate blinking status
/root/scripts/blinking.sh &
# python script to listen for the push button
/root/scripts/script_listen_for_scan.py &
/root/scripts/blinking.sh
#!/bin/bash
while true; do
echo 1 > /sys/class/gpio/gpio14/value
sleep 0.05
echo 0 > /sys/class/gpio/gpio14/value
sleep 0.09
echo 1 > /sys/class/gpio/gpio14/value
sleep 0.05
echo 0 > /sys/class/gpio/gpio14/value
sleep 5
done
/root/scripts/script_listen_for_scan.py
#!/usr/bin/env python
# LOOP À ESPERA DA PRESSÃO NO BOTÃO
from time import sleep
import os
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.IN)
while True:
if ( GPIO.input(23) == True ):
os.system('/root/scripts/scan.sh &')
sleep(0.5);
/root/scripts/scan.sh
#!/bin/bash
# ACENDE O LED DE BUSY
echo 1 > /sys/class/gpio/gpio18/value
cd /root
rm -rf /root/sent.lock # Evita problemas com o mutt ter morrido inesperadamente
scanimage --resolution 100 > /root/scan_benedita.pnm
convert /root/scan_benedita.pnm /root/scan_benedita.jpg
cd /root
sudo mutt -s "Scan da Benedita" -a /root/scan_benedita.jpg -c scannerbenedita@MYDOMAIN.PT < /root/MSG
# DESLIGA LED BUSY
echo 0 > /sys/class/gpio/gpio18/value
Vejam uma pequena demonstração de todo o sistema