Neste post estamos partindo da ideia que você já tenha conhecimentos sobre Arduino. Caso você seja iniciante, vou te recomendar alguns posts antes de te apresentar este:
Talvez alguns iniciantes não saibam, mas o ecossistema Arduino é formado por dezenas de placas, onde algumas são produzidas pela própria Arduino, e outras são compatíveis com a Arduino IDE. Alguns exemplos que compõem esse ecossistema, que foram projetadas pela própria Arduino são:
E existem outras placas que não foram projetadas pela Arduino, mas são compatíveis com a Arduino IDE, e podem ser programadas da mesma forma e com os mesmos comandos que um Arduino comum, e alguns exemplos dessas placas são:
Onde todas essas placas possuem uma peculiaridade, mas todas elas podem ser programadas utilizando a Arduino IDE, e tendo as mesmas facilidades que uma placa Arduino convencional.
Hoje iremos conhecer uma nova placa que chega na Eletrogate, que é a Pro Mini EVB.
Esta é uma placa de baixíssimo custo, que veio para competir com o Arduino Pro Mini, mas é um pouco mais interessante que o Pro Mini original, e veremos o porquê.
Ambas as placas são direcionadas para protótipos funcionais ou projetos finais, por serem bastante compactas, e a proposta é terem o mesmo poder de fogo que as placas maiores, e nisso ambas cumprem muito bem o seu papel, como já discutimos no post do Arduino Pro Mini, ele não deixa nada a desejar em relação a um Arduino Uno.
Ambas as placas são muito eficientes no que se propõe a fazer, e tem bastante semelhanças e algumas particularidades
A placa Pro Mini EVB usa um chip que é bastante semelhante ao Atmega328P (que é usado no Pro Mini original), com algumas melhorias.
A primeira e mais clara é a velocidade. O Pro Mini EVB pode funcionar com um clock de 32MHz, que é duas vezes mais rápido que o Pro Mini original, que funciona em 16MHz.
Além do mais, o Pro Mini EVB possui uma porta DAC, que converte um valor de 0 a 255 em tensão na saída. Isso viabiliza vários projetos eletrônicos bem interessante, como gerador de frequência ou um reprodutor de áudio.
Outras diferenças estão na quantidade de pinos e mais alguns detalhes internos, que veremos a seguir.
Abaixo se encontra o diagrama da placa, no qual mostra os pinos e a função deles.
É interessante notar que alguns pinos dessa placa estão ligados a duas GPIOs, como o caso do pino que liga 3 e 4, os pinos 8 e 9 e a que liga o pino 10 e 11.
Observação: Não utilize como saída as GPIOs que estão ligadas em um mesmo pino, porque corre o risco de queimar uma das GPIOs. Por exemplo, se 3 for saída, deixe 4 como entrada.
Outra coisa interessante é que essa placa possui pinos que podem drenar alta corrente, como é o caso dos pinos marcados em laranja, que podem drenar até 80mA.
Como nas demais placas Arduino, o LED embarcado dessa placa fica conectado ao pino 13.
Para programar a placa o primeiro passo é instalar ela na Arduino IDE.
Para isso, vá em “Arquivo>Preferências”
Copie o seguinte endereço até a parte URLs Adicionais para Gerenciadores de Placas:
https://raw.githubusercontent.com/dbuezas/lgt8fx/master/package_lgt8fx_index.json
Dê um “OK” e a tela irá fechar.
Após isso vá até “Ferramentas>Placa>Gerenciador de Placas”
E pesquise por “LGT8fx” e instale.
E as placas do tipo LGT8F328P irão aparecer para você. Escolha o tipo LGT8F328
Na Arduino IDE, deixe a placa configurada da seguinte forma:
E a placa está configurada em sua Arduino IDE.
Para gravar os programas nesta placa você pode utilizar de preferência módulos que tenham a função DTR, como o:
Módulos USB-Serial sem DTR funcionará também, mas será um pouco mais trabalhoso para programar.
É possível também estar programando a partir de um Arduino Uno e jeito será identico ao de um módulo sem DTR.
O pino DTR irá ajudar muito para programar porque ele indica para a placa quando se inicia a gravação. Internamente ele internamente ligado junto com o Reset, onde ele reinicia a placa e indica que é para começar a receber o código.
Quando o módulo não possui o DTR é necessário reiniciar manualmente, como veremos posteriormente.
A ligação com estes tipos de módulos devem ser feita da seguinte forma:
Pino Pro Mini EVB | Pino Conversor USB – Serial |
DTR | DTR |
TXD | RX |
RXD | TX |
VCC | 5V |
GND | GND |
Lembre se sempre de escolher a porta COM correta na sua Arduino IDE, em “Ferramentas->Porta”
Caso você tenha a disposição o FTDI, você irá realizar a seguinte ligação com seu Pro Mini EVB:
Caso você tenha a disposição um módulo CP2102 do modelo abaixo, você irá realizar a seguinte ligação com seu Pro Mini EVB:
Caso o seu modelo seja diferente, você fará essa ligação:
E para teste foi gravado um programa Blink, presente na Arduino IDE.
void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
E o resultado será este:
E como visto, o Pro Mini EVB é carregado como o Pro Mini comum.
No caso dos módulos sem o pino DTR, nós mesmos teremos que ter a função de indicar quando se inicia a recebimento do código para a placa. Para isso, nós teremos que resetar a placa manualmente.
Alguns exemplos de módulos sem DTR são:
Nesses casos a ligação será da seguinte forma:
Pino Pro Mini EVB | Pino Conversor USB – Serial |
TXD | RX |
RXD | TX |
VCC | 5V |
GND | GND |
Um caso especial é o do Arduino, onde a montagem precisará ser feita ligando TX com TX e RX com RX, porque na verdade, o pino RX do Arduino é o TX do conversor USB-Serial dele (Atmega16U2), e o TX do Arduino é o RX do conversor USB-Serial.
A ligação deverá ser feita da seguinte forma:
Caso você seja mais experiente, você deve estar pensando: “Podemos ligar o Reset do Arduino ao DTR, e funcionará!” Eu testei, e por algum motivo não funciona.
Com essa montagem feita, você poderá carregar seu código de teste.
void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
Enquanto o código estiver compilando você deve segurar o botão reset. No instante que a mensagem “Carregando…” aparecer, você deve soltar o botão do Reset e o seu código irá começar a caregar.
E o resultado será este:
Foi testado o conversor DAC (Digital para Analógico) da placa, tanto para fazer senóides tanto para rampas.
O pino que é responsável pelo DAC da placa é o 4 (suba um pouco e veja a imagem do pinout da placa). Se você possuir um osciloscópio para testar, você pode carregar o código abaixo e ver o resultado ligando a ponta de prova ao pino 4.
Para obter uma senoide como na imagem abaixo, basta carregar o código abaixo:
#define SAMPLES 255 byte table[SAMPLES]; void setup() { // put your setup code here, to run once: for (int i = 0; i < SAMPLES; i++) { table[i] = sin((float)i * TWO_PI / SAMPLES) * 127; } analogReference(DEFAULT); // 5v // analogReference(EXTERNAL); // REF PIN Voltage // analogReference(INTERNAL4V096); // 4.096V // analogReference(INTERNAL2V048); // 2.048v // analogReference(INTERNAL1V048); // 1.024v pinMode(DAC0, ANALOG); } void loop() { // put your main code here, to run repeatedly: for (byte i = 0; i <= SAMPLES; i++) { analogWrite(DAC0, table[i]+127); delayMicroseconds(50); } }
E no osciloscópio você verá uma senoide perfeita. Mudando o delay, você poderá configurar a frequência da senoide.
Para produzir uma rampa, carregue o código abaixo:
nsigned char value = 0; void setup() { // put your setup code here, to run once: analogReference(INTERNAL2V56); pinMode(4, ANALOG); analogWrite(4, 255); } void loop() { // put your main code here, to run repeatedly: analogWrite(4, value); delay(1); value += 1; }
E no osciloscópio você verá uma onda em formato de rampa, ou também conhecida como dente de serra:
Apesar de ser um chip inspirado e bastante similar ao clássico ATMega328P, o LGT8F328p possui uma clara vantagem: ele é bem mais rápido.
No Github existe um compilado de resultados de testes para aferir a velocidade do chip, onde contabiliza quantos segundos o chip demorou para realizar uma tarefa, como fazer muitos cálculos consecutivos, e os resultados foram estes:
Nível de Otimização | LGT8F328p @ 32MHz | LGT8F328p @ 16MHz | ATmega328p @ 16MHz |
---|---|---|---|
O3 | 4.651s | 9.301s | 10.894s |
Ofast | 4.605s | 9.209s | 10.774s |
Fonte: Github
MCU | Clock | Benchmark |
---|---|---|
ATmega328p | 16MHz | 121 s. |
ATmega328p | 8MHz | 242 s. |
LGT8F328p | 16MHz | 118 s. |
LGT8F328p | 16MHz | 118 s. |
LGT8F328p | 32MHz | 59 s. |
Fonte: Github
Nível de Otimização | LGT8F328p @ 32MHz | LGT8F328p @ 16MHz | ATmega328p @ 16 MHz |
---|---|---|---|
O3 | 220 kFLOPS | 109kFLOPS | 90 kFLOPS |
Ofast | 226 kFLOPS | 112kFLOPS | 92 kFLOPS |
Fonte: Github
E como podemos notar, o LGT8F328p não é apenas mais veloz em 32MHz, ele também é mais rápido em 16MHz.
Acredito que você tenha achado a placa com recursos bastante interessante e super recomendamos adquirir ela na Eletrogate. Ela está a um preço bastante acessível e a Eletrogate está com um frete bastante acessível para a sua região. Garanta o seu clicando aqui!
Caso você tenha gostado do post e queira mais um post sobre essa placa, ou queira um post do tipo sobre uma outra placa que você tenha interesse, deixe nos comentários.
Caso queira deixar um elogio, fazer uma correção ou fazer uma pergunta, use os comentários abaixo. Será um prazer te responder.
Nos siga no instagram para saber das nossas novidas, é @eletrogate
Muito obrigado por ter lido até aqui, e até uma próxima!
Tenha a Metodologia Eletrogate na sua Escola! Conheça nosso Programa de Robótica Educacional.
|
A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.
Tenha a Metodologia Eletrogate dentro da sua Escola! Conheça nosso Programa de Robótica nas Escolas!