O Fazedores tem falado muito de Arduino, mas existem várias outras plataformas bem interessantes e até mesmo mais poderosas para projetos embarcados. Uma delas é a Teensy que possui modelos basedos na mesma família de controladores AVR de 8-bits que o Arduino, mas que também conta com alternativas de 32-bits da Freescale. E é dele que vamos falar hoje aqui no Fazedores.
Este artigo é uma revisão com melhorias do post que fiz para o Laboratório de Garagem e no Fórum Fazedores para apresentar as placas Teensy. Com ele faço minha estréia como colaborador do Fazedores depois de um convite do Manoel Lemos. Vamos lá.
E com vocês, a Teensy
Teensy são placas de desenvolvimento de microcontroladores completas baseadas em USB, criadas pela PJRC a linha se constitui das seguintes placas:
- Teensy 1.0 (descontinuada);
- Teensy ++ 1.0 (descontinuada);
- Teensy 2.0;
- Teensy ++ 2.0;
- Teensy 3.0;
- Teensy 3.1;
- O desenvolvedor já anunciou que, brevemente, chegarão as novas Teensy ++ 3.0
A linha Teensy 2, utiliza microcontroladores AVR de 8 bits da Atmel a saber: ATMega32U4 (Teensy 2.0, mesmo microcontrolador do Arduino Leonardo) e AT90USB1286 (Teensy 2.0 ++).
Já a linha Teensy 3 usa microcontroladores Cortex-M4, baseados em ARM de 32 bits da linha Kinetis, fabricados pela Freescale que são: MK20DX128 para a placa Teensy 3.0 e MK20DX256 para a Teensy 3.1.
As placas Teensy 2 tem fama de oferecerer um baixo custo e alta qualidade sendo reconhecidas como uma excelente opção ao Arduino, mesmo até porque, além de poderem ser programadas diretamente em C, também podem ser programadas com Arduino, via addon para a IDE Arduino estável, chamado Teensyduino. Já as Teensy 3 suportam Arduino por padrão via Teensyduino.
Utilizando sua placa Teensy
Não é necessário muito para começar a utilizar Teensy, basta conectar o cabo USB, assim como no Arduino, a placa iniciará a piscar o LED, que nada mais é que um código de blink que já vem gravado no microcontrolador para fins de teste.
Quando você pressiona o botão de reset da placa, ela carrega um bootloader, um código proprietário e fechado da PJRC chamado HalfKay é ele quem gerencia o carregamento de novos programas para as placas Teensy através do Teensy Loader. O código do HalfKay é mantido fechado pela PJRC por questão de negócios, a fim de evitar cópias chinesas de qualidade duvidosa, sendo que não é possível extraí-lo das placas pois os Lock Bits do microcontrolador foram setados, só é possível reescrever um outro bootloader, se você preferir, mas não será mais possível usar o Teensy Loader.
O bootloader HalfKay, diferente dos outros bootloaders, como AVR109, utiliza apenas 512 bytes ao invés de 2 Kbytes ou 4 Kbytes, liberando mais espaço para o programa do usuário.
O Teensy Loader é mandatório para trabalhar com Teensy, para aqueles que irão programar diretamente em C ou para aqueles que irão trabalhar com Arduino ou outra linguagem que o Teensy tenha suporte (como é o caso de BASIC e Python).
Programando a Teensy com C (AVR Libc)
Para iniciar a programação em C, é necessário instalar o WinAVR (no caso do Windows). A PJRC disponibiliza instruções e um exemplo de blinky alterado para responder a sinais de código morse em: http://pjrc.com/teensy/gcc.html
O código de blinky virá com um Makefile genérico que você pode usar em seus outros projetos, com poucas alterações, para ganhar tempo, basicamente, após instalar o WinAVR, simplesmente navegue via CMD (Windows) e digite make, e o projeto será compilado, após isso, basta usar o Teensy Loader para fazer o upload do arquivo HEX para a placa Teensy.
O WinAVR é baseado em AVR Libc (na verdade, o próprio Arduino o é), por isso, é interessante para todos aqueles que desejam trabalhar diretamente com C, que estudem a referência da biblioteca.
O equivalente ao blink do Arduino em C, tendo em vista que o led da Teensy 2 está conectado ao pino D6, seria este código:
#include <avr/io.h> #include <util/delay.h> #define LED_CONFIG (DDRD |= (1 << 6)) // Configura a Porta D6 para OUTPUT (pinMode) #define LED_ON (PORTD |= (1 << 6)) // Seta o bit na porta D6 (digitalWrite(pin, HIGH)) #define LED_OFF (PORTD &= ~(1 << 6)) // Limpa o bit na porta D6 (digitalWrite(pin, LOW)) #define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n)) void main() { CPU_PRESCALE(0); LED_CONFIG; while(1) // loop infinito (void loop()) { LED_ON; _delay_ms(1000); LED_OFF; _delay_ms(1000); } }
É possível também usar o Atmel Studio 6 e até biblioteca LUFA ao invés de AVR Libc para realizar a programação em C.
Programando a Teensy com a IDE Arduino (Teensyduino)
Para programar as linhas Teensy 2 e 3 utilizando Arduino, basicamente você deve instalar o Teensyduino como Administrador do Sistema, ele irá instalar o Addon, o driver para Serial e bibliotecas opcionais.
Vale ressaltar, que nem todas as bibliotecas de Arduino são compatíveis, é necessário verificar a lista de compatibilidade.
Claro que, ao encaminhar o código de exemplo blink para a placa Teensy, é necessário saber em qual porta o led está ligado, no caso do Teensy 2, você deve trocar o pino 13 pelo pino 6, por exemplo, e pronto, daqui, é só programar seus próprios projetos com Arduino!
Preços e especificações das placas Teensy
É possível comprar os produtos da PJRC diretamente com cartão de crédito internacional pelo site da fabricante, no entanto, vale frisar que a OSH Park está oferencendo a Teensy 3.1 em preço promocional. O envio pelo site oficial custará $9, na OSH Park custará $2, se você demonstrou interesse pela versão 3.1, é uma boa opção comprar pela OSH Park. No Brasil, já é possível adquirir a Teensy 2 pelo Laboratório de Garagem.
Especificações | Teensy 2.0 | Teensy++ 2.0 | Teensy 3.0 | Teensy 3.1 |
Processador | ATMega32U4 8 bit AVR 16 MHz | AT90USB1286 8 bit AVR 16 MHz | MK20DX128 32 bit ARM Cortex-M4 48 MHz | MK20DX256 32 bit ARM Cortex-M4 72 MHz |
Memória Flash | 32256 bytes | 130048 bytes | 131072 bytes | 262144 bytes |
Memória RAM | 2560 bytes | 8192 bytes | 16384 bytes | 65536 bytes |
EEPROM | 1024 bytes | 4096 bytes | 2048 bytes | 2048 bytes |
I/O | 25, 5 Volt | 46, 5 Volt | 34, 3.3 Volt | 34, 3.3 Volt, tolera 5V Volt |
Portas Analógicas | 12 | 8 | 14 | 21 |
PWM | 7 | 9 | 10 | 12 |
UART, I2C, SPI | 1, 1, 1 | 1, 1, 1 | 3, 1, 1 | 3, 2, 1 |
Preço | $16.00 | $24.00 | $19.00 | $19.80 |
Considerações Finais
Eu comecei por Arduino Uno, talvez levado pela popularidade da plataforma, mas sinceramente, se hoje eu tivesse que escolher uma placa para iniciar, pensaria seriamente em uma Teensy, pelo fato de serem mais baratas e oferecerem mais que o Arduino, a Teensy ++ 2.0 além de ser mais barata, utiliza um microcontrolador melhor, ainda possui 46 portas e pode ser programada por código de Arduino.
Além disso, oferecem host de USB, HID e muitas outras possibilidades, eis aqui uma vasta lista de projetos criados com Teensy: Robôs, reposição de processadores, shield para Arduino, leitores e gravadores de EEPROM, memórias nor/nand e muitas outras coisas interessantes!
E claro, são placas pequenas e baratas! Além disso contam com um excelente suporte num fórum de discussão privativo, onde o próprio criador da placa: Paul Stoffregen, tem a atenção de responder questões, guiar projetos, atualizar software.
Olá eu gostaria de fazer um projeto com o teensy 3.5 para reprodução de video e imagens em um painel de led ws2811, gostaria de saber se você ou alguém sabe se posso realizar esse tipo de projeto?
Sim, você pode dar uma olhada em https://www.pjrc.com/teensy/projects.html há muitos projetos de painéis e LED inclusive usando WS811, como este: https://www.youtube.com/watch?v=uUGbdl91UH8
Parabéns pelo seu trabalho!
Só por curiosidade, o que poderia fazer com uma teensy que comprei para desbloquear um PS3 uma do modelo PS Jailbreak.
É possível reprogramar e fazer algo com ela alem do desbloqueio do PS3?
Não existe uma Teensy modelo “PS Jailbreak”, as Teensy originais são apenas aquelas vendidas pela PJRC, somente estas e nenhuma mais.
O que acontece é que algum malicioso criou uma placa baseada em AT90USB1286 e gravou algum firmware do hjudges e chamou de Teensy para vender.
Sim, é possível reutilizá-la para qualquer propósito.
Muito obrigado!
Por onde poderia começar a estudar sobre isso?
Se o teu conhecimento sobre eletrônica é nulo, compre algum kit de aprendizado e siga as instruções para aprender. Há várias lojas que vendem kits como a Robocore e Laboratório de Garagem.
Se já conhece alguma coisa de eletrônica digital, compre um gravador de AVR, faça os projetos, compile seus programas e grave na placa que você já tem.
Na verdade a que tenho é AT90USB162