Internet

Digitalizar e enviar para o e-mail com um Raspberry PI

21 Comentários

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.

rasp_00


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.

rasp_01

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

rasp_02

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


Como puderam ver, tendo um Mini PC e ideias é meio caminho andado para se fazer excelente projectos. Em nome do Pplware gostaria de dar os parabéns ao Eduardo Luís pela ideia e pela disponibilização do código dos scripts.

Também pode gostar

Comentários

21

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de cf
    cf

    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”..

    1. Avatar de cf
      cf

      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.

  2. Avatar de Luis Santos
    Luis Santos

    Parabens Eduardo Luis!!
    Projecto muito bom!

    1. Avatar de Eduardo Luís

      Obrigado Luís Santos.
      🙂

      1. Avatar de lmx
        lmx

        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

  3. Avatar de Rui Costa
    Rui Costa

    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?

    1. Avatar de Pedro
      Pedro

      Tudo depende da sua capacidade técnica.

      É perfeitamente possível mas implica know how linux.

      1. Avatar de Rui Costa
        Rui Costa

        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

        1. Avatar de lmx
          lmx

          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

          1. Avatar de Reis
            Reis

            Sabes de algum tutorial que explique isso? Eu tenho um projecto em mente em que eu usava o raspberry como servidor ftp

          2. Avatar de lmx
            lmx

            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

    2. Avatar de Eduardo Luís

      Tenho a sensação que não será muito difícil.
      Já agora… quando tiver tempo irei testar isso!

      1. Avatar de Rui Costa
        Rui Costa

        Tudo bem mas e onde ligo a pen de banda larga móvel?

    3. Avatar de João Ribas
      João Ribas

      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!

      1. Avatar de Rui Costa
        Rui Costa

        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……

    4. Avatar de João
      João

      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

    5. Avatar de Luiís Gomes
      Luiís Gomes

      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 🙂

  4. Avatar de Pedro Santos
    Pedro Santos

    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.

  5. Avatar de Rui Costa
    Rui Costa

    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.

  6. Avatar de Eduardo Luís

    Por mim não há qualquer problema. São discusões saudáveis.