Digitalizar e enviar para o e-mail com um Raspberry PI
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
Este artigo tem mais de um ano
Não tirando mérito ao projeto, o principal que tirei daqui, foi compreender o potêncial da GPIO do raspberry pi, seria engraçado fazer-se um “Raspberry Pi GPIO explained”..
Fica aqui um video explicativo (em Inglês)
http://youtu.be/q_NvDTZIaS4
vejam também outros videos desse mesmo canal, tem muito e bom conteudo sobre o Raspberry Pi.
Parabens Eduardo Luis!!
Projecto muito bom!
Obrigado Luís Santos.
🙂
Parabéns pela ideia e pelo projecto em si…este tipo de coisas normalmente custa umas massas boas…e tu soubeste criar valor acrescentado com tão pouco.
Parabéns ao PPinto também pela publicação.
cmps
Deixo aqui uma questão. Será muito difícil utilizar um destes mini-computadores para simular um modem router?
Explico a minha ideia, em casa não tenho hipóteses de ADSL acima de 1Mb nem Fibra, restando a Banda Larga Móvel.
Tenho andado a procurar por routers com suportem pen’s mas persiste sempre o mesmo problema, a compatibilidade com as ditas,já que tenho mais do que uma e de fabricantes diferentes.
A ideia seria então ter um “brinquedo” destes com uma pen ligada e depois a partilhar a ligação por cabo para um router wireless ou mesmo ter o próprio Raspberry PI, com uma pen wireless a fazer todo o serviço de modem/router.
Será possível? Sem grandes complicações?
Tudo depende da sua capacidade técnica.
É perfeitamente possível mas implica know how linux.
O problema será mais a configuração de rede do que o Linux. Apenas fiquei curioso, porque preciso mesmo e até porque se resultar pensarei em pesquisar algo similar mas que suporte duas pens de banda larga móvel, que faça balanceamento entre as mesmas e que permita contabilizar o tráfego de cada uma, por causa dos ditos 15GB impostos pela ANACOM
boas…
o raspberry pi, tem duas portas usb(pelo menos versão b).
Ou seja podes ligar as duas pens 3g, ou uma pen 3g e uma wireless…
Se ligares as duas pens 3g, precisarás de usar a ethernet para ligar a um dispositivo wifi…ou então usar um HUB usb…
Se o teu raspberry vai fornecer conexão wireless a computadores precisas de um servidor dhcp instalado e configurado…
A interface ethernet é de 10mb(ethernet).
Eu neste momento tenho o meu ligado como dispositivo terminal via wireless.
Caso falha a luz, etc ele ao arrancar inicia o processo de DHCPDISCOVER e faz a conexão automaticamente, mas não tenho servidor dhcp a correr nele…
Não me parece muito complicado, no entanto e tendo em conta a capacidade da porta ethernet(10mb) pode ser uma limitação caso a uses…tudo depende da largura de banda que desejas…
cmps
Sabes de algum tutorial que explique isso? Eu tenho um projecto em mente em que eu usava o raspberry como servidor ftp
Boas Reis…
Enviei um email ao PPinto, foi para não estar a colocar mais coisas aqui sobre um assunto diferente…embora eu até ache que até podia interessar a este caso, pois penso que a conexão usada é ethernet(802.3), ficaria melhor com wireless…digo eu não sei.
cmps
Tenho a sensação que não será muito difícil.
Já agora… quando tiver tempo irei testar isso!
Um brinquedo destes fica mais em conta e suporta Linux:
http://www.kuantokusta.pt/precos/nm_pesquisa.php?pesquisa=TL-WR702N
Tudo bem mas e onde ligo a pen de banda larga móvel?
Sei que não é exactamente o que pretendes, mas o que normalmente faço quando vou de férias é ligar a PEN ao meu portatil e depois faço uma rede adhoc para os outros portateis interessados que acedem à net através do meu portatil como gatway!
Isso é o que tenho feito mas custa-me ser obrigado a usar um portátil para isso. Vou para a sala tenho de levar a pen comigo, vou para o escritório a mesma coisa, preciso reiniciar o portátil não posso porque o outro está a fazer um download usando a rede adhoc deste……
a melhor solução é comprares um router que seja compativel com ddwrt e instalar o ddwrt, que suporta uma grande variedade de pens banda larga movel
A parte de fazer um Wireless Access Point é possível: http://teoriadobitbang.blogspot.pt/2012/12/como-transformar-raspberry-pi-num.html
Ligar uma pen 3G também deve ser 🙂
Boas Rui Costa,
Podes sempre experimentar colocar o RPI a fazer de servidor de hotspot, verifica aqui:
http://www.raspberrypi.org/phpBB3/viewtopic.php?f=36&t=19517
http://elinux.org/RPI-Wireless-Hotspot
Pode ser que te dê ideias de como adaptares para a tua solução 🙂
Espero ter ajudado.
Eduardo Luís e Pedro Pinto, peço desculpa, com a minha pergunta acabei por descontextualizar um pouco a notícia.
Espero que tenha servido pelo menos para demonstrar ainda mais as capacidades destes mini-pc’s.
Por mim não há qualquer problema. São discusões saudáveis.