Maix bit é um embarcado com tamanho similar ao ESP32 porém é mais potente e tem hardware dedicado para visão computacional.
Itens Necessários
- Cartão MicroSD 16GB Classe 10;
- Cabo USB tipo C;
- Adaptador USB para MicroSD.
Especificações do Maix Bit
- Voltagem de Trabalho: 1v8 ~ 3v3;
- Consumo: 600mA
- Tamanhos:
- Sem câmera: 53,3mm x 25,4mm x 13,0 mm;
- Com câmera: 53.3x 25.4 x 44,0 mm.
- Temperatura de Trabalho: -30°C ~ 85°C;
- Voltagem de entrada via USB: 4v8 a 5v2;
- Microfone MSM261S4030H0 Integrado;
- CPU:
- RISC-V Dual Core;
- 64bit;
- Com FPU;
- 400Mhz.
- Conector 24P DVP;
- Conector 24P 8bit MCU LCD;
- Slot microSD integrado na placa;
- LED RGB SMD integrado na placa;
- SAR ADC de 12 bits até 18 canais;
- GPIO 38x;
- SPI 4x
- SPI0, SPI1 e SPI3 Suportam apenas o modo MASTER;
- SPI2 Suporta apenas o modo “SLAVE”;
- I²S 3x;
- I²C 3x;
- UART 3x;
- PWM com duty cicle de 0% ~ 100%;
- TIMER 3x;
- WDT;
- SHA256;
- RTC;
- SRAM;
- APU.
Sobre o Maix Bit
Como o Arduino e Raspberry, esta placa também se trata de um embarcado para prototipagem, mas a única diferença é que é destinado para aplicações de visão computacional, uma ramificação da Inteligência Artificial (IA). Por isso, o desempenho desta placa acaba sendo maior. Além disso, a placa apresenta uma lente e dois conectores de 24P sendo um destinado a câmera e outro a um display LCD.
Câmera e Lente
De antemão já aviso que este tópico mora o principal problema desta placa, na verdade o problema do kit maix bit, pois a lente que vem na câmera é resinada e além disso tem uma cor esverdeada o que prejudica na passagem de luz para o sensor. No entanto, como o padrão de lente é M12 pode ser trocado com facilidade, neste caso foi uma verifocal 2.8 a 12mm sem filtro IR. Para entender mais sobre a câmera, acesse este link.
Pinout Maix Bit
Como no Arduino, esta placa também tem GPIOs de comunicação e controle, a única diferença é que não tem entrada e nem saída analógica.
Configurando a Placa e o Ambiente de Desenvolvimento
Agora vem a tarefa mais “chata” mas não se espante pois se seguir todos os passos da maneira correta não haverá nenhum problema. Como a Sipeed tem disponível o modelo já treinado contendo 20 classes, não será feito um treinamento, mas caso tenha interesse saiba como treinar neste post aqui.
Instalar MaixPy IDE
Para instalar o Maixpy IDE é bastante simples, basta fazer o download por meio deste link e ir clicando em avançar como qualquer outra instalação. Em seguida, abra o aplicativo e veja se está tudo certo.
Configurar Placa
A próxima etapa é baixar mais um programa que neste caso é o Kflash_Gui para fazer a gravação do arquivo binário na memória do Maix bit. Além disso é necessário baixar o binário que será capaz de interpretar o o reconhecimento de objetos e trabalhar com o Yolo. Após fazer todos os downloads, configure o Kflash_gui com a placa conectada, de acordo com a configuração abaixo:
Primeiro uso do Maix Bit “Hello, World!”
Nada melhor do que o “Hello, World!” para validar o funcionamento da placa, poderia ser algo simples como usar os LEDs RGB da placa mas como já tem modelos treinados, basta copiar e colar para testar.
Código para 20 Classes
O código a seguir é todo feito em micropython e para quem não conhece, pode ter certa dificuldade mas não é nenhum bicho de 7 cabeças.
import sensor,image,lcd,time
import KPU as kpu
lcd.init(freq=15000000)
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_hmirror(0)
sensor.set_brightness(True)
sensor.set_vflip(1)
clock = time.clock()
classes = ['aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat', 'chair', 'cow', 'diningtable', 'dog', 'horse', 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor']
task = kpu.load("/sd/20class.kmodel")
#task = kpu.load(0x500000)
anchor = (1.889, 2.5245, 2.9465, 3.94056, 3.99987, 5.3658, 5.155437, 6.92275, 6.718375, 9.01025)
a = kpu.init_yolo2(task, 0.5, 0.3, 5, anchor)
while(True):
clock.tick()
img = sensor.snapshot()
code = kpu.run_yolo2(task, img)
print(clock.fps())
if code:
for i in code:
a=img.draw_rectangle(i.rect())
a = lcd.display(img)
for i in code:
lcd.draw_string(i.x(), i.y(), classes[i.classid()], lcd.RED, lcd.WHITE)
lcd.draw_string(i.x(), i.y()+12, '%f1.3'%i.value(), lcd.RED, lcd.WHITE)
else:
a = lcd.display(img)
a = kpu.deinit(task)
Gravar Modelo Treinado
De todas as tarefas, essa é a mais simples. Basta apenas conectar o cartão microSD ao adaptador USB e por no computador, em seguida basta baixar 20class.kmodel e mover para o microSD. Pronto, agora é só por na placa.
Conectar e Gravar Código
Em seguida, abra a IDE copie o código acima e cole na IDE. Agora basta configurar o modelo da placa para que não haja problemas de compilação, para isso basta marcar o mesmo da imagem a seguir.
Depois, localize a ancora verde no canto inferior esquerdo e clique nela, escolha a COM7 e prossiga com a conexão. Para testar o código, basta clicar no botão ‘play‘ que fica localizado ao botão de âncora.
Reconhecendo Objetos na Prática
Enfim o funcionamento prático, neste caso os objetos aparecem como imagens na tela do computador e o maix bit vai reconhecendo conforme a imagem vai se movendo ao decorrer do vídeo. Um detalhe importante, é que este vídeo foi gravado antes da mudança para lente verifocal e por isso a imagem acaba sendo mais escura, neste outro vídeo é possível perceber que a melhora na qualidade.
Deixe uma resposta