Quando o JavaScript encontra o hardware: uma nova palavra no mundo embarcado
Quando falamos "desenvolvimento embarcado", geralmente vêm à mente associações com C, metal nu, inserções de assembly e infinitas sessões de depuração com osciloscópio. Agora imagine que você está escrevendo o firmware para um sensor de temperatura inteligente usando TypeScript. Parece ficção científica? Pois é, não é.
O mundo dos sistemas embarcados está passando por uma revolução silenciosa. Microcontroladores modernos agora têm memória e velocidade de clock suficientes para executar linguagens de script. E o TypeScript, com sua tipagem estática e ecossistema rico, torna-se o candidato ideal para projetos embarcados onde a confiabilidade e a legibilidade do código são importantes.
Neste artigo, vamos explorar como o TypeScript está entrando no mundo embarcado, quais ferramentas são necessárias e escrever código real para controlar um LED via GPIO. Vamos nessa!
Por que TypeScript em vez de C ou Python?
A escolha clássica para embarcados é o C. Ele é rápido, previsível e consome pouca memória. Mas tem seu lado sombrio: gerenciamento manual de memória, falta de tipagem adequada no nível do compilador e um "inferno" de macros. Python (MicroPython) é mais simples, mas lento e dinâmico — você só descobre um bug em tempo de execução, quando o dispositivo trava em algum lugar na prateleira.
TypeScript oferece um meio-termo:
- Tipagem forte — o compilador detecta erros em tempo de compilação. Nada de
stringacidental no lugar denumbernos registros do microcontrolador. - Sintaxe moderna — async/await, genéricos, interfaces. O código se torna autodocumentado.
- Ecossistema npm — milhares de bibliotecas que podem ser adaptadas ao hardware.
- Segurança de tipos — você sabe exatamente o que está passando para a função
setPin(17, HIGH), e nãosetPin("17", true).
Claro, o TypeScript não substituirá o C em sistemas de tempo real de alta carga. Mas para sensores IoT, lâmpadas inteligentes, estações meteorológicas e protótipos, é a escolha ideal.
Ferramentas: o que você precisa para começar
Para programar em TypeScript para hardware, precisamos de um ambiente de execução que saiba interpretar JavaScript em um microcontrolador. As opções mais populares são:
- JerryScript — um motor JS leve da Samsung. Ocupa cerca de 1 MB de Flash.
- Espruino — um firmware especializado para STM32 e ESP32. Suporta TypeScript via transpilação.
- Moddable SDK — um framework poderoso para IoT com suporte nativo a TypeScript.
Usaremos o Espruino na placa ESP32 (ou Raspberry Pi Pico com firmware Espruino). Esta é a maneira mais fácil de experimentar TypeScript em embarcados sem ferro de solda ou datasheets.
Instalação e configuração
- Baixe o firmware Espruino para sua placa no site oficial.
- Grave a placa via USB (use o utilitário
esptoolpara ESP32). - Instale o Node.js e npm, se ainda não estiverem instalados.
- Instale o
espruino-cliglobalmente:npm install -g espruino-cli. - Crie um projeto:
mkdir my-embedded-ts && cd my-embedded-ts && npm init -y. - Instale o TypeScript:
npm install --save-dev typescript @types/espruino.
Agora você tem um projeto TypeScript que conhece os tipos do Espruino! Crie um arquivo tsconfig.json:
{ "compilerOptions": { "target": "ES2015", "module": "commonjs", "strict": true, "outDir": "./dist", "rootDir": "./src", "types": ["espruino"] }, "include": ["src/**/*"]}