Como é a BBC micro:bit
A BBC micro:bit é uma maravilha tecnológica que mede 52 mm x 42 mm (um pouco menos que um simples cartão de crédito), que já tem um conjunto de componentes e sensores já integrados, para rapidamente permitir a criação de simples programas capazes de interagir com o utilizadores, 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. Pode comprar aqui esta fantástica placa Micro:Bit.
A micro:bit é uma placa didática do início ao fim. 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.
Como podemos ver na imagem seguinte, possui a matriz de LEDs e um par de botões, 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 Crocodilo, 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).
A BBC micro:bit é capaz de comunicar via Bluetooth Low Energy, o que permite sua iteração com dispositivos móveis como 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 utilizador é capaz de realizar a programação da placa por interfaces Web muito intuitivas, e rapidamente é capaz de gravar a placa via USB e começar sua operação.
Hardware da micro:bit
Vamos abordar aqui a composição da micro:bit, assim como seus componentes periféricos de entrada/saída de dados e sinais.
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 Android/iPhone.
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. Este faz tanto a ponte de comunicação USB-Serial com o SoC Nordic nRF51822, o que permite fazer interface de comunicação Serial com a micro:bit tal como faz com um Arduino.
Nessa forma de gravação, realizada pelo microcontrolador KL26Z, quando a placa é ligada via USB no computador 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 seguinte:
O microcontrolador KL26Z presente na micro:bit também é responsável pela regulação de tensão da porta USB (no intervalo de 4.5 a 5.25V) à tensão nominal de 3.3V usado pelo resto da placa. De acordo com a documentação, quando são usadas baterias, esse recurso de regulação de tensão não é utilizado. Agora vamos a uma parte super interessante da BBC micro:bit – sensores!
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
- 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 da micro:bit, não ve nenhum LDR ou outro sensor de luz pois não? Na verdade, é a matriz de LEDs! Os engenheiros responsáveis pelo desenvolvimento desta placa, conseguiram obter a leitura do decaimento de tensão de LEDs lidos como sinais de entrada no SoC Nordic, e assim estimar a iluminação presente.
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”.
Para interface com o utilizador, 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, faz reset a todos os componentes presentes na placa.
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.
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 “crocodilo” 3 sinais de controlo (0, 1 e 2) e há 2 sinais de alimentação (3V e GND) também. Veja seguinte um exemplo desses conectores ligando a micro:bit num modulo com alto-falante.
Comprar Cabos Crocodilo
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.
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…
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 parametros (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 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 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.
O código gerado pela ferramenta é descarregado, 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.
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 é carregado na placa, via download e 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:
A forma de desenvolvimento com mbed é praticamente a mesma adotada nas placas Freedom.
Mobile
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 criar códigos e carregar programas na micro:bit usando seu smartphone Android ou iPhone.
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.
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!
Veja ainda o processo de configuração da micro:bit para Arduino IDE apresentado nesse Guia da Adafruit.
Poderá comprar aqui tudo o que precisa para começar o seu projeto: