O módulo controlador Mbed consiste em uma plataforma e um sistema operacional para dispositivos IoT e está equipado com um MCU NXP LPC1768, que é baseado na arquitetura do núcleo Cortex-M3 de 32 bits da ARM. Com o módulo Mbed e um ambiente de desenvolvimento online da ARM, a criação de protótipos e circuitos de teste é feita de uma maneira completamente nova e fácil.
O Microcontrolador mbed NXP LPC1768 em particular, é projetado para prototipar todos os tipos de dispositivos, especialmente aqueles que incluem Ethernet, USB e a flexibilidade de muitas interfaces periféricas e memória FLASH. Seu empacotamento é baseado em um pequeno fator de forma DIP para criação de protótipos com PCBs, divisórias e breadboards, e inclui um programador USB FLASH embutido.
O módulo mbed usa um controlador secundário que gerencia a comunicação com o PC host, além de programar o LPC1768. Fazer as coisas dessa maneira resulta em duas vantagens cruciais: No início, o download de código pode ser considerado uma caixa preta - o usuário não precisa saber mais do que isso, a imagem do firmware é gravada no flash do MCU. Em segundo lugar, não há recursos do MCU alvo usado, como seria o caso de um bootloader tradicional. É possível escrever software próprio sem qualquer restrição de hardware de desenvolvimento.
Informações do Microcontrolador
LPC1768 MCU by NXP
ARM Cortex-M3 Core, 32 bits
100 MHz clock frequency
512 KB Flash
64 KB RAM
10/100 Mbps Ethernet
USB 2.0 Full-speed Device/Host/OTG
SPI, I2C, UART, CAN
ADC, DAC, PWM
GPIOs are 5V-tolerant
3.3V operation voltage
Figura 1 – Mbed Pinout
Mbed Compiler
O Mbed Compiler fornece um IDE C / C ++ leve que é pré-configurada para permitir quehaja a possibilidade de escrever programas rapidamente, compilar e fazer o download deles para rodar em seu respectivo Microcontrolador mbed. Na verdade, você não precisa instalar ou configurar nada para ser executado com o mbed. Por se tratar de um aplicativo da web, você pode fazer login de qualquer lugar e continuar de onde parou e está livre para trabalhar no Windows, Mac, iOS, Android, Linux ou em todos eles.
O Mbed possui três portas seriais (P9, P10, P13, P14, P28, P27) que podem servir como debug, mandar e receber comandos. A placa tem também a porta USB (IF-, IF+) que é utilizada para gravar os códigos na memória FLASH e também pode ser utilizada como Serial para acessar dados e mandar comandos, além de poder utilizar como debug. E mais uma saída (D+, D-)USB direto do microcontrolador Cortex.
Ao conectar o dispositivo no computador, este irá identificá-lo como um “FLASH DRIVE”. Dessa forma, é necessário fazer o login no Mbed Compiler utilizado para escrever o código, compilar e fazer o download para a placa de desenvolvimento utilizada. Assim, para criar um novo projeto, clica-se em “New” e então, nomeia-se de acordo com aquilo que será programado. Depois disso, abrimos o projeto como na figura abaixo:
Figura 2 – Início do Projeto
Dentro do projeto o qual será executado, existem os arquivos “main.cpp” e a biblioteca principal “mbed.h”. Agora, clicando no arquivo “main.cpp”, teremos:
Figura 3 – Abrindo o projeto
Código utilizado:
#include "mbed.h"
#include "AnalogIn.h"
AnalogIn ain (p20);
Serial pc (USBTX,USBRX);
int main(){
uint16_t adcValue;
float voltage;
pc.baud (115200);
while(1){
adcValue = ain.read_u16();
voltage = adcValue*3.3/65535; //65535 is equivalent for 2^16(uint16_t)
pc.printf("ADC:%i,%.2f volts.\r\n",adcValue,voltage);
wait(0.1);
}
}
Após isso, deve-se compilar o código clicando em “Compile”, assim, um arquivo em binário será gerado e estará pronto para ser adicionado à Mbed, como mostrado na figura abaixo:
Figura 4 – Compilando o programa e gerando o binário
Com isso, após copiar e colar o arquivo em binário gerado na pasta do dispositivo, reinicia-se a Mbed clicando-se no botão que existe ao centro, como demonstrado na figura 5 ou retirando a placa da porta serial e religando-a.
Figura 5 – Vista frontal Mbed LPC1768
Desta maneira, ao religá-la e simultaneamente, abrir terminais como o RealTerm, Monitor Serial do Arduino ou PUTTY, os resultados serão aparentes no formato "ADC:%i,%.2f volts.\r\n",adcValue,voltage , como ilustrado na figura 6.
Figura 6 – Dados no terminal
Para utilizar o RealTerm, somente há a necessidade de selecionar a porta serial onde o dispositivo encontra-se conectado e o seu baudrate, para que os dados sejam projetados. No entanto, para Linux (Ubuntu, Fedora, etc), há a necessidade de abrir o terminal e digitar: mesg | grep tty <ENTER>. Assim, aparecerá o nome da porta ativa.
Para o PUTTY, ao saber qual porta está ativa no momento, uma janela de configuração é aberta, como na figura 7.
Figura 7 - Configurando o PUTTY
Após isso, seleciona-se a porta serial em que a Mbed está conectada, assim como o seu baudrate, que no caso, é de 9600 e clica-se em “Open” .
Mbed Led Control
Para finalizar, o código exemplificado acima, o qual retorna o ADC medido pela Mbed, faz com que um LED pisque a cada envio de dados. Porém, podemos utilizar um código o qual usa portas seriais para aumentar a sua intensidade de um dos LEDs a cada iteração humano/computador.
#include "mbed.h"
Serial pc(USBTX, USBRX); // tx, rx PwmOut led(LED1);
float luminosidade = 0.0;
int main() { pc.printf("Pressione 'a' para aumentar a luminosidade do LED, 'b' para abaixar\n");
while(1) { char c = pc.getc(); if((c == 'a') && (luminosidade < 0.5)) { luminosidade += 0.01; led = luminosidade; } if((c == 'b') && (luminosidade > 0.0)) { luminosidade -= 0.01; led = luminosidade; }
}
}
Nele, quando apertamos uma das letras correspondentes no teclado, a intensidade do brilho pode aumentar ou diminuir, tratando a rotina de forma visual.
Espero que tenham gostado,
Até a próxima.