Av. N.Sra de Copacabana 152/24 – Copacabana – Rio de Janeiro
http://www.gloveapp.com.br
[email protected]
RaspiLPR
O RaspiLPR pode ser usado como um sistema stand alone, que lê placas de carros
e toma autonomamente decisões, ou em conjunto com um PC, como parte de um
sistema mais complexo.
A abertura de uma cancela pode ser acionada através de um dos GPIOs da placa.
Para informar qual a placa lida, a comunicação com um eventual PC é feita através
do TCP/IP e porta serial. O sistema é configurável através do próprio website interno.
Autor: Stefano Benamati
1
Av. N.Sra de Copacabana 152/24 – Copacabana – Rio de Janeiro
http://www.gloveapp.com.br
[email protected]
Características técnicas:
• Velocidade (com placa na imagem): ~700ms*
• Velocidade (sem placa na imagem): ~150ms*
• Países: Brasil, Itália, França, República Checa.
• Output: HTML, RS232, TCP/IP (síncrono e assíncrono)
• Configuração via HTML
• Funcionalidade GPIO para dar sinal de abertura porta
• DHCP (passivo)
• Output vídeo
• Leitura contemporânea de mais placas na mesma imagem
• Traqueamento, filtragem e interpolação
* Na configuração padrão e com Raspberry Pi 1. Se pode aumentar a velocidade com uma escolha apropriada dos
parâmetros.
Instalação
Baixar a imagem do cartão SD
A imagem binária do cartão SD se encontra no site do produtor nesse endereço;
http://www.gloveapp.com.br/lpr.html
Descomprimir a imagem
Para diminuir o tempo de download a imagem é comprimida, então é preciso descomprimir a mesma antes de gravar no cartão.
Cópia da imagem no cartão de memoria
As informações que seguem são a tradução das paginas de instalação do Raspberry
que se encontram aqui:
http://www.raspberrypi.org/documentation/installation/installing-images/README.md
A imagem é para um cartão de memoria de 8GB; antes de gravar conferir se o seu
cartão possui este tamanho.
Autor: Stefano Benamati
2
Av. N.Sra de Copacabana 152/24 – Copacabana – Rio de Janeiro
http://www.gloveapp.com.br
[email protected]
Windows
•
Inserir o cartão de memoria no leitor e anotar a letra de driver (por exemplo
G:). Se pode ver isso facilmente na coluna esquerda do windows explorer.
•
Baixar o Win32DiskImager. Se trata de um arquivo comprimido que pode ser
encontrado aqui: http://sourceforge.net/projects/win32diskimager/
•
Descomprimir o arquivo e executar o programa Win32DiskImager; poderá
ser necessário rodar esse programa como administrador, e então clicar com o
botão direito e selecionar Run as administrator.
•
Selecionar a imagem que você deseja copiar no cartão de memoria. A imagem do cartão que você baixou é um arquivo comprimido, então é necessário
descomprimir antes de copiar.
•
Selecione a letra de drive correspondente ao leitor do cartão.
Fique muito atento nesta seleção porque se você selecionar o driver
errado você poderá cancelar todo o conteúdo do seu HD.
•
Se você tiver um leitor de cartões integrado no computador pode acontecer
que o mesmo não seja visto como driver; se isso acontecer poderá usar um
adaptador USB.
•
Clicar Write e esperar que a transferência de dados termine.
•
Fechar o programa e retirar o cartão.
Agora o cartão está pronto para ser inserido no Raspberry.
Linux
Atenção: o uso do comando dd é potencialmente desastroso se você
errar o dispositivo.
•
Sem o cartão inserido digitar df -h para ver quais são os dispositivos atualmente montados.
•
Inserir o cartão de memoria no leitor.
•
Digitar novamente df -h. Um novo item aparecerá na lista. A coluna esquerda informará o nome do dispositivo; O cartão de memoria será listado com um
nome parecido com /dev/mmcblk0p1 ou /dev/sdd1, podendo variar a
Autor: Stefano Benamati
3
Av. N.Sra de Copacabana 152/24 – Copacabana – Rio de Janeiro
http://www.gloveapp.com.br
[email protected]
ultima parte.
•
A parte final, no exemplo acima (p1 ou 1) indica a partição, mas o objetivo é
escrever o cartão inteiro e não apenas uma partição. Assim, é preciso remover a parte inicial do nome. No exemplo acima será então: /dev/mmcblk0 ou
/dev/sdd. Isso identifica o cartão inteiro.
•
Nota que, dependendo do numero de partições, o cartão de memoria poderá
ser listado mais do que uma vez no output do comando df, mas em todas as
linhas a parte inicial do nome, a qual identifica o cartão, será sempre a mesma.
•
Anote o nome identificativo do cartão e desmonte todas as suas partições
com o comando sudo umount /dev/XXX, substituindo XXX com o nome de
todas as partições do seu cartão. Vamos supor que o resultado do comando
df -h seja o seguinte:
/dev/mapper/mint­­vg­root 684G 501G 149G 78% / none 4,0K 0 4,0K 0% /sys/fs/cgroup udev 2,0G 4,0K 2,0G 1% /dev tmpfs 404M 1,4M 402M 1% /run none 5,0M 0 5,0M 0% /run/lock none 2,0G 76K 2,0G 1% /run/shm none 100M 32K 100M 1% /run/user /dev/sda1 236M 44M 180M 20% /boot /dev/sdd1 236M 44M 180M 20% /media/part1
/dev/sdd2 236M 44M 180M 20% /media/part2
e que o cartão de memoria seja /dev/sdd; para desmontar as partições digitar
os seguintes comandos:
umount /dev/sdd1
umount /dev/add2
ou seja: o nome completo das partições e não o nome do cartão, que neste
exemplo é /dev/sdd.
•
No terminal escrever o cartão com o comando abaixo, substituindo o argumento do parâmetro if= com a imagem do RaspiLPR decomprimida, e o argumento do parâmetro of com o nome do cartão.
É muito importante não errar o nome do cartão, pois se digitar o nome
errado poderá deletar o seu HD inteiro.
Autor: Stefano Benamati
4
Av. N.Sra de Copacabana 152/24 – Copacabana – Rio de Janeiro
http://www.gloveapp.com.br
[email protected]
O nome do cartão é aquele sem o número da partição, como você anotou anteriormente.
•
sudo dd bs=4M if=imagem_raspilpr of=nome_do_cartao
•
O parâmetro bs=4M funciona a maioria das vezes; se não funcionar baixar o
valor para 1M, mas isso aumentará o tempo de transferência.
•
O comando dd não fornece informações sobre o progresso da cópia e o terminal aparecerá travado. Poderá demorar entre 5 a 10 minutos para finalizar. Se
quiser ver o progresso abrir um novo terminal e digitar:
sudo pkill -USR1 -n -x dd
o progresso será mostrado no terminal onde você deu o comando de cópia. O
progresso poderá não ser mostrado imediatamente por causa do buffering.
•
Ao término da transferência dar um sync (sudo sync), para ter certeza que todos os dados sejam escritos, e desmonte o cartão.
Agora o cartão está pronto para ser inserido no Raspberry.
Conexão rede
O RaspiLPR está instruído para se conectar a uma rede com DHCP, e oferece os
serviços de SSH e HTTP.
Para descobrir qual endereço IP foi assinalado ao dispositivo tem varias opções:
Monitor
O Endereço IP é mostrado na tela se você conecta um monitor HDMI.
Áudio
Ao término do boot o RaspiLPR fala com voz sintetizada (em inglês) o endereço IP
que foi assinalado. É só inserir um fone de ouvido no jack áudio e escutar.
Se for conectado o botao1 (ver o capitulo sobre os botoes) o endereço é lido a cada
pressão deste botão.
Roteador
O roteador pode ser configurado para dar sempre o mesmo endereço IP ao RaspiL PR. Esta é a solução melhor caso o objetivo seja montar o RaspiLPR como parte de
um produto que necessita de interação com outros módulos. Conferir no manual do
Autor: Stefano Benamati
5
Av. N.Sra de Copacabana 152/24 – Copacabana – Rio de Janeiro
http://www.gloveapp.com.br
[email protected]
roteador como fazer.
nmap
O nmap é uma ferramenta de analise de rede que pode ser usada para achar todos
os computadores conectados a mesma rede.
A sintaxe é simples:
nmap -sP endereço_rede/numbits
onde endereço_rede é um qualquer endereço que pertence a rede que você queira
analisar (pode usar o seu endereço), e numbits indica quais bits são para considerar
fixos e quais vão variar durante a pesquisa. Para a maioria das redes este valor é 24.
Segue um exemplo:
$ nmap -sP 10.42.0.1/24
Starting Nmap 6.40 ( http://nmap.org ) at 2015­03­21 23:30 BRT Nmap scan report for 10.42.0.1 Host is up (0.00054s latency). Nmap scan report for 10.42.0.79 Host is up (0.0062s latency). Nmap done: 256 IP addresses (2 hosts up) scanned in 3.03 seconds foram encontrados dois hosts: 10.42.0.1 e 10.42.0.79 e como sabemos que o nosso
endereço é 10.42.0.1 o outro deve ser do RaspiLPR.
Interface SSH
O sistema pode ser acessado para administração, configuração o customização diretamente via SSH:
usuário = pi
senha = raspberry
o usuário tá na lista dos sudoers e não precisa de senha, assim é possível lançar co mandos como root usando o sudo.
Autor: Stefano Benamati
6
Av. N.Sra de Copacabana 152/24 – Copacabana – Rio de Janeiro
http://www.gloveapp.com.br
[email protected]
Para mudar o usuário de pi para root é só digitar sudo su
Interface HTTP
O RaspiLPR oferece toda a ferramenta de configuração através do próprio site interno. O site é protegido por uma senha:
usuário = admin
senha = admin
Se aconselha a mudança da senha, a fim de evitar intrusões no sistema, se isso for
conectado a rede ou se tiver como um terceiro conectar um cabo de rede.
Info
A página info, que é a página
principal que se abre ao acessar o site, resume os indicadores principais para conhecimento da saúde do sistema.
Entre eles o tempo em que o
leitor de placas está rodando, o
uso da memória, o uso do disco, e a porcentagem de CPU
usada.
Dois indicadores importantes
são a temperatura da CPU e
da GPU, que ajudam a identificar se o sistema foi instalado
num lugar apropriado ou se
precisa de ventilação.
Os itens Button estão conectados aos botões predefinidos do
sistema, que podem ser programados para executar qualquer coisa que o programador quiser. Se apertar um destes botões a linha correspondente mostrará a escrita “pressed”. Isso serve para confirmar se a conexão do
botão ao próprio GPIO foi feita de forma correta.
Toda a informação é atualizada a cada dois segundos, para não sobrecarregar o sistema.
Autor: Stefano Benamati
7
Av. N.Sra de Copacabana 152/24 – Copacabana – Rio de Janeiro
http://www.gloveapp.com.br
[email protected]
Log
A página log mostra a atividade do sistema relativa
aos últimos 30 eventos.
Isso serve principalmente
para entender qual é o
problema se o sistema
não funcionar.
Quando o sistema funcionar regularmente será
apresentada
periodicamente uma estatística de
funcionamento, com o
tempo de processamento
e o numero de frame processados.
A informação é atualizada
a cada dois segundos
para não sobrecarregar o sistema.
Video
Esta pagina mostra a imagem sendo processada
pelo LPR.
A moldura preta mostra a
resolução da câmera, a
velocidade global em frame por segundo e, entre
parêntese, a velocidade
de processamento pura,
ou seja sem levar em consideração o tempo de
aquisição da imagem.
As placas lidas são sobrepostas a imagem original.
Como a taxa de atualização não é muito alta haverá um certo atraso de tempo entre a imagem sendo processada e a imagem visuali zada.
As duas barras azuis no fundo da imagem mostram graficamente a largura mínima e
máxima das placas que o LPR deve considerar. Esses valores podem ser impostaAutor: Stefano Benamati
8
Av. N.Sra de Copacabana 152/24 – Copacabana – Rio de Janeiro
http://www.gloveapp.com.br
[email protected]
dos na página de configuração.
Admin
A página de administração serve
apenas para mudar a senha que
da acesso ao servidor web.
É aconselhado mudar a senha se
o sistema for conectado a uma
rede, ou se for possível para um
terceiro ter acesso físico ao sistema.
Setting
Nesta página se define quais são os parâmetros de funcionamento do LPR:
Camera resolution: é a resolução
da câmera. Virtualmente poderia
ser qualquer resolução suportada
pela câmera, mas como o Raspberry não é um hardware muito
performante aconselha-se que
seja usada uma resolução baixa,
como por exemplo 320x240. Com
o novo Raspberry PI 2 provavelmente se poderá processar em
tempo real também imagens maiores.
Se a câmera não suportar a resolução escolhida será utilizada a resolução padrão 640x480.
Camera source: origem das imagens; se esse campo é setado
com o valor -1 será escolhida a
primeira câmera disponível no sistema, com preferência pela Raspicam, se for disponível. Qualquer
outro valor numérico positivo indica qual câmera usar: 0 = primeira câmera, 1 a se gunda, e assim por diante. Esse campo aceita também URL de câmeras IP ou até vídeos gravados no HD, por exemplo: http://mycameraip.com.br:8080/image.mjpg.
O campo Camera resolution não tem efeito se for usada uma câmera IP, porque esta
impostação é feita localmente na câmera mesmo. Se for usar a câmera IP e decidir
usar o protocolo UDP, deve-se atentar ao configurar a câmera, de forma que o I-fraAutor: Stefano Benamati
9
Av. N.Sra de Copacabana 152/24 – Copacabana – Rio de Janeiro
http://www.gloveapp.com.br
[email protected]
mes não seja maior do que o tamanho máximo do pacote UDP, que é 64KiB. Na duvida usar o protocolo TCP.
ROI: Region Of Interest; esse campo serve para dizer ao LPR para analisar apenas
uma porção da imagem, para que o processamento seja mais rápido. Se esse campo não for definido será processada a imagem inteira. O ROI é muito útil quando se
sabe com antecedência que a placa aparecerá apenas numa área da imagem.
A sintaxe é a seguinte: x y largura altura, ou seja, se o objetivo for processar apenas
um retângulo, cujo ângulo superior esquerdo esteja na posição (50, 80), de largura
200 e altura 100, deve-se inserir no campo o seguinte: 50 80 200 100.
Plate min/max width: esses valores indicam a dimensão mínima e máxima aproximada com que a placa se apresentará na imagem. Esses valores ajudam a reduzir
muito o tempo de processamento, porque cortarão o tempo gasto procurando placas
pequenas ou grandes demais.
Serial device: um dos canais para disponibilizar o resultado da leitura das placas é a
porta serial. O Serial device indica qual porta serial deve ser usada para comunica ção. O Raspberry já vem com uma porta serial instalada, que é /dev/ttyAMA0; se for
instalada uma nova serial via USB o nome do device mudará; provavelmente será
/dev/ttyUSB0. Para conferir qual é o nome do dispositivo basta se conectar via ssh e
olhar na pasta /dev.
O motivo pelo qual se poderia querer instalar uma serial via USB é explicado na sec ção serial.
Deixando em branco esse campo desativará a saída das placas pela serial.
Serial params: são os parâmetros de configuração da serial na forma velocidade databitsparitystopbits por exemplo: 19200 8N1.
Rescale Factor: este parâmetro ajuda a diminuir o tempo de processamento no modulo que localiza a placa. O valor ideal é 1, mas se pode selecionar também 2 se a
placa a ser procurada for grande.
Median filter size: para eliminar eventuais erros transitórios na leitura da placa o sistema opera um filtro mediano, analisando um certo número de imagens passadas.
Esse parâmetro indica quanto tempo no passado o filtro deve analisar. O valor de default é um bom valor. Se não quiser usar o filtro mediano colocar zero nesse campo.
Validation: indica qual nível de validação deve ter um candidato placa para ser promovido ao passo sucessivo, ou seja a leitura. A validação permite cortar o processamento evitando que áreas que não contenham placas sejam processadas.
Tem 4 diferentes níveis de validação:
•
Level 0: nenhuma validação; o sistema processa todos os retângulos que o localizador de placas retorna. Se um retângulo não for placa será detectado depois de muito processamento ao termino do OCR.
•
Level 1: opera um controle morfológico da área, retornando um indicador de
probabilidade que essa área seja uma placa. Esse tipo de validação é muito
rápido e consegue cortar pela metade os falsos positivos, sem eliminar as pla-
Autor: Stefano Benamati
10
Av. N.Sra de Copacabana 152/24 – Copacabana – Rio de Janeiro
http://www.gloveapp.com.br
[email protected]
cas reais detectadas. No caso geral este nível de validação é o melhor, por
isso é selecionado como default.
•
Level 2: usa o controle morfológico do Level 1 e também um algoritmo probabilístico. É um pouco mais lento do que o Level 1 e consegue cortar um pouco
mais de falsos positivos, ao preço de eliminar também um pouco de placas reais.
•
Level 3: usa apenas o algoritmo probabilístico. É mais lenta do que os níveis
anteriores. Consegue cortar quase todos os falsos positivos, mas corta também 25% das placas reais. A única vantagem desse método é que ele refina a
posição da placa, e isso ajuda o passo sucessivo.
Para todos os níveis existem situações em que seja oportuno usá-los, mas no caso
geral aconselha-se usar o Level 1.
Use interpolation: por vezes pode acontecer que em um frame a placa não seja detectada; se esse parâmetro é true a posição da placa que falta é calculada na base
da sua posição nos frames anteriores, e apresentada na tela (numa cor diferente)
como se tivesse calculada.
Headless: se selecionar true não será apresentada nenhuma imagem no monitor;
isso serve para economizar CPU quando nenhum monitor estiver conectado.
Web show: se selecionar true será apresentada na pagina video a imagem processada pelo sistema.
Country: seleciona o país.
Use multithread: indica se o processamento deve ser distribuído nos núcleos
do processador. Isso aumenta a velocidade do sistema.
Activate
Esta é a pagina de ativação do produto.
Sem ativação o sistema roda em modalidade demo, que tem o 100% das funcionalidades de leitura placas mas não
fornece em output a string com as placas lidas. O output é mostrado apenas
no monitor e na pagina Video.
Com a ativação o resultado será disponível via porta serial e via TCP/IP.
Autor: Stefano Benamati
11
Av. N.Sra de Copacabana 152/24 – Copacabana – Rio de Janeiro
http://www.gloveapp.com.br
[email protected]
Saídas de dados
O RaspiLPR tem 3 métodos para disponibilizar as leituras: a interface serial e dois
servidores TCP: um assíncrono e outro síncrono.
Cada placa lida gera a escritura de uma linha em cada um destes meios; se o RaspiLPR estiver ativado será escrita a placa, se não, a escrita
será “DEMO PLATE”. Essa é a única diferença entre a modalidade
demo e a modalidade ativada.
Interface serial
O Raspberry tem uma interface serial que é
mapeada em /dev/ttyAMA0 e que tem conexão
física nos pins 8 e 10. Na conexão com o PC
não esquecer de conectar o RX do Raspberry
com o TX do PC e vice-versa.
Como a maioria dos PC atuais não tem mais a
porta serial, para se conectar ao Raspberry é Pins da porta serial
necessário que o PC use um adaptador USBserial, que é um pequeno dispositivo que providencia um conector RS232. Esses
adaptadores são muito baratos e podem ser encontrados com facilidade em qualquer loja de material informático.
Adaptador USB serial
Adaptador USB serial especifico
para Raspberry
Ao invés do serial do Raspberry pode-se usar um adaptador USB-serial conectado
numa das portas USB do Raspberry; nesse caso o nome do dispositivo não será
/dev/ttyAMA0, mas algo tipo /dev/ttyUSB0. Conferir isso na pasta /dev.
Autor: Stefano Benamati
12
Av. N.Sra de Copacabana 152/24 – Copacabana – Rio de Janeiro
http://www.gloveapp.com.br
[email protected]
A configuração da comunicação serial é feita na pagina setting do servidor interno do
RaspiLPR.
Atenção: o sinal elétrico que o Raspberry espera nos pins RX e TX é
3.3v, mas alguns adaptadores USB-serial usam 5v. Fique muito atento
na escolha do adaptador porque se usar um de 5v de saída vai ter muitos erros de transmissão e pode até queimar o UART do Raspberry.
Para evitar perda de tempo na escolha sugere-se a compra de adaptadores específicos para o Raspberry, que tem o mesmo preço e, além de
ter a saída de 3.3v, tem plugs que encaixam diretamente nos pins da
placa, sem necessidade de montar outros conectores.
Atenção: qualquer que seja a serial utilizado não esquecer de conectar
o RX de um lado com o TX do outro, e vice-versa.
Autor: Stefano Benamati
13
Av. N.Sra de Copacabana 152/24 – Copacabana – Rio de Janeiro
http://www.gloveapp.com.br
[email protected]
Interface TCP
Quando o LPR rodar estarão disponíveis duas portas onde os dados serão enviados:
porta 20000: o servidor que responde nesta porta envia todas as placas lidas desde
a última conexão, para um máximo de 100 placas. E depois termina a conexão.
A sintaxe das mensagens enviadas é a seguinte:
AAA 1234 , 7
AAA 1234 , 7
AAA 1234 , 7
BBB 5678 , 2
BBB 5678 , 1
BBB 5678 , 1
onde o número depois da virgula indica a idade em segundos da leitura, ou seja
quanto tempo atrás foi feita. Isso é necessário porque a leitura na porta 20000 pode
ser feita em qualquer momento, e é preciso um mecanismo para saber se a última
placa mostrada se refere a situação atual ou não.
A conexão com a porta 20000 finalizará sempre, mesmo que não tenham placas, ou
seja; o processo que faz a conexão tem certeza que a leitura não é bloqueante.
Esse servidor é útil para fazer polling.
porta 20001: o servidor que responde nessa porta mantém a conexão com o client e
fornece as placas assim que estiverem disponíveis. Nesse caso a saída é apenas a
placa lida, sem a idade, porque assim que sair a leitura esta é enviada ao client imediatamente; então, a idade será sempre zero.
Um client que conectar a essa porta e fizer uma leitura ficará bloqueado até que pelo
menos uma placa esteja disponível.
Esse servidor é útil quando se deseja parar o sistema e acordar quando uma placa
estiver disponível. Só pode se conectar um client por vez nesta porta.
Para testar o sistema pode-se usar o comando telnet:
telnet endereço_raspi 20000 (ou 20001)
Autor: Stefano Benamati
14
Av. N.Sra de Copacabana 152/24 – Copacabana – Rio de Janeiro
http://www.gloveapp.com.br
[email protected]
Nota: os dados disponibilizados pelos servidores são organizados assim: uma linha por cada placa. Se utilizar o telnet para testar o sistema,
e estiver no Windows, pode ser que a visualização seja um pouco bagunçada, como no exemplo abaixo:
AAA 1234
AAA 1234
AAA 1234
AAA 1234
AAA 1234
Isso acontece porque o Windows não usa o caractere terminal de linha
LF, mas a dupla CR+LF. Esta escolha deriva das velhas impressoras
onde os comandos tinham um significado físico: CR causava a cabeça
de escritura voltar no inicio da linha, e LF avançava de uma linha o papel. Isso hoje em dia não faz mais sentido, mas o Windows por motivos
históricos continua com esta notação.
Embora o telnet para Windows não opere esta conversão, o sistema
estará funcionando perfeitamente se for possível ver as placas saindo.
GPIO
O Raspberry disponibiliza uma serie de GPIO (General Purpose Input Output), que
permite ao sistema se comunicar com dispositivos externos.
Podem ser usados quaisquer GPIOs, desde que não seja usado por outros dispositivos. Por exemplo: o GPIO14 e o GPIO15 são usados pela porta serial, então, a não
ser que não precise desta porta, não se pode usá-los.
O RaspiLPR reservou para seu próprio funcionamento 4 saídas marcadas como Led e 4 entradas marcadas como Btn. Os outros estão livres para uso.
Nos GPIOs usados como saídas pode-se conectar
leds ou reles. Se conectar um led é preciso limitar a
corrente absorvida colocando em serie um pequeno
resistor, como na imagem ao lado.
Se for usar um GPIO como entrada e quiser conectar
um botão, a conexão deve ser feita utilizando um dos
dois esquemas abaixo (pull down ou pull up):
Esquema de conexao led
Autor: Stefano Benamati
15
Av. N.Sra de Copacabana 152/24 – Copacabana – Rio de Janeiro
http://www.gloveapp.com.br
[email protected]
Esquemas pull down e pull up para botões
Para escrever ou ler os GPIO, conectar-se ao RaspiLPR via SSH e lançar o seguinte
comando:
gpio read|write gpio [on|off]
exemplos:
gpio read 18 (pra ler o GPIO 18)
gpio write 4 on (para mandar o sinal alto ao GPIO 4)
gpio write 4 off (para mandar o sinal baixo ao GPIO 4)
Atenção para não confundir o número de pin com o número do GPIO;
por exemplo, o GPIO17 está no pin 11, e não no 17.
Autor: Stefano Benamati
16
Av. N.Sra de Copacabana 152/24 – Copacabana – Rio de Janeiro
http://www.gloveapp.com.br
[email protected]
Conector do Raspberry PI mod B
GPIOs predefinidos
O RaspiLPR reservou 8 GPIOs para o próprio funcionamento. Não são todos utilizados e podem ser reaproveitados pelo usuário.
Os GPIO designados como Led são saídas, e não necessariamente devem ser conectados aos leds; podem por exemplo ser conectados a um rele para comandar
uma cancela.
Led1 (GPIO4): liga quando o boot é terminado
Led2 (GPIO17): liga quando o LPR estiver rodando. Se o led estiver desligado ou
piscante significa que o leitor de placas não está funcionando (ou que o led
queimou). Conferir o estado na pagina principal.
Led3 (GPIO27): não usado
Led4 (GPIO22): não usado
Os GPIO designados como Btn são entradas, e não necessariamente devem ser coAutor: Stefano Benamati
17
Av. N.Sra de Copacabana 152/24 – Copacabana – Rio de Janeiro
http://www.gloveapp.com.br
[email protected]
nectados a botões.
Btn1 (GPIO18): se esse botão for clicado uma mensagem vocal sintetizada informa
(em inglês) o endereço IP do sistema.
Btn2 (GPIO23): se este botão for clicado uma mensagem vocal sintetizada informa
que o botão 2 foi clicado.
Btn3 (GPIO24): se este botão for clicado uma mensagem vocal sintetizada informa
que o botão 3 foi clicado.
Btn4 (GPIO25): se este botão for clicado uma mensagem vocal sintetizada informa
que o botão 4 foi clicado.
O comportamento do sistema quanto ao clique dos botões pode ser definido no ar quivo /home/pi/app/etc/gpio.config. A sintaxe é muito simples:
Led1 =
4 : on
Led2 = 17 : off
Led3 = 27 : off
Led4 = 22 : off
Btn1 = 18 : /home/pi/app/etc/button1
Btn2 = 23 : /home/pi/app/etc/button2
Btn3 = 24 : /home/pi/app/etc/button3
Btn4 = 25 : /home/pi/app/etc/button4
pollingInterval = 200
nome convencional = número gpio : ação para executar
No caso de led a ação é executada uma vez ao término do boot e pode ser on ou off,
para decidir se o led será ligado ou desligado.
Para os botões o estado é lido a cada pollingInterval millisegundos. E se o botão for
clicado o script definido como ação será executado.
Autor: Stefano Benamati
18
Av. N.Sra de Copacabana 152/24 – Copacabana – Rio de Janeiro
http://www.gloveapp.com.br
[email protected]
Ativação
Até ser ativado o LPR funciona em modalidade demo, que tem 100% das funcionalidades de leitura placas mas não fornece em output a string com as placas lidas. O
output é mostrado apenas no monitor e na página Video.
Com a ativação o resultado será disponível via porta serial e via TCP/IP.
Autor: Stefano Benamati
19
Download

- Produtos e serviços