Aprendendo embarcados e IoT com a BBC micro:bit 5

Os britânicos são realmente inovadores no que tange à tecnologias para ensino de computação. Sobre suas iniciativas recentes, primeiro tivemos a fundação Raspberry Pi, que objetivou criar um minicomputador barato e de fácil acesso para que mais pessoas tivessem acesso à informática e ao aprendizado de programação de computadores, o que resultou na tão famosa placa, homônima da fundação – a Raspberry Pi. E pouco tempo depois, diga-se em meados de 2015, a BBC micro:bit ou simplesmente micro:bit é liberada ao público, fruto de uma parceria da BBC com grandes empresas de tecnologia (Microsoft, Samsung, ARM, etc) para uso em educação no Reino Unido. O nome BBC micro:bit não foi dado ao acaso. Ele é homenagem ao BBC Micro, computador comumente usado em escolas do Reino Unido na década de 80 para ensino de computação.  Todavia, diferente da versão inicial, a micro:bit é menor que um cartão de crédito e cabe no bolso.

BBC Micro

Desde seu surgimento em 2015 a micro:bit se tornou uma febre no Reino Unido, chamando também a atenção de entusiastas, educadores e estudantes de outras partes do mundo, o que acelerou sua disseminação.

E agora, você pode ter a sua! A partir de hoje a BBC micro:bit também é oferecida no Brasil pela MakerHero! 😉

Como é a BBC micro:bit

A BBC micro:bit é uma maravilha tecnológica que mede 52 mm x 42 mm (um tanto menor que um simples cartão de crédito), que agrega toda uma sorte de periferia (modo bonito de falar “muitos componentes”) para rapidamente permitir a criação de simples programas capazes de interagir com o usuário, com o ambiente, com outras placas BBC micro:bit e até mesmo com dispositivos móveis usando BLE. O objetivo da micro:bit é ser tão prática quanto possível, e ao mesmo tempo simples o suficiente para rapidamente ser programada e usada para ensino de lógica e programação. E ela atende elegantemente esse objetivo.

A micro:bit é uma placa didática do início ao fim. Ela possui indicadores impressos na placa apontando para o quê é cada coisa (botão, pinos, processador, USB, acelerômetro, etc), tal como você pode observar em qualquer foto da micro:bit.

Na Figura 2 é mostrada a parte frontal, que possui a matriz de LEDs e o par de botões da micro:bit, e a parte traseira, que possui os componentes (microcontroladores, sensores, conector USB e bateria) e botão de reset da micro:bit. Uma coisa que chama bastante atenção da micro:bit é o conector em formato de barras, na parte inferior da placa. É um conector adotado para ser usado com garras tipo jacaré, e/ou conectores compatíveis, no caso de usar uma placa de expansão para a micro:bit. Nessa mesma barra de pinos estão sinais de GPIO e de interfaces de comunicação (SPI, UART, I2C, por exemplo).

Legenda placa
Figura 2 – Detalhes com legenda da micro:bit. Fonte: http://tech.microbit.org/hardware/

A despeito de “inicialmente” se limitar aos recursos que vêm na própria micro:bit, as possibilidades didáticas e de aplicação são muitas, principalmente quando o fator conectividade entra em pauta. A BBC micro:bit é capaz de comunicar via Bluetooth Low Energy, o que permite sua interação com dispositivos móveis como celulares smartphones, e é capaz de comunicar com outras micro:bits usando um protocolo de banda 2.4 GHz da própria Nordic, chamado Gazell. Dessa forma é possível disparar ações e reações, operação conjunta com micro:bits, etc.

E embora inicialmente pareça uma placa simples, é justamente a sua simplicidade que a tornou uma ferramenta poderosa no ensino de programação e computação para toda sorte de pessoas, de crianças a adultos. Rapidamente de posse de uma micro:bit, o usuário é capaz de realizar a programação da placa por interfaces Web muito intuitivas, algumas das quais apresentarei adiante, e rapidamente é capaz de gravar a placa via USB e começar sua operação.

Ficou interessado? Vamos ver as especificações mais detalhadas da micro:bit.

Uma conversa sobre o Hardware da micro:bit

Para os entusiastas de plaquinhas de plantão, vamos abordar aqui a composição da micro:bit, assim como seus componentes periféricos de entrada/saída de dados e sinais.

Detalhe antena e Nordic

O coração da BBC micro:bit é o SoC Nordic nRF51822, um microcontrolador ARM Cortex M0 de 32-bits operando a 16 MHz, com 256 KB de memória flash, 16 KB de memória SRAM e conectividade Bluetooth Low Energy de 2.4 GHz. O microcontrolador ARM pode mudar o clock de operação de 16 MHz para 32.768 kHz, e vice-versa. Esse último clock é interessante para cenários de ultra-baixo-consumo.

Sobre a comunicação, a micro:bit suporta duas formas de comunicação usando bandas 2.4 GHz, a saber o tão famoso Bluetooth Low Energy (BLE), opera também o protocolo Nordic Gazell (chamado simplesmente de “Radio” nas APIs disponíveis para programação. O BLE é voltado para aplicações com celulares Android/iPhone, por exemplo, e o Nordic Gazell é voltado para comunicações entre micro:bits. De acordo com a documentação, apenas um protocolo pode operar por vez, ou seja, ou a micro:bit é configurada para Gazell, ou é configurada para BLE, mas não para ambos!

Detalhe USB

Para ter ação, é preciso ter programação, certo? E quem faz a programação do SoC Nordic nRF51822 é o NXP/Freescale KL26Z, um microcontrolador ARM Cortex-M0+ operando a 48 MHz, que inclui controlador USB 2.0 OTG. Ele faz tanto a ponte de comunicação USB-Serial com o SoC Nordic nRF51822, o que permite você fazer interface de comunicação Serial com a micro:bit tal como você faz com um Arduino da vida, como também esse microcontrolador KL26Z faz a programação do SoC Nordic de forma semelhante ao que é feito nas placas Freedom (FRDM-KL05Z/KL25Z e K64F, por exemplo, disponíveis no MakerHero).

Nessa forma de gravação, realizada pelo microcontrolador KL26Z, quando a placa é conectada via USB no computador ela se passa por uma unidade removível (pendrive, por exemplo), e o simples arrastar e soltar do arquivo binário de gravação do microcontrolador faz a gravação da placa acontecer. Veja como a micro:bit aparece no “Meu Computador” do Windows 10 na Figura 4.

Microbit unidade de disco
Figura 4 – micro:bit como unidade de disco para gravação.

O microcontrolador KL26Z presente na micro:bit também é responsável pela regulagem de tensão da porta USB (no intervalo de 4.5 a5.25V) à tensão nominal de  3.3 V usado pelo resto da placa. De acordo com a documentação, quando são usadas baterias, esse recurso de regulagem de tensão não é utilizado.

Agora vamos a uma parte super interessante da BBC micro:bit – sensores!

Detalhe sensores

De cara, com base na indicação presente na própria micro:bit, você se depara com 2 elementos:

  • Aceletrômetro – NXP/Freescale MMA8652 – Acelerômetro de 3 eixos com interface I2C – útil para “brincadeiras” do tipo de chacoalhar, medidor de passos, etc.
  • “Compasso” – NXP/Freescale MAG3110 – Magnetômetro de 3 eixos com interface I2C – útil para servir de compasso/bússola ou detector de metais.

Mas será que são só estes os sensores presentes na placa? Não! Ela tem mais os seguintes:

  • Sensor de Temperatura – Usando o sensor presente no próprio SoC Nordic da micro:bit, que é usado para estimar a temperatura ambiente.
  • Sensor de Luminosidade – Esse é um que me chamou a atenção. Veja as imagens, fotos da micro:bit. Achou alguma coisa indicando “sensor de luminosidade”? Não, né? Na verdade, ele é bem destacado: É a matriz de LEDs! Foi uma “sacada” genial do time de engenharia, ao bolar um esquema onde é possível fazer a leitura do decaimento de tensão de LEDs lidos como sinais de entrada no SoC Nordic, e assim estimar a iluminação presente.

Detalhe led

Essa matriz de LEDs é um destaque da micro:bit, pois pode ser usada para exibir ícones, mensagens, números, enfim, toda sorte de informações. Tanto é que nem é mencionado na API como “matrix”, mas como “display”.

Detalhe botões

Para interface com o usuário, além da matrix (ou display) de LEDs, há também alguns botões na placa, a saber: botão A, botão B e reset. O botão de reset, localizado ao lado do conector micro-USB, reseta todos os componentes presentes na placa.

Detalhe conector bateria

Outra coisa que chama a atenção é o conector de bateria presente na micro:bit. Usando o padrão de conector JST, é indicado o uso de adaptadores com 2 pilhas AAA de 1.5 V e/ou equivalentes para fornecer 3.0 V de tensão, ok?

Detalhe pinos

Já na parte inferior está o conector de barra da micro:bit, presente/acessível tanto na face superior quanto inferior da placa. É possível usar com conectores tipo “jacaré” 3 sinais de controle (0, 1 e 2) e há 2 sinais de alimentação (3V e GND) também. Veja na Figura 10 um exemplo desses conectores ligando a micro:bit numa placa com alto-falante.

Microbit com alto falante
Figura 10 –  micro:bit com conectores jacaré. Fonte: https://www.monkmakes.com

E para os mais animados, é possível também ter acesso a todos os sinais presentes no conector por meio de placas de expansão específicas, como mostrado na Figura 11.

Microbit com adaptador
Figura 11 – Base de expansão para acesso de IOs da micro:bit- https://www.kitronik.co.uk

Bom, viu que a micro:bit é pequena, mas tem bastante coisa, né? E como programa isso tudo? Vamos ver!

Desenvolvimento com a BBC micro:bit

É possível programar a micro:bit de várias formas. Quase correndo risco ao exagero, poderia afirmar que é possível programar essa placa de todas as formas possíveis, rsrsrs. Veja:

Microsoft MakeCode

Desenvolvido com apoio da Microsoft, o ambiente de desenvolvimento online MakeCode para a micro:bit segue o estilo Scratch de programação, onde a lógica é toda desenvolvida por um arranjo de blocos visualmente posicionados, muitos dos quais podem receber um ou mais parâmetros (como funções), e a junção do todo por sua vez irá determinar a operação do programa.

Mas não pense que a coisa pára por aí. Observe a figura abaixo, onde é mostrada a ferramenta, Na parte superior da tela há a opção “Blocks”, que faz menção à exibição de blocos, e “JavaScript”, onde é possível ver a representação em JavaScript do arranjo de blocos que você montou, como também é possível programa em JavaScript o seu código. Adicionalmente, à esquerda da ferramenta é mostrada uma cópia da micro:bit simulando a execução do seu programa.

Programação
Figura 12 – Desenvolvimento online em Scratch ou JavaScript com micro:bit.

O código gerado pela ferramenta é baixado via download, e pode ser carregado na micro:bit “arrastando” ou copiando e colando o arquivo para a unidade de disco referente à placa.

Python micro:bit online

Se quiser se aventurar em mais linguagens e formas de programas a micro:bit, Python é também uma opção, tendo inclusive uma IDE online – Python micro:bit – onde é possível criar suas aplicações, baixar os binários em formato *.hex gerados e gravar na placa via upload (tal qual arrastar e soltar um arquivo para um pendrive, como mostrado anteriormente). Para quem não conhece, o MicroPython é uma versão “enxugada” do Python convencional.

Há toda uma sorte de bibliotecas disponíveis, e o suporte é bem amplo. No pouco que brinquei com a ferramenta, não me senti perdido, pois um rápido “Google” foi suficiente para encontrar exemplos do que precisava para a micro:bit usando MicroPython.

MicroPython
Figura 13 – Desenvolvimento com MicroPython.

ARM mbed

Contando com apoio da própria ARM, era de se esperar que tivesse suporte também a mbed! E não há para menos, o suporte está ativo e muito bem evoluído, com detalhes na página da placa micro:bit da plataforma mbed.

Ao contrário das interfaces MicroPython e MakeCode, o mbed é programado em C/C++, mas também fazendo uso de recursos online de desenvolvimento, tais como edição e compilação de código usando o navegador. E compilado o código, o mesmo é baixado via download, e pode ser carregado na placa colocando o arquivo *.hex na unidade de disco representada pela micro:bit.

Nessa página há o destaque para a pinagem adotada na placa para referência nos códigos, veja na Figura

BBC micro:bit
Figura 14 – Pinagem da BBC micro:bit para mbed. Fonte: https://os.mbed.com

A forma de desenvolvimento com mbed é praticamente a mesma adotada nas placas Freedom. A título de exemplo, veja o processo apresentado neste meu artigo no Blog MakerHero sobre a KL05Z. Há alguns exemplos previamente disponíveis, e também há bastante exemplo disponível na internet.

Exemplo mbed
Figura 15 – Editor online do ARM mbed configurado para micro:bit. Fonte: https://lancaster-university.github.io

Mobile

Passado aquele papo todo de Bluetooth Low Energy, a micro:bit também aceita gravação remota via OTA – Over-The-Air, o que possibilitou o desenvolvimento de aplicações em Android e iOS capazes de fazer a gravação de placas micro:bit.

Ou seja, é possível você criar códigos e carregar programas na micro:bit usando seu celular Android ou iPhone, por exemplo!

Link para aplicação Android aqui, e link para aplicação iOS aqui.

A título de exemplo, veja como é a aplicação Android na Figura 16.

Envio android
Figura 16 – Exemplo da aplicação móvel para micro:bit em Android.

Offline

Com desenvolvimento online, via Bluetooth… E o bom e velho desenvolvimento no seu computador mesmo, offline por exemplo? É possível, até mesmo usando a tão famosa Arduino IDE!

Pretendo em breve falar sobre o processo de configuração/setup da micro:bit usando o Arduino IDE no MakerHero, mas se você não consegue esperar até lá (rsrsrs), veja como é simples o processo de configuração da micro:bit para Arduino IDE apresentado nesse Guia da Adafruit.

IDE Arduino

E se você é mais “hardcore”, gosta de coisas além do Arduino também, veja essa documentação sobre uso e configuração de toolchains para micro:bit neste link.

Comunidade

A comunidade em torno da BBC micro:bit tem crescido bastante, principalmente nos Estados Unidos e Europa. Você pode fazer parte da comunidade de desenvolvedores ou se inspirar em toda sorte de ideias e projetos feitos com micro:bit e submetidos pela comunidade também.

Abertura

Com foco educacional, a micro:bit ganha pontos além da sua facilidade de uso e programação, mas também no quesito hardware. Seu esquemático é aberto, sendo publicado com a licença Solderpad.

Para você ver o esquemático da micro:bit, acesse este link. E para ver a lista de materiais necessários, acesse este link.

Considerações finais

A micro:bit é uma placa que há já algum tempo eu queria ter, desde que vi seu anúncio e demais notícias sobre sua evolução e adoção na Europa e Estados Unidos. Admito que fiquei bem feliz quando soube que a MakerHero iria trazer o produto para o Brasil, pois acredito firmemente que ela tem um grande potencial, principalmente na área de educação.

São muitos os “testemunhos” de como a micro:bit ajudou crianças, adolescentes e jovens em geral a aprender sobre programação e “empoderamento” por meio da tecnologia. Inclusive, há muitos relatos sobre como a micro:bit ajudou meninas a desenvolverem uma paixão com programação.

Prática, simples e eficaz, é uma placa que eu espero, pessoalmente falando, poder usar em aulas, workshops e demais atividades em geral sobre Embarcados, programação e Internet das Coisas.

Gostou da BBC micro:bit? Ajude-nos a melhorar o blog comentando abaixo sobre este tutorial.

Faça seu comentário

Acesse sua conta e participe

5 Comentários

  1. Estou aguardando chegar um MICROBIT BBC v2 e o seu artigo é muito interessante ,tendo em vista que ainda não temos
    muita informação técnica de qualidade sobre este assunto no Brasil.

  2. Bom trabalho.

    Sabe me dizer qual a distância máxima para conexão a Rádio? Queria fazer uma comparação com Rádio LoRa.

    Obrigado.

  3. Belo trabalho nesse artigo.

  4. Muito bom! Estou amando <3<3
    Queria saber onde consigo essa placa de expansão. Poderia indicar?

    Grata!