Hoje vamos fazer mais uma
aplicação com o Sipeed Maix BiT, e um módulo de relé. O MaixPy é um chip de coprocessamento de Inteligência Artificial que utiliza a Visão
Artificial para executar o reconhecimento de QR Code, com funções FPIOA, além
de setar pinos de acordo com o reconhecimento.
Recursos usados
- Sipeed Maix BiT
- Cabo USB tipo C
- Relay Module
Montagem
Setup MaixPy
As configurações iniciais do
MaixPy podem ser encontradas neste link.
Reconhecimento de QRCode
O reconhecimento de QRCode é
feito pelo módulo Image do MicroPython OPenMV.
Ele encontra todos os qrcodes
dentro do ROI (Region of Interest) e retorna uma lista de objetos.
Os qrcodes precisam ser
relativamente planos na imagem, pois o algoritmo não trata transformações e
distorções, por exemplo, na imagem abaixo.
FPIOA/GPIO
O chip k210 suporta cada
periférico para ser mapeado aleatoriamente para qualquer pino, utilizando a
função FPIOA (Field Programmable Input and Output Array).
Assim é possível setar os
pinos de acordo com seu projeto e suas necessidades especiais. Cada IO pode ser
atribuído para um dos 48 pinos da FPIOA.
O chip possui 32 GPIOHS que
são as GPIOs de alta velocidade e 8 GPIOs de uso geral.
GPIOHS: Sinais de entrada e saída configuráveis, cada
I/O possui uma fonte de interrupção independente, configurado para cima e para
baixo, ou alta resistência.
GPIO Geral:
sinais configuráveis de entrada e saída, disparo configurável de
interrupção total de IO.
Setar Pinos
Para controlar os LEDs
precisamos utilizar GPIO.
Os pinos são setados
facilmente através da lib GPIO do Maix.
Pinos podem ser definidos
utilizando .fm (FPIOA controller).
É utilizado o fm.register para
registrar qual pino será utilizado.
A função register o primeiro
parâmetro é o pino e o segundo é uma função do chip.
Em seguida, é após registrar os pinos e suas funções é
necessário definir se o pino vai ser de entrada ou de saída.
Como utilizaremos LEDs no
exemplo, definimos GPIO de saída com o GPIO.OUT
Após definir, agora vamos
setar os valores do LED através da função value().
Value:
0 - LED ligado
1 - LED desligado
Código
Importações
import sensor import image import lcd import time from Maix import GPIO
Setup
clock = time.clock() lcd.init() sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.set_vflip(1) sensor.run(1) sensor.skip_frames(30) fm.register(board_info.PIN9, fm.fpioa.GPIOHS9) fm.register(board_info.LED_R, fm.fpioa.GPIO0) fm.register(board_info.LED_B, fm.fpioa.GPIOHS10) fm.register(board_info.LED_G, fm.fpioa.GPIOHS0) led_r=GPIO(GPIO.GPIO0,GPIO.OUT) led_r.value(1) led_b=GPIO(GPIO.GPIOHS10,GPIO.OUT) led_b.value(1) led_g=GPIO(GPIO.GPIOHS0,GPIO.OUT) led_g.value(1) relay=GPIO(GPIO.GPIOHS9,GPIO.OUT) relay.value(1) cor=(0,0,0)
Loop
while True: clock.tick() img = sensor.snapshot() res = img.find_qrcodes() fps =clock.fps() if len(res) > 0: print(res[0].payload()) if res[0].payload()=='Verde': relay.value(0) led_g.value(0) led_r.value(1) led_b.value(1) cor=(0,255,0) if res[0].payload()=='Vermelho': teste.value(1) led_g.value(1) led_r.value(0) led_b.value(1) cor=(255,0,0) if res[0].payload()=='Azul': relay.value(1) led_g.value(1) led_r.value(1) led_b.value(0) cor=(0,0,255) img.draw_string(2,2, res[0].payload(), cor, scale=2) lcd.display(img)
4 Comentários
Fernando, preciso de sua ajuda, estou estudando engenharia de computação (Univesp). Compre o Maix Bit e fiz os teste de QRCode e deu tudo certo.
ResponderExcluirTenho um projeto onde desenvolvo uma bengala inteligente para deficientes visuais e com a ajuda do Maix que fará a leitura de QRCodes no chão e emitira uma mensagem de voz para o deficiente, como exemplo o posicionamento dele e dado local.
Eimar N. B. Machado
E-mail é eimarnbmachado@gmail.com
Fone: 16 981736110
Fone: 17 997715567
FERNANDO COMO LIGAR UM ESP6266 NESTA PLACA PARA QUADO ELE RECONHECER UMA IMAGEM E MADAR UMA MESAGEM PARA O ESP EVIAR PARA OUTRO ESP
ResponderExcluirSe alguém estiver tendo a seguinte mensagem de erro: fm isn't defined, cole
ResponderExcluirfrom board import board_info
from fpioa_manager import fm
abaixo do:
from Maix import GPIO
Muito difícil achar informações sobre essa placa na internet...
ResponderExcluir