Maix Bit Embarcado de Baixo Custo com IA

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.

Maix bit

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.

Lente verifocal M12 para câmera do maix bit

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.

Pinout Maix Bit

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.

Maixpy IDE para o Maix bit
Fonte: Elcereza

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:

kflash_gui para gravar na memória do Maix bit

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.

Selecionando modelo do Maix Bit para enviar o código.

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.

Maixpu IDE. Upload do código para o Maix bit

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.

Sobre Gustavo Cereza 3 artigos
Meu nome é Gustavo Cereza sou de SA/BA/BR, tenho 22 anos, fiz iniciação cientifica de inovações tecnológicas no SESI, minha formação é tec. Eletromecânica. Sou fundador e dono do site Elcereza, um amante da eletrônica desde a infância e gosto de transformar ideias em realidade usando a tecnologia.

Seja o primeiro a comentar

Deixe uma resposta

O seu endereço de email não será publicado.


*