Programação visual tangível: a criança monta blocos, gera MicroPython e vê o resultado acontecer no hardware real.
O BIPES BitDogLab Blocos é uma plataforma educacional open source baseada em Blockly para ensinar programação, eletrônica e pensamento computacional com a placa BitDogLab e o Raspberry Pi Pico W. Ela roda no navegador, transforma blocos conectados em MicroPython organizado e envia o programa à placa por USB usando Web Serial.
O foco do projeto é a tangibilidade: os blocos usam linguagem direta, ícones e ações ligadas aos periféricos reais. Acender um LED, ler um botão, mostrar um valor no OLED ou criar uma animação na matriz deve continuar compreensível antes mesmo de a criança conhecer a sintaxe Python.
O exemplo acima combina uma variável de pontos, os botões A e B e o display OLED. Os blocos permanecem conectados como um programa executável, enquanto as categorias ficam sempre visíveis à esquerda.
| Categorias e blocos tangíveis | Modos de projeto |
![]() |
![]() |
Hoje a toolbox reúne 25 categorias, filtradas conforme o projeto escolhido:
- Básico: lógica, repetição, matemática, variáveis, tempo, cores e todos os periféricos integrados.
- Robô Móvel: motores, movimento, inclinação e bateria.
- Estufa: verificação de sensores, temperatura, umidade e gráficos.
- Piano Musical: controle musical e geração de melodias para o buzzer.
Cada bloco possui uma definição visual e um gerador. Antes da geração, contratos verificam conexões obrigatórias e apresentam avisos educativos. O código final separa importações, configuração e o laço principal:
pontos = 0
while True:
if flag_botao_esquerda:
pontos = pontos + 1
if flag_botao_direita:
pontos = pontos - 1
oled.text(str(pontos), 3, 8)
oled.show()O programa pode ser executado diretamente, salvo como main.py ou inspecionado na própria plataforma.
Na conexão USB, a plataforma interrompe o programa salvo e confirma uma resposta nova do terminal antes de liberar execução ou gravação. A retirada do cabo e falhas de leitura ou escrita encerram a sessão, liberam a porta e limpam comandos pendentes. É possível conectar novamente pela interface sem recarregar a página. Quando solicitado, o reset de conexão acontece pelo REPL bruto, evitando executar novamente o main.py durante a preparação.
Os blocos cobrem LED RGB, matriz RGB 5×5, OLED, joystick, botões, buzzer, notas musicais, microfone, sensores e recursos específicos dos projetos Robô e Estufa. A interface oferece configurações para BitDogLab v6 e v7.
Os blocos Inicializar robô e Iniciar robô com setas executam a contagem na matriz antes de liberar os motores. Na V6, verificam o MPU6050 e, se o exemplo usar OLED, sua comunicação I²C: o LED RGB pisca amarelo se algum deles falhar; se estiverem prontos, fica verde por dois segundos. Na V7, verificam também o INA226: abaixo de 3,6 V o LED pisca vermelho; se a bateria estiver baixa e houver outra falha I²C, alterna vermelho e amarelo; sem leitura do INA226, pisca amarelo. Qualquer alerta mantém os motores parados. O terminal imprime a tensão medida na V7.
No modo por setas, após a contagem de cinco segundos e o diagnóstico, o LED fica verde e o robô espera um novo aperto e soltura do botão A. Segurar A ao ligar não inicia o percurso. O botão B corta a habilitação dos motores por interrupção e cancela toda a missão, inclusive durante a preparação, movimentos e giros. Soltar B não retoma o percurso: execute novamente ou reinicie a placa e dê um novo comando pelo A. A conclusão, erros e Ctrl+C também desligam os motores. É necessário salvar novamente o main.py para atualizar programas antigos na placa.
Os perfis V6 e V7 consideram o MPU6050 do robô montado horizontalmente, de cabeça para baixo: ROBOT.GYRO_Z_SIGN = -1 compensa o sinal do giroscópio Z depois da calibração, nos giros e no ângulo exibido. Para montagem com o sensor voltado para cima, use 1. O avanço por seta continua em 0,8 s; as leituras de aceleração permanecem nos eixos do sensor.
Os exemplos 22 a 25 de Robô Móvel usam explicitamente leituras de bateria e exigem o INA226 da V7. Na V6, o diagnóstico de partida funciona, mas esses exemplos não podem fornecer valores reais de tensão ou corrente.
O gerenciador permite navegar por pastas, abrir, baixar, mover, renomear e apagar arquivos da placa. Arquivos CSV podem ser vistos automaticamente como uma planilha com cabeçalhos e índices, ou como texto original. A implementação está documentada em device-file-manager/README.md.
O repositório contém 140 projetos XML conectados, acompanhados por imagens de validação. Eles podem servir como aula, ponto de partida ou teste de regressão. A coleção de Matemática percorre operações, funções, propriedades, aleatoriedade e fórmulas no OLED, e termina com projetos que combinam variáveis com botões, microfone, joystick, buzzer, LED RGB e matriz de LEDs.
| Semáforo | Contador com variável | Arco-íris |
![]() |
![]() |
![]() |
O fluxo principal é simples: a interface entrega os blocos ao workspace Blockly, os contratos validam o programa, os geradores produzem MicroPython e a camada WebSerial conversa com a placa. Modos de projeto, exemplos, traduções e o gerenciador de arquivos complementam esse fluxo sem misturar responsabilidades.
| Tecnologia | Uso no projeto |
|---|---|
| HTML5, CSS3 e JavaScript | Interface web, organização e comportamento da aplicação. |
| Blockly | Workspace, encaixe e serialização dos blocos. |
| MicroPython | Código executado no Raspberry Pi Pico W. |
| Web Serial API | Comunicação USB com o REPL da placa. |
| CodeMirror | Visualização de Python, textos e CSV original. |
| xterm.js | Console serial dentro do navegador. |
A aplicação não depende de um backend para funcionar. O navegador serve a interface e conversa diretamente com o dispositivo autorizado pelo usuário.
BIPES-BITDOGLAB/
├── src/
│ ├── pages/ # páginas da aplicação
│ ├── styles/ # identidade visual e layout
│ ├── js/
│ │ ├── blocks/ # definições, geradores e contratos
│ │ ├── communication/ # WebSerial e canais
│ │ ├── config/ # toolbox e versões da BitDogLab
│ │ ├── core/ # workspace, geração e inicialização
│ │ └── ui/ # componentes da interface
│ └── translations/ # catálogo único PT/EN do projeto e do Blockly
├── device-file-manager/ # arquivos e pastas da placa
├── Examples/ # projetos XML conectados
├── images/ # imagens dos exemplos e do README
├── micropython/ # referências e exemplos MicroPython
├── PyLibs/ # bibliotecas auxiliares para a placa
├── docs/ # guias, checklists e documentação técnica
└── tests/ # validações automatizadas locais
Você precisa de Chrome ou Edge em um computador, um cabo USB de dados e a BitDogLab com MicroPython instalado.
git clone https://github.com/BitDogLab-Blocos/BIPES-BITDOGLAB.git
cd BIPES-BITDOGLAB
python -m http.server 5500Abra http://127.0.0.1:5500, escolha o modo do projeto, conecte a porta serial e monte seu programa. O aplicativo não exige instalação de dependências.
Web Serial exige uma ação explícita do usuário para escolher a porta. Use
localhost,127.0.0.1ou uma origem HTTPS.
Contribuições de professores, estudantes, makers e desenvolvedores são bem-vindas. Você pode:
- relatar um problema ou propor uma experiência educacional;
- melhorar a linguagem e a acessibilidade dos blocos;
- criar definição, gerador, contrato e exemplo conectado para um novo bloco;
- testar em hardware real e compartilhar os resultados;
- traduzir documentação ou revisar materiais de aula.
Ao contribuir, preserve a tangibilidade, mantenha cada responsabilidade em seu módulo e inclua um exemplo que outra pessoa consiga abrir e executar.
Este trabalho é baseado no BIPES, criado por Rafael Vidal Aroca e colaboradores, e evolui com a comunidade BitDogLab Blocos. O código é distribuído sob a GNU General Public License v3.0: use, estude, modifique e compartilhe mantendo as mesmas liberdades.









