Conclusão
O uso de JSON em microcontroladores é uma solução prática quando precisamos integrar firmware embarcado com serviços web, APIs REST, aplicações mobile, servidores IoT, gateways, ferramentas de diagnóstico ou plataformas em nuvem. Mesmo não sendo o formato mais compacto possível, o JSON oferece uma vantagem muito importante: ele é claro, legível e amplamente aceito em praticamente qualquer ambiente moderno de software.
Ao longo deste tutorial, vimos que a biblioteca cJSON permite criar, serializar e interpretar mensagens JSON diretamente em linguagem C. Começamos com objetos simples, avançamos para uma hierarquia de dois níveis, adicionamos arrays de amostras ADC e depois interpretamos respostas vindas de um serviço web simulado. Também vimos como representar comandos recebidos do servidor, como uma lista de GPIOs a serem acionados.
A principal lição para sistemas embarcados é que JSON deve ser usado com disciplina. Não basta montar e interpretar mensagens: é necessário validar cada campo, verificar o tipo dos dados, limitar o tamanho dos arrays, liberar corretamente a memória e evitar estruturas grandes demais. Em microcontroladores, a previsibilidade no uso de RAM e tempo de processamento é tão importante quanto a funcionalidade.
A cJSON é simples e eficiente para muitos cenários de IoT, telemetria, configuração remota e diagnóstico. Porém, quando o projeto envolve alta taxa de amostragem, transmissão contínua de sinais ou dispositivos com RAM muito limitada, pode ser necessário considerar formatos binários ou protocolos mais compactos. A decisão deve sempre considerar as restrições típicas de sistemas embarcados: memória, desempenho, robustez, consumo de energia, manutenibilidade e confiabilidade.
No modelo apresentado, mantivemos tudo genérico. As funções mock permitiram simular sensores e um serviço web sem depender de STM32 HAL, ESP-IDF, Pico SDK, Zephyr, FreeRTOS ou qualquer biblioteca específica. Isso torna o tutorial adaptável a diferentes famílias de microcontroladores. Em um projeto real, bastaria substituir as funções simuladas por drivers reais, chamadas HTTP, MQTT, UART, BLE, LoRa ou outro meio de comunicação.
Em resumo, JSON com cJSON é uma excelente porta de entrada para criar firmwares embarcados mais integráveis, principalmente em aplicações IoT. Usado com limites bem definidos e validação cuidadosa, ele permite que microcontroladores conversem com o mundo moderno da web de forma organizada, clara e extensível.