<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Carlos Delfino - MCU &amp; FPGA</title>
	<atom:link href="https://mcu.tec.br/author/carlosdelfino/feed/" rel="self" type="application/rss+xml" />
	<link>https://mcu.tec.br</link>
	<description>Microcontroladores &#38; FPGA</description>
	<lastBuildDate>Mon, 15 Jun 2026 19:45:04 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://mcu.tec.br/wp-content/uploads/2025/02/Robo-para-o-site-MCU.tec_.br-512x512-1-150x150.png</url>
	<title>Carlos Delfino - MCU &amp; FPGA</title>
	<link>https://mcu.tec.br</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Hardware in the Loop: quando o mundo real conversa com a simulação</title>
		<link>https://mcu.tec.br/iot/hardware-in-the-loop-quando-o-mundo-real-conversa-com-a-simulacao/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=hardware-in-the-loop-quando-o-mundo-real-conversa-com-a-simulacao</link>
					<comments>https://mcu.tec.br/iot/hardware-in-the-loop-quando-o-mundo-real-conversa-com-a-simulacao/#respond</comments>
		
		<dc:creator><![CDATA[Carlos Delfino]]></dc:creator>
		<pubDate>Wed, 17 Jun 2026 14:20:33 +0000</pubDate>
				<category><![CDATA[Infraestrutura]]></category>
		<category><![CDATA[Inteligência Artificil]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<guid isPermaLink="false">https://mcu.tec.br/?p=1467</guid>

					<description><![CDATA[<p>Entenda o que é Hardware in the Loop, como o HIL é aplicado em sistemas embarcados e industriais, e sua relação com Indústria 4.0 e Gêmeos Digitais.</p>
<p>The post <a href="https://mcu.tec.br/iot/hardware-in-the-loop-quando-o-mundo-real-conversa-com-a-simulacao/">Hardware in the Loop: quando o mundo real conversa com a simulação</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="wp-block-aioseo-table-of-contents"><ul><li><a class="aioseo-toc-item" href="#aioseo-2-o-que-e-hardware-in-the-loop-15">O que é Hardware in the Loop?</a></li><li><a class="aioseo-toc-item" href="#aioseo-3-como-o-hil-e-aplicado-na-pratica-47">Como o HIL é aplicado na prática?</a><ul><li><a class="aioseo-toc-item" href="#aioseo-3-1-modelagem-da-planta-73">3.1 Modelagem da planta</a></li><li><a class="aioseo-toc-item" href="#aioseo-3-2-interface-entre-controlador-e-simulador-77">3.2 Interface entre controlador e simulador</a></li><li><a class="aioseo-toc-item" href="#aioseo-3-3-execucao-em-tempo-real-81">3.3 Execução em tempo real</a></li><li><a class="aioseo-toc-item" href="#aioseo-3-4-injecao-de-falhas-85">3.4 Injeção de falhas</a></li><li><a class="aioseo-toc-item" href="#aioseo-3-5-automacao-dos-testes-91">3.5 Automação dos testes</a></li><li><a class="aioseo-toc-item" href="#aioseo-3-6-registro-e-analise-dos-resultados-95">3.6 Registro e análise dos resultados</a></li></ul></li><li><a class="aioseo-toc-item" href="#aioseo-4-hil-em-sistemas-embarcados-e-sistemas-de-tempo-real-113">HIL em sistemas embarcados e sistemas de tempo real</a><ul><li><a class="aioseo-toc-item" href="#aioseo-4-1-o-firmware-real-diante-de-uma-planta-simulada-131">4.1 O firmware real diante de uma planta simulada</a></li><li><a class="aioseo-toc-item" href="#aioseo-4-2-o-papel-das-maquinas-de-estado-145">4.2 O papel das máquinas de estado</a></li><li><a class="aioseo-toc-item" href="#aioseo-4-3-testes-de-tempo-carga-e-desempenho-162">4.3 Testes de tempo, carga e desempenho</a></li><li><a class="aioseo-toc-item" href="#aioseo-4-4-seguranca-e-confiabilidade-169">4.4 Segurança e confiabilidade</a></li><li><a class="aioseo-toc-item" href="#aioseo-4-5-hil-como-ponte-entre-desenvolvimento-e-campo-183">4.5 HIL como ponte entre desenvolvimento e campo</a></li></ul></li><li><a class="aioseo-toc-item" href="#aioseo-5-hil-e-industria-4-0-196">HIL e Indústria 4.0</a><ul><li><a class="aioseo-toc-item" href="#aioseo-5-1-dados-industriais-e-validacao-214">5.1 Dados industriais e validação</a></li><li><a class="aioseo-toc-item" href="#aioseo-5-2-integracao-com-iot-industrial-220">5.2 Integração com IoT industrial</a></li><li><a class="aioseo-toc-item" href="#aioseo-5-3-automacao-robotica-e-seguranca-operacional-228">5.3 Automação, robótica e segurança operacional</a></li><li><a class="aioseo-toc-item" href="#aioseo-5-4-hil-como-parte-da-engenharia-digital-233">5.4 HIL como parte da engenharia digital</a></li><li><a class="aioseo-toc-item" href="#aioseo-5-5-o-valor-pratico-para-a-fabrica-248">5.5 O valor prático para a fábrica</a></li></ul></li><li><a class="aioseo-toc-item" href="#aioseo-6-hil-e-gemeos-digitais-260">HIL e Gêmeos Digitais</a><ul><li><a class="aioseo-toc-item" href="#aioseo-6-1-o-que-e-um-gemeo-digital-269">6.1 O que é um Gêmeo Digital?</a></li><li><a class="aioseo-toc-item" href="#aioseo-6-2-onde-o-hil-entra-nessa-historia-286">6.2 Onde o HIL entra nessa história?</a></li><li><a class="aioseo-toc-item" href="#aioseo-6-3-gemeo-digital-nao-substitui-o-hil-295">6.3 Gêmeo Digital não substitui o HIL</a></li><li><a class="aioseo-toc-item" href="#aioseo-6-4-como-os-dois-conceitos-se-reforcam-304">6.4 Como os dois conceitos se reforçam</a></li><li><a class="aioseo-toc-item" href="#aioseo-6-5-exemplo-linha-de-envasamento-de-vinho-318">6.5 Exemplo: linha de envasamento de vinho</a></li><li><a class="aioseo-toc-item" href="#aioseo-6-6-quando-integrar-hil-e-gemeo-digital-327">6.6 Quando integrar HIL e Gêmeo Digital?</a></li><li><a class="aioseo-toc-item" href="#aioseo-6-7-uma-forma-simples-de-enxergar-342">6.7 Uma forma simples de enxergar</a></li></ul></li><li><a class="aioseo-toc-item" href="#aioseo-7-relacao-entre-hil-industria-4-0-e-gemeos-digitais-350">Relação entre HIL, Indústria 4.0 e Gêmeos Digitais</a><ul><li><a class="aioseo-toc-item" href="#aioseo-7-1-o-ciclo-fisico-digital-360">7.1 O ciclo físico-digital</a></li><li><a class="aioseo-toc-item" href="#aioseo-7-2-um-exemplo-integrado-envasamento-de-vinho-376">7.2 Um exemplo integrado: envasamento de vinho</a></li><li><a class="aioseo-toc-item" href="#aioseo-7-3-hil-como-filtro-de-seguranca-entre-modelo-e-realidade-389">7.3 HIL como filtro de segurança entre modelo e realidade</a></li><li><a class="aioseo-toc-item" href="#aioseo-7-4-arquitetura-conceitual-integrada-398">7.4 Arquitetura conceitual integrada</a></li><li><a class="aioseo-toc-item" href="#aioseo-7-5-o-ganho-para-engenharia-manutencao-e-operacao-409">7.5 O ganho para engenharia, manutenção e operação</a></li><li><a class="aioseo-toc-item" href="#aioseo-7-6-uma-visao-pratica-416">7.6 Uma visão prática</a></li><li><a class="aioseo-toc-item" href="#aioseo-7-7-o-ponto-central-423">7.7 O ponto central</a></li></ul></li></ul></div>


<p class="wp-block-paragraph">Imagine que você está desenvolvendo o controle eletrônico de um motor, de um inversor de frequência, de um robô industrial, de uma fonte chaveada inteligente ou de um sistema embarcado automotivo. Em algum momento surge uma pergunta inevitável: <strong>como testar esse sistema antes de colocá-lo em contato com o equipamento real?</strong></p>



<p class="wp-block-paragraph">A resposta mais direta seria: “ligue tudo na bancada e teste”. Mas pense comigo: e se o motor ainda não estiver disponível? E se o processo industrial for caro demais para parar? E se uma falha de software puder queimar um equipamento, travar uma linha de produção ou colocar operadores em risco? É exatamente nesse ponto que entra o conceito de <strong>Hardware in the Loop</strong>, frequentemente abreviado como <strong>HIL</strong>.</p>



<p class="wp-block-paragraph">Hardware in the Loop é uma técnica de teste em que parte do sistema é real — geralmente o controlador eletrônico, a ECU, o CLP, o firmware ou a placa embarcada — enquanto o restante do ambiente é simulado em tempo real. Em vez de conectar o controlador diretamente ao motor, à planta industrial, ao veículo, ao conversor de potência ou ao equipamento físico completo, conectamos esse controlador a um simulador que imita o comportamento elétrico, mecânico, térmico, hidráulico ou lógico do sistema real.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Em termos simples: no HIL, o hardware real acredita que está operando no mundo físico, mas na verdade está interagindo com um ambiente virtual controlado.</p>
</blockquote>



<p class="wp-block-paragraph">Essa ideia é poderosa porque cria uma ponte entre três mundos que hoje caminham juntos: <strong>sistemas embarcados</strong>, <strong>simulação em tempo real</strong> e <strong>automação inteligente</strong>. E é justamente por isso que o HIL se tornou tão importante na engenharia moderna, especialmente quando falamos de <strong>Indústria 4.0</strong> e <strong>Gêmeos Digitais</strong>.</p>



<p class="wp-block-paragraph">A Indústria 4.0 trouxe sensores conectados, IoT industrial, análise de dados, inteligência artificial, robôs colaborativos, sistemas ciberfísicos e automação altamente integrada. Já os gêmeos digitais ampliaram essa visão ao criar representações digitais de máquinas, processos e linhas de produção capazes de observar, prever, diagnosticar e otimizar o comportamento do sistema físico.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">O gêmeo digital observa e representa o sistema.<br>O HIL testa o controlador contra um sistema simulado.<br>A Indústria 4.0 conecta tudo isso em uma arquitetura produtiva, inteligente e orientada por dados.</p>
</blockquote>



<p class="wp-block-paragraph">Perceba a relação: o HIL não é apenas uma ferramenta de laboratório. Ele pode ser visto como uma etapa fundamental para validar controladores, algoritmos e firmwares antes que eles sejam integrados a ambientes industriais reais. Quando bem aplicado, ele reduz riscos, antecipa falhas, acelera o desenvolvimento e permite testar cenários difíceis, perigosos ou caros de reproduzir fisicamente.</p>



<p class="wp-block-paragraph">Em sistemas embarcados e de tempo real, isso é ainda mais crítico. Não basta o software “funcionar”. Ele precisa responder no tempo correto, lidar com falhas, processar entradas de sensores, controlar atuadores e se comportar de forma previsível. Como lembra a engenharia de sistemas embarcados, testar software em uma plataforma alvo é mais difícil do que testar software em um computador comum, especialmente quando desempenho, temporização e interação com hardware entram em jogo.</p>



<p class="wp-block-paragraph">Neste artigo, vamos caminhar juntos por esse tema. Primeiro entenderemos o que é Hardware in the Loop. Depois veremos como ele é aplicado, quais elementos compõem uma bancada HIL, como ele se relaciona com sistemas embarcados, qual sua conexão com a Indústria 4.0 e, por fim, como ele conversa com o conceito de Gêmeos Digitais.</p>



<p class="wp-block-paragraph">A ideia é simples: ao final, você não verá HIL apenas como uma sigla sofisticada, mas como uma metodologia essencial para desenvolver, validar e amadurecer sistemas reais em um mundo cada vez mais digital, conectado e automatizado.</p><p>The post <a href="https://mcu.tec.br/iot/hardware-in-the-loop-quando-o-mundo-real-conversa-com-a-simulacao/">Hardware in the Loop: quando o mundo real conversa com a simulação</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://mcu.tec.br/iot/hardware-in-the-loop-quando-o-mundo-real-conversa-com-a-simulacao/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1467</post-id>	</item>
		<item>
		<title>ESP32-E22: Wi-Fi 6E, 2,4 Gbps e conectividade avançada para sistemas embarcados Linux</title>
		<link>https://mcu.tec.br/geral/esp32-e22-wi-fi-6e-24-gbps-e-conectividade-avancada-para-sistemas-embarcados-linux/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=esp32-e22-wi-fi-6e-24-gbps-e-conectividade-avancada-para-sistemas-embarcados-linux</link>
					<comments>https://mcu.tec.br/geral/esp32-e22-wi-fi-6e-24-gbps-e-conectividade-avancada-para-sistemas-embarcados-linux/#respond</comments>
		
		<dc:creator><![CDATA[Carlos Delfino]]></dc:creator>
		<pubDate>Mon, 15 Jun 2026 19:44:50 +0000</pubDate>
				<category><![CDATA[geral]]></category>
		<guid isPermaLink="false">https://mcu.tec.br/?p=1476</guid>

					<description><![CDATA[<p>A Espressif tornou-se amplamente conhecida entre desenvolvedores de sistemas embarcados por integrar microcontroladores, Wi-Fi e Bluetooth em dispositivos acessíveis e relativamente simples de programar. Com o ESP32-E22, entretanto, a empresa avança para uma categoria diferente de produto. Em vez de ser apresentado principalmente como um microcontrolador responsável por executar toda a aplicação, o ESP32-E22 foi [&#8230;]</p>
<p>The post <a href="https://mcu.tec.br/geral/esp32-e22-wi-fi-6e-24-gbps-e-conectividade-avancada-para-sistemas-embarcados-linux/">ESP32-E22: Wi-Fi 6E, 2,4 Gbps e conectividade avançada para sistemas embarcados Linux</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">A Espressif tornou-se amplamente conhecida entre desenvolvedores de sistemas embarcados por integrar microcontroladores, Wi-Fi e Bluetooth em dispositivos acessíveis e relativamente simples de programar. Com o ESP32-E22, entretanto, a empresa avança para uma categoria diferente de produto.</p>



<p class="wp-block-paragraph">Em vez de ser apresentado principalmente como um microcontrolador responsável por executar toda a aplicação, o ESP32-E22 foi desenvolvido como um <strong>coprocessador de conectividade</strong>. Sua função é trabalhar ao lado de um processador principal, oferecendo comunicação Wi-Fi 6E e Bluetooth para equipamentos que necessitam de maior velocidade, menor latência e integração com sistemas operacionais como Linux.</p>



<p class="wp-block-paragraph">A novidade mais recente é que o componente recebeu a certificação Wi-Fi 6E da Wi-Fi Alliance e ganhou um driver Linux de código aberto. Mas o que isso representa na prática? É o que veremos ao longo deste artigo.</p>



<h2 class="wp-block-heading">O que é o ESP32-E22?</h2>



<p class="wp-block-paragraph">O ESP32-E22 é o primeiro coprocessador de conectividade tri-band da Espressif com suporte ao <strong>Wi-Fi 6E</strong>.</p>



<p class="wp-block-paragraph">O termo <em>tri-band</em> indica que o dispositivo pode operar em três faixas de frequência:</p>



<ul class="wp-block-list">
<li>2,4 GHz;</li>



<li>5 GHz;</li>



<li>6 GHz.</li>
</ul>



<p class="wp-block-paragraph">As duas primeiras faixas já são conhecidas em redes Wi-Fi convencionais. A principal novidade está na utilização da banda de 6 GHz, adicionada ao ecossistema Wi-Fi por meio do Wi-Fi 6E.</p>



<p class="wp-block-paragraph">Internamente, o ESP32-E22 utiliza uma arquitetura RISC-V de dois núcleos desenvolvida pela própria Espressif. Esses núcleos não foram colocados ali para executar diretamente a aplicação final do usuário. Eles são dedicados ao processamento dos protocolos de comunicação, ao controle do rádio e à coordenação entre Wi-Fi e Bluetooth.</p>



<p class="wp-block-paragraph">Assim, o ESP32-E22 pode ser conectado a outro processador, como:</p>



<ul class="wp-block-list">
<li>um SoC da própria Espressif;</li>



<li>um processador ARM;</li>



<li>um computador de placa única;</li>



<li>um processador de aplicação executando Linux;</li>



<li>uma plataforma industrial de terceiros.</li>
</ul>



<p class="wp-block-paragraph">Essa separação permite que o processador principal cuide da interface, dos algoritmos, da inteligência artificial ou da lógica da aplicação, enquanto o E22 concentra-se na conectividade sem fio.</p>



<h2 class="wp-block-heading">Por que o ESP32-E22 é chamado de coprocessador?</h2>



<p class="wp-block-paragraph">Em muitos dispositivos ESP32 tradicionais, o mesmo chip executa o firmware da aplicação e controla o Wi-Fi e o Bluetooth. No ESP32-E22, a proposta é diferente.</p>



<p class="wp-block-paragraph">Ele utiliza uma arquitetura conhecida como <strong>Radio Co-Processor</strong>, ou RCP.</p>



<p class="wp-block-paragraph">Podemos representar essa organização de forma simplificada:</p>



<p class="wp-block-paragraph">O E22 assume atividades que normalmente consumiriam processamento, memória e tempo do processador principal.</p>



<p class="wp-block-paragraph">Entre as tarefas transferidas para o coprocessador estão:</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img fetchpriority="high" decoding="async" width="800" height="1000" src="https://mcu.tec.br/wp-content/uploads/2026/06/e22-blocos.png" alt="" class="wp-image-1478" srcset="https://mcu.tec.br/wp-content/uploads/2026/06/e22-blocos.png 800w, https://mcu.tec.br/wp-content/uploads/2026/06/e22-blocos-240x300.png 240w, https://mcu.tec.br/wp-content/uploads/2026/06/e22-blocos-768x960.png 768w" sizes="(max-width: 800px) 100vw, 800px" /></figure>
</div>


<ul class="wp-block-list">
<li>autenticação nas redes;</li>



<li>gerenciamento da segurança;</li>



<li>busca por pontos de acesso;</li>



<li>associação e reassociação;</li>



<li>roaming entre redes;</li>



<li>controle da camada de enlace;</li>



<li>processamento das pilhas Wi-Fi e Bluetooth;</li>



<li>coordenação entre os diferentes rádios.</li>
</ul>



<p class="wp-block-paragraph">Esse modelo é especialmente útil em sistemas Linux, nos quais o processador principal pode tratar o dispositivo como uma interface de comunicação, de maneira semelhante a um adaptador Wi-Fi dedicado.</p>



<h2 class="wp-block-heading">O que muda com o Wi-Fi 6E?</h2>



<p class="wp-block-paragraph">Uma dúvida comum é pensar que Wi-Fi 6 e Wi-Fi 6E são tecnologias completamente diferentes. Na realidade, o Wi-Fi 6E estende os recursos do Wi-Fi 6 para a faixa de 6 GHz.</p>



<p class="wp-block-paragraph">A letra <strong>E</strong> significa <em>Extended</em>, ou estendido.</p>



<p class="wp-block-paragraph">Portanto:</p>



<pre class="wp-block-code"><code>Wi-Fi 6  → operação tradicional em 2,4 GHz e 5 GHz
Wi-Fi 6E → recursos do Wi-Fi 6 estendidos à banda de 6 GHz
</code></pre>



<p class="wp-block-paragraph">A faixa de 6 GHz oferece um espaço adicional para a criação de canais de comunicação. Como tende a ter menos equipamentos antigos e menos interferência acumulada, ela pode proporcionar conexões mais previsíveis em ambientes congestionados.</p>



<p class="wp-block-paragraph">Isso não significa que a frequência de 6 GHz seja sempre melhor.</p>



<p class="wp-block-paragraph">Frequências mais elevadas geralmente apresentam maior atenuação ao atravessar paredes e obstáculos. Portanto, a banda de 6 GHz tende a ser especialmente interessante em ambientes nos quais:</p>



<ul class="wp-block-list">
<li>o dispositivo está relativamente próximo do ponto de acesso;</li>



<li>existe visibilidade direta ou poucos obstáculos;</li>



<li>a rede necessita de canais largos;</li>



<li>a prioridade é velocidade e baixa latência;</li>



<li>há grande congestionamento nas bandas de 2,4 e 5 GHz.</li>
</ul>



<p class="wp-block-paragraph">A vantagem do ESP32-E22 é justamente poder escolher entre as três bandas conforme as condições da aplicação.</p>



<h2 class="wp-block-heading">Canais de até 160 MHz</h2>



<p class="wp-block-paragraph">Um dos recursos mais importantes do ESP32-E22 é o suporte a canais com largura de até <strong>160 MHz</strong>.</p>



<p class="wp-block-paragraph">A largura do canal pode ser comparada à largura de uma estrada. Um canal mais largo permite transportar mais dados simultaneamente, desde que exista espectro disponível e que os demais equipamentos da rede também sejam compatíveis.</p>



<p class="wp-block-paragraph">Em uma comparação simplificada:</p>



<pre class="wp-block-code"><code>Canal de 20 MHz  → menor capacidade, menor ocupação espectral
Canal de 40 MHz  → capacidade intermediária
Canal de 80 MHz  → alta capacidade
Canal de 160 MHz → capacidade ainda maior
</code></pre>



<p class="wp-block-paragraph">Na prática, a velocidade final não depende apenas da largura do canal. Também entram na equação:</p>



<ul class="wp-block-list">
<li>qualidade do sinal;</li>



<li>distância;</li>



<li>interferências;</li>



<li>número de antenas;</li>



<li>modulação utilizada;</li>



<li>capacidade do ponto de acesso;</li>



<li>eficiência dos drivers;</li>



<li>desempenho do processador principal;</li>



<li>velocidade da interface entre o host e o E22.</li>
</ul>



<p class="wp-block-paragraph">Portanto, os 160 MHz devem ser entendidos como uma das condições que ajudam o sistema a alcançar taxas elevadas, e não como garantia isolada de desempenho.</p>



<h2 class="wp-block-heading">2×2 MU-MIMO</h2>



<p class="wp-block-paragraph">O ESP32-E22 também suporta <strong>2×2 MU-MIMO</strong>.</p>



<p class="wp-block-paragraph">MIMO significa <em>Multiple Input, Multiple Output</em>. A tecnologia utiliza múltiplos caminhos de transmissão e recepção para aumentar a capacidade do enlace.</p>



<p class="wp-block-paragraph">No termo 2×2, temos, de forma simplificada:</p>



<ul class="wp-block-list">
<li>duas cadeias de transmissão;</li>



<li>duas cadeias de recepção;</li>



<li>até dois fluxos espaciais.</li>
</ul>



<p class="wp-block-paragraph">Já o prefixo MU significa <em>Multi-User</em>. Ele indica que o sistema pode participar de operações nas quais o ponto de acesso distribui recursos entre diferentes dispositivos de maneira mais eficiente.</p>



<p class="wp-block-paragraph">É importante não interpretar o MIMO apenas como “duas antenas que duplicam automaticamente a velocidade”. O ganho real depende do ambiente de propagação, da posição das antenas, da qualidade do projeto de RF e da compatibilidade entre os equipamentos.</p>



<p class="wp-block-paragraph">Para aproveitar corretamente o recurso, o projeto de hardware deverá considerar:</p>



<ul class="wp-block-list">
<li>posicionamento das antenas;</li>



<li>isolamento entre os elementos radiantes;</li>



<li>casamento de impedância;</li>



<li>plano de terra;</li>



<li>conectores e trilhas de RF;</li>



<li>certificações regulatórias;</li>



<li>características mecânicas do produto.</li>
</ul>



<p class="wp-block-paragraph">Assim, o avanço do chip também exige maior atenção ao projeto da placa de circuito impresso.</p>



<h2 class="wp-block-heading">Beamforming</h2>



<p class="wp-block-paragraph">Outro recurso disponível é o <strong>beamforming</strong>, ou formação de feixe.</p>



<p class="wp-block-paragraph">Em vez de irradiar energia de maneira completamente uniforme em todas as direções, o sistema utiliza as diferenças de fase e amplitude entre as antenas para favorecer determinados caminhos de propagação.</p>



<p class="wp-block-paragraph">Não se trata de criar um feixe perfeitamente estreito como um raio. Em sistemas Wi-Fi, o objetivo é melhorar a qualidade do sinal no caminho até o dispositivo receptor.</p>



<p class="wp-block-paragraph">Entre os possíveis benefícios estão:</p>



<ul class="wp-block-list">
<li>aumento da relação sinal-ruído;</li>



<li>maior estabilidade do enlace;</li>



<li>melhor aproveitamento da modulação;</li>



<li>redução de retransmissões;</li>



<li>melhor desempenho em ambientes com múltiplos caminhos.</li>
</ul>



<p class="wp-block-paragraph">O beamforming trabalha em conjunto com o MIMO e com as informações obtidas durante a comunicação entre o dispositivo e o ponto de acesso.</p>



<h2 class="wp-block-heading">Modulação 1024-QAM</h2>



<p class="wp-block-paragraph">O E22 suporta modulação <strong>1024-QAM</strong>, recurso associado ao Wi-Fi 6.</p>



<p class="wp-block-paragraph">QAM significa <em>Quadrature Amplitude Modulation</em>. Essa técnica combina variações de amplitude e fase para representar diferentes símbolos.</p>



<p class="wp-block-paragraph">No 1024-QAM, cada símbolo pode representar até 1.024 combinações distintas. Como:</p>



<pre class="wp-block-code"><code>2¹⁰ = 1.024
</code></pre>



<p class="wp-block-paragraph">cada símbolo pode transportar até dez bits em condições adequadas.</p>



<p class="wp-block-paragraph">Entretanto, quanto maior o número de estados da modulação, menor a distância entre eles no diagrama de constelação. Isso significa que o receptor precisa distinguir variações mais sutis no sinal.</p>



<p class="wp-block-paragraph">Consequentemente, o 1024-QAM exige:</p>



<ul class="wp-block-list">
<li>boa relação sinal-ruído;</li>



<li>baixa interferência;</li>



<li>sincronismo adequado;</li>



<li>circuitos de RF bem projetados;</li>



<li>proximidade razoável do ponto de acesso.</li>
</ul>



<p class="wp-block-paragraph">Quando o enlace piora, o sistema reduz automaticamente o esquema de modulação para manter a comunicação. Portanto, 1024-QAM representa a capacidade máxima em condições favoráveis, e não o modo utilizado permanentemente.</p>



<h2 class="wp-block-heading">Taxas de dados de até 2,4 Gbps</h2>



<p class="wp-block-paragraph">A Espressif informa que o ESP32-E22 pode atingir taxas de dados de até <strong>2,4 Gbps</strong>.</p>



<p class="wp-block-paragraph">Essa velocidade é obtida pela combinação de vários recursos:</p>



<ul class="wp-block-list">
<li>canais de 160 MHz;</li>



<li>dois fluxos espaciais;</li>



<li>modulação 1024-QAM;</li>



<li>Wi-Fi 6E;</li>



<li>agendamento avançado da camada de enlace;</li>



<li>processamento dedicado de conectividade.</li>
</ul>



<p class="wp-block-paragraph">Porém, é necessário distinguir três conceitos:</p>



<ol class="wp-block-list">
<li><strong>Taxa física do enlace</strong>É a velocidade nominal negociada na camada de rádio.</li>



<li><strong>Throughput efetivo</strong>É a quantidade de dados úteis realmente transportada pela rede.</li>



<li><strong>Desempenho da aplicação</strong>É a velocidade percebida pelo software após passar por protocolos, buffers, sistema operacional e armazenamento.</li>
</ol>



<p class="wp-block-paragraph">O throughput real será inferior à taxa física devido a cabeçalhos, confirmações, intervalos de transmissão, correções, retransmissões e outros mecanismos do protocolo.</p>



<p class="wp-block-paragraph">Ainda assim, a taxa nominal de 2,4 Gbps posiciona o E22 em uma categoria muito superior à dos microcontroladores Wi-Fi tradicionalmente usados em pequenos sensores IoT.</p>



<h2 class="wp-block-heading">Bluetooth Classic e Bluetooth Low Energy 5.4</h2>



<p class="wp-block-paragraph">Além do Wi-Fi 6E, o ESP32-E22 oferece:</p>



<ul class="wp-block-list">
<li>Bluetooth Classic, também chamado BR/EDR;</li>



<li>Bluetooth Low Energy 5.4.</li>
</ul>



<p class="wp-block-paragraph">A presença do Bluetooth Classic é relevante para aplicações que necessitam de compatibilidade com dispositivos e perfis tradicionais.</p>



<p class="wp-block-paragraph">Já o Bluetooth Low Energy 5.4 atende equipamentos que priorizam:</p>



<ul class="wp-block-list">
<li>menor consumo energético;</li>



<li>comunicação com sensores;</li>



<li>configuração inicial do produto;</li>



<li>dispositivos de entrada;</li>



<li>acessórios;</li>



<li>telemetria de baixa taxa;</li>



<li>descoberta e provisionamento.</li>
</ul>



<p class="wp-block-paragraph">O chip foi projetado para controlar as pilhas de Bluetooth internamente, incluindo funcionalidades normalmente executadas no host.</p>



<p class="wp-block-paragraph">A Espressif também destaca mecanismos de coexistência entre Wi-Fi e Bluetooth. Essa coexistência é necessária porque determinados modos de Bluetooth e Wi-Fi utilizam espectros próximos ou compartilhados, especialmente na faixa de 2,4 GHz.</p>



<p class="wp-block-paragraph">O sistema precisa coordenar os rádios para evitar que uma transmissão interfira excessivamente na outra.</p>



<h2 class="wp-block-heading">Interfaces com o processador principal</h2>



<p class="wp-block-paragraph">Para comunicar-se com o host, o ESP32-E22 oferece interfaces de alta velocidade, incluindo:</p>



<ul class="wp-block-list">
<li>PCI Express 2.1;</li>



<li>SDIO 3.0.</li>
</ul>



<p class="wp-block-paragraph">Essas interfaces são fundamentais porque um enlace Wi-Fi capaz de trabalhar em gigabits por segundo não pode depender de um canal lento entre o coprocessador e o processador principal.</p>



<h3 class="wp-block-heading">PCI Express 2.1</h3>



<p class="wp-block-paragraph">O PCIe é adequado para plataformas de maior desempenho, como:</p>



<ul class="wp-block-list">
<li>computadores industriais;</li>



<li>gateways;</li>



<li>placas Linux;</li>



<li>sistemas multimídia;</li>



<li>equipamentos de borda;</li>



<li>tablets e notebooks;</li>



<li>processadores de aplicação.</li>
</ul>



<p class="wp-block-paragraph">Ele oferece alta largura de banda, baixa latência e integração semelhante à de adaptadores de rede convencionais.</p>



<h3 class="wp-block-heading">SDIO 3.0</h3>



<p class="wp-block-paragraph">O SDIO é comum em módulos de conectividade utilizados com processadores embarcados. Ele pode apresentar menor complexidade de integração em determinadas plataformas e é amplamente usado por dispositivos Wi-Fi.</p>



<p class="wp-block-paragraph">Entretanto, é importante separar a capacidade elétrica do chip do suporte atualmente disponibilizado pelo software. Embora o hardware ofereça SDIO 3.0, a versão inicial do driver Linux ainda não habilita todas as combinações de interfaces e modos de operação.</p>



<h2 class="wp-block-heading">Certificação Wi-Fi 6E: por que ela importa?</h2>



<p class="wp-block-paragraph">A certificação concedida pela Wi-Fi Alliance não serve apenas como elemento de marketing.</p>



<p class="wp-block-paragraph">Ela verifica a conformidade com requisitos definidos pelo ecossistema Wi-Fi e aumenta a confiança na interoperabilidade com outros equipamentos certificados.</p>



<p class="wp-block-paragraph">Para um fabricante, isso pode reduzir riscos como:</p>



<ul class="wp-block-list">
<li>incompatibilidade com determinados roteadores;</li>



<li>comportamento inconsistente entre redes;</li>



<li>falhas em mecanismos de segurança;</li>



<li>problemas durante associação e autenticação;</li>



<li>dificuldades de implantação em diferentes mercados.</li>
</ul>



<p class="wp-block-paragraph">Entretanto, a certificação do componente não substitui todas as certificações necessárias para o produto final.</p>



<p class="wp-block-paragraph">Um equipamento comercial ainda poderá precisar de:</p>



<ul class="wp-block-list">
<li>certificação regulatória de radiofrequência;</li>



<li>avaliação de compatibilidade eletromagnética;</li>



<li>homologação nos países de comercialização;</li>



<li>testes da placa e das antenas;</li>



<li>certificações específicas da aplicação.</li>
</ul>



<p class="wp-block-paragraph">No Brasil, por exemplo, produtos que utilizam radiofrequência precisam observar os requisitos aplicáveis da Anatel. Portanto, usar um componente certificado ajuda o desenvolvimento, mas não elimina automaticamente as obrigações do produto completo.</p>



<h2 class="wp-block-heading">Driver Linux de código aberto</h2>



<p class="wp-block-paragraph">Junto da certificação, a Espressif publicou o projeto do driver Linux para o ESP32-E22.</p>



<p class="wp-block-paragraph">Esse é um ponto importante porque o E22 foi concebido para operar com um processador hospedeiro. Sem um driver adequado, o sistema operacional não conseguiria controlar o dispositivo de maneira integrada.</p>



<p class="wp-block-paragraph">O repositório disponibilizado pela empresa reúne:</p>



<ul class="wp-block-list">
<li>driver Wi-Fi;</li>



<li>driver Bluetooth;</li>



<li>firmware pré-compilado;</li>



<li>documentação de arquitetura;</li>



<li>políticas de compatibilidade entre firmware e driver;</li>



<li>instruções de integração.</li>
</ul>



<p class="wp-block-paragraph">O suporte oficial foi anunciado para kernels Linux 5.4 ou superiores.</p>



<p class="wp-block-paragraph">Com o código-fonte disponível, fabricantes e integradores podem:</p>



<ul class="wp-block-list">
<li>estudar o funcionamento do dispositivo;</li>



<li>adaptar o driver à própria plataforma;</li>



<li>integrar correções;</li>



<li>realizar depuração;</li>



<li>automatizar a compilação;</li>



<li>acompanhar a evolução do projeto;</li>



<li>manter versões específicas para seus produtos.</li>
</ul>



<p class="wp-block-paragraph">Isso reduz a dependência de um pacote binário completamente fechado e facilita a manutenção de equipamentos com ciclos de vida mais longos.</p>



<h2 class="wp-block-heading">Atenção ao estado atual do driver</h2>



<p class="wp-block-paragraph">Embora o anúncio destaque a disponibilidade do driver Linux, o próprio repositório mostra que o software ainda está em evolução.</p>



<p class="wp-block-paragraph">Na versão 0.6 documentada no repositório, o suporte informado inclui:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Recurso</th><th>Interface</th><th>Estado</th></tr></thead><tbody><tr><td>Wi-Fi em modo estação</td><td>PCIe</td><td>Suportado</td></tr><tr><td>Wi-Fi em modo estação</td><td>SDIO</td><td>Ainda não suportado</td></tr><tr><td>Wi-Fi em modo ponto de acesso</td><td>PCIe</td><td>Ainda não suportado</td></tr><tr><td>Wi-Fi em modo ponto de acesso</td><td>SDIO</td><td>Ainda não suportado</td></tr><tr><td>Bluetooth Classic</td><td>USB</td><td>Suportado</td></tr><tr><td>Bluetooth Low Energy</td><td>USB</td><td>Suportado</td></tr><tr><td>Bluetooth por UART</td><td>—</td><td>Ainda não suportado</td></tr><tr><td>Download de firmware</td><td>PCIe</td><td>Suportado</td></tr><tr><td>Download de firmware</td><td>USB</td><td>Suportado</td></tr><tr><td>Download seguro</td><td>—</td><td>Ainda não suportado</td></tr><tr><td>Coexistência Wi-Fi/Bluetooth</td><td>—</td><td>Ainda não suportada no driver</td></tr><tr><td>Suspensão e retomada</td><td>—</td><td>Ainda não suportadas</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Isso mostra que existe uma diferença entre três níveis de suporte:</p>



<pre class="wp-block-code"><code>Capacidade do hardware
        ↓
Capacidade implementada no firmware
        ↓
Capacidade exposta pelo driver atual
</code></pre>



<p class="wp-block-paragraph">Um recurso presente no silício não está necessariamente pronto para uso imediato em todas as plataformas.</p>



<p class="wp-block-paragraph">Portanto, antes de escolher o E22 para um produto, o desenvolvedor deverá conferir:</p>



<ul class="wp-block-list">
<li>versão atual do repositório;</li>



<li>interfaces já implementadas;</li>



<li>modo Wi-Fi necessário;</li>



<li>suporte ao gerenciamento de energia;</li>



<li>coexistência entre os rádios;</li>



<li>compatibilidade com o kernel;</li>



<li>contrato de versões entre driver e firmware.</li>
</ul>



<h2 class="wp-block-heading">O significado de operar como estação ou ponto de acesso</h2>



<p class="wp-block-paragraph">O suporte inicial do driver concentra-se no modo estação por PCIe.</p>



<p class="wp-block-paragraph">Em modo estação, o dispositivo conecta-se a uma rede existente:</p>



<pre class="wp-block-code"><code>ESP32-E22 → roteador ou ponto de acesso → rede
</code></pre>



<p class="wp-block-paragraph">Esse modo é adequado para:</p>



<ul class="wp-block-list">
<li>gateways conectados a uma infraestrutura Wi-Fi;</li>



<li>computadores de borda;</li>



<li>terminais industriais;</li>



<li>dispositivos multimídia;</li>



<li>clientes de redes corporativas.</li>
</ul>



<p class="wp-block-paragraph">No modo ponto de acesso, o próprio equipamento cria uma rede Wi-Fi:</p>



<pre class="wp-block-code"><code>Celular ou sensor → ESP32-E22 funcionando como AP
</code></pre>



<p class="wp-block-paragraph">Esse modo pode ser necessário em:</p>



<ul class="wp-block-list">
<li>hubs;</li>



<li>gateways locais;</li>



<li>configuração de equipamentos;</li>



<li>pontes de comunicação;</li>



<li>redes provisórias;</li>



<li>dispositivos que recebem conexões diretamente.</li>
</ul>



<p class="wp-block-paragraph">Como o modo AP ainda aparece como não suportado na versão inicial do driver, projetos que dependam dessa função devem acompanhar a evolução oficial antes de assumir sua disponibilidade.</p>



<h2 class="wp-block-heading">Aplicações indicadas pela Espressif</h2>



<p class="wp-block-paragraph">A empresa posiciona o ESP32-E22 para aplicações de maior desempenho que o IoT convencional.</p>



<h3 class="wp-block-heading">Vídeo sem fio</h3>



<p class="wp-block-paragraph">A combinação de canais largos, MIMO e alta taxa de dados favorece:</p>



<ul class="wp-block-list">
<li>transmissão de câmeras;</li>



<li>vídeo entre equipamentos;</li>



<li>monitoramento remoto;</li>



<li>interfaces multimídia;</li>



<li>enlaces locais de baixa latência.</li>
</ul>



<p class="wp-block-paragraph">O Wi-Fi 6E pode ser útil principalmente quando a banda de 5 GHz está congestionada.</p>



<h3 class="wp-block-heading">Hubs de casa inteligente</h3>



<p class="wp-block-paragraph">Um hub pode precisar comunicar-se simultaneamente com a nuvem, dispositivos locais, smartphones e acessórios Bluetooth.</p>



<p class="wp-block-paragraph">Nesse cenário, o E22 pode atuar como subsistema dedicado de conectividade, deixando o processador principal responsável pela automação, interface e regras locais.</p>



<h3 class="wp-block-heading">Equipamentos industriais</h3>



<p class="wp-block-paragraph">Em aplicações industriais, o dispositivo pode integrar:</p>



<ul class="wp-block-list">
<li>gateways de chão de fábrica;</li>



<li>sistemas de supervisão;</li>



<li>equipamentos de inspeção;</li>



<li>computadores de borda;</li>



<li>pontes entre redes;</li>



<li>interfaces sem fio para máquinas.</li>
</ul>



<p class="wp-block-paragraph">A baixa latência e a maior disponibilidade espectral podem ajudar determinadas aplicações, mas o Wi-Fi não deve ser tratado automaticamente como uma rede determinística de tempo real.</p>



<p class="wp-block-paragraph">O projeto ainda precisa avaliar:</p>



<ul class="wp-block-list">
<li>latência máxima;</li>



<li>jitter;</li>



<li>interferência;</li>



<li>disponibilidade;</li>



<li>redundância;</li>



<li>segurança;</li>



<li>comportamento em falhas.</li>
</ul>



<h3 class="wp-block-heading">Realidade aumentada e realidade virtual</h3>



<p class="wp-block-paragraph">Acessórios de realidade aumentada e virtual podem gerar fluxos elevados de dados e exigir respostas rápidas.</p>



<p class="wp-block-paragraph">Nessas aplicações, atrasos perceptíveis podem comprometer a experiência. Por isso, canais de 160 MHz e redes menos congestionadas tornam-se recursos interessantes.</p>



<h3 class="wp-block-heading">Sensoriamento avançado</h3>



<p class="wp-block-paragraph">O E22 também pode ser empregado em equipamentos de sensoriamento que geram volumes consideráveis de dados, como:</p>



<ul class="wp-block-list">
<li>sistemas de visão computacional;</li>



<li>matrizes de sensores;</li>



<li>aquisição de sinais;</li>



<li>inspeção industrial;</li>



<li>sensores inteligentes de alta taxa.</li>
</ul>



<p class="wp-block-paragraph">Nesse caso, o dispositivo deixa de ser apenas um “Wi-Fi para sensores” e passa a integrar plataformas de processamento mais complexas.</p>



<h2 class="wp-block-heading">O ESP32-E22 substitui os ESP32 tradicionais?</h2>



<p class="wp-block-paragraph">Não necessariamente.</p>



<p class="wp-block-paragraph">Um ESP32 convencional continua sendo uma escolha apropriada para muitas aplicações:</p>



<ul class="wp-block-list">
<li>sensores simples;</li>



<li>automação residencial;</li>



<li>pequenos controladores;</li>



<li>telemetria;</li>



<li>atuadores;</li>



<li>dispositivos alimentados por bateria;</li>



<li>produtos de baixo custo;</li>



<li>aplicações que executam diretamente no ESP-IDF.</li>
</ul>



<p class="wp-block-paragraph">O ESP32-E22 atende outro perfil de sistema.</p>



<p class="wp-block-paragraph">Ele é particularmente interessante quando já existe um processador principal e a aplicação precisa de conectividade avançada.</p>



<p class="wp-block-paragraph">Podemos resumir assim:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>ESP32 convencional</th><th>ESP32-E22</th></tr></thead><tbody><tr><td>Executa diretamente a aplicação</td><td>Atua principalmente como coprocessador</td></tr><tr><td>Voltado a firmware embarcado</td><td>Voltado à integração com um host</td></tr><tr><td>Menor complexidade de hardware</td><td>Arquitetura de maior desempenho</td></tr><tr><td>Taxas menores de comunicação</td><td>Até 2,4 Gbps anunciados</td></tr><tr><td>Wi-Fi integrado ao MCU</td><td>Subsistema dedicado de conectividade</td></tr><tr><td>Adequado a IoT tradicional</td><td>Adequado a Linux, vídeo, edge e gateways</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">Portanto, a pergunta correta não é “qual deles é melhor?”, mas “qual arquitetura atende melhor à aplicação?”.</p>



<h2 class="wp-block-heading">Cuidados de projeto</h2>



<p class="wp-block-paragraph">O ESP32-E22 não deve ser tratado como um módulo Wi-Fi simples que pode ser adicionado ao final do desenvolvimento.</p>



<p class="wp-block-paragraph">Um projeto baseado no componente deverá considerar antecipadamente:</p>



<h3 class="wp-block-heading">Projeto de RF</h3>



<p class="wp-block-paragraph">O suporte a 2×2 MIMO e três bandas aumenta a complexidade das antenas, filtros, trilhas e elementos de RF.</p>



<h3 class="wp-block-heading">Integridade de sinal</h3>



<p class="wp-block-paragraph">Interfaces como PCIe exigem atenção a:</p>



<ul class="wp-block-list">
<li>impedância controlada;</li>



<li>pares diferenciais;</li>



<li>comprimento das trilhas;</li>



<li>vias;</li>



<li>conectores;</li>



<li>retorno de corrente;</li>



<li>ruído da alimentação.</li>
</ul>



<h3 class="wp-block-heading">Alimentação</h3>



<p class="wp-block-paragraph">Transmissões de alta velocidade podem produzir variações rápidas de corrente. A fonte deve possuir capacidade adequada, baixa impedância e desacoplamento corretamente distribuído.</p>



<h3 class="wp-block-heading">Gerenciamento térmico</h3>



<p class="wp-block-paragraph">O consumo e a dissipação dependerão do tráfego, das bandas utilizadas e do modo de operação. O projeto mecânico e térmico precisa considerar os cenários de maior carga.</p>



<h3 class="wp-block-heading">Compatibilidade entre firmware e driver</h3>



<p class="wp-block-paragraph">O repositório menciona contratos de versão entre firmware e driver. Atualizar um componente sem validar o outro pode produzir incompatibilidades.</p>



<h3 class="wp-block-heading">Evolução do software</h3>



<p class="wp-block-paragraph">Como alguns recursos ainda estão planejados, a arquitetura do produto deve evitar depender de funções não implementadas na versão escolhida.</p>



<h2 class="wp-block-heading">Uma mudança de posicionamento da Espressif</h2>



<p class="wp-block-paragraph">O ESP32-E22 mostra uma ampliação importante no portfólio da Espressif.</p>



<p class="wp-block-paragraph">A empresa não está oferecendo apenas microcontroladores com conectividade integrada. Ela passa a disputar também o espaço de subsistemas de comunicação para plataformas Linux e processadores de aplicação.</p>



<p class="wp-block-paragraph">Essa estratégia aproxima a família ESP32 de produtos como:</p>



<ul class="wp-block-list">
<li>computadores embarcados;</li>



<li>dispositivos multimídia;</li>



<li>plataformas industriais;</li>



<li>gateways de alto desempenho;</li>



<li>equipamentos de borda;</li>



<li>acessórios de realidade estendida.</li>
</ul>



<p class="wp-block-paragraph">A abertura do driver Linux reforça esse posicionamento, pois permite que integradores trabalhem mais diretamente com o software responsável pela comunicação entre o host e o coprocessador.</p>



<h2 class="wp-block-heading">Conclusão</h2>



<p class="wp-block-paragraph">O ESP32-E22 representa uma evolução significativa para o ecossistema da Espressif.</p>



<p class="wp-block-paragraph">Seus principais diferenciais incluem Wi-Fi 6E tri-band, canais de 160 MHz, 2×2 MU-MIMO, beamforming, modulação 1024-QAM, taxas anunciadas de até 2,4 Gbps, Bluetooth Classic, Bluetooth Low Energy 5.4 e integração com processadores externos por interfaces de alta velocidade.</p>



<p class="wp-block-paragraph">A certificação Wi-Fi 6E aumenta a confiança na interoperabilidade, enquanto o driver Linux de código aberto oferece aos fabricantes maior visibilidade e capacidade de adaptação.</p>



<p class="wp-block-paragraph">Entretanto, o desenvolvedor precisa observar que o driver ainda está em evolução. Nem todas as combinações de interface, modo Wi-Fi, coexistência e gerenciamento de energia aparecem como disponíveis na versão inicial.</p>



<p class="wp-block-paragraph">Assim, o E22 não deve ser visto simplesmente como “mais um ESP32”. Ele inaugura uma proposta diferente: transformar a tecnologia da Espressif em um subsistema dedicado de conectividade para plataformas embarcadas mais poderosas.</p>



<p class="wp-block-paragraph">Para aplicações Linux, gateways industriais, transmissão de vídeo, dispositivos de borda e acessórios de baixa latência, essa nova arquitetura abre possibilidades que antes estavam fora do perfil mais tradicional da família ESP32.</p>



<h2 class="wp-block-heading">Referências</h2>



<ul class="wp-block-list">
<li>Espressif Systems. <em>ESP32-E22 Is Now Wi-Fi 6E Certified, with an Open-Source Linux Driver</em>. Publicado em 12 de junho de 2026.</li>



<li>Espressif Systems. <em>ESP32-E22 — Tri-Band Wi-Fi 6E + Dual-Mode Bluetooth Connectivity Co-Processor</em>.</li>



<li>Espressif Systems. <em>esp32e22-linux-driver — Collection of Linux drivers for ESP32-E22</em>.</li>



<li>Wi-Fi Alliance. Programa de certificação Wi-Fi CERTIFIED 6E.</li>
</ul><p>The post <a href="https://mcu.tec.br/geral/esp32-e22-wi-fi-6e-24-gbps-e-conectividade-avancada-para-sistemas-embarcados-linux/">ESP32-E22: Wi-Fi 6E, 2,4 Gbps e conectividade avançada para sistemas embarcados Linux</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://mcu.tec.br/geral/esp32-e22-wi-fi-6e-24-gbps-e-conectividade-avancada-para-sistemas-embarcados-linux/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1476</post-id>	</item>
		<item>
		<title>Os 5 níveis de maturidade do Gêmeo Digital</title>
		<link>https://mcu.tec.br/geral/os-5-niveis-de-maturidade-do-gemeo-digital/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=os-5-niveis-de-maturidade-do-gemeo-digital</link>
		
		<dc:creator><![CDATA[Carlos Delfino]]></dc:creator>
		<pubDate>Thu, 11 Jun 2026 18:48:50 +0000</pubDate>
				<category><![CDATA[geral]]></category>
		<guid isPermaLink="false">https://mcu.tec.br/?p=1473</guid>

					<description><![CDATA[<p>Entenda os 5 níveis de maturidade do Gêmeo Digital: status, informativo, preditivo, otimização e autônomo, com exemplos práticos e aplicação na Indústria 4.0.</p>
<p>The post <a href="https://mcu.tec.br/geral/os-5-niveis-de-maturidade-do-gemeo-digital/">Os 5 níveis de maturidade do Gêmeo Digital</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">O conceito de <strong>Gêmeo Digital</strong> ganhou força com a Indústria 4.0, IoT, simulação computacional, inteligência artificial e integração entre sistemas físicos e digitais. Em termos simples, um gêmeo digital é uma representação virtual de um ativo, processo, sistema ou fenômeno físico, conectada a dados reais, capaz de apoiar monitoramento, análise, simulação, tomada de decisão e, em níveis mais avançados, ações automatizadas.</p>



<p class="wp-block-paragraph">No entanto, nem todo modelo digital pode ser chamado de gêmeo digital maduro. Um desenho 3D de uma máquina, uma tela supervisória ou um dashboard de sensores pode fazer parte da jornada, mas ainda não representa necessariamente um gêmeo digital completo. Por isso, surgem os <strong>modelos de maturidade</strong>, que ajudam a classificar o quanto um gêmeo digital é capaz de observar, interpretar, prever, recomendar ou agir sobre o sistema físico.</p>



<p class="wp-block-paragraph">É importante destacar que <strong>não existe um único modelo universal de maturidade</strong>. Diferentes autores e organizações propõem classificações distintas. O Digital Twin Consortium, por exemplo, propõe um modelo de maturidade de negócio com estágios como Passive, Starter, Progressive, Mature e Master. Já a IBM apresenta outra taxonomia, com estágios como look-alike, static, dynamic, interactive e autonomous digital twin. Neste artigo, adotaremos o modelo de cinco níveis funcionais apresentado por Metcalfe et al. (2023), por ser didático e focado nas capacidades do próprio gêmeo digital.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Antes dos níveis: o que torna um gêmeo digital mais maduro?</h2>



<p class="wp-block-paragraph">A maturidade de um gêmeo digital não depende apenas de possuir sensores ou uma interface visual bonita. Ela depende principalmente de quatro aspectos:</p>



<ol class="wp-block-list">
<li><strong>Conexão com o ativo físico</strong><br>O sistema digital precisa receber dados do mundo real, preferencialmente de forma contínua ou recorrente.</li>



<li><strong>Representação virtual útil</strong><br>O modelo digital deve representar algo relevante do ativo físico: estado, comportamento, desempenho, falhas, limites operacionais ou cenários futuros.</li>



<li><strong>Capacidade analítica</strong><br>Quanto mais maduro o gêmeo, maior sua capacidade de transformar dados em informação, conhecimento, previsão ou recomendação.</li>



<li><strong>Grau de autonomia</strong><br>Nos níveis iniciais, o ser humano interpreta e decide. Nos níveis avançados, o gêmeo digital passa a recomendar, otimizar ou até executar ações de controle.</li>
</ol>



<p class="wp-block-paragraph">Com isso em mente, podemos entender os cinco níveis de maturidade como uma evolução: do simples acompanhamento do estado atual até a capacidade de operar de forma autônoma.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Nível 1 — Gêmeo Digital de Status</h1>



<p class="wp-block-paragraph">O primeiro nível de maturidade é o <strong>Gêmeo Digital de Status</strong>.</p>



<p class="wp-block-paragraph">Nesse estágio, o sistema tem como principal função <strong>capturar, coletar e visualizar dados em tempo real</strong> ou quase real. Ele mostra o que está acontecendo no ativo físico naquele momento.</p>



<p class="wp-block-paragraph">Um exemplo simples seria uma máquina industrial conectada a sensores de temperatura, vibração, corrente elétrica e velocidade. O gêmeo digital de status exibe esses dados em uma interface gráfica, permitindo ao operador observar a condição atual da máquina.</p>



<p class="wp-block-paragraph">Esse nível responde principalmente à pergunta:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">“O que está acontecendo agora?”</p>
</blockquote>



<p class="wp-block-paragraph">Ele ainda não explica profundamente o motivo de um comportamento, não prevê falhas futuras e não recomenda decisões complexas. Sua utilidade está em tornar o ativo observável.</p>



<p class="wp-block-paragraph">Na prática, esse nível pode se parecer com sistemas supervisórios, dashboards industriais, telas SCADA ou painéis de monitoramento IoT. A diferença é que, quando bem estruturado dentro de uma arquitetura de gêmeo digital, esse monitoramento se torna a base para níveis posteriores de análise e simulação.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Nível 2 — Gêmeo Digital Informativo</h1>



<p class="wp-block-paragraph">O segundo nível é o <strong>Gêmeo Digital Informativo</strong>.</p>



<p class="wp-block-paragraph">Aqui, o gêmeo digital não apenas mostra o estado atual, mas também incorpora <strong>dados históricos, dados normativos, benchmarks ou referências operacionais</strong>. Isso permite comparar o comportamento atual com padrões anteriores ou valores esperados.</p>



<p class="wp-block-paragraph">Esse nível responde perguntas como:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">“O que está acontecendo e como isso se compara ao esperado?”</p>
</blockquote>



<p class="wp-block-paragraph">Imagine uma fonte chaveada industrial monitorada por sensores. No nível de status, o sistema mostra tensão, corrente, temperatura e ripple em tempo real. No nível informativo, ele também compara esses valores com históricos de operação, limites de segurança, curvas esperadas e registros de manutenção.</p>



<p class="wp-block-paragraph">Isso permite ao operador perceber tendências simples, desvios operacionais e condições anormais. O sistema ainda depende fortemente da interpretação humana, mas já oferece mais contexto.</p>



<p class="wp-block-paragraph">A maturidade aumenta porque o dado deixa de ser apenas uma medição isolada e passa a ser interpretado em relação a uma referência.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Nível 3 — Gêmeo Digital Preditivo</h1>



<p class="wp-block-paragraph">O terceiro nível é o <strong>Gêmeo Digital Preditivo</strong>.</p>



<p class="wp-block-paragraph">Nesse estágio, o gêmeo digital combina dados em tempo real, dados históricos e modelos matemáticos, físicos ou de aprendizado de máquina para <strong>prever comportamentos futuros</strong>.</p>



<p class="wp-block-paragraph">Esse nível responde perguntas como:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">“O que provavelmente vai acontecer?”</p>
</blockquote>



<p class="wp-block-paragraph">Um exemplo clássico é a manutenção preditiva. Em vez de apenas mostrar que a vibração de um motor está aumentando, o gêmeo digital pode estimar a probabilidade de falha em rolamentos, prever perda de eficiência ou indicar em quanto tempo o equipamento poderá atingir uma condição crítica.</p>



<p class="wp-block-paragraph">Esse nível é muito importante porque muda a lógica operacional: em vez de reagir depois da falha, a organização passa a agir antes que o problema aconteça.</p>



<p class="wp-block-paragraph">No entanto, um gêmeo digital preditivo ainda não decide sozinho a melhor ação. Ele antecipa cenários, mas a decisão normalmente continua nas mãos de operadores, engenheiros ou gestores.</p>



<p class="wp-block-paragraph">Em engenharia, esse nível pode usar técnicas como modelos físicos, séries temporais, regressão, redes neurais, filtros de Kalman, simulações térmicas, modelos de degradação, análise estatística e algoritmos de machine learning.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Nível 4 — Gêmeo Digital de Otimização</h1>



<p class="wp-block-paragraph">O quarto nível é o <strong>Gêmeo Digital de Otimização</strong>.</p>



<p class="wp-block-paragraph">Aqui, o sistema não apenas prevê o que pode acontecer, mas também permite explorar cenários do tipo <strong>“e se?”</strong>. Ele ajuda o operador a comparar alternativas e escolher a melhor estratégia.</p>



<p class="wp-block-paragraph">Esse nível responde perguntas como:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">“Qual é a melhor decisão entre várias possibilidades?”</p>
</blockquote>



<p class="wp-block-paragraph">Imagine uma planta industrial com alto consumo energético. Um gêmeo digital de otimização pode simular diferentes configurações de operação, turnos, cargas, temperaturas, velocidades de motores e estratégias de manutenção. A partir disso, pode indicar qual cenário reduz custos, aumenta eficiência ou minimiza riscos.</p>



<p class="wp-block-paragraph">A diferença em relação ao nível preditivo é importante. No nível preditivo, o sistema diz: “se continuar assim, isso pode acontecer”. No nível de otimização, ele ajuda a avaliar: “entre estas opções, esta parece ser a melhor”.</p>



<p class="wp-block-paragraph">Esse tipo de gêmeo digital exige maior integração entre modelos, dados, objetivos de negócio e restrições reais. Não basta prever; é preciso considerar limites operacionais, segurança, custo, desempenho, disponibilidade, sustentabilidade e impacto no processo.</p>



<p class="wp-block-paragraph">Na prática, esse nível é muito valioso em áreas como manufatura avançada, energia, logística, cidades inteligentes, manutenção industrial, infraestrutura crítica e gestão de ativos complexos.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h1 class="wp-block-heading">Nível 5 — Gêmeo Digital Autônomo</h1>



<p class="wp-block-paragraph">O quinto nível é o <strong>Gêmeo Digital Autônomo</strong>.</p>



<p class="wp-block-paragraph">Nesse estágio, o gêmeo digital é capaz de analisar dados, prever cenários, identificar a melhor estratégia e <strong>executar ações de controle</strong> sobre o sistema físico, com mínima ou nenhuma intervenção humana direta.</p>



<p class="wp-block-paragraph">Esse nível responde perguntas como:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">“Qual é a melhor ação e como posso executá-la automaticamente?”</p>
</blockquote>



<p class="wp-block-paragraph">Por exemplo, em um sistema de climatização predial avançado, um gêmeo digital autônomo poderia monitorar ocupação, temperatura, umidade, consumo energético e previsão climática. Com base nisso, poderia ajustar automaticamente chillers, ventilação, setpoints e zonas de operação para otimizar conforto e consumo de energia.</p>



<p class="wp-block-paragraph">Na indústria, um sistema desse tipo poderia ajustar parâmetros de processo, redistribuir cargas, corrigir desvios, acionar rotinas de manutenção automatizada ou adaptar a produção conforme disponibilidade de máquinas e demanda.</p>



<p class="wp-block-paragraph">Esse é o nível mais sofisticado, mas também o mais crítico. Quanto maior a autonomia, maior a necessidade de segurança, validação, rastreabilidade, limites operacionais, supervisão humana e governança. Um gêmeo digital autônomo não deve ser entendido como “deixar a máquina fazer qualquer coisa”, mas como um sistema capaz de agir dentro de regras, limites e objetivos claramente definidos.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Comparação didática dos cinco níveis</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Nível</th><th>Tipo de gêmeo digital</th><th>Pergunta principal</th><th>Capacidade central</th></tr></thead><tbody><tr><td>1</td><td>Status</td><td>O que está acontecendo agora?</td><td>Monitoramento e visualização</td></tr><tr><td>2</td><td>Informativo</td><td>Como isso se compara ao esperado?</td><td>Contexto, histórico e referência</td></tr><tr><td>3</td><td>Preditivo</td><td>O que provavelmente vai acontecer?</td><td>Previsão de comportamento</td></tr><tr><td>4</td><td>Otimização</td><td>Qual é a melhor alternativa?</td><td>Simulação de cenários e apoio à decisão</td></tr><tr><td>5</td><td>Autônomo</td><td>Qual ação deve ser executada?</td><td>Decisão e controle automatizado</td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Aplicação prática: da bancada ao sistema industrial</h2>



<p class="wp-block-paragraph">Para tornar o conceito mais concreto, pense em uma fonte chaveada industrial usada em um sistema crítico.</p>



<p class="wp-block-paragraph">No <strong>nível 1</strong>, sensores mostram tensão de entrada, tensão de saída, corrente, temperatura dos MOSFETs e ripple.</p>



<p class="wp-block-paragraph">No <strong>nível 2</strong>, esses dados são comparados com históricos, limites de projeto, curvas de eficiência e registros de manutenção.</p>



<p class="wp-block-paragraph">No <strong>nível 3</strong>, o sistema prevê aquecimento excessivo, envelhecimento de capacitores eletrolíticos ou aumento do risco de falha.</p>



<p class="wp-block-paragraph">No <strong>nível 4</strong>, o gêmeo digital simula cenários: reduzir carga, alterar ventilação, redistribuir consumo ou programar manutenção.</p>



<p class="wp-block-paragraph">No <strong>nível 5</strong>, o sistema ajusta automaticamente parâmetros permitidos, aciona redundância, limita carga ou agenda intervenção, sempre respeitando regras de segurança.</p>



<p class="wp-block-paragraph">Esse exemplo mostra que a maturidade não está apenas em “digitalizar” o equipamento. Está em transformar dados em decisão e, nos níveis mais avançados, em ação controlada.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Cuidado: nem todo modelo digital é um gêmeo digital maduro</h2>



<p class="wp-block-paragraph">Um erro comum é chamar qualquer modelo 3D, dashboard ou simulação de gêmeo digital. Esses elementos podem fazer parte de um gêmeo digital, mas não necessariamente representam maturidade elevada.</p>



<p class="wp-block-paragraph">Um modelo CAD sem conexão com dados reais pode ser apenas uma representação digital. Um dashboard pode ser apenas uma tela de monitoramento. Uma simulação isolada pode ser apenas um modelo computacional. O gêmeo digital se torna mais maduro quando existe integração consistente entre ativo físico, dados, modelo virtual, análise, decisão e feedback.</p>



<p class="wp-block-paragraph">Por isso, antes de afirmar que uma empresa possui um gêmeo digital avançado, é necessário perguntar:</p>



<ul class="wp-block-list">
<li>Ele recebe dados reais?</li>



<li>Ele compara esses dados com histórico ou referências?</li>



<li>Ele prevê comportamentos futuros?</li>



<li>Ele simula alternativas?</li>



<li>Ele recomenda decisões?</li>



<li>Ele executa ações automaticamente?</li>



<li>Há governança, segurança e validação?</li>
</ul>



<p class="wp-block-paragraph">Essas perguntas ajudam a separar marketing de engenharia.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Referências citadas</h2>



<ul class="wp-block-list">
<li>Metcalfe, B. et al. “Digital twin maturity levels: a theoretical framework for defining capabilities and goals in the life and environmental sciences.” F1000Research, 2023.</li>



<li>Digital Twin Consortium. “Digital Twin Business Maturity Model.”</li>



<li>IBM. “What is the digital twin maturity model?”, 2026.</li>
</ul><p>The post <a href="https://mcu.tec.br/geral/os-5-niveis-de-maturidade-do-gemeo-digital/">Os 5 níveis de maturidade do Gêmeo Digital</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1473</post-id>	</item>
		<item>
		<title>The C4 Model: um blueprint para arquiteturas de IA agêntica</title>
		<link>https://mcu.tec.br/inteligencia-artificil/the-c4-model-um-blueprint-para-arquiteturas-de-ia-agentica/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-c4-model-um-blueprint-para-arquiteturas-de-ia-agentica</link>
		
		<dc:creator><![CDATA[Carlos Delfino]]></dc:creator>
		<pubDate>Thu, 11 Jun 2026 13:49:02 +0000</pubDate>
				<category><![CDATA[Inteligência Artificil]]></category>
		<guid isPermaLink="false">https://mcu.tec.br/?p=1463</guid>

					<description><![CDATA[<p>A IA agêntica exige arquiteturas mais claras, seguras e bem documentadas. Neste artigo, explico como o C4 Model pode ser usado como uma planta arquitetural para representar sistemas com agentes inteligentes, ferramentas externas, memória, orquestração e pontos de controle.</p>
<p>The post <a href="https://mcu.tec.br/inteligencia-artificil/the-c4-model-um-blueprint-para-arquiteturas-de-ia-agentica/">The C4 Model: um blueprint para arquiteturas de IA agêntica</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">É nesse cenário que entra a discussão sobre <strong>“The C4 Model: A Blueprint for Agentic AI Architecture”</strong>. A ideia central é usar o <strong>C4 Model</strong>, uma abordagem já consolidada na documentação de arquitetura de software, como uma forma clara e organizada de representar sistemas de <strong>IA agêntica</strong>.</p>



<p class="wp-block-paragraph">A inteligência artificial está deixando de ser apenas uma ferramenta de resposta para se tornar uma infraestrutura de ação. Durante muito tempo, usamos IA principalmente para gerar textos, imagens, códigos, resumos ou análises. Porém, com a evolução dos modelos de linguagem, das APIs, das ferramentas externas e dos fluxos automatizados, surgiu uma nova etapa: sistemas capazes de perceber um contexto, tomar decisões, acionar ferramentas, avaliar resultados e continuar trabalhando em direção a um objetivo.</p>



<p class="wp-block-paragraph">Em vez de tentar explicar uma arquitetura de agentes com diagramas confusos, fluxos soltos ou desenhos improvisados, o C4 Model permite enxergar o sistema em camadas: do contexto mais amplo até os componentes internos que fazem a solução funcionar.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong>Fonte destacada — C4 Model oficial</strong><br>O C4 Model é apresentado por Simon Brown como uma abordagem simples, amigável para desenvolvedores e baseada em níveis hierárquicos para visualizar arquitetura de software: contexto, containers, componentes e código.</p>
</blockquote>



<h2 class="wp-block-heading">O que é Agentic AI?</h2>



<p class="wp-block-paragraph"><strong>Agentic AI</strong>, ou <strong>IA agêntica</strong>, é uma forma de inteligência artificial projetada não apenas para responder, mas para <strong>agir em direção a objetivos</strong>.</p>



<p class="wp-block-paragraph">Uma IA generativa comum pode responder a uma pergunta como:</p>



<p class="wp-block-paragraph">“Crie um e-mail para um cliente.”</p>



<p class="wp-block-paragraph">Já um sistema agêntico poderia ir além:</p>



<ol class="wp-block-list">
<li>entender o objetivo do usuário;</li>



<li>buscar informações em uma base de dados;</li>



<li>verificar o histórico do cliente;</li>



<li>escrever o e-mail;</li>



<li>pedir aprovação humana, se necessário;</li>



<li>enviar a mensagem;</li>



<li>registrar a ação em um CRM;</li>



<li>acompanhar a resposta.</li>
</ol>



<p class="wp-block-paragraph">A diferença está na presença de <strong>agência</strong>. Agência, nesse contexto, significa capacidade de atuar de forma orientada a metas, com algum grau de autonomia, usando ferramentas e avaliando os próprios resultados.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong>Fonte destacada — IBM Think</strong><br>A IBM descreve IA agêntica como sistemas capazes de atingir objetivos específicos com pouca intervenção humana, usando agentes que imitam processos de tomada de decisão para resolver problemas em tempo real.</p>
</blockquote>



<p class="wp-block-paragraph">Em termos práticos, um sistema de IA agêntica costuma ter alguns elementos fundamentais:</p>



<p class="wp-block-paragraph"><strong>Percepção:</strong> o agente recebe informações do ambiente, como mensagens, documentos, sensores, APIs, banco de dados ou eventos do sistema.</p>



<p class="wp-block-paragraph"><strong>Raciocínio:</strong> o agente interpreta essas informações, identifica contexto, prioridade, intenção e possíveis caminhos.</p>



<p class="wp-block-paragraph"><strong>Planejamento:</strong> o agente divide o objetivo em etapas menores.</p>



<p class="wp-block-paragraph"><strong>Ação:</strong> o agente executa tarefas usando ferramentas, APIs, scripts, bancos de dados ou sistemas externos.</p>



<p class="wp-block-paragraph"><strong>Memória:</strong> o agente pode registrar informações úteis para continuidade do trabalho.</p>



<p class="wp-block-paragraph"><strong>Feedback:</strong> o agente avalia se a ação teve sucesso e ajusta o comportamento.</p>



<p class="wp-block-paragraph"><strong>Orquestração:</strong> em sistemas maiores, vários agentes podem trabalhar juntos, cada um com uma função especializada.</p>



<p class="wp-block-paragraph">Um exemplo simples seria um agente de suporte técnico. Ele recebe uma mensagem do usuário, identifica o problema, consulta a documentação, verifica logs, sugere uma solução e, dependendo da permissão, pode abrir um ticket ou executar uma ação corretiva.</p>



<p class="wp-block-paragraph">Em um nível mais avançado, podemos ter um conjunto de agentes: um agente analisa requisitos, outro escreve código, outro testa, outro revisa segurança e outro documenta. Esse conjunto forma uma arquitetura multiagente.</p>



<h2 class="wp-block-heading">O desafio arquitetural da IA agêntica</h2>



<p class="wp-block-paragraph">Sistemas agênticos são mais difíceis de documentar do que sistemas tradicionais. Em uma aplicação web comum, normalmente desenhamos frontend, backend, banco de dados, filas, APIs e serviços externos.</p>



<p class="wp-block-paragraph">Mas em uma arquitetura de IA agêntica, precisamos representar outras coisas:</p>



<ul class="wp-block-list">
<li>quais agentes existem;</li>



<li>qual é a responsabilidade de cada agente;</li>



<li>quais ferramentas cada agente pode usar;</li>



<li>quais memórias ou bases de conhecimento são acessadas;</li>



<li>quais artefatos são produzidos;</li>



<li>quais decisões exigem aprovação humana;</li>



<li>quais limites de segurança existem;</li>



<li>como o sistema evita loops infinitos, ações erradas ou uso indevido de dados.</li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong>Fonte destacada — Describing Agentic AI Systems with C4</strong><br>O artigo acadêmico “Describing Agentic AI Systems with C4: Lessons from Industry Projects” observa que sistemas agênticos industriais costumam envolver agentes especializados, troca de artefatos, uso de ferramentas internas e externas, padrões de coordenação e pontos de controle de qualidade.</p>
</blockquote>



<p class="wp-block-paragraph">Esse ponto é muito importante: uma arquitetura agêntica não é apenas um “chatbot mais inteligente”. Ela envolve <strong>decisão, ação, coordenação, memória, governança e risco operacional</strong>.</p>



<p class="wp-block-paragraph">Por isso, documentar bem deixa de ser luxo. Passa a ser requisito de engenharia.</p>



<h2 class="wp-block-heading">O que é o C4 Model?</h2>



<p class="wp-block-paragraph">O <strong>C4 Model</strong> é um modelo de documentação visual para arquitetura de software criado por <strong>Simon Brown</strong>. O nome C4 vem de quatro níveis principais:</p>


<div class="wp-block-image">
<figure class="alignright size-full is-resized"><img decoding="async" width="500" height="500" src="https://mcu.tec.br/wp-content/uploads/2026/06/c4model-1x1-1.png" alt="" class="wp-image-1465" style="width:399px;height:auto" srcset="https://mcu.tec.br/wp-content/uploads/2026/06/c4model-1x1-1.png 500w, https://mcu.tec.br/wp-content/uploads/2026/06/c4model-1x1-1-300x300.png 300w, https://mcu.tec.br/wp-content/uploads/2026/06/c4model-1x1-1-150x150.png 150w" sizes="(max-width: 500px) 100vw, 500px" /></figure>
</div>


<ol class="wp-block-list">
<li><strong>Context</strong></li>



<li><strong>Container</strong></li>



<li><strong>Component</strong></li>



<li><strong>Code</strong></li>
</ol>



<p class="wp-block-paragraph">A ideia é semelhante ao uso de mapas. Primeiro vemos o mapa do país, depois da cidade, depois do bairro, depois da rua. Em arquitetura de software, fazemos algo parecido: começamos pelo sistema no seu ambiente geral e vamos descendo até os detalhes internos.</p>



<h3 class="wp-block-heading">1. Context — Diagrama de Contexto</h3>



<p class="wp-block-paragraph">O nível de <strong>Contexto</strong> mostra o sistema como uma caixa principal e apresenta quem interage com ele.</p>



<p class="wp-block-paragraph">Em um sistema de IA agêntica, esse diagrama responderia perguntas como:</p>



<ul class="wp-block-list">
<li>quem usa o sistema?</li>



<li>quais sistemas externos são acessados?</li>



<li>o agente conversa com usuários humanos?</li>



<li>ele acessa WhatsApp, e-mail, CRM, banco de dados, APIs, GitHub, ERP?</li>



<li>existe algum operador humano supervisionando?</li>
</ul>



<p class="wp-block-paragraph">Exemplo:</p>



<p class="wp-block-paragraph">Um “Agente de Atendimento Comercial” pode interagir com clientes via WhatsApp, consultar um CRM, acessar uma base de produtos, gerar propostas e notificar um vendedor humano.</p>



<p class="wp-block-paragraph">Nesse nível, não interessa ainda o detalhe interno. O objetivo é entender o papel do sistema no mundo.</p>



<h3 class="wp-block-heading">2. Container — Diagrama de Containers</h3>



<p class="wp-block-paragraph">No C4 Model, “container” não significa obrigatoriamente Docker. Container é uma unidade executável ou armazenável da aplicação: frontend, backend, banco de dados, serviço, fila, aplicação mobile, worker, API etc.</p>



<p class="wp-block-paragraph">Em uma arquitetura agêntica, o nível de containers pode mostrar:</p>



<ul class="wp-block-list">
<li>interface de chat;</li>



<li>serviço de orquestração;</li>



<li>agente planejador;</li>



<li>agente executor;</li>



<li>banco de memória;</li>



<li>banco vetorial;</li>



<li>serviço de ferramentas;</li>



<li>fila de tarefas;</li>



<li>módulo de auditoria;</li>



<li>painel humano de aprovação.</li>
</ul>



<p class="wp-block-paragraph">Exemplo:</p>



<p class="wp-block-paragraph">Um sistema de IA agêntica para suporte técnico poderia ter:</p>



<ul class="wp-block-list">
<li>Web App;</li>



<li>API Gateway;</li>



<li>Orquestrador de Agentes;</li>



<li>Serviço de RAG;</li>



<li>Banco Vetorial;</li>



<li>Banco Relacional;</li>



<li>Executor de Ferramentas;</li>



<li>Serviço de Logs e Auditoria.</li>
</ul>



<p class="wp-block-paragraph">Esse nível já começa a mostrar a arquitetura técnica da solução.</p>



<h3 class="wp-block-heading">3. Component — Diagrama de Componentes</h3>



<p class="wp-block-paragraph">O nível de <strong>Componentes</strong> abre um container específico e mostra suas partes internas.</p>



<p class="wp-block-paragraph">Se abrirmos o “Orquestrador de Agentes”, por exemplo, poderíamos encontrar:</p>



<ul class="wp-block-list">
<li>classificador de intenção;</li>



<li>planejador de tarefas;</li>



<li>seletor de ferramentas;</li>



<li>controlador de permissões;</li>



<li>gerenciador de memória;</li>



<li>avaliador de resposta;</li>



<li>detector de falhas;</li>



<li>módulo de human-in-the-loop;</li>



<li>registrador de eventos.</li>
</ul>



<p class="wp-block-paragraph">Aqui começamos a enxergar a engenharia do agente. Não basta dizer que existe um “agente inteligente”. É preciso mostrar como ele decide, quais limites possui, quais ferramentas pode acessar e quais mecanismos impedem comportamento inadequado.</p>



<h3 class="wp-block-heading">4. Code — Diagrama de Código</h3>



<p class="wp-block-paragraph">O nível de <strong>Código</strong> é o mais detalhado. Ele pode mostrar classes, interfaces, funções, módulos ou estruturas internas relevantes.</p>



<p class="wp-block-paragraph">Nem sempre esse nível é necessário em todos os projetos. Porém, em sistemas críticos, pode ser útil para documentar partes sensíveis como:</p>



<ul class="wp-block-list">
<li>interface de ferramentas;</li>



<li>contrato de plugins;</li>



<li>política de permissões;</li>



<li>estrutura de memória;</li>



<li>formato dos prompts de sistema;</li>



<li>regras de validação;</li>



<li>tipos de eventos;</li>



<li>classes de auditoria;</li>



<li>integração com APIs externas.</li>
</ul>



<p class="wp-block-paragraph">Em uma aplicação Node.js, por exemplo, poderíamos representar classes como <code>AgentRunner</code>, <code>ToolRegistry</code>, <code>MemoryStore</code>, <code>TaskPlanner</code>, <code>PolicyGuard</code> e <code>AuditLogger</code>.</p>



<h2 class="wp-block-heading">Por que o C4 Model combina com IA agêntica?</h2>



<p class="wp-block-paragraph">O C4 Model combina muito bem com IA agêntica porque ele força uma separação saudável entre diferentes níveis de abstração.</p>



<p class="wp-block-paragraph">Muitas vezes, quando falamos de agentes, caímos em descrições vagas:</p>



<p class="wp-block-paragraph">“O agente entende o usuário, pensa, chama ferramentas e resolve o problema.”</p>



<p class="wp-block-paragraph">Essa frase parece bonita, mas não serve como documentação de engenharia. Ela não responde:</p>



<ul class="wp-block-list">
<li>qual ferramenta é chamada?</li>



<li>com qual permissão?</li>



<li>quem valida a ação?</li>



<li>onde o resultado é salvo?</li>



<li>como o erro é tratado?</li>



<li>como o agente sabe que terminou?</li>



<li>como impedir chamadas perigosas?</li>



<li>onde entra a supervisão humana?</li>
</ul>



<p class="wp-block-paragraph">O C4 Model ajuda a transformar uma ideia abstrata em uma arquitetura analisável.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong>Fonte destacada — Arquitetura como comunicação</strong><br>Uma boa documentação arquitetural não serve apenas para “desenhar o sistema”. Ela serve para comunicação entre desenvolvedores, arquitetos, gestores, segurança, operação e manutenção.</p>
</blockquote>



<h2 class="wp-block-heading">Adaptando o C4 para sistemas agênticos</h2>



<p class="wp-block-paragraph">Para usar o C4 Model em IA agêntica, podemos acrescentar alguns elementos específicos ao vocabulário arquitetural.</p>



<h3 class="wp-block-heading">Agentes</h3>



<p class="wp-block-paragraph">São unidades autônomas ou semiautônomas responsáveis por tarefas específicas. Exemplos:</p>



<ul class="wp-block-list">
<li>agente planejador;</li>



<li>agente pesquisador;</li>



<li>agente executor;</li>



<li>agente revisor;</li>



<li>agente de segurança;</li>



<li>agente de atendimento;</li>



<li>agente de integração.</li>
</ul>



<h3 class="wp-block-heading">Ferramentas</h3>



<p class="wp-block-paragraph">São recursos que os agentes podem acionar. Exemplos:</p>



<ul class="wp-block-list">
<li>APIs;</li>



<li>banco de dados;</li>



<li>e-mail;</li>



<li>WhatsApp;</li>



<li>navegador;</li>



<li>terminal;</li>



<li>sistemas internos;</li>



<li>serviços de busca;</li>



<li>funções serverless;</li>



<li>scripts Python;</li>



<li>pipelines CI/CD.</li>
</ul>



<h3 class="wp-block-heading">Artefatos</h3>



<p class="wp-block-paragraph">São entradas e saídas produzidas durante o processo. Exemplos:</p>



<ul class="wp-block-list">
<li>relatórios;</li>



<li>tickets;</li>



<li>propostas;</li>



<li>código;</li>



<li>documentos;</li>



<li>logs;</li>



<li>mensagens;</li>



<li>planos de execução;</li>



<li>resultados de testes.</li>
</ul>



<h3 class="wp-block-heading">Memória</h3>



<p class="wp-block-paragraph">É onde o sistema registra informações para consulta posterior. Pode incluir:</p>



<ul class="wp-block-list">
<li>memória curta da conversa;</li>



<li>histórico do usuário;</li>



<li>banco vetorial;</li>



<li>base documental;</li>



<li>registros estruturados;</li>



<li>eventos anteriores;</li>



<li>preferências e contexto.</li>
</ul>



<h3 class="wp-block-heading">Guardrails</h3>



<p class="wp-block-paragraph">São limites, regras e proteções. Exemplos:</p>



<ul class="wp-block-list">
<li>aprovação humana obrigatória;</li>



<li>bloqueio de ações sensíveis;</li>



<li>validação de dados;</li>



<li>limite de chamadas;</li>



<li>timeout;</li>



<li>detecção de loop;</li>



<li>trilha de auditoria;</li>



<li>controle de permissões.</li>
</ul>



<h3 class="wp-block-heading">Quality Gates</h3>



<p class="wp-block-paragraph">São pontos de controle antes de uma ação continuar. Exemplos:</p>



<ul class="wp-block-list">
<li>revisar resposta antes de enviar;</li>



<li>validar código antes de executar;</li>



<li>testar integração antes de publicar;</li>



<li>verificar permissão antes de acessar dados;</li>



<li>pedir confirmação humana antes de alterar um registro.</li>
</ul>



<p class="wp-block-paragraph">Esses elementos tornam o C4 mais adequado para arquiteturas agênticas, sem abandonar sua simplicidade original.</p>



<h2 class="wp-block-heading">Exemplo didático: agente para atendimento técnico</h2>



<p class="wp-block-paragraph">Imagine um sistema chamado <strong>Agente Técnico de Suporte</strong>.</p>



<p class="wp-block-paragraph">No nível de <strong>Contexto</strong>, ele se conecta a:</p>



<ul class="wp-block-list">
<li>usuário final;</li>



<li>atendente humano;</li>



<li>sistema de tickets;</li>



<li>base de conhecimento;</li>



<li>API de diagnóstico;</li>



<li>canal de WhatsApp ou webchat.</li>
</ul>



<p class="wp-block-paragraph">No nível de <strong>Containers</strong>, temos:</p>



<ul class="wp-block-list">
<li>interface de atendimento;</li>



<li>orquestrador de agentes;</li>



<li>banco vetorial de documentação;</li>



<li>banco relacional de tickets;</li>



<li>serviço de diagnóstico;</li>



<li>módulo de auditoria;</li>



<li>painel de revisão humana.</li>
</ul>



<p class="wp-block-paragraph">No nível de <strong>Componentes</strong>, dentro do orquestrador, temos:</p>



<ul class="wp-block-list">
<li>interpretador da solicitação;</li>



<li>planejador;</li>



<li>agente consultor de documentação;</li>



<li>agente executor de diagnóstico;</li>



<li>avaliador de confiança;</li>



<li>controlador de permissões;</li>



<li>gerador de resposta;</li>



<li>registrador de logs.</li>
</ul>



<p class="wp-block-paragraph">No nível de <strong>Código</strong>, poderíamos representar:</p>



<ul class="wp-block-list">
<li>classe de execução do agente;</li>



<li>interface de ferramentas;</li>



<li>estrutura de eventos;</li>



<li>contratos de entrada e saída;</li>



<li>regras de validação;</li>



<li>testes automatizados.</li>
</ul>



<p class="wp-block-paragraph">Com isso, a equipe consegue discutir o sistema com clareza. O gestor entende o contexto. O arquiteto entende os containers. O desenvolvedor entende os componentes. O time de segurança entende os pontos de risco. O operador entende onde entra a intervenção humana.</p>



<h2 class="wp-block-heading">O valor prático do blueprint</h2>



<p class="wp-block-paragraph">Chamar o C4 Model de “blueprint” para IA agêntica faz sentido porque ele funciona como uma planta de engenharia.</p>



<p class="wp-block-paragraph">Uma planta elétrica não é o prédio. Mas sem ela, fica muito mais difícil instalar, manter, corrigir e expandir a instalação.</p>



<p class="wp-block-paragraph">Da mesma forma, o C4 Model não é o sistema de IA. Mas ele permite visualizar:</p>



<ul class="wp-block-list">
<li>fronteiras;</li>



<li>responsabilidades;</li>



<li>dependências;</li>



<li>riscos;</li>



<li>integrações;</li>



<li>pontos de controle;</li>



<li>evolução arquitetural.</li>
</ul>



<p class="wp-block-paragraph">Em projetos pequenos, isso evita confusão. Em projetos grandes, evita caos.</p>



<h2 class="wp-block-heading">Conclusão</h2>



<p class="wp-block-paragraph">A IA agêntica representa uma mudança profunda na forma como construímos sistemas inteligentes. Não estamos mais falando apenas de modelos que geram respostas, mas de arquiteturas compostas por agentes capazes de planejar, agir, usar ferramentas, trocar artefatos, aprender com feedback e colaborar em fluxos complexos.</p>



<p class="wp-block-paragraph">Essa mudança exige uma documentação mais madura.</p>



<p class="wp-block-paragraph">O <strong>C4 Model</strong> oferece uma base simples, didática e poderosa para organizar essa documentação. Ao separar a arquitetura em contexto, containers, componentes e código, ele permite que diferentes públicos entendam o sistema no nível certo de detalhe.</p>



<p class="wp-block-paragraph">Quando adaptado para representar agentes, ferramentas, memórias, artefatos, guardrails e pontos de controle, o C4 se torna uma excelente abordagem para documentar arquiteturas de IA agêntica.</p>



<p class="wp-block-paragraph">Em resumo: se a IA agêntica é o novo motor de automação inteligente, o C4 Model pode ser uma das melhores plantas arquiteturais para projetar, explicar e manter esse motor funcionando com clareza, segurança e evolução contínua.</p>



<h2 class="wp-block-heading">Referências</h2>



<ul class="wp-block-list">
<li>Simon Brown — C4 Model: visualising software architecture.</li>



<li>IBM Think — O que é IA agêntica?</li>



<li>Andreas Rausch e Stefan Wittek — “Describing Agentic AI Systems with C4: Lessons from Industry Projects”.</li>



<li>Arunkumar V., Gangadharan G. R. e Rajkumar Buyya — “Agentic Artificial Intelligence: Architectures, Taxonomies, and Evaluation of Large Language Model Agents”.</li>
</ul><p>The post <a href="https://mcu.tec.br/inteligencia-artificil/the-c4-model-um-blueprint-para-arquiteturas-de-ia-agentica/">The C4 Model: um blueprint para arquiteturas de IA agêntica</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1463</post-id>	</item>
		<item>
		<title>JavaScript em Microcontroladores: Espruino, Microvium, Moddable XS, mJS e JerryScript</title>
		<link>https://mcu.tec.br/geral/javascript-em-microcontroladores-espruino-microvium-moddable-xs-mjs-e-jerryscript/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=javascript-em-microcontroladores-espruino-microvium-moddable-xs-mjs-e-jerryscript</link>
		
		<dc:creator><![CDATA[Carlos Delfino]]></dc:creator>
		<pubDate>Fri, 29 May 2026 21:29:52 +0000</pubDate>
				<category><![CDATA[geral]]></category>
		<guid isPermaLink="false">https://mcu.tec.br/?p=1455</guid>

					<description><![CDATA[<p>Entenda como usar JavaScript em microcontroladores com engines como Espruino, Microvium, Moddable SDK com XS Engine, mJS da Cesanta e JerryScript. O artigo compara vantagens, limitações, consumo de memória, integração com C/C++, uso em IoT, prototipação, scripting embarcado e aplicações reais. Também explica quando JavaScript pode ser útil em sistemas embarcados e quando C ou C++ continuam sendo escolhas mais adequadas para tarefas críticas de tempo real, drivers, interrupções, controle de periféricos e processamento intensivo.</p>
<p>The post <a href="https://mcu.tec.br/geral/javascript-em-microcontroladores-espruino-microvium-moddable-xs-mjs-e-jerryscript/">JavaScript em Microcontroladores: Espruino, Microvium, Moddable XS, mJS e JerryScript</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="root-eb-toc-dh01j wp-block-essential-blocks-table-of-contents"><div class="eb-parent-wrapper eb-parent-eb-toc-dh01j "><div class="eb-toc-container eb-toc-dh01j  eb-toc-is-not-sticky eb-toc-not-collapsible eb-toc-initially-not-collapsed eb-toc-scrollToTop style-1 list-style-none" data-scroll-top="false" data-scroll-top-icon="fas fa-angle-up" data-collapsible="false" data-sticky-hide-mobile="false" data-sticky="false" data-scroll-target="scroll_to_toc" data-copy-link="false" data-editor-type="" data-hide-desktop="false" data-hide-tab="false" data-hide-mobile="false" data-itemcollapsed="false" data-highlight-scroll="false"><div class="eb-toc-header"><h2 class="eb-toc-title">Table of Contents</h2></div><div class="eb-toc-wrapper " data-headers="[{&quot;level&quot;:2,&quot;content&quot;:&quot;Espruino: JavaScript interativo para prototipa\u00e7\u00e3o embarcada&quot;,&quot;text&quot;:&quot;Espruino: JavaScript interativo para prototipa\u00e7\u00e3o embarcada&quot;,&quot;link&quot;:&quot;eb-table-content-0&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Microvium: JavaScript min\u00fasculo para firmware em C&quot;,&quot;text&quot;:&quot;Microvium: JavaScript min\u00fasculo para firmware em C&quot;,&quot;link&quot;:&quot;eb-table-content-1&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Moddable SDK e XS Engine: JavaScript moderno para produtos IoT embarcados&quot;,&quot;text&quot;:&quot;Moddable SDK e XS Engine: JavaScript moderno para produtos IoT embarcados&quot;,&quot;link&quot;:&quot;moddable-sdk-e-xs-engine-javascript-moderno-para-produtos-iot-embarcados&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;mJS da Cesanta: scripting JavaScript enxuto para firmware em C\/C++&quot;,&quot;text&quot;:&quot;mJS da Cesanta: scripting JavaScript enxuto para firmware em C\/C++&quot;,&quot;link&quot;:&quot;mjs-da-cesanta-scripting-javascript-enxuto-para-firmware-em-cc&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;JerryScript: uma engine JavaScript leve para IoT e dispositivos restritos&quot;,&quot;text&quot;:&quot;JerryScript: uma engine JavaScript leve para IoT e dispositivos restritos&quot;,&quot;link&quot;:&quot;jerryscript-uma-engine-javascript-leve-para-iot-e-dispositivos-restritos&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Conclus\u00e3o: JavaScript em microcontroladores \u00e9 uma camada, n\u00e3o um substituto absoluto do C&quot;,&quot;text&quot;:&quot;Conclus\u00e3o: JavaScript em microcontroladores \u00e9 uma camada, n\u00e3o um substituto absoluto do C&quot;,&quot;link&quot;:&quot;eb-table-content-5&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Sites oficiais das engines apresentadas&quot;,&quot;text&quot;:&quot;Sites oficiais das engines apresentadas&quot;,&quot;link&quot;:&quot;sites-oficiais-das-engines-apresentadas&quot;}]" data-visible="[true,true,true,true,true,true]" data-delete-headers="[{&quot;label&quot;:&quot;Espruino: JavaScript interativo para prototipa\u00e7\u00e3o embarcada&quot;,&quot;value&quot;:&quot;espruino-javascript-interativo-para-prototipa\u00e7\u00e3o-embarcada&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Microvium: JavaScript min\u00fasculo para firmware em C&quot;,&quot;value&quot;:&quot;microvium-javascript-min\u00fasculo-para-firmware-em-c&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Moddable SDK e XS Engine: JavaScript moderno para produtos IoT embarcados&quot;,&quot;value&quot;:&quot;moddable-sdk-e-xs-engine-javascript-moderno-para-produtos-iot-embarcados&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;mJS da Cesanta: scripting JavaScript enxuto para firmware em C\/C++&quot;,&quot;value&quot;:&quot;mjs-da-cesanta-scripting-javascript-enxuto-para-firmware-em-cc&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;JerryScript: uma engine JavaScript leve para IoT e dispositivos restritos&quot;,&quot;value&quot;:&quot;jerryscript-uma-engine-javascript-leve-para-iot-e-dispositivos-restritos&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Conclus\u00e3o: JavaScript em microcontroladores \u00e9 uma camada, n\u00e3o um substituto absoluto do C&quot;,&quot;value&quot;:&quot;conclus\u00e3o-javascript-em-microcontroladores-\u00e9-uma-camada-n\u00e3o-um-substituto-absoluto-do-c&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Sites oficiais das engines apresentadas&quot;,&quot;value&quot;:&quot;sites-oficiais-das-engines-apresentadas&quot;,&quot;isDelete&quot;:false}]" data-smooth="true" data-top-offset=""><div class="eb-toc__list-wrap"><ul class="eb-toc__list"><li><a href="#eb-table-content-0">Espruino: JavaScript interativo para prototipação embarcada</a><li><a href="#eb-table-content-1">Microvium: JavaScript minúsculo para firmware em C</a><li><a href="#moddable-sdk-e-xs-engine-javascript-moderno-para-produtos-iot-embarcados">Moddable SDK e XS Engine: JavaScript moderno para produtos IoT embarcados</a><li><a href="#mjs-da-cesanta-scripting-javascript-enxuto-para-firmware-em-cc">mJS da Cesanta: scripting JavaScript enxuto para firmware em C/C++</a><li><a href="#jerryscript-uma-engine-javascript-leve-para-iot-e-dispositivos-restritos">JerryScript: uma engine JavaScript leve para IoT e dispositivos restritos</a><li><a href="#eb-table-content-5">Conclusão: JavaScript em microcontroladores é uma camada, não um substituto absoluto do C</a><li><a href="#sites-oficiais-das-engines-apresentadas">Sites oficiais das engines apresentadas</a></ul></div></div></div></div></div>


<p class="wp-block-paragraph">Quando falamos em JavaScript, é comum imaginar navegadores, servidores Node.js, aplicações web, painéis administrativos e sistemas de automação em nuvem. Porém, nos últimos anos, surgiram engines específicas para permitir que partes de um firmware sejam escritas em JavaScript, mesmo em ambientes extremamente restritos, como microcontroladores com pouca memória RAM, pouca Flash e baixo poder de processamento. Essa abordagem não substitui C ou C++ em todos os cenários, mas abre uma possibilidade interessante: usar JavaScript como linguagem de controle, automação, prototipação ou scripting embarcado.</p>



<p class="wp-block-paragraph">Em sistemas embarcados tradicionais, especialmente aqueles baseados em microcontroladores, C e C++ continuam sendo as linguagens dominantes porque oferecem controle direto sobre memória, registradores, interrupções, periféricos e tempo de execução. Esse domínio é essencial quando lidamos com temporização precisa, drivers, comunicação em baixo nível, controle de motores, aquisição de sinais, DSP ou sistemas de tempo real. O próprio Bruce Powel Douglass destaca que sistemas embarcados trabalham sob restrições severas de memória, energia, custo, desempenho, confiabilidade e segurança, o que torna a escolha da linguagem e da arquitetura uma decisão crítica de projeto.</p>



<p class="wp-block-paragraph">A vantagem do JavaScript nesse contexto está principalmente na produtividade. Um código em JavaScript pode ser mais simples de escrever, testar e modificar do que um código equivalente em C, especialmente quando o objetivo é criar lógica de alto nível, regras de automação, manipulação de JSON, comunicação com serviços web ou comportamento configurável pelo usuário. Em aplicações IoT, onde o dispositivo conversa com APIs, processa mensagens, recebe comandos remotos e executa regras de negócio, JavaScript pode ser uma camada conveniente acima do firmware nativo.</p>



<p class="wp-block-paragraph">Outra vantagem importante é a capacidade de atualização dinâmica. Algumas engines permitem carregar ou alterar scripts sem recompilar todo o firmware. Isso é muito interessante em produtos que precisam ajustar regras de funcionamento em campo. Imagine um gateway IoT, um sensor inteligente ou um controlador de automação residencial: a camada de baixo nível continua em C, garantindo acesso seguro ao hardware, enquanto uma camada em JavaScript define comportamentos mais flexíveis. Esse modelo lembra a ideia de separar responsabilidades em camadas: o firmware nativo controla o hardware; o script expressa a lógica variável.</p>



<p class="wp-block-paragraph">No entanto, essa flexibilidade tem custo. JavaScript normalmente exige uma engine de interpretação ou execução, o que consome Flash, RAM e ciclos de CPU. Mesmo engines otimizadas, como Espruino, Microvium, XS, mJS e JerryScript, precisam representar objetos, funções, strings, escopos e valores dinâmicos. Isso cria uma sobrecarga que não existiria em uma implementação puramente em C. Em microcontroladores muito pequenos, essa diferença pode inviabilizar o uso de JavaScript ou limitar fortemente o tamanho dos scripts.</p>



<p class="wp-block-paragraph">Também existe o problema da previsibilidade temporal. JavaScript é uma linguagem dinâmica: tipos podem mudar em tempo de execução, objetos podem ser criados dinamicamente e algumas engines podem usar mecanismos de gerenciamento de memória. Em sistemas de tempo real, isso precisa ser analisado com muito cuidado. Um código que funciona bem em uma tarefa de configuração, telemetria ou automação pode não ser adequado para uma rotina de controle com deadline rígido, como PWM de alta precisão, leitura determinística de ADC por DMA ou controle de corrente em uma fonte chaveada.</p>



<p class="wp-block-paragraph">Outro ponto crítico é a integração com o hardware. JavaScript não acessa diretamente registradores, interrupções ou periféricos da mesma forma que C. Ele depende de APIs fornecidas pela engine ou pelo firmware hospedeiro. Isso pode ser uma vantagem, porque cria uma camada mais segura e abstrata; mas também pode ser uma limitação, porque o desenvolvedor fica preso ao que a engine expõe. Em muitos projetos reais, a solução mais equilibrada é híbrida: C/C++ implementa drivers, HAL, protocolos críticos e rotinas temporais; JavaScript implementa scripts de configuração, regras de negócio, automação e lógica de aplicação.</p>



<p class="wp-block-paragraph">A segurança também deve ser considerada. Permitir scripts em um dispositivo embarcado significa abrir uma superfície adicional de erro. Um script mal escrito pode consumir memória, travar uma lógica de aplicação, gerar loops indesejados ou acessar funções expostas de forma inadequada. Por isso, em produtos profissionais, a engine JavaScript deve ser usada com limites claros: controle de memória, validação de scripts, APIs restritas, watchdog, testes de integração e, quando necessário, assinatura ou autenticação do código carregado.</p>



<p class="wp-block-paragraph">Portanto, usar JavaScript em microcontroladores não deve ser visto como “trocar C por JavaScript”. A visão mais madura é entender JavaScript como uma camada complementar. Ele é útil quando o projeto precisa de produtividade, atualização rápida, scripting, integração com JSON, regras configuráveis ou facilidade para desenvolvedores vindos do mundo web. Ele é menos indicado quando o projeto exige controle absoluto de tempo, uso mínimo de memória, certificação rigorosa, processamento digital pesado ou acesso intenso e direto ao hardware.</p>



<p class="wp-block-paragraph">No restante do artigo, analisaremos algumas das principais engines que tornam essa abordagem possível: Espruino, Microvium, Moddable SDK com XS Engine, mJS da Cesanta e JerryScript. Cada uma adota uma estratégia diferente para resolver o mesmo desafio: como levar JavaScript para um ambiente onde cada kilobyte de RAM, cada kilobyte de Flash e cada ciclo de CPU importam.</p><p>The post <a href="https://mcu.tec.br/geral/javascript-em-microcontroladores-espruino-microvium-moddable-xs-mjs-e-jerryscript/">JavaScript em Microcontroladores: Espruino, Microvium, Moddable XS, mJS e JerryScript</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1455</post-id>	</item>
		<item>
		<title>Sistemas de Arquivos em Microcontroladores: LittleFS, SPIFFS e SD Card no STM32N6</title>
		<link>https://mcu.tec.br/geral/sistemas-de-arquivos-em-microcontroladores-littlefs-spiffs-e-sd-card-no-stm32n6/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sistemas-de-arquivos-em-microcontroladores-littlefs-spiffs-e-sd-card-no-stm32n6</link>
		
		<dc:creator><![CDATA[Carlos Delfino]]></dc:creator>
		<pubDate>Wed, 27 May 2026 18:54:56 +0000</pubDate>
				<category><![CDATA[geral]]></category>
		<guid isPermaLink="false">https://mcu.tec.br/?p=1446</guid>

					<description><![CDATA[<p>sistemas de arquivos para microcontroladores, LittleFS, SPIFFS, FATFS, SD Card, STM32N6, FreeRTOS, Flash externa, SPI Flash, QSPI, OctoSPI, sistemas embarcados, firmware em C, armazenamento em microcontroladores, logs em SD Card, arquivos em sistemas embarcados, memória Flash NOR, wear leveling, sistema de arquivos embarcado, STM32, datalogger com STM32, configuração persistente em firmware, armazenamento não volátil</p>
<p>The post <a href="https://mcu.tec.br/geral/sistemas-de-arquivos-em-microcontroladores-littlefs-spiffs-e-sd-card-no-stm32n6/">Sistemas de Arquivos em Microcontroladores: LittleFS, SPIFFS e SD Card no STM32N6</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="root-eb-toc-pdcts wp-block-essential-blocks-table-of-contents"><div class="eb-parent-wrapper eb-parent-eb-toc-pdcts "><div class="eb-toc-container eb-toc-pdcts  eb-toc-is-not-sticky eb-toc-not-collapsible eb-toc-initially-not-collapsed eb-toc-scrollToTop style-1 list-style-none" data-scroll-top="false" data-scroll-top-icon="fas fa-angle-up" data-collapsible="false" data-sticky-hide-mobile="false" data-sticky="false" data-scroll-target="scroll_to_toc" data-copy-link="false" data-editor-type="" data-hide-desktop="false" data-hide-tab="false" data-hide-mobile="false" data-itemcollapsed="false" data-highlight-scroll="false"><div class="eb-toc-header"><h2 class="eb-toc-title">Table of Contents</h2></div><div class="eb-toc-wrapper " data-headers="[{&quot;level&quot;:2,&quot;content&quot;:&quot;A diferen\u00e7a entre Flash bruta, SPI Flash e SD Card&quot;,&quot;text&quot;:&quot;A diferen\u00e7a entre Flash bruta, SPI Flash e SD Card&quot;,&quot;link&quot;:&quot;eb-table-content-0&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;LittleFS vs SPIFFS: compara\u00e7\u00e3o t\u00e9cnica para microcontroladores&quot;,&quot;text&quot;:&quot;LittleFS vs SPIFFS: compara\u00e7\u00e3o t\u00e9cnica para microcontroladores&quot;,&quot;link&quot;:&quot;eb-table-content-1&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Arquitetura proposta: STM32N6, SD Card, FATFS e FreeRTOS&quot;,&quot;text&quot;:&quot;Arquitetura proposta: STM32N6, SD Card, FATFS e FreeRTOS&quot;,&quot;link&quot;:&quot;arquitetura-proposta-stm32n6-sd-card-fatfs-e-freertos&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Gravando logs no SD Card com uma tarefa dedicada&quot;,&quot;text&quot;:&quot;Gravando logs no SD Card com uma tarefa dedicada&quot;,&quot;link&quot;:&quot;gravando-logs-no-sd-card-com-uma-tarefa-dedicada&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Exemplo conceitual usando LittleFS em uma Flash externa no STM32N6&quot;,&quot;text&quot;:&quot;Exemplo conceitual usando LittleFS em uma Flash externa no STM32N6&quot;,&quot;link&quot;:&quot;exemplo-conceitual-usando-littlefs-em-uma-flash-externa-no-stm32n6&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Exemplo conceitual usando SPIFFS em Flash externa&quot;,&quot;text&quot;:&quot;Exemplo conceitual usando SPIFFS em Flash externa&quot;,&quot;link&quot;:&quot;exemplo-conceitual-usando-spiffs-em-flash-externa&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Comparativo pr\u00e1tico: FATFS, LittleFS e SPIFFS no STM32N6&quot;,&quot;text&quot;:&quot;Comparativo pr\u00e1tico: FATFS, LittleFS e SPIFFS no STM32N6&quot;,&quot;link&quot;:&quot;eb-table-content-6&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Boas pr\u00e1ticas de projeto ao gravar arquivos em SD Card e Flash&quot;,&quot;text&quot;:&quot;Boas pr\u00e1ticas de projeto ao gravar arquivos em SD Card e Flash&quot;,&quot;link&quot;:&quot;eb-table-content-7&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Escolher o sistema de arquivos \u00e9 escolher a arquitetura de persist\u00eancia&quot;,&quot;text&quot;:&quot;Escolher o sistema de arquivos \u00e9 escolher a arquitetura de persist\u00eancia&quot;,&quot;link&quot;:&quot;eb-table-content-8&quot;}]" data-visible="[true,true,true,true,true,true]" data-delete-headers="[{&quot;label&quot;:&quot;A diferen\u00e7a entre Flash bruta, SPI Flash e SD Card&quot;,&quot;value&quot;:&quot;a-diferen\u00e7a-entre-flash-bruta-spi-flash-e-sd-card&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;LittleFS vs SPIFFS: compara\u00e7\u00e3o t\u00e9cnica para microcontroladores&quot;,&quot;value&quot;:&quot;littlefs-vs-spiffs-compara\u00e7\u00e3o-t\u00e9cnica-para-microcontroladores&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Arquitetura proposta: STM32N6, SD Card, FATFS e FreeRTOS&quot;,&quot;value&quot;:&quot;arquitetura-proposta-stm32n6-sd-card-fatfs-e-freertos&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Gravando logs no SD Card com uma tarefa dedicada&quot;,&quot;value&quot;:&quot;gravando-logs-no-sd-card-com-uma-tarefa-dedicada&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Exemplo conceitual usando LittleFS em uma Flash externa no STM32N6&quot;,&quot;value&quot;:&quot;exemplo-conceitual-usando-littlefs-em-uma-flash-externa-no-stm32n6&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Exemplo conceitual usando SPIFFS em Flash externa&quot;,&quot;value&quot;:&quot;exemplo-conceitual-usando-spiffs-em-flash-externa&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Comparativo pr\u00e1tico: FATFS, LittleFS e SPIFFS no STM32N6&quot;,&quot;value&quot;:&quot;comparativo-pr\u00e1tico-fatfs-littlefs-e-spiffs-no-stm32n6&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Boas pr\u00e1ticas de projeto ao gravar arquivos em SD Card e Flash&quot;,&quot;value&quot;:&quot;boas-pr\u00e1ticas-de-projeto-ao-gravar-arquivos-em-sd-card-e-flash&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Escolher o sistema de arquivos \u00e9 escolher a arquitetura de persist\u00eancia&quot;,&quot;value&quot;:&quot;escolher-o-sistema-de-arquivos-\u00e9-escolher-a-arquitetura-de-persist\u00eancia&quot;,&quot;isDelete&quot;:false}]" data-smooth="true" data-top-offset=""><div class="eb-toc__list-wrap"><ul class="eb-toc__list"><li><a href="#eb-table-content-0">A diferença entre Flash bruta, SPI Flash e SD Card</a><li><a href="#eb-table-content-1">LittleFS vs SPIFFS: comparação técnica para microcontroladores</a><li><a href="#arquitetura-proposta-stm32n6-sd-card-fatfs-e-freertos">Arquitetura proposta: STM32N6, SD Card, FATFS e FreeRTOS</a><li><a href="#gravando-logs-no-sd-card-com-uma-tarefa-dedicada">Gravando logs no SD Card com uma tarefa dedicada</a><li><a href="#exemplo-conceitual-usando-littlefs-em-uma-flash-externa-no-stm32n6">Exemplo conceitual usando LittleFS em uma Flash externa no STM32N6</a><li><a href="#exemplo-conceitual-usando-spiffs-em-flash-externa">Exemplo conceitual usando SPIFFS em Flash externa</a><li><a href="#eb-table-content-6">Comparativo prático: FATFS, LittleFS e SPIFFS no STM32N6</a><li><a href="#eb-table-content-7">Boas práticas de projeto ao gravar arquivos em SD Card e Flash</a><li><a href="#eb-table-content-8">Escolher o sistema de arquivos é escolher a arquitetura de persistência</a></ul></div></div></div></div></div>


<p class="wp-block-paragraph">Em sistemas embarcados, nem todo dado pode ficar apenas em variáveis, memória RAM ou registradores. Um microcontrolador frequentemente precisa guardar configurações, logs, arquivos de calibração, certificados, imagens, modelos de IA embarcada, tabelas de parâmetros, amostras de sensores e dados coletados em campo. Quando esses dados precisam sobreviver a um reset ou à falta de energia, entramos no domínio do armazenamento não volátil.</p>



<p class="wp-block-paragraph">É nesse ponto que surge a necessidade de um sistema de arquivos. Um sistema de arquivos é uma camada de software responsável por organizar dados persistentes em estruturas compreensíveis: arquivos, diretórios, nomes, metadados, posições de leitura e escrita, controle de espaço livre e, em alguns casos, mecanismos de recuperação contra falhas. Sem essa camada, o firmware teria que gravar diretamente blocos crus de memória, controlando manualmente endereços, apagamentos, alinhamento, desgaste e integridade.</p>



<p class="wp-block-paragraph">No mundo dos microcontroladores, porém, o problema é mais delicado do que em um computador comum. O firmware trabalha com pouca memória RAM, tempo de execução limitado, risco de queda súbita de energia, ciclos de escrita finitos e diferentes tipos de mídia. Uma memória NOR Flash externa via SPI tem comportamento muito diferente de um cartão SD. A Flash exige apagamento por blocos, escrita com restrições físicas e controle de desgaste. Já o cartão SD possui um controlador interno que oculta boa parte da complexidade da NAND Flash usada dentro do cartão.</p>



<p class="wp-block-paragraph">Por isso, comparar <strong>LittleFS</strong> e <strong>SPIFFS</strong> diretamente em um projeto com <strong>SD Card</strong> exige cuidado. O <strong>LittleFS</strong> foi projetado como um sistema de arquivos pequeno, resistente a falhas de energia, com desgaste distribuído e uso limitado de RAM/ROM para dispositivos de Flash embarcada. A própria documentação do projeto destaca recursos como <em>dynamic wear leveling</em> e uso de memória limitado. (<a href="https://github.com/littlefs-project/littlefs?utm_source=chatgpt.com">GitHub</a>) O <strong>SPIFFS</strong>, por sua vez, também foi criado para dispositivos <strong>SPI NOR Flash</strong>, com foco em alvos embarcados pequenos, pouca RAM e desgaste de blocos de Flash. (<a href="https://github.com/pellepl/spiffs?utm_source=chatgpt.com">GitHub</a>)</p>



<p class="wp-block-paragraph">Isso significa que, em um projeto com <strong>STM32N6 + SD Card + FreeRTOS</strong>, o sistema de arquivos mais natural normalmente seria <strong>FATFS</strong> ou <strong>FreeRTOS+FAT</strong>, porque cartões SD são tradicionalmente formatados em FAT/FAT32/exFAT e precisam ser lidos por computadores, celulares, câmeras, gravadores e ferramentas comuns. Já LittleFS e SPIFFS fazem mais sentido quando o armazenamento é uma Flash externa ou interna acessada diretamente pelo microcontrolador, não um SD Card convencional.</p>



<p class="wp-block-paragraph">O <strong>STM32N6</strong> é uma família moderna da STMicroelectronics baseada em Arm Cortex-M55 a 800 MHz, voltada a aplicações embarcadas de alto desempenho, inclusive com recursos adequados para aplicações complexas de borda. (<a href="https://www.st.com/en/microcontrollers-microprocessors/stm32n6-series.html?utm_source=chatgpt.com">STMicroelectronics</a>) Em um sistema desse tipo, usar SD Card é bastante coerente para registrar grandes volumes de dados, armazenar arquivos de configuração, gravar logs de inferência, coletar amostras de sensores ou guardar modelos e metadados de aplicação. O FreeRTOS entra apenas como camada de execução concorrente: uma tarefa pode coletar dados, outra pode gravar no cartão, outra pode transmitir pela rede, mas o sistema de arquivos precisa ser protegido contra acesso simultâneo indevido.</p>



<p class="wp-block-paragraph">Portanto, neste artigo, vamos tratar o tema de forma prática: primeiro entenderemos as diferenças entre LittleFS, SPIFFS e sistemas FAT para SD Card; depois veremos quando usar cada um; em seguida construiremos exemplos em C para STM32N6 com SD Card e FreeRTOS; e, por fim, mostraremos como adaptar a ideia para LittleFS e SPIFFS, mesmo explicando por que eles não são a escolha mais natural para um cartão SD comum.</p>



<p class="wp-block-paragraph">Nesta primeira parte, a ideia central é simples: <strong>sistema de arquivos em microcontrolador não é apenas “salvar um arquivo”; é escolher uma estratégia de persistência compatível com a mídia física, com a robustez desejada e com os limites do firmware.</strong></p><p>The post <a href="https://mcu.tec.br/geral/sistemas-de-arquivos-em-microcontroladores-littlefs-spiffs-e-sd-card-no-stm32n6/">Sistemas de Arquivos em Microcontroladores: LittleFS, SPIFFS e SD Card no STM32N6</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1446</post-id>	</item>
		<item>
		<title>Apollo Guidance Computer: o software embarcado que levou a humanidade à Lua</title>
		<link>https://mcu.tec.br/geral/apollo-guidance-computer-o-software-embarcado-que-levou-a-humanidade-a-lua/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=apollo-guidance-computer-o-software-embarcado-que-levou-a-humanidade-a-lua</link>
		
		<dc:creator><![CDATA[Carlos Delfino]]></dc:creator>
		<pubDate>Wed, 27 May 2026 14:43:55 +0000</pubDate>
				<category><![CDATA[geral]]></category>
		<guid isPermaLink="false">https://mcu.tec.br/?p=1460</guid>

					<description><![CDATA[<p>Conheça a história do Apollo Guidance Computer, o computador embarcado que ajudou a levar o homem à Lua. O artigo explica como limitações extremas de memória, processamento e energia moldaram uma das maiores conquistas da engenharia de software, destacando Margaret Hamilton, a core rope memory, os alarmes 1201 e 1202 da Apollo 11, o uso de prioridades em tempo real, a validação por simulação e as lições que continuam atuais para quem desenvolve firmware, microcontroladores, RTOS, FPGA, IoT e sistemas embarcados críticos.</p>
<p>The post <a href="https://mcu.tec.br/geral/apollo-guidance-computer-o-software-embarcado-que-levou-a-humanidade-a-lua/">Apollo Guidance Computer: o software embarcado que levou a humanidade à Lua</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></description>
										<content:encoded><![CDATA[<h2 class="wp-block-heading">Quando a escassez se transforma em engenharia</h2>


<div class="root-eb-toc-pzeny wp-block-essential-blocks-table-of-contents"><div class="eb-parent-wrapper eb-parent-eb-toc-pzeny "><div class="eb-toc-container eb-toc-pzeny  eb-toc-is-not-sticky eb-toc-not-collapsible eb-toc-initially-not-collapsed eb-toc-scrollToTop style-1 list-style-none" data-scroll-top="false" data-scroll-top-icon="fas fa-angle-up" data-collapsible="false" data-sticky-hide-mobile="false" data-sticky="false" data-scroll-target="scroll_to_toc" data-copy-link="false" data-editor-type="" data-hide-desktop="false" data-hide-tab="false" data-hide-mobile="false" data-itemcollapsed="false" data-highlight-scroll="false"><div class="eb-toc-header"><h2 class="eb-toc-title">Table of Contents</h2></div><div class="eb-toc-wrapper " data-headers="[{&quot;level&quot;:2,&quot;content&quot;:&quot;Quando a escassez se transforma em engenharia&quot;,&quot;text&quot;:&quot;Quando a escassez se transforma em engenharia&quot;,&quot;link&quot;:&quot;quando-a-escassez-se-transforma-em-engenharia&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Margaret Hamilton e o nascimento da engenharia de software cr\u00edtica&quot;,&quot;text&quot;:&quot;Margaret Hamilton e o nascimento da engenharia de software cr\u00edtica&quot;,&quot;link&quot;:&quot;eb-table-content-1&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Core rope memory: quando o software era tecido no hardware&quot;,&quot;text&quot;:&quot;Core rope memory: quando o software era tecido no hardware&quot;,&quot;link&quot;:&quot;core-rope-memory-quando-o-software-era-tecido-no-hardware&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Se\u00e7\u00e3o 4 \u2014 Alarmes 1201 e 1202: o software sob press\u00e3o durante o pouso da Apollo 11&quot;,&quot;text&quot;:&quot;Se\u00e7\u00e3o 4 \u2014 Alarmes 1201 e 1202: o software sob press\u00e3o durante o pouso da Apollo 11&quot;,&quot;link&quot;:&quot;eb-table-content-3&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Valida\u00e7\u00e3o, simula\u00e7\u00e3o e confian\u00e7a: como testar um sistema para um ambiente desconhecido&quot;,&quot;text&quot;:&quot;Valida\u00e7\u00e3o, simula\u00e7\u00e3o e confian\u00e7a: como testar um sistema para um ambiente desconhecido&quot;,&quot;link&quot;:&quot;eb-table-content-4&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Se\u00e7\u00e3o 6 \u2014 Conclus\u00e3o: o legado do Apollo Guidance Computer para os sistemas embarcados modernos&quot;,&quot;text&quot;:&quot;Se\u00e7\u00e3o 6 \u2014 Conclus\u00e3o: o legado do Apollo Guidance Computer para os sistemas embarcados modernos&quot;,&quot;link&quot;:&quot;eb-table-content-5&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Refer\u00eancias&quot;,&quot;text&quot;:&quot;Refer\u00eancias&quot;,&quot;link&quot;:&quot;eb-table-content-6&quot;}]" data-visible="[true,true,true,true,true,true]" data-delete-headers="[{&quot;label&quot;:&quot;Quando a escassez se transforma em engenharia&quot;,&quot;value&quot;:&quot;quando-a-escassez-se-transforma-em-engenharia&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Margaret Hamilton e o nascimento da engenharia de software cr\u00edtica&quot;,&quot;value&quot;:&quot;margaret-hamilton-e-o-nascimento-da-engenharia-de-software-cr\u00edtica&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Core rope memory: quando o software era tecido no hardware&quot;,&quot;value&quot;:&quot;core-rope-memory-quando-o-software-era-tecido-no-hardware&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Se\u00e7\u00e3o 4 \u2014 Alarmes 1201 e 1202: o software sob press\u00e3o durante o pouso da Apollo 11&quot;,&quot;value&quot;:&quot;se\u00e7\u00e3o-4-alarmes-1201-e-1202-o-software-sob-press\u00e3o-durante-o-pouso-da-apollo-11&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Valida\u00e7\u00e3o, simula\u00e7\u00e3o e confian\u00e7a: como testar um sistema para um ambiente desconhecido&quot;,&quot;value&quot;:&quot;valida\u00e7\u00e3o-simula\u00e7\u00e3o-e-confian\u00e7a-como-testar-um-sistema-para-um-ambiente-desconhecido&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Se\u00e7\u00e3o 6 \u2014 Conclus\u00e3o: o legado do Apollo Guidance Computer para os sistemas embarcados modernos&quot;,&quot;value&quot;:&quot;se\u00e7\u00e3o-6-conclus\u00e3o-o-legado-do-apollo-guidance-computer-para-os-sistemas-embarcados-modernos&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Refer\u00eancias&quot;,&quot;value&quot;:&quot;refer\u00eancias&quot;,&quot;isDelete&quot;:false}]" data-smooth="true" data-top-offset=""><div class="eb-toc__list-wrap"><ul class="eb-toc__list"><li><a href="#quando-a-escassez-se-transforma-em-engenharia">Quando a escassez se transforma em engenharia</a><li><a href="#eb-table-content-1">Margaret Hamilton e o nascimento da engenharia de software crítica</a><li><a href="#core-rope-memory-quando-o-software-era-tecido-no-hardware">Core rope memory: quando o software era tecido no hardware</a><li><a href="#eb-table-content-3">Seção 4 — Alarmes 1201 e 1202: o software sob pressão durante o pouso da Apollo 11</a><li><a href="#eb-table-content-4">Validação, simulação e confiança: como testar um sistema para um ambiente desconhecido</a><li><a href="#eb-table-content-5">Seção 6 — Conclusão: o legado do Apollo Guidance Computer para os sistemas embarcados modernos</a><li><a href="#eb-table-content-6">Referências</a></ul></div></div></div></div></div>


<p class="wp-block-paragraph">Quando pensamos na missão Apollo, é natural imaginar os foguetes Saturn V, os astronautas, os centros de controle da NASA e a imensa infraestrutura criada para levar seres humanos à Lua. Mas uma das partes mais decisivas dessa história cabia dentro da nave e operava com recursos que hoje pareceriam quase absurdos: o <strong>Apollo Guidance Computer</strong>, ou <strong>AGC</strong>, o computador de orientação usado no módulo de comando e no módulo lunar.</p>



<p class="wp-block-paragraph">O AGC não era um computador genérico. Ele era um sistema embarcado crítico, projetado para executar funções muito específicas: navegação, orientação, controle de atitude, apoio ao pouso lunar e interação com os astronautas por meio da interface chamada <strong>DSKY</strong>, sigla para <em>Display and Keyboard</em>. Essa interface permitia que os astronautas enviassem comandos numéricos ao computador usando combinações de “verbos” e “substantivos”, uma forma compacta e direta de conversar com a máquina em pleno voo. (<a href="https://en.wikipedia.org/wiki/Apollo_Guidance_Computer?utm_source=chatgpt.com" rel="noreferrer noopener" target="_blank">Wikipedia</a>)</p>



<p class="wp-block-paragraph">A limitação mais conhecida do AGC está na memória. O modelo usado nas missões Apollo possuía <strong>2.048 words de memória erasable</strong>, usada como memória regravável para dados temporários, e <strong>36.864 words de memória fixed</strong>, usada como memória permanente de programa. Essas “words” não devem ser confundidas diretamente com bytes modernos, porque a arquitetura usava palavras de 16 bits, com 15 bits úteis e 1 bit de paridade. Por isso, quando se diz de forma simplificada que o AGC tinha algo próximo de “4 KB de RAM”, estamos fazendo uma aproximação didática a partir da memória erasable. (<a href="https://en.wikipedia.org/wiki/Apollo_Guidance_Computer?utm_source=chatgpt.com" rel="noreferrer noopener" target="_blank">Wikipedia</a>)</p>



<p class="wp-block-paragraph">Essa precisão é importante porque nos impede de transformar a história em mito. O AGC não era “fraco” por incompetência tecnológica. Pelo contrário: ele era uma solução extremamente sofisticada para as restrições de sua época. Peso, consumo de energia, volume, dissipação térmica, confiabilidade e previsibilidade eram fatores tão importantes quanto capacidade de processamento. Na engenharia embarcada, esse tipo de restrição continua sendo decisivo. Sistemas embarcados normalmente precisam executar funções reais, com recursos limitados e fortes exigências de desempenho, confiabilidade, robustez e segurança.</p>



<p class="wp-block-paragraph">Na década de 1960, colocar um computador digital dentro de uma espaçonave era uma decisão ousada. Computadores ainda eram grandes, caros e, muitas vezes, tratados como equipamentos de apoio em solo. A NASA e o MIT Instrumentation Laboratory seguiram por outro caminho: levar a computação para dentro da missão. Isso significava confiar ao software decisões que afetariam diretamente a vida dos astronautas e o sucesso do pouso.</p>



<p class="wp-block-paragraph">Essa escolha mudou a história da engenharia. O software deixou de ser apenas uma sequência de instruções auxiliares e passou a fazer parte do núcleo funcional da missão. Ele precisava responder em tempo real, lidar com sensores, interpretar comandos humanos, calcular trajetórias, preservar tarefas críticas e continuar funcionando mesmo quando o sistema fosse pressionado além do esperado.</p>



<p class="wp-block-paragraph">Hoje, quando abrimos dezenas de abas no navegador, usamos frameworks pesados e tratamos memória como recurso abundante, é difícil imaginar uma equipe discutindo cada instrução como se ela tivesse peso físico. Mas no Projeto Apollo, ela tinha. Cada palavra de memória precisava ser justificada. Cada rotina precisava ter uma razão clara para existir. Cada decisão de projeto precisava equilibrar desempenho, confiabilidade e uso mínimo de recursos.</p>



<p class="wp-block-paragraph">Essa escassez não destruiu a criatividade dos engenheiros. Ela a organizou. Quando tudo é limitado, o projeto precisa ser mais claro. Quando não há espaço para desperdício, a arquitetura precisa ser mais disciplinada. Quando uma falha pode comprometer uma missão inteira, o código deixa de ser apenas funcional e passa a ser uma peça de engenharia crítica.</p>



<p class="wp-block-paragraph">Essa é uma lição muito atual para quem trabalha com microcontroladores, firmware, RTOS, bare metal, FPGA, IoT ou sistemas distribuídos em borda. Mais memória e mais processamento não garantem automaticamente sistemas melhores. Muitas vezes, eles apenas escondem decisões ruins por mais tempo. O Apollo Guidance Computer nos lembra que excelência técnica não nasce da abundância, mas da disciplina aplicada sob restrições reais.</p>



<p class="wp-block-paragraph">A pergunta que fica para nós, desenvolvedores modernos, é simples e desconfortável: se o nosso sistema tivesse apenas alguns kilobytes disponíveis para executar uma função crítica, nosso código sobreviveria?</p>



<p class="wp-block-paragraph">Na próxima seção, vamos entrar na transformação mais importante dessa história: o momento em que Margaret Hamilton e sua equipe ajudaram a mostrar que software também precisava ser tratado como engenharia.</p><p>The post <a href="https://mcu.tec.br/geral/apollo-guidance-computer-o-software-embarcado-que-levou-a-humanidade-a-lua/">Apollo Guidance Computer: o software embarcado que levou a humanidade à Lua</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1460</post-id>	</item>
		<item>
		<title>Usando JSON e cJSON em Microcontroladores</title>
		<link>https://mcu.tec.br/linguagem/c/usando-json-e-cjson-em-microcontroladores/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=usando-json-e-cjson-em-microcontroladores</link>
		
		<dc:creator><![CDATA[Carlos Delfino]]></dc:creator>
		<pubDate>Sun, 24 May 2026 22:16:00 +0000</pubDate>
				<category><![CDATA[C]]></category>
		<category><![CDATA[C++]]></category>
		<guid isPermaLink="false">https://mcu.tec.br/?p=1443</guid>

					<description><![CDATA[<p>Aprenda como usar JSON e a biblioteca cJSON em microcontroladores com linguagem C. Neste tutorial didático, mostramos como criar objetos JSON, montar hierarquias de dois níveis, trabalhar com arrays, simular sensores, enviar dados para um serviço web mock e interpretar respostas JSON recebidas do servidor. O conteúdo é genérico e pode ser adaptado para STM32, ESP32, RP2040, AVR, RISC-V, FreeRTOS, Zephyr ou projetos bare-metal. Também são apresentados cuidados essenciais com memória, validação de campos, limites de arrays e boas práticas para aplicações IoT embarcadas.</p>
<p>The post <a href="https://mcu.tec.br/linguagem/c/usando-json-e-cjson-em-microcontroladores/">Usando JSON e cJSON em Microcontroladores</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="root-eb-toc-6lmbw wp-block-essential-blocks-table-of-contents"><div class="eb-parent-wrapper eb-parent-eb-toc-6lmbw "><div class="eb-toc-container eb-toc-6lmbw  eb-toc-is-not-sticky eb-toc-not-collapsible eb-toc-initially-not-collapsed eb-toc-scrollToTop style-1 list-style-none" data-scroll-top="false" data-scroll-top-icon="fas fa-angle-up" data-collapsible="false" data-sticky-hide-mobile="false" data-sticky="false" data-scroll-target="scroll_to_toc" data-copy-link="false" data-editor-type="" data-hide-desktop="false" data-hide-tab="false" data-hide-mobile="false" data-itemcollapsed="false" data-highlight-scroll="false"><div class="eb-toc-header"><h2 class="eb-toc-title">Table of Contents</h2></div><div class="eb-toc-wrapper " data-headers="[{&quot;level&quot;:2,&quot;content&quot;:&quot;Preparando a cJSON para uso em microcontroladores&quot;,&quot;text&quot;:&quot;Preparando a cJSON para uso em microcontroladores&quot;,&quot;link&quot;:&quot;preparando-a-cjson-para-uso-em-microcontroladores&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Criando JSON com hierarquia de dois n\u00edveis&quot;,&quot;text&quot;:&quot;Criando JSON com hierarquia de dois n\u00edveis&quot;,&quot;link&quot;:&quot;eb-table-content-1&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Trabalhando com arrays em JSON usando cJSON&quot;,&quot;text&quot;:&quot;Trabalhando com arrays em JSON usando cJSON&quot;,&quot;link&quot;:&quot;trabalhando-com-arrays-em-json-usando-cjson&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;sensor_mock.h&quot;,&quot;text&quot;:&quot;sensor_mock.h&quot;,&quot;link&quot;:&quot;sensor_mockh&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;sensor_mock.c&quot;,&quot;text&quot;:&quot;sensor_mock.c&quot;,&quot;link&quot;:&quot;sensor_mockc&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;json_builder.c com array&quot;,&quot;text&quot;:&quot;json_builder.c com array&quot;,&quot;link&quot;:&quot;json_builderc-com-array&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Interpretando uma resposta JSON recebida do servidor&quot;,&quot;text&quot;:&quot;Interpretando uma resposta JSON recebida do servidor&quot;,&quot;link&quot;:&quot;interpretando-uma-resposta-json-recebida-do-servidor&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;web_mock.h&quot;,&quot;text&quot;:&quot;web_mock.h&quot;,&quot;link&quot;:&quot;web_mockh&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;web_mock.c&quot;,&quot;text&quot;:&quot;web_mock.c&quot;,&quot;link&quot;:&quot;web_mockc&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;app_config.h&quot;,&quot;text&quot;:&quot;app_config.h&quot;,&quot;link&quot;:&quot;app_configh&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;json_parser.h&quot;,&quot;text&quot;:&quot;json_parser.h&quot;,&quot;link&quot;:&quot;json_parserh&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;json_parser.c&quot;,&quot;text&quot;:&quot;json_parser.c&quot;,&quot;link&quot;:&quot;json_parserc&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;main.c&quot;,&quot;text&quot;:&quot;main.c&quot;,&quot;link&quot;:&quot;mainc&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Interpretando arrays recebidos em JSON&quot;,&quot;text&quot;:&quot;Interpretando arrays recebidos em JSON&quot;,&quot;link&quot;:&quot;interpretando-arrays-recebidos-em-json&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;app_config.h&quot;,&quot;text&quot;:&quot;app_config.h&quot;,&quot;link&quot;:&quot;app_configh&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;web_mock.c&quot;,&quot;text&quot;:&quot;web_mock.c&quot;,&quot;link&quot;:&quot;web_mockc&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;json_parser.c com leitura de array&quot;,&quot;text&quot;:&quot;json_parser.c com leitura de array&quot;,&quot;link&quot;:&quot;json_parserc-com-leitura-de-array&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;main.c&quot;,&quot;text&quot;:&quot;main.c&quot;,&quot;link&quot;:&quot;mainc&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Conclus\u00e3o&quot;,&quot;text&quot;:&quot;Conclus\u00e3o&quot;,&quot;link&quot;:&quot;eb-table-content-18&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;&quot;,&quot;text&quot;:&quot;&quot;,&quot;link&quot;:&quot;eb-table-content-19&quot;}]" data-visible="[true,true,true,true,true,true]" data-delete-headers="[{&quot;label&quot;:&quot;Preparando a cJSON para uso em microcontroladores&quot;,&quot;value&quot;:&quot;preparando-a-cjson-para-uso-em-microcontroladores&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Criando JSON com hierarquia de dois n\u00edveis&quot;,&quot;value&quot;:&quot;criando-json-com-hierarquia-de-dois-n\u00edveis&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Trabalhando com arrays em JSON usando cJSON&quot;,&quot;value&quot;:&quot;trabalhando-com-arrays-em-json-usando-cjson&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;sensor_mock.h&quot;,&quot;value&quot;:&quot;sensor_mockh&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;sensor_mock.c&quot;,&quot;value&quot;:&quot;sensor_mockc&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;json_builder.c com array&quot;,&quot;value&quot;:&quot;json_builderc-com-array&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Interpretando uma resposta JSON recebida do servidor&quot;,&quot;value&quot;:&quot;interpretando-uma-resposta-json-recebida-do-servidor&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;web_mock.h&quot;,&quot;value&quot;:&quot;web_mockh&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;web_mock.c&quot;,&quot;value&quot;:&quot;web_mockc&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;app_config.h&quot;,&quot;value&quot;:&quot;app_configh&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;json_parser.h&quot;,&quot;value&quot;:&quot;json_parserh&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;json_parser.c&quot;,&quot;value&quot;:&quot;json_parserc&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;main.c&quot;,&quot;value&quot;:&quot;mainc&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Interpretando arrays recebidos em JSON&quot;,&quot;value&quot;:&quot;interpretando-arrays-recebidos-em-json&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;app_config.h&quot;,&quot;value&quot;:&quot;app_configh&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;web_mock.c&quot;,&quot;value&quot;:&quot;web_mockc&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;json_parser.c com leitura de array&quot;,&quot;value&quot;:&quot;json_parserc-com-leitura-de-array&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;main.c&quot;,&quot;value&quot;:&quot;mainc&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Conclus\u00e3o&quot;,&quot;value&quot;:&quot;conclus\u00e3o&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;&quot;,&quot;value&quot;:&quot;&quot;,&quot;isDelete&quot;:false}]" data-smooth="true" data-top-offset=""><div class="eb-toc__list-wrap"><ul class="eb-toc__list"><li><a href="#preparando-a-cjson-para-uso-em-microcontroladores">Preparando a cJSON para uso em microcontroladores</a><li><a href="#eb-table-content-1">Criando JSON com hierarquia de dois níveis</a><li><a href="#trabalhando-com-arrays-em-json-usando-cjson">Trabalhando com arrays em JSON usando cJSON</a><ul class="eb-toc__list"><li><a href="#sensor_mockh">sensor_mock.h</a><li><a href="#sensor_mockc">sensor_mock.c</a><li><a href="#json_builderc-com-array">json_builder.c com array</a></li></ul><li><a href="#interpretando-uma-resposta-json-recebida-do-servidor">Interpretando uma resposta JSON recebida do servidor</a><ul class="eb-toc__list"><li><a href="#web_mockh">web_mock.h</a><li><a href="#web_mockc">web_mock.c</a><li><a href="#app_configh">app_config.h</a><li><a href="#json_parserh">json_parser.h</a><li><a href="#json_parserc">json_parser.c</a><li><a href="#mainc">main.c</a></li></ul><li><a href="#interpretando-arrays-recebidos-em-json">Interpretando arrays recebidos em JSON</a><ul class="eb-toc__list"><li><a href="#app_configh">app_config.h</a><li><a href="#web_mockc">web_mock.c</a><li><a href="#json_parserc-com-leitura-de-array">json_parser.c com leitura de array</a><li><a href="#mainc">main.c</a></li></ul><li><a href="#eb-table-content-18">Conclusão</a><li><a href="#eb-table-content-19"></a></ul></div></div></div></div></div>


<p class="wp-block-paragraph">JSON, sigla para <strong>JavaScript Object Notation</strong>, é um formato textual usado para representar dados estruturados. Apesar de ter nascido no ecossistema JavaScript, hoje ele é amplamente usado em APIs web, sistemas IoT, serviços REST, comunicação entre dispositivos, arquivos de configuração e troca de mensagens entre firmware e aplicações externas.</p>



<p class="wp-block-paragraph">Em microcontroladores, JSON aparece principalmente quando o dispositivo precisa conversar com algum sistema externo. Por exemplo, um ESP32 pode enviar leituras de temperatura para um servidor HTTP; um STM32 com modem 4G pode publicar dados em uma API; um RP2040 conectado a um gateway pode receber parâmetros de calibração; ou um dispositivo industrial pode gerar mensagens estruturadas para diagnóstico remoto.</p>



<p class="wp-block-paragraph">A grande vantagem do JSON é a legibilidade. Uma mensagem como esta:</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>{
  "device": "sensor-01",
  "temperature": 27.5,
  "humidity": 61.2,
  "relay": true
}
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9FF">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">  &quot;device&quot;: &quot;sensor-01&quot;,</span></span>
<span class="line"><span style="color: #D8DEE9FF">  &quot;temperature&quot;: 27.5,</span></span>
<span class="line"><span style="color: #D8DEE9FF">  &quot;humidity&quot;: 61.2,</span></span>
<span class="line"><span style="color: #D8DEE9FF">  &quot;relay&quot;: true</span></span>
<span class="line"><span style="color: #D8DEE9FF">}</span></span>
<span class="line"></span></code></pre></div>



<p class="wp-block-paragraph">é fácil de entender tanto por humanos quanto por máquinas. Isso ajuda no desenvolvimento, no teste, no debug e na integração com sistemas web. Em vez de criar um protocolo binário próprio logo no início do projeto, muitas vezes podemos começar com JSON para acelerar a prototipagem e tornar a comunicação mais clara.</p>



<p class="wp-block-paragraph">Mas existe um ponto importante: <strong>JSON não é o formato mais eficiente para microcontroladores pequenos</strong>. Ele consome mais memória que um protocolo binário, ocupa mais bytes na comunicação e exige processamento para converter texto em dados internos. Em um microcontrolador com poucos kilobytes de RAM, isso precisa ser tratado com cuidado.</p>



<p class="wp-block-paragraph">Por isso, em sistemas embarcados, usamos JSON quando a clareza, a interoperabilidade e a integração com serviços externos são mais importantes do que a máxima economia de memória. Essa é uma decisão típica de projeto embarcado: escolher uma solução que facilite a comunicação, mas sem ignorar restrições de RAM, Flash, tempo de execução e robustez. Esse cuidado está alinhado com a visão clássica de desenvolvimento embarcado em C, onde restrições de memória, desempenho, confiabilidade e custo recorrente influenciam diretamente as decisões de arquitetura.</p>



<p class="wp-block-paragraph">Neste tutorial, vamos usar a biblioteca <strong>cJSON</strong>, uma biblioteca em linguagem C para criar e interpretar documentos JSON. A ideia será manter tudo genérico, sem depender de ESP-IDF, STM32 HAL, Pico SDK, Zephyr ou FreeRTOS. Quando precisarmos simular comunicação com um servidor web, usaremos funções mock, ou seja, funções falsas que imitam o comportamento de uma API externa.</p>



<p class="wp-block-paragraph">A arquitetura básica do nosso exemplo será esta:</p>



<pre class="wp-block-code"><code>+-------------------------+
|     Aplicação MCU       |
|                         |
|  Lê sensores simulados  |
|  Monta JSON com cJSON   |
|  Envia para Web Mock    |
|  Recebe resposta JSON   |
|  Interpreta resposta    |
+-----------+-------------+
            |
            v
+-------------------------+
| Serviço Web Simulado    |
|                         |
| Recebe JSON             |
| Processa dados fake     |
| Retorna JSON            |
+-------------------------+
</code></pre>



<p class="wp-block-paragraph">Neste primeiro momento, podemos imaginar que o microcontrolador coleta dados de sensores e envia essas informações para um servidor. O servidor, por sua vez, responde com alguma configuração, como ligar ou desligar um relé, alterar o intervalo de amostragem ou informar se houve erro na requisição.</p>



<p class="wp-block-paragraph">Um exemplo de mensagem enviada pelo microcontrolador poderia ser:</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>{
  "device_id": "mcu-001",
  "temperature": 28.75,
  "voltage": 3.29,
  "uptime": 15240
}
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9FF">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">  &quot;device_id&quot;: &quot;mcu-001&quot;,</span></span>
<span class="line"><span style="color: #D8DEE9FF">  &quot;temperature&quot;: 28.75,</span></span>
<span class="line"><span style="color: #D8DEE9FF">  &quot;voltage&quot;: 3.29,</span></span>
<span class="line"><span style="color: #D8DEE9FF">  &quot;uptime&quot;: 15240</span></span>
<span class="line"><span style="color: #D8DEE9FF">}</span></span>
<span class="line"></span></code></pre></div>



<p class="wp-block-paragraph">E uma resposta simulada do servidor poderia ser:</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>{
  "status": "ok",
  "relay": true,
  "sample_interval_ms": 5000
}
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9FF">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">  &quot;status&quot;: &quot;ok&quot;,</span></span>
<span class="line"><span style="color: #D8DEE9FF">  &quot;relay&quot;: true,</span></span>
<span class="line"><span style="color: #D8DEE9FF">  &quot;sample_interval_ms&quot;: 5000</span></span>
<span class="line"><span style="color: #D8DEE9FF">}</span></span>
<span class="line"></span></code></pre></div>



<p class="wp-block-paragraph">Perceba que o JSON permite representar textos, números, valores booleanos, objetos e listas. Isso é muito útil quando queremos criar mensagens flexíveis. Porém, em firmware, devemos evitar documentos JSON muito grandes, objetos muito profundos e alocações dinâmicas descontroladas.</p>



<p class="wp-block-paragraph">Ao longo do tutorial, vamos trabalhar com quatro ideias principais: criar JSON, converter JSON para texto, interpretar JSON recebido e proteger o firmware contra erros de formato. A biblioteca cJSON facilita bastante esse processo, mas ela não elimina a responsabilidade do programador embarcado. Sempre será necessário verificar ponteiros, validar tipos, controlar tamanho de buffers e liberar memória corretamente.</p><p>The post <a href="https://mcu.tec.br/linguagem/c/usando-json-e-cjson-em-microcontroladores/">Usando JSON e cJSON em Microcontroladores</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1443</post-id>	</item>
		<item>
		<title>mDNS no ESP32 — tornando dispositivos IoT fáceis de encontrar na rede local</title>
		<link>https://mcu.tec.br/protoclos/mdns-no-esp32-tornando-dispositivos-iot-faceis-de-encontrar-na-rede-local/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mdns-no-esp32-tornando-dispositivos-iot-faceis-de-encontrar-na-rede-local</link>
		
		<dc:creator><![CDATA[Carlos Delfino]]></dc:creator>
		<pubDate>Sun, 24 May 2026 14:16:09 +0000</pubDate>
				<category><![CDATA[protocolos]]></category>
		<guid isPermaLink="false">https://mcu.tec.br/?p=1435</guid>

					<description><![CDATA[<p>Aprenda o que é mDNS, como ele funciona e como usá-lo no ESP32 com ESP-IDF para acessar dispositivos IoT por nomes como esp32-sensor.local. O artigo explica a diferença entre descoberta de host e descoberta de serviço, mostra exemplos em C com servidor HTTP, registros TXT e consultas mDNS entre dispositivos ESP32, além de apresentar boas práticas, limitações, segurança e aplicações em arquiteturas IoT locais com sensores, gateways e aplicativos clientes.</p>
<p>The post <a href="https://mcu.tec.br/protoclos/mdns-no-esp32-tornando-dispositivos-iot-faceis-de-encontrar-na-rede-local/">mDNS no ESP32 — tornando dispositivos IoT fáceis de encontrar na rede local</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></description>
										<content:encoded><![CDATA[<p class="wp-block-paragraph">Quando desenvolvemos aplicações com microcontroladores conectados à rede, como o ESP32, uma das primeiras dificuldades práticas aparece logo após o dispositivo entrar no Wi-Fi: <strong>como o usuário, o aplicativo ou outro equipamento da rede vai descobrir o endereço IP desse ESP32?</strong></p>


<div class="root-eb-toc-bj0ur wp-block-essential-blocks-table-of-contents"><div class="eb-parent-wrapper eb-parent-eb-toc-bj0ur "><div class="eb-toc-container eb-toc-bj0ur  eb-toc-is-not-sticky eb-toc-not-collapsible eb-toc-initially-not-collapsed eb-toc-scrollToTop style-1 list-style-none" data-scroll-top="false" data-scroll-top-icon="fas fa-angle-up" data-collapsible="false" data-sticky-hide-mobile="false" data-sticky="false" data-scroll-target="scroll_to_toc" data-copy-link="false" data-editor-type="" data-hide-desktop="false" data-hide-tab="false" data-hide-mobile="false" data-itemcollapsed="false" data-highlight-scroll="false"><div class="eb-toc-header"><h2 class="eb-toc-title">Table of Contents</h2></div><div class="eb-toc-wrapper " data-headers="[{&quot;level&quot;:3,&quot;content&quot;:&quot;Como o mDNS funciona internamente&quot;,&quot;text&quot;:&quot;Como o mDNS funciona internamente&quot;,&quot;link&quot;:&quot;como-o-mdns-funciona-internamente&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Preparando o ESP-IDF para usar mDNS no ESP32&quot;,&quot;text&quot;:&quot;Preparando o ESP-IDF para usar mDNS no ESP32&quot;,&quot;link&quot;:&quot;preparando-o-esp-idf-para-usar-mdns-no-esp32&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Exemplo pr\u00e1tico: ESP32 com servidor HTTP anunciado via mDNS&quot;,&quot;text&quot;:&quot;Exemplo pr\u00e1tico: ESP32 com servidor HTTP anunciado via mDNS&quot;,&quot;link&quot;:&quot;eb-table-content-2&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;ESP32 encontrado via mDNS&quot;,&quot;text&quot;:&quot;ESP32 encontrado via mDNS&quot;,&quot;link&quot;:&quot;esp32-encontrado-via-mdns&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;ESP32 encontrado via mDNS&quot;,&quot;text&quot;:&quot;ESP32 encontrado via mDNS&quot;,&quot;link&quot;:&quot;esp32-encontrado-via-mdns&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Usando registros TXT no mDNS para descrever o dispositivo&quot;,&quot;text&quot;:&quot;Usando registros TXT no mDNS para descrever o dispositivo&quot;,&quot;link&quot;:&quot;usando-registros-txt-no-mdns-para-descrever-o-dispositivo&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Se\u00e7\u00e3o 6 \u2014 Consultando servi\u00e7os mDNS a partir do pr\u00f3prio ESP32&quot;,&quot;text&quot;:&quot;Se\u00e7\u00e3o 6 \u2014 Consultando servi\u00e7os mDNS a partir do pr\u00f3prio ESP32&quot;,&quot;link&quot;:&quot;eb-table-content-6&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Arquitetura pr\u00e1tica: ESP32 sensor, ESP32 gateway e aplicativo cliente&quot;,&quot;text&quot;:&quot;Arquitetura pr\u00e1tica: ESP32 sensor, ESP32 gateway e aplicativo cliente&quot;,&quot;link&quot;:&quot;eb-table-content-7&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Boas pr\u00e1ticas e limita\u00e7\u00f5es do mDNS no ESP32&quot;,&quot;text&quot;:&quot;Boas pr\u00e1ticas e limita\u00e7\u00f5es do mDNS no ESP32&quot;,&quot;link&quot;:&quot;eb-table-content-8&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;Conclus\u00e3o&quot;,&quot;text&quot;:&quot;Conclus\u00e3o&quot;,&quot;link&quot;:&quot;eb-table-content-9&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Refer\u00eancias&quot;,&quot;text&quot;:&quot;Refer\u00eancias&quot;,&quot;link&quot;:&quot;eb-table-content-10&quot;}]" data-visible="[true,true,true,true,true,true]" data-delete-headers="[{&quot;label&quot;:&quot;Como o mDNS funciona internamente&quot;,&quot;value&quot;:&quot;como-o-mdns-funciona-internamente&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Preparando o ESP-IDF para usar mDNS no ESP32&quot;,&quot;value&quot;:&quot;preparando-o-esp-idf-para-usar-mdns-no-esp32&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Exemplo pr\u00e1tico: ESP32 com servidor HTTP anunciado via mDNS&quot;,&quot;value&quot;:&quot;exemplo-pr\u00e1tico-esp32-com-servidor-http-anunciado-via-mdns&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;ESP32 encontrado via mDNS&quot;,&quot;value&quot;:&quot;esp32-encontrado-via-mdns&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Usando registros TXT no mDNS para descrever o dispositivo&quot;,&quot;value&quot;:&quot;usando-registros-txt-no-mdns-para-descrever-o-dispositivo&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Se\u00e7\u00e3o 6 \u2014 Consultando servi\u00e7os mDNS a partir do pr\u00f3prio ESP32&quot;,&quot;value&quot;:&quot;se\u00e7\u00e3o-6-consultando-servi\u00e7os-mdns-a-partir-do-pr\u00f3prio-esp32&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Arquitetura pr\u00e1tica: ESP32 sensor, ESP32 gateway e aplicativo cliente&quot;,&quot;value&quot;:&quot;arquitetura-pr\u00e1tica-esp32-sensor-esp32-gateway-e-aplicativo-cliente&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Boas pr\u00e1ticas e limita\u00e7\u00f5es do mDNS no ESP32&quot;,&quot;value&quot;:&quot;boas-pr\u00e1ticas-e-limita\u00e7\u00f5es-do-mdns-no-esp32&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Conclus\u00e3o&quot;,&quot;value&quot;:&quot;conclus\u00e3o&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Refer\u00eancias&quot;,&quot;value&quot;:&quot;refer\u00eancias&quot;,&quot;isDelete&quot;:false}]" data-smooth="true" data-top-offset=""><div class="eb-toc__list-wrap"><ul class="eb-toc__list"><li><a href="#como-o-mdns-funciona-internamente">Como o mDNS funciona internamente</a><li><a href="#preparando-o-esp-idf-para-usar-mdns-no-esp32">Preparando o ESP-IDF para usar mDNS no ESP32</a><li><a href="#eb-table-content-2">Exemplo prático: ESP32 com servidor HTTP anunciado via mDNS</a><li><a href="#esp32-encontrado-via-mdns">ESP32 encontrado via mDNS</a><li><a href="#esp32-encontrado-via-mdns">ESP32 encontrado via mDNS</a><ul class="eb-toc__list"><li><a href="#usando-registros-txt-no-mdns-para-descrever-o-dispositivo">Usando registros TXT no mDNS para descrever o dispositivo</a><li><a href="#eb-table-content-6">Seção 6 — Consultando serviços mDNS a partir do próprio ESP32</a><li><a href="#eb-table-content-7">Arquitetura prática: ESP32 sensor, ESP32 gateway e aplicativo cliente</a><li><a href="#eb-table-content-8">Boas práticas e limitações do mDNS no ESP32</a><li><a href="#eb-table-content-9">Conclusão</a></li></ul></ul></div></div></div></div></div>


<p class="wp-block-paragraph">Em uma rede doméstica, escolar, industrial ou de laboratório, o endereço IP quase sempre é atribuído automaticamente por DHCP, ou seja, pelo roteador. Hoje o ESP32 pode receber <code>192.168.0.34</code>; amanhã, depois de reiniciar o roteador, pode receber <code>192.168.0.51</code>. Isso cria um problema simples, mas muito comum: se eu hospedo uma página web, uma API REST, um painel de configuração ou um serviço TCP dentro do ESP32, como acesso esse serviço sem ficar procurando o IP no monitor serial ou na lista de clientes do roteador?</p>



<p class="wp-block-paragraph">É aqui que entra o <strong>mDNS</strong>, sigla para <strong>Multicast DNS</strong>. Ele permite que dispositivos em uma rede local sejam encontrados por nome, sem depender de um servidor DNS tradicional. Em vez de acessar:</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>http://192.168.0.34
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9FF">http://192.168.0.34</span></span>
<span class="line"></span></code></pre></div>



<p class="wp-block-paragraph">podemos acessar algo como:</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>http://esp32-sensor.local
</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9FF">http://esp32-sensor.local</span></span>
<span class="line"></span></code></pre></div>



<p class="wp-block-paragraph">A documentação oficial da Espressif descreve o mDNS como um serviço UDP multicast usado para descoberta de hosts e serviços na rede local. Ela também destaca que, em versões atuais do ESP-IDF, o componente mDNS foi movido para um repositório separado e pode ser adicionado ao projeto com <code>idf.py add-dependency espressif/mdns</code>. (<a href="https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/protocols/mdns.html?utm_source=chatgpt.com">Espressif Systems</a>)</p>



<p class="wp-block-paragraph">No contexto de sistemas embarcados, isso é extremamente útil porque evita que o dispositivo precise ter uma interface complexa apenas para informar seu endereço IP. Um sensor ambiental, um controlador de relé, um gateway Modbus, um nó MQTT local ou um pequeno servidor HTTP embarcado podem ser encontrados diretamente por nome. Isso reduz atrito na instalação, melhora a experiência do usuário e facilita testes em bancada.</p>



<p class="wp-block-paragraph">Em termos de arquitetura embarcada, o mDNS se encaixa como uma camada de descoberta de serviço dentro da comunicação do sistema. Ele não substitui TCP, UDP, HTTP, MQTT ou WebSocket; ele apenas ajuda os outros dispositivos a descobrirem <strong>onde</strong> determinado serviço está rodando. Essa separação é importante: o mDNS resolve o problema de localização local, enquanto o protocolo da aplicação resolve o problema de troca de dados.</p>



<p class="wp-block-paragraph">Essa abordagem também conversa bem com boas práticas de projeto embarcado. Em sistemas com poucos recursos, como microcontroladores, normalmente buscamos reduzir dependências manuais, simplificar configuração e tornar o sistema mais robusto em campo. Bruce Powel Douglass destaca que sistemas embarcados costumam operar sob restrições severas de memória, processamento, custo, energia e confiabilidade, o que torna importante escolher soluções arquiteturais que otimizem o sistema sem adicionar complexidade desnecessária.</p>



<p class="wp-block-paragraph">No caso do ESP32, o uso do mDNS é especialmente interessante porque esse microcontrolador já possui conectividade Wi-Fi integrada e é muito usado em projetos IoT. Em vez de exigir que o usuário descubra o IP do dispositivo, podemos registrar um nome como <code>meu-dispositivo.local</code> e, opcionalmente, anunciar serviços como <code>_http._tcp</code>, <code>_mqtt._tcp</code> ou outro serviço local. Assim, um computador, celular ou outro nó da rede pode encontrar o dispositivo de maneira mais natural.</p>



<p class="wp-block-paragraph">Portanto, o mDNS não é apenas uma “comodidade”. Ele melhora a implantação, facilita manutenção, reduz erros humanos e torna o produto mais amigável. Em protótipos, ele acelera testes. Em produtos, ele reduz suporte técnico. Em laboratórios, ele permite trabalhar com vários dispositivos sem decorar IPs. Em sistemas distribuídos, ele pode ajudar os nós a se descobrirem localmente sem depender da internet.</p><p>The post <a href="https://mcu.tec.br/protoclos/mdns-no-esp32-tornando-dispositivos-iot-faceis-de-encontrar-na-rede-local/">mDNS no ESP32 — tornando dispositivos IoT fáceis de encontrar na rede local</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1435</post-id>	</item>
		<item>
		<title>Conversor Analógico Delta-Sigma (ΔΣ ADC)</title>
		<link>https://mcu.tec.br/algoritimos/dsp/conversor-analogico-delta-sigma-%ce%b4%cf%83-adc/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=conversor-analogico-delta-sigma-%25ce%25b4%25cf%2583-adc</link>
		
		<dc:creator><![CDATA[Carlos Delfino]]></dc:creator>
		<pubDate>Mon, 11 May 2026 16:07:50 +0000</pubDate>
				<category><![CDATA[ADC/DAC]]></category>
		<category><![CDATA[DSP]]></category>
		<guid isPermaLink="false">https://mcu.tec.br/?p=1430</guid>

					<description><![CDATA[<p>Aprenda detalhadamente como funciona o conversor analógico Delta-Sigma (ΣΔ ADC), entendendo conceitos como oversampling, noise shaping, quantização, moduladores Sigma-Delta, filtros CIC, decimação, SNR, ENOB e DSD. Veja comparações entre ADC Flash, SAR e Pipeline, além de aplicações práticas em microcontroladores, FPGAs, áudio digital, instrumentação, sensores industriais, controle de potência e sistemas embarcados modernos. Um guia técnico e didático sobre a arquitetura Sigma-Delta aplicado ao universo MCU &#038; FPGA.</p>
<p>The post <a href="https://mcu.tec.br/algoritimos/dsp/conversor-analogico-delta-sigma-%ce%b4%cf%83-adc/">Conversor Analógico Delta-Sigma (ΔΣ ADC)</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="root-eb-toc-oj5nd wp-block-essential-blocks-table-of-contents"><div class="eb-parent-wrapper eb-parent-eb-toc-oj5nd "><div class="eb-toc-container eb-toc-oj5nd  eb-toc-is-not-sticky eb-toc-not-collapsible eb-toc-initially-not-collapsed eb-toc-scrollToTop style-1 list-style-none" data-scroll-top="false" data-scroll-top-icon="fas fa-angle-up" data-collapsible="false" data-sticky-hide-mobile="false" data-sticky="false" data-scroll-target="scroll_to_toc" data-copy-link="false" data-editor-type="" data-hide-desktop="false" data-hide-tab="false" data-hide-mobile="false" data-itemcollapsed="false" data-highlight-scroll="false"><div class="eb-toc-header"><h2 class="eb-toc-title">Table of Contents</h2></div><div class="eb-toc-wrapper " data-headers="[{&quot;level&quot;:2,&quot;content&quot;:&quot;O Problema da Quantiza\u00e7\u00e3o&quot;,&quot;text&quot;:&quot;O Problema da Quantiza\u00e7\u00e3o&quot;,&quot;link&quot;:&quot;eb-table-content-0&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Superamostragem (Oversampling)&quot;,&quot;text&quot;:&quot;Superamostragem (Oversampling)&quot;,&quot;link&quot;:&quot;superamostragem-oversampling&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Estrutura Interna do Conversor Delta-Sigma&quot;,&quot;text&quot;:&quot;Estrutura Interna do Conversor Delta-Sigma&quot;,&quot;link&quot;:&quot;estrutura-interna-do-conversor-delta-sigma&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Vis\u00e3o Conceitual do Modulador&quot;,&quot;text&quot;:&quot;Vis\u00e3o Conceitual do Modulador&quot;,&quot;link&quot;:&quot;eb-table-content-3&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;O Integrador&quot;,&quot;text&quot;:&quot;O Integrador&quot;,&quot;link&quot;:&quot;o-integrador&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Quantizador de 1 Bit&quot;,&quot;text&quot;:&quot;Quantizador de 1 Bit&quot;,&quot;link&quot;:&quot;quantizador-de-1-bit&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;DAC de Realimenta\u00e7\u00e3o&quot;,&quot;text&quot;:&quot;DAC de Realimenta\u00e7\u00e3o&quot;,&quot;link&quot;:&quot;eb-table-content-6&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Fluxo de Bits (Bitstream)&quot;,&quot;text&quot;:&quot;Fluxo de Bits (Bitstream)&quot;,&quot;link&quot;:&quot;fluxo-de-bits-bitstream&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Noise Shaping&quot;,&quot;text&quot;:&quot;Noise Shaping&quot;,&quot;link&quot;:&quot;noise-shaping&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Filtro Digital de Decima\u00e7\u00e3o&quot;,&quot;text&quot;:&quot;Filtro Digital de Decima\u00e7\u00e3o&quot;,&quot;link&quot;:&quot;eb-table-content-9&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;1. Filtrar ru\u00eddo de alta frequ\u00eancia&quot;,&quot;text&quot;:&quot;1. Filtrar ru\u00eddo de alta frequ\u00eancia&quot;,&quot;link&quot;:&quot;eb-table-content-10&quot;},{&quot;level&quot;:3,&quot;content&quot;:&quot;2. Reduzir a taxa de amostragem&quot;,&quot;text&quot;:&quot;2. Reduzir a taxa de amostragem&quot;,&quot;link&quot;:&quot;2-reduzir-a-taxa-de-amostragem&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Rela\u00e7\u00e3o entre Oversampling e Resolu\u00e7\u00e3o&quot;,&quot;text&quot;:&quot;Rela\u00e7\u00e3o entre Oversampling e Resolu\u00e7\u00e3o&quot;,&quot;link&quot;:&quot;eb-table-content-12&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Ordens do Modulador&quot;,&quot;text&quot;:&quot;Ordens do Modulador&quot;,&quot;link&quot;:&quot;ordens-do-modulador&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Compara\u00e7\u00e3o entre Delta-Sigma, SAR, Flash e Pipeline ADC&quot;,&quot;text&quot;:&quot;Compara\u00e7\u00e3o entre Delta-Sigma, SAR, Flash e Pipeline ADC&quot;,&quot;link&quot;:&quot;eb-table-content-14&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;ADC Flash&quot;,&quot;text&quot;:&quot;ADC Flash&quot;,&quot;link&quot;:&quot;adc-flash&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Estrutura&quot;,&quot;text&quot;:&quot;Estrutura&quot;,&quot;link&quot;:&quot;estrutura&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Compara\u00e7\u00e3o com Delta-Sigma&quot;,&quot;text&quot;:&quot;Compara\u00e7\u00e3o com Delta-Sigma&quot;,&quot;link&quot;:&quot;eb-table-content-17&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;ADC SAR (Successive Approximation Register)&quot;,&quot;text&quot;:&quot;ADC SAR (Successive Approximation Register)&quot;,&quot;link&quot;:&quot;adc-sar-successive-approximation-register&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Funcionamento&quot;,&quot;text&quot;:&quot;Funcionamento&quot;,&quot;link&quot;:&quot;funcionamento&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Tempo de Convers\u00e3o&quot;,&quot;text&quot;:&quot;Tempo de Convers\u00e3o&quot;,&quot;link&quot;:&quot;eb-table-content-20&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Caracter\u00edsticas&quot;,&quot;text&quot;:&quot;Caracter\u00edsticas&quot;,&quot;link&quot;:&quot;eb-table-content-21&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Compara\u00e7\u00e3o com Delta-Sigma&quot;,&quot;text&quot;:&quot;Compara\u00e7\u00e3o com Delta-Sigma&quot;,&quot;link&quot;:&quot;eb-table-content-22&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;ADC Pipeline&quot;,&quot;text&quot;:&quot;ADC Pipeline&quot;,&quot;link&quot;:&quot;adc-pipeline&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Conceito&quot;,&quot;text&quot;:&quot;Conceito&quot;,&quot;link&quot;:&quot;conceito&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Caracter\u00edsticas&quot;,&quot;text&quot;:&quot;Caracter\u00edsticas&quot;,&quot;link&quot;:&quot;eb-table-content-25&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Compara\u00e7\u00e3o com Delta-Sigma&quot;,&quot;text&quot;:&quot;Compara\u00e7\u00e3o com Delta-Sigma&quot;,&quot;link&quot;:&quot;eb-table-content-26&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Por que o Delta-Sigma possui Alta Lat\u00eancia?&quot;,&quot;text&quot;:&quot;Por que o Delta-Sigma possui Alta Lat\u00eancia?&quot;,&quot;link&quot;:&quot;eb-table-content-27&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Aplica\u00e7\u00f5es Ideais para Delta-Sigma&quot;,&quot;text&quot;:&quot;Aplica\u00e7\u00f5es Ideais para Delta-Sigma&quot;,&quot;link&quot;:&quot;eb-table-content-28&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;\u00c1udio Digital&quot;,&quot;text&quot;:&quot;\u00c1udio Digital&quot;,&quot;link&quot;:&quot;eb-table-content-29&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Instrumenta\u00e7\u00e3o&quot;,&quot;text&quot;:&quot;Instrumenta\u00e7\u00e3o&quot;,&quot;link&quot;:&quot;eb-table-content-30&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Sensores de Precis\u00e3o&quot;,&quot;text&quot;:&quot;Sensores de Precis\u00e3o&quot;,&quot;link&quot;:&quot;eb-table-content-31&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Microcontroladores Modernos&quot;,&quot;text&quot;:&quot;Microcontroladores Modernos&quot;,&quot;link&quot;:&quot;microcontroladores-modernos&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Uso em FPGAs&quot;,&quot;text&quot;:&quot;Uso em FPGAs&quot;,&quot;link&quot;:&quot;uso-em-fpgas&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Moduladores Delta-Sigma de Ordens Superiores&quot;,&quot;text&quot;:&quot;Moduladores Delta-Sigma de Ordens Superiores&quot;,&quot;link&quot;:&quot;moduladores-delta-sigma-de-ordens-superiores&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Noise Shaping em Diferentes Ordens&quot;,&quot;text&quot;:&quot;Noise Shaping em Diferentes Ordens&quot;,&quot;link&quot;:&quot;noise-shaping-em-diferentes-ordens&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Primeira Ordem&quot;,&quot;text&quot;:&quot;Primeira Ordem&quot;,&quot;link&quot;:&quot;primeira-ordem&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Segunda Ordem&quot;,&quot;text&quot;:&quot;Segunda Ordem&quot;,&quot;link&quot;:&quot;segunda-ordem&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Terceira Ordem&quot;,&quot;text&quot;:&quot;Terceira Ordem&quot;,&quot;link&quot;:&quot;terceira-ordem&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Rela\u00e7\u00e3o entre Ordem e SNR&quot;,&quot;text&quot;:&quot;Rela\u00e7\u00e3o entre Ordem e SNR&quot;,&quot;link&quot;:&quot;eb-table-content-39&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Primeira ordem&quot;,&quot;text&quot;:&quot;Primeira ordem&quot;,&quot;link&quot;:&quot;primeira-ordem&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Segunda ordem&quot;,&quot;text&quot;:&quot;Segunda ordem&quot;,&quot;link&quot;:&quot;segunda-ordem&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Terceira ordem&quot;,&quot;text&quot;:&quot;Terceira ordem&quot;,&quot;link&quot;:&quot;terceira-ordem&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Problema da Estabilidade&quot;,&quot;text&quot;:&quot;Problema da Estabilidade&quot;,&quot;link&quot;:&quot;problema-da-estabilidade&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Arquitetura MASH (Multi-Stage Noise Shaping)&quot;,&quot;text&quot;:&quot;Arquitetura MASH (Multi-Stage Noise Shaping)&quot;,&quot;link&quot;:&quot;arquitetura-mash-multi-stage-noise-shaping&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Quantizadores Multi-Bit&quot;,&quot;text&quot;:&quot;Quantizadores Multi-Bit&quot;,&quot;link&quot;:&quot;quantizadores-multi-bit&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Filtros de Decima\u00e7\u00e3o&quot;,&quot;text&quot;:&quot;Filtros de Decima\u00e7\u00e3o&quot;,&quot;link&quot;:&quot;eb-table-content-46&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Filtros CIC&quot;,&quot;text&quot;:&quot;Filtros CIC&quot;,&quot;link&quot;:&quot;filtros-cic&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;ENOB (Effective Number Of Bits)&quot;,&quot;text&quot;:&quot;ENOB (Effective Number Of Bits)&quot;,&quot;link&quot;:&quot;enob-effective-number-of-bits&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;THD e SINAD&quot;,&quot;text&quot;:&quot;THD e SINAD&quot;,&quot;link&quot;:&quot;thd-e-sinad&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;THD&quot;,&quot;text&quot;:&quot;THD&quot;,&quot;link&quot;:&quot;thd&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;SINAD&quot;,&quot;text&quot;:&quot;SINAD&quot;,&quot;link&quot;:&quot;sinad&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Problema do Clock Jitter&quot;,&quot;text&quot;:&quot;Problema do Clock Jitter&quot;,&quot;link&quot;:&quot;problema-do-clock-jitter&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;\u00c1udio Hi-Fi e Delta-Sigma&quot;,&quot;text&quot;:&quot;\u00c1udio Hi-Fi e Delta-Sigma&quot;,&quot;link&quot;:&quot;eb-table-content-53&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Limita\u00e7\u00f5es Fundamentais&quot;,&quot;text&quot;:&quot;Limita\u00e7\u00f5es Fundamentais&quot;,&quot;link&quot;:&quot;eb-table-content-54&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;N\u00e3o \u00e9 ideal para sinais ultrarr\u00e1pidos&quot;,&quot;text&quot;:&quot;N\u00e3o \u00e9 ideal para sinais ultrarr\u00e1pidos&quot;,&quot;link&quot;:&quot;eb-table-content-55&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Consumo Digital&quot;,&quot;text&quot;:&quot;Consumo Digital&quot;,&quot;link&quot;:&quot;consumo-digital&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Instabilidade&quot;,&quot;text&quot;:&quot;Instabilidade&quot;,&quot;link&quot;:&quot;instabilidade&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Clock extremamente cr\u00edtico&quot;,&quot;text&quot;:&quot;Clock extremamente cr\u00edtico&quot;,&quot;link&quot;:&quot;eb-table-content-58&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Delta-Sigma em Microcontroladores, FPGA e Sistemas Embarcados&quot;,&quot;text&quot;:&quot;Delta-Sigma em Microcontroladores, FPGA e Sistemas Embarcados&quot;,&quot;link&quot;:&quot;delta-sigma-em-microcontroladores-fpga-e-sistemas-embarcados&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;ADCs Delta-Sigma em Microcontroladores&quot;,&quot;text&quot;:&quot;ADCs Delta-Sigma em Microcontroladores&quot;,&quot;link&quot;:&quot;adcs-delta-sigma-em-microcontroladores&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Por que usar Delta-Sigma em Medi\u00e7\u00e3o de Corrente?&quot;,&quot;text&quot;:&quot;Por que usar Delta-Sigma em Medi\u00e7\u00e3o de Corrente?&quot;,&quot;link&quot;:&quot;eb-table-content-61&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Moduladores Externos Sigma-Delta&quot;,&quot;text&quot;:&quot;Moduladores Externos Sigma-Delta&quot;,&quot;link&quot;:&quot;moduladores-externos-sigma-delta&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Isola\u00e7\u00e3o Galv\u00e2nica Simplificada&quot;,&quot;text&quot;:&quot;Isola\u00e7\u00e3o Galv\u00e2nica Simplificada&quot;,&quot;link&quot;:&quot;eb-table-content-63&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Exemplo Real: Controle de Inversores&quot;,&quot;text&quot;:&quot;Exemplo Real: Controle de Inversores&quot;,&quot;link&quot;:&quot;exemplo-real-controle-de-inversores&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Filtros SINC&quot;,&quot;text&quot;:&quot;Filtros SINC&quot;,&quot;link&quot;:&quot;filtros-sinc&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Delta-Sigma em FPGA&quot;,&quot;text&quot;:&quot;Delta-Sigma em FPGA&quot;,&quot;link&quot;:&quot;delta-sigma-em-fpga&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;DAC Sigma-Delta em FPGA&quot;,&quot;text&quot;:&quot;DAC Sigma-Delta em FPGA&quot;,&quot;link&quot;:&quot;dac-sigma-delta-em-fpga&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Exemplo Conceitual em Verilog&quot;,&quot;text&quot;:&quot;Exemplo Conceitual em Verilog&quot;,&quot;link&quot;:&quot;exemplo-conceitual-em-verilog&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Delta-Sigma e PWM&quot;,&quot;text&quot;:&quot;Delta-Sigma e PWM&quot;,&quot;link&quot;:&quot;delta-sigma-e-pwm&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;PWM (Pulse Width Modulation)&quot;,&quot;text&quot;:&quot;PWM (Pulse Width Modulation)&quot;,&quot;link&quot;:&quot;pwm-pulse-width-modulation&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;PDM (Pulse Density Modulation)&quot;,&quot;text&quot;:&quot;PDM (Pulse Density Modulation)&quot;,&quot;link&quot;:&quot;pdm-pulse-density-modulation&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Aplica\u00e7\u00f5es em Fontes Chaveadas&quot;,&quot;text&quot;:&quot;Aplica\u00e7\u00f5es em Fontes Chaveadas&quot;,&quot;link&quot;:&quot;eb-table-content-72&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Sensores MEMS e Sigma-Delta&quot;,&quot;text&quot;:&quot;Sensores MEMS e Sigma-Delta&quot;,&quot;link&quot;:&quot;sensores-mems-e-sigma-delta&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Conversores de \u00c1udio MEMS&quot;,&quot;text&quot;:&quot;Conversores de \u00c1udio MEMS&quot;,&quot;link&quot;:&quot;eb-table-content-74&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Rela\u00e7\u00e3o com DSP Moderno&quot;,&quot;text&quot;:&quot;Rela\u00e7\u00e3o com DSP Moderno&quot;,&quot;link&quot;:&quot;eb-table-content-75&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Fundamentos Matem\u00e1ticos do Noise Shaping&quot;,&quot;text&quot;:&quot;Fundamentos Matem\u00e1ticos do Noise Shaping&quot;,&quot;link&quot;:&quot;eb-table-content-76&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Modelo Linear do Modulador&quot;,&quot;text&quot;:&quot;Modelo Linear do Modulador&quot;,&quot;link&quot;:&quot;modelo-linear-do-modulador&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Estrutura Linearizada&quot;,&quot;text&quot;:&quot;Estrutura Linearizada&quot;,&quot;link&quot;:&quot;estrutura-linearizada&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Signal Transfer Function (STF)&quot;,&quot;text&quot;:&quot;Signal Transfer Function (STF)&quot;,&quot;link&quot;:&quot;signal-transfer-function-stf&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Noise Transfer Function (NTF)&quot;,&quot;text&quot;:&quot;Noise Transfer Function (NTF)&quot;,&quot;link&quot;:&quot;noise-transfer-function-ntf&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Interpreta\u00e7\u00e3o F\u00edsica&quot;,&quot;text&quot;:&quot;Interpreta\u00e7\u00e3o F\u00edsica&quot;,&quot;link&quot;:&quot;eb-table-content-81&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Segunda Ordem&quot;,&quot;text&quot;:&quot;Segunda Ordem&quot;,&quot;link&quot;:&quot;segunda-ordem&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Ordem Superior&quot;,&quot;text&quot;:&quot;Ordem Superior&quot;,&quot;link&quot;:&quot;ordem-superior&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Ru\u00eddo de Quantiza\u00e7\u00e3o&quot;,&quot;text&quot;:&quot;Ru\u00eddo de Quantiza\u00e7\u00e3o&quot;,&quot;link&quot;:&quot;eb-table-content-84&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Oversampling e Ru\u00eddo&quot;,&quot;text&quot;:&quot;Oversampling e Ru\u00eddo&quot;,&quot;link&quot;:&quot;eb-table-content-85&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Rela\u00e7\u00e3o com OSR&quot;,&quot;text&quot;:&quot;Rela\u00e7\u00e3o com OSR&quot;,&quot;link&quot;:&quot;eb-table-content-86&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;SNR em Delta-Sigma&quot;,&quot;text&quot;:&quot;SNR em Delta-Sigma&quot;,&quot;link&quot;:&quot;snr-em-delta-sigma&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Zero da NTF em DC&quot;,&quot;text&quot;:&quot;Zero da NTF em DC&quot;,&quot;link&quot;:&quot;zero-da-ntf-em-dc&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Rela\u00e7\u00e3o com Sistemas de Controle&quot;,&quot;text&quot;:&quot;Rela\u00e7\u00e3o com Sistemas de Controle&quot;,&quot;link&quot;:&quot;eb-table-content-89&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Idle Tones&quot;,&quot;text&quot;:&quot;Idle Tones&quot;,&quot;link&quot;:&quot;idle-tones&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Dithering&quot;,&quot;text&quot;:&quot;Dithering&quot;,&quot;link&quot;:&quot;dithering&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Estabilidade Matem\u00e1tica&quot;,&quot;text&quot;:&quot;Estabilidade Matem\u00e1tica&quot;,&quot;link&quot;:&quot;eb-table-content-92&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Rela\u00e7\u00e3o com DSP Moderno&quot;,&quot;text&quot;:&quot;Rela\u00e7\u00e3o com DSP Moderno&quot;,&quot;link&quot;:&quot;eb-table-content-93&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;DAC Delta-Sigma (\u03a3\u0394 DAC)&quot;,&quot;text&quot;:&quot;DAC Delta-Sigma (\u03a3\u0394 DAC)&quot;,&quot;link&quot;:&quot;eb-table-content-94&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Diferen\u00e7a entre DAC Tradicional e Sigma-Delta&quot;,&quot;text&quot;:&quot;Diferen\u00e7a entre DAC Tradicional e Sigma-Delta&quot;,&quot;link&quot;:&quot;eb-table-content-95&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Estrat\u00e9gia do DAC Sigma-Delta&quot;,&quot;text&quot;:&quot;Estrat\u00e9gia do DAC Sigma-Delta&quot;,&quot;link&quot;:&quot;eb-table-content-96&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Estrutura B\u00e1sica&quot;,&quot;text&quot;:&quot;Estrutura B\u00e1sica&quot;,&quot;link&quot;:&quot;eb-table-content-97&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;PCM e Oversampling&quot;,&quot;text&quot;:&quot;PCM e Oversampling&quot;,&quot;link&quot;:&quot;pcm-e-oversampling&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;&quot;,&quot;text&quot;:&quot;&quot;,&quot;link&quot;:&quot;eb-table-content-99&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Modulador Sigma-Delta no DAC&quot;,&quot;text&quot;:&quot;Modulador Sigma-Delta no DAC&quot;,&quot;link&quot;:&quot;modulador-sigma-delta-no-dac&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Sa\u00edda de 1 Bit&quot;,&quot;text&quot;:&quot;Sa\u00edda de 1 Bit&quot;,&quot;link&quot;:&quot;eb-table-content-101&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Filtro Anal\u00f3gico de Sa\u00edda&quot;,&quot;text&quot;:&quot;Filtro Anal\u00f3gico de Sa\u00edda&quot;,&quot;link&quot;:&quot;eb-table-content-102&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Grande Vantagem do DAC Sigma-Delta&quot;,&quot;text&quot;:&quot;Grande Vantagem do DAC Sigma-Delta&quot;,&quot;link&quot;:&quot;grande-vantagem-do-dac-sigma-delta&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Rela\u00e7\u00e3o com PWM&quot;,&quot;text&quot;:&quot;Rela\u00e7\u00e3o com PWM&quot;,&quot;link&quot;:&quot;eb-table-content-104&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;PWM Tradicional&quot;,&quot;text&quot;:&quot;PWM Tradicional&quot;,&quot;link&quot;:&quot;pwm-tradicional&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Sigma-Delta&quot;,&quot;text&quot;:&quot;Sigma-Delta&quot;,&quot;link&quot;:&quot;sigma-delta&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Classe D e Sigma-Delta&quot;,&quot;text&quot;:&quot;Classe D e Sigma-Delta&quot;,&quot;link&quot;:&quot;classe-d-e-sigma-delta&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;DSD (Direct Stream Digital)&quot;,&quot;text&quot;:&quot;DSD (Direct Stream Digital)&quot;,&quot;link&quot;:&quot;dsd-direct-stream-digital&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;O que \u00e9 DSD?&quot;,&quot;text&quot;:&quot;O que \u00e9 DSD?&quot;,&quot;link&quot;:&quot;eb-table-content-109&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Filosofia do DSD&quot;,&quot;text&quot;:&quot;Filosofia do DSD&quot;,&quot;link&quot;:&quot;filosofia-do-dsd&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;SACD&quot;,&quot;text&quot;:&quot;SACD&quot;,&quot;link&quot;:&quot;sacd&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Vantagens do DSD&quot;,&quot;text&quot;:&quot;Vantagens do DSD&quot;,&quot;link&quot;:&quot;vantagens-do-dsd&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Problemas do DSD&quot;,&quot;text&quot;:&quot;Problemas do DSD&quot;,&quot;link&quot;:&quot;problemas-do-dsd&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Muito ru\u00eddo ultrass\u00f4nico&quot;,&quot;text&quot;:&quot;Muito ru\u00eddo ultrass\u00f4nico&quot;,&quot;link&quot;:&quot;eb-table-content-114&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Edi\u00e7\u00e3o complexa&quot;,&quot;text&quot;:&quot;Edi\u00e7\u00e3o complexa&quot;,&quot;link&quot;:&quot;eb-table-content-115&quot;},{&quot;level&quot;:2,&quot;content&quot;:&quot;Estabilidade e filtragem&quot;,&quot;text&quot;:&quot;Estabilidade e filtragem&quot;,&quot;link&quot;:&quot;estabilidade-e-filtragem&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;DACs Multi-Bit Sigma-Delta&quot;,&quot;text&quot;:&quot;DACs Multi-Bit Sigma-Delta&quot;,&quot;link&quot;:&quot;dacs-multi-bit-sigma-delta&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;DEM (Dynamic Element Matching)&quot;,&quot;text&quot;:&quot;DEM (Dynamic Element Matching)&quot;,&quot;link&quot;:&quot;dem-dynamic-element-matching&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Sigma-Delta em RF&quot;,&quot;text&quot;:&quot;Sigma-Delta em RF&quot;,&quot;link&quot;:&quot;sigma-delta-em-rf&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;PLL Fractional-N Sigma-Delta&quot;,&quot;text&quot;:&quot;PLL Fractional-N Sigma-Delta&quot;,&quot;link&quot;:&quot;pll-fractional-n-sigma-delta&quot;},{&quot;level&quot;:1,&quot;content&quot;:&quot;Sigma-Delta e CMOS Moderno&quot;,&quot;text&quot;:&quot;Sigma-Delta e CMOS Moderno&quot;,&quot;link&quot;:&quot;sigma-delta-e-cmos-moderno&quot;}]" data-visible="[true,true,true,true,true,true]" data-delete-headers="[{&quot;label&quot;:&quot;O Problema da Quantiza\u00e7\u00e3o&quot;,&quot;value&quot;:&quot;o-problema-da-quantiza\u00e7\u00e3o&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Superamostragem (Oversampling)&quot;,&quot;value&quot;:&quot;superamostragem-oversampling&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Estrutura Interna do Conversor Delta-Sigma&quot;,&quot;value&quot;:&quot;estrutura-interna-do-conversor-delta-sigma&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Vis\u00e3o Conceitual do Modulador&quot;,&quot;value&quot;:&quot;vis\u00e3o-conceitual-do-modulador&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;O Integrador&quot;,&quot;value&quot;:&quot;o-integrador&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Quantizador de 1 Bit&quot;,&quot;value&quot;:&quot;quantizador-de-1-bit&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;DAC de Realimenta\u00e7\u00e3o&quot;,&quot;value&quot;:&quot;dac-de-realimenta\u00e7\u00e3o&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Fluxo de Bits (Bitstream)&quot;,&quot;value&quot;:&quot;fluxo-de-bits-bitstream&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Noise Shaping&quot;,&quot;value&quot;:&quot;noise-shaping&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Filtro Digital de Decima\u00e7\u00e3o&quot;,&quot;value&quot;:&quot;filtro-digital-de-decima\u00e7\u00e3o&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;1. Filtrar ru\u00eddo de alta frequ\u00eancia&quot;,&quot;value&quot;:&quot;1-filtrar-ru\u00eddo-de-alta-frequ\u00eancia&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;2. Reduzir a taxa de amostragem&quot;,&quot;value&quot;:&quot;2-reduzir-a-taxa-de-amostragem&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Rela\u00e7\u00e3o entre Oversampling e Resolu\u00e7\u00e3o&quot;,&quot;value&quot;:&quot;rela\u00e7\u00e3o-entre-oversampling-e-resolu\u00e7\u00e3o&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Ordens do Modulador&quot;,&quot;value&quot;:&quot;ordens-do-modulador&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Compara\u00e7\u00e3o entre Delta-Sigma, SAR, Flash e Pipeline ADC&quot;,&quot;value&quot;:&quot;compara\u00e7\u00e3o-entre-delta-sigma-sar-flash-e-pipeline-adc&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;ADC Flash&quot;,&quot;value&quot;:&quot;adc-flash&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Estrutura&quot;,&quot;value&quot;:&quot;estrutura&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Compara\u00e7\u00e3o com Delta-Sigma&quot;,&quot;value&quot;:&quot;compara\u00e7\u00e3o-com-delta-sigma&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;ADC SAR (Successive Approximation Register)&quot;,&quot;value&quot;:&quot;adc-sar-successive-approximation-register&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Funcionamento&quot;,&quot;value&quot;:&quot;funcionamento&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Tempo de Convers\u00e3o&quot;,&quot;value&quot;:&quot;tempo-de-convers\u00e3o&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Caracter\u00edsticas&quot;,&quot;value&quot;:&quot;caracter\u00edsticas&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Compara\u00e7\u00e3o com Delta-Sigma&quot;,&quot;value&quot;:&quot;compara\u00e7\u00e3o-com-delta-sigma&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;ADC Pipeline&quot;,&quot;value&quot;:&quot;adc-pipeline&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Conceito&quot;,&quot;value&quot;:&quot;conceito&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Caracter\u00edsticas&quot;,&quot;value&quot;:&quot;caracter\u00edsticas&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Compara\u00e7\u00e3o com Delta-Sigma&quot;,&quot;value&quot;:&quot;compara\u00e7\u00e3o-com-delta-sigma&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Por que o Delta-Sigma possui Alta Lat\u00eancia?&quot;,&quot;value&quot;:&quot;por-que-o-delta-sigma-possui-alta-lat\u00eancia&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Aplica\u00e7\u00f5es Ideais para Delta-Sigma&quot;,&quot;value&quot;:&quot;aplica\u00e7\u00f5es-ideais-para-delta-sigma&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;\u00c1udio Digital&quot;,&quot;value&quot;:&quot;\u00e1udio-digital&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Instrumenta\u00e7\u00e3o&quot;,&quot;value&quot;:&quot;instrumenta\u00e7\u00e3o&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Sensores de Precis\u00e3o&quot;,&quot;value&quot;:&quot;sensores-de-precis\u00e3o&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Microcontroladores Modernos&quot;,&quot;value&quot;:&quot;microcontroladores-modernos&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Uso em FPGAs&quot;,&quot;value&quot;:&quot;uso-em-fpgas&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Moduladores Delta-Sigma de Ordens Superiores&quot;,&quot;value&quot;:&quot;moduladores-delta-sigma-de-ordens-superiores&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Noise Shaping em Diferentes Ordens&quot;,&quot;value&quot;:&quot;noise-shaping-em-diferentes-ordens&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Primeira Ordem&quot;,&quot;value&quot;:&quot;primeira-ordem&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Segunda Ordem&quot;,&quot;value&quot;:&quot;segunda-ordem&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Terceira Ordem&quot;,&quot;value&quot;:&quot;terceira-ordem&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Rela\u00e7\u00e3o entre Ordem e SNR&quot;,&quot;value&quot;:&quot;rela\u00e7\u00e3o-entre-ordem-e-snr&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Primeira ordem&quot;,&quot;value&quot;:&quot;primeira-ordem&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Segunda ordem&quot;,&quot;value&quot;:&quot;segunda-ordem&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Terceira ordem&quot;,&quot;value&quot;:&quot;terceira-ordem&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Problema da Estabilidade&quot;,&quot;value&quot;:&quot;problema-da-estabilidade&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Arquitetura MASH (Multi-Stage Noise Shaping)&quot;,&quot;value&quot;:&quot;arquitetura-mash-multi-stage-noise-shaping&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Quantizadores Multi-Bit&quot;,&quot;value&quot;:&quot;quantizadores-multi-bit&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Filtros de Decima\u00e7\u00e3o&quot;,&quot;value&quot;:&quot;filtros-de-decima\u00e7\u00e3o&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Filtros CIC&quot;,&quot;value&quot;:&quot;filtros-cic&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;ENOB (Effective Number Of Bits)&quot;,&quot;value&quot;:&quot;enob-effective-number-of-bits&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;THD e SINAD&quot;,&quot;value&quot;:&quot;thd-e-sinad&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;THD&quot;,&quot;value&quot;:&quot;thd&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;SINAD&quot;,&quot;value&quot;:&quot;sinad&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Problema do Clock Jitter&quot;,&quot;value&quot;:&quot;problema-do-clock-jitter&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;\u00c1udio Hi-Fi e Delta-Sigma&quot;,&quot;value&quot;:&quot;\u00e1udio-hi-fi-e-delta-sigma&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Limita\u00e7\u00f5es Fundamentais&quot;,&quot;value&quot;:&quot;limita\u00e7\u00f5es-fundamentais&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;N\u00e3o \u00e9 ideal para sinais ultrarr\u00e1pidos&quot;,&quot;value&quot;:&quot;n\u00e3o-\u00e9-ideal-para-sinais-ultrarr\u00e1pidos&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Consumo Digital&quot;,&quot;value&quot;:&quot;consumo-digital&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Instabilidade&quot;,&quot;value&quot;:&quot;instabilidade&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Clock extremamente cr\u00edtico&quot;,&quot;value&quot;:&quot;clock-extremamente-cr\u00edtico&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Delta-Sigma em Microcontroladores, FPGA e Sistemas Embarcados&quot;,&quot;value&quot;:&quot;delta-sigma-em-microcontroladores-fpga-e-sistemas-embarcados&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;ADCs Delta-Sigma em Microcontroladores&quot;,&quot;value&quot;:&quot;adcs-delta-sigma-em-microcontroladores&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Por que usar Delta-Sigma em Medi\u00e7\u00e3o de Corrente?&quot;,&quot;value&quot;:&quot;por-que-usar-delta-sigma-em-medi\u00e7\u00e3o-de-corrente&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Moduladores Externos Sigma-Delta&quot;,&quot;value&quot;:&quot;moduladores-externos-sigma-delta&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Isola\u00e7\u00e3o Galv\u00e2nica Simplificada&quot;,&quot;value&quot;:&quot;isola\u00e7\u00e3o-galv\u00e2nica-simplificada&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Exemplo Real: Controle de Inversores&quot;,&quot;value&quot;:&quot;exemplo-real-controle-de-inversores&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Filtros SINC&quot;,&quot;value&quot;:&quot;filtros-sinc&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Delta-Sigma em FPGA&quot;,&quot;value&quot;:&quot;delta-sigma-em-fpga&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;DAC Sigma-Delta em FPGA&quot;,&quot;value&quot;:&quot;dac-sigma-delta-em-fpga&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Exemplo Conceitual em Verilog&quot;,&quot;value&quot;:&quot;exemplo-conceitual-em-verilog&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Delta-Sigma e PWM&quot;,&quot;value&quot;:&quot;delta-sigma-e-pwm&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;PWM (Pulse Width Modulation)&quot;,&quot;value&quot;:&quot;pwm-pulse-width-modulation&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;PDM (Pulse Density Modulation)&quot;,&quot;value&quot;:&quot;pdm-pulse-density-modulation&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Aplica\u00e7\u00f5es em Fontes Chaveadas&quot;,&quot;value&quot;:&quot;aplica\u00e7\u00f5es-em-fontes-chaveadas&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Sensores MEMS e Sigma-Delta&quot;,&quot;value&quot;:&quot;sensores-mems-e-sigma-delta&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Conversores de \u00c1udio MEMS&quot;,&quot;value&quot;:&quot;conversores-de-\u00e1udio-mems&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Rela\u00e7\u00e3o com DSP Moderno&quot;,&quot;value&quot;:&quot;rela\u00e7\u00e3o-com-dsp-moderno&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Fundamentos Matem\u00e1ticos do Noise Shaping&quot;,&quot;value&quot;:&quot;fundamentos-matem\u00e1ticos-do-noise-shaping&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Modelo Linear do Modulador&quot;,&quot;value&quot;:&quot;modelo-linear-do-modulador&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Estrutura Linearizada&quot;,&quot;value&quot;:&quot;estrutura-linearizada&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Signal Transfer Function (STF)&quot;,&quot;value&quot;:&quot;signal-transfer-function-stf&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Noise Transfer Function (NTF)&quot;,&quot;value&quot;:&quot;noise-transfer-function-ntf&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Interpreta\u00e7\u00e3o F\u00edsica&quot;,&quot;value&quot;:&quot;interpreta\u00e7\u00e3o-f\u00edsica&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Segunda Ordem&quot;,&quot;value&quot;:&quot;segunda-ordem&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Ordem Superior&quot;,&quot;value&quot;:&quot;ordem-superior&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Ru\u00eddo de Quantiza\u00e7\u00e3o&quot;,&quot;value&quot;:&quot;ru\u00eddo-de-quantiza\u00e7\u00e3o&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Oversampling e Ru\u00eddo&quot;,&quot;value&quot;:&quot;oversampling-e-ru\u00eddo&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Rela\u00e7\u00e3o com OSR&quot;,&quot;value&quot;:&quot;rela\u00e7\u00e3o-com-osr&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;SNR em Delta-Sigma&quot;,&quot;value&quot;:&quot;snr-em-delta-sigma&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Zero da NTF em DC&quot;,&quot;value&quot;:&quot;zero-da-ntf-em-dc&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Rela\u00e7\u00e3o com Sistemas de Controle&quot;,&quot;value&quot;:&quot;rela\u00e7\u00e3o-com-sistemas-de-controle&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Idle Tones&quot;,&quot;value&quot;:&quot;idle-tones&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Dithering&quot;,&quot;value&quot;:&quot;dithering&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Estabilidade Matem\u00e1tica&quot;,&quot;value&quot;:&quot;estabilidade-matem\u00e1tica&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Rela\u00e7\u00e3o com DSP Moderno&quot;,&quot;value&quot;:&quot;rela\u00e7\u00e3o-com-dsp-moderno&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;DAC Delta-Sigma (\u03a3\u0394 DAC)&quot;,&quot;value&quot;:&quot;dac-delta-sigma-\u03c3\u03b4-dac&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Diferen\u00e7a entre DAC Tradicional e Sigma-Delta&quot;,&quot;value&quot;:&quot;diferen\u00e7a-entre-dac-tradicional-e-sigma-delta&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Estrat\u00e9gia do DAC Sigma-Delta&quot;,&quot;value&quot;:&quot;estrat\u00e9gia-do-dac-sigma-delta&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Estrutura B\u00e1sica&quot;,&quot;value&quot;:&quot;estrutura-b\u00e1sica&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;PCM e Oversampling&quot;,&quot;value&quot;:&quot;pcm-e-oversampling&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;&quot;,&quot;value&quot;:&quot;&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Modulador Sigma-Delta no DAC&quot;,&quot;value&quot;:&quot;modulador-sigma-delta-no-dac&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Sa\u00edda de 1 Bit&quot;,&quot;value&quot;:&quot;sa\u00edda-de-1-bit&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Filtro Anal\u00f3gico de Sa\u00edda&quot;,&quot;value&quot;:&quot;filtro-anal\u00f3gico-de-sa\u00edda&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Grande Vantagem do DAC Sigma-Delta&quot;,&quot;value&quot;:&quot;grande-vantagem-do-dac-sigma-delta&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Rela\u00e7\u00e3o com PWM&quot;,&quot;value&quot;:&quot;rela\u00e7\u00e3o-com-pwm&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;PWM Tradicional&quot;,&quot;value&quot;:&quot;pwm-tradicional&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Sigma-Delta&quot;,&quot;value&quot;:&quot;sigma-delta&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Classe D e Sigma-Delta&quot;,&quot;value&quot;:&quot;classe-d-e-sigma-delta&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;DSD (Direct Stream Digital)&quot;,&quot;value&quot;:&quot;dsd-direct-stream-digital&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;O que \u00e9 DSD?&quot;,&quot;value&quot;:&quot;o-que-\u00e9-dsd&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Filosofia do DSD&quot;,&quot;value&quot;:&quot;filosofia-do-dsd&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;SACD&quot;,&quot;value&quot;:&quot;sacd&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Vantagens do DSD&quot;,&quot;value&quot;:&quot;vantagens-do-dsd&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Problemas do DSD&quot;,&quot;value&quot;:&quot;problemas-do-dsd&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Muito ru\u00eddo ultrass\u00f4nico&quot;,&quot;value&quot;:&quot;muito-ru\u00eddo-ultrass\u00f4nico&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Edi\u00e7\u00e3o complexa&quot;,&quot;value&quot;:&quot;edi\u00e7\u00e3o-complexa&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Estabilidade e filtragem&quot;,&quot;value&quot;:&quot;estabilidade-e-filtragem&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;DACs Multi-Bit Sigma-Delta&quot;,&quot;value&quot;:&quot;dacs-multi-bit-sigma-delta&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;DEM (Dynamic Element Matching)&quot;,&quot;value&quot;:&quot;dem-dynamic-element-matching&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Sigma-Delta em RF&quot;,&quot;value&quot;:&quot;sigma-delta-em-rf&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;PLL Fractional-N Sigma-Delta&quot;,&quot;value&quot;:&quot;pll-fractional-n-sigma-delta&quot;,&quot;isDelete&quot;:false},{&quot;label&quot;:&quot;Sigma-Delta e CMOS Moderno&quot;,&quot;value&quot;:&quot;sigma-delta-e-cmos-moderno&quot;,&quot;isDelete&quot;:false}]" data-smooth="true" data-top-offset=""><div class="eb-toc__list-wrap"><ul class="eb-toc__list"><li><a href="#eb-table-content-0">O Problema da Quantização</a><li><a href="#superamostragem-oversampling">Superamostragem (Oversampling)</a><li><a href="#estrutura-interna-do-conversor-delta-sigma">Estrutura Interna do Conversor Delta-Sigma</a><ul class="eb-toc__list"><li><a href="#eb-table-content-3">Visão Conceitual do Modulador</a><li><a href="#o-integrador">O Integrador</a><li><a href="#quantizador-de-1-bit">Quantizador de 1 Bit</a><li><a href="#eb-table-content-6">DAC de Realimentação</a><li><a href="#fluxo-de-bits-bitstream">Fluxo de Bits (Bitstream)</a><li><a href="#noise-shaping">Noise Shaping</a><li><a href="#eb-table-content-9">Filtro Digital de Decimação</a><ul class="eb-toc__list"><li><a href="#eb-table-content-10">1. Filtrar ruído de alta frequência</a><li><a href="#2-reduzir-a-taxa-de-amostragem">2. Reduzir a taxa de amostragem</a></li></ul><li><a href="#eb-table-content-12">Relação entre Oversampling e Resolução</a><li><a href="#ordens-do-modulador">Ordens do Modulador</a></li></ul><li><a href="#eb-table-content-14">Comparação entre Delta-Sigma, SAR, Flash e Pipeline ADC</a><li><a href="#adc-flash">ADC Flash</a><ul class="eb-toc__list"><li><a href="#estrutura">Estrutura</a><li><a href="#eb-table-content-17">Comparação com Delta-Sigma</a></li></ul><li><a href="#adc-sar-successive-approximation-register">ADC SAR (Successive Approximation Register)</a><ul class="eb-toc__list"><li><a href="#funcionamento">Funcionamento</a><li><a href="#eb-table-content-20">Tempo de Conversão</a><li><a href="#eb-table-content-21">Características</a><li><a href="#eb-table-content-22">Comparação com Delta-Sigma</a></li></ul><li><a href="#adc-pipeline">ADC Pipeline</a><ul class="eb-toc__list"><li><a href="#conceito">Conceito</a><li><a href="#eb-table-content-25">Características</a><li><a href="#eb-table-content-26">Comparação com Delta-Sigma</a></li></ul><li><a href="#eb-table-content-27">Por que o Delta-Sigma possui Alta Latência?</a><li><a href="#eb-table-content-28">Aplicações Ideais para Delta-Sigma</a><ul class="eb-toc__list"><li><a href="#eb-table-content-29">Áudio Digital</a></li></ul><li><a href="#eb-table-content-30">Instrumentação</a><li><a href="#eb-table-content-31">Sensores de Precisão</a><li><a href="#microcontroladores-modernos">Microcontroladores Modernos</a><li><a href="#uso-em-fpgas">Uso em FPGAs</a><li><a href="#moduladores-delta-sigma-de-ordens-superiores">Moduladores Delta-Sigma de Ordens Superiores</a><li><a href="#noise-shaping-em-diferentes-ordens">Noise Shaping em Diferentes Ordens</a><ul class="eb-toc__list"><li><a href="#primeira-ordem">Primeira Ordem</a><li><a href="#segunda-ordem">Segunda Ordem</a><li><a href="#terceira-ordem">Terceira Ordem</a></li></ul><li><a href="#eb-table-content-39">Relação entre Ordem e SNR</a><ul class="eb-toc__list"><li><a href="#primeira-ordem">Primeira ordem</a><li><a href="#segunda-ordem">Segunda ordem</a><li><a href="#terceira-ordem">Terceira ordem</a></li></ul><li><a href="#problema-da-estabilidade">Problema da Estabilidade</a><li><a href="#arquitetura-mash-multi-stage-noise-shaping">Arquitetura MASH (Multi-Stage Noise Shaping)</a><li><a href="#quantizadores-multi-bit">Quantizadores Multi-Bit</a><li><a href="#eb-table-content-46">Filtros de Decimação</a><li><a href="#filtros-cic">Filtros CIC</a><li><a href="#enob-effective-number-of-bits">ENOB (Effective Number Of Bits)</a><li><a href="#thd-e-sinad">THD e SINAD</a><ul class="eb-toc__list"><li><a href="#thd">THD</a><li><a href="#sinad">SINAD</a></li></ul><li><a href="#problema-do-clock-jitter">Problema do Clock Jitter</a><li><a href="#eb-table-content-53">Áudio Hi-Fi e Delta-Sigma</a><li><a href="#eb-table-content-54">Limitações Fundamentais</a><ul class="eb-toc__list"><li><a href="#eb-table-content-55">Não é ideal para sinais ultrarrápidos</a><li><a href="#consumo-digital">Consumo Digital</a><li><a href="#instabilidade">Instabilidade</a><li><a href="#eb-table-content-58">Clock extremamente crítico</a></li></ul><li><a href="#delta-sigma-em-microcontroladores-fpga-e-sistemas-embarcados">Delta-Sigma em Microcontroladores, FPGA e Sistemas Embarcados</a><li><a href="#adcs-delta-sigma-em-microcontroladores">ADCs Delta-Sigma em Microcontroladores</a><li><a href="#eb-table-content-61">Por que usar Delta-Sigma em Medição de Corrente?</a><li><a href="#moduladores-externos-sigma-delta">Moduladores Externos Sigma-Delta</a><li><a href="#eb-table-content-63">Isolação Galvânica Simplificada</a><li><a href="#exemplo-real-controle-de-inversores">Exemplo Real: Controle de Inversores</a><li><a href="#filtros-sinc">Filtros SINC</a><li><a href="#delta-sigma-em-fpga">Delta-Sigma em FPGA</a><li><a href="#dac-sigma-delta-em-fpga">DAC Sigma-Delta em FPGA</a><li><a href="#exemplo-conceitual-em-verilog">Exemplo Conceitual em Verilog</a><li><a href="#delta-sigma-e-pwm">Delta-Sigma e PWM</a><li><a href="#pwm-pulse-width-modulation">PWM (Pulse Width Modulation)</a><li><a href="#pdm-pulse-density-modulation">PDM (Pulse Density Modulation)</a><li><a href="#eb-table-content-72">Aplicações em Fontes Chaveadas</a><li><a href="#sensores-mems-e-sigma-delta">Sensores MEMS e Sigma-Delta</a><li><a href="#eb-table-content-74">Conversores de Áudio MEMS</a><li><a href="#eb-table-content-75">Relação com DSP Moderno</a><li><a href="#eb-table-content-76">Fundamentos Matemáticos do Noise Shaping</a><li><a href="#modelo-linear-do-modulador">Modelo Linear do Modulador</a><li><a href="#estrutura-linearizada">Estrutura Linearizada</a><li><a href="#signal-transfer-function-stf">Signal Transfer Function (STF)</a><li><a href="#noise-transfer-function-ntf">Noise Transfer Function (NTF)</a><li><a href="#eb-table-content-81">Interpretação Física</a><li><a href="#segunda-ordem">Segunda Ordem</a><li><a href="#ordem-superior">Ordem Superior</a><li><a href="#eb-table-content-84">Ruído de Quantização</a><li><a href="#eb-table-content-85">Oversampling e Ruído</a><li><a href="#eb-table-content-86">Relação com OSR</a><li><a href="#snr-em-delta-sigma">SNR em Delta-Sigma</a><li><a href="#zero-da-ntf-em-dc">Zero da NTF em DC</a><li><a href="#eb-table-content-89">Relação com Sistemas de Controle</a><li><a href="#idle-tones">Idle Tones</a><li><a href="#dithering">Dithering</a><li><a href="#eb-table-content-92">Estabilidade Matemática</a><li><a href="#eb-table-content-93">Relação com DSP Moderno</a><li><a href="#eb-table-content-94">DAC Delta-Sigma (ΣΔ DAC)</a><li><a href="#eb-table-content-95">Diferença entre DAC Tradicional e Sigma-Delta</a><li><a href="#eb-table-content-96">Estratégia do DAC Sigma-Delta</a><li><a href="#eb-table-content-97">Estrutura Básica</a><li><a href="#pcm-e-oversampling">PCM e Oversampling</a><li><a href="#eb-table-content-99"></a><li><a href="#modulador-sigma-delta-no-dac">Modulador Sigma-Delta no DAC</a><li><a href="#eb-table-content-101">Saída de 1 Bit</a><li><a href="#eb-table-content-102">Filtro Analógico de Saída</a><li><a href="#grande-vantagem-do-dac-sigma-delta">Grande Vantagem do DAC Sigma-Delta</a><li><a href="#eb-table-content-104">Relação com PWM</a><li><a href="#pwm-tradicional">PWM Tradicional</a><li><a href="#sigma-delta">Sigma-Delta</a><li><a href="#classe-d-e-sigma-delta">Classe D e Sigma-Delta</a><li><a href="#dsd-direct-stream-digital">DSD (Direct Stream Digital)</a><li><a href="#eb-table-content-109">O que é DSD?</a><li><a href="#filosofia-do-dsd">Filosofia do DSD</a><li><a href="#sacd">SACD</a><li><a href="#vantagens-do-dsd">Vantagens do DSD</a><li><a href="#problemas-do-dsd">Problemas do DSD</a><ul class="eb-toc__list"><li><a href="#eb-table-content-114">Muito ruído ultrassônico</a><li><a href="#eb-table-content-115">Edição complexa</a><li><a href="#estabilidade-e-filtragem">Estabilidade e filtragem</a></li></ul><li><a href="#dacs-multi-bit-sigma-delta">DACs Multi-Bit Sigma-Delta</a><li><a href="#dem-dynamic-element-matching">DEM (Dynamic Element Matching)</a><li><a href="#sigma-delta-em-rf">Sigma-Delta em RF</a><li><a href="#pll-fractional-n-sigma-delta">PLL Fractional-N Sigma-Delta</a><li><a href="#sigma-delta-e-cmos-moderno">Sigma-Delta e CMOS Moderno</a></ul></div></div></div></div></div>


<p class="wp-block-paragraph">Os conversores analógico-digitais do tipo Delta-Sigma, também chamados de Sigma-Delta (ΣΔ), representam uma das arquiteturas de conversão mais importantes da eletrônica moderna, especialmente em aplicações que exigem alta resolução, excelente imunidade a ruído e grande precisão. Eles são amplamente utilizados em instrumentos de medição, sistemas de áudio digital, sensores industriais, balanças eletrônicas, sistemas biomédicos, aquisição de sinais lentos e equipamentos científicos.</p>



<p class="wp-block-paragraph">Diferentemente de arquiteturas clássicas como Flash ADC, SAR (Successive Approximation Register) ou Pipeline ADC, o conversor Delta-Sigma não tenta converter instantaneamente o valor analógico em um número digital final. Em vez disso, ele utiliza uma estratégia baseada em superamostragem (oversampling), modelagem espectral de ruído (noise shaping) e filtragem digital para reconstruir o sinal com elevada precisão.</p>



<p class="wp-block-paragraph">O surgimento dessa arquitetura está diretamente ligado às limitações físicas dos conversores tradicionais. Em sistemas de alta resolução, aumentar a precisão usando apenas comparadores extremamente precisos torna-se caro, complexo e energeticamente ineficiente. O Delta-Sigma contorna esse problema utilizando princípios matemáticos e temporais para deslocar o ruído de quantização para frequências mais altas, permitindo removê-lo posteriormente através de filtros digitais.</p>



<p class="wp-block-paragraph">Uma das razões do enorme sucesso dos ADCs Delta-Sigma é que eles combinam:</p>



<ul class="wp-block-list">
<li>Alta resolução (16, 24 e até 32 bits efetivos em aplicações específicas)</li>



<li>Excelente linearidade</li>



<li>Forte rejeição a ruídos</li>



<li>Baixo custo relativo em CMOS moderno</li>



<li>Grande integração digital</li>
</ul>



<p class="wp-block-paragraph">Isso explica por que praticamente todo codec de áudio moderno, muitos sensores MEMS e diversos instrumentos industriais utilizam essa arquitetura.</p>



<p class="wp-block-paragraph">Além disso, a evolução dos microcontroladores e FPGAs tornou o estudo dos conversores Delta-Sigma ainda mais relevante. Muitos microcontroladores modernos já possuem ADCs Sigma-Delta integrados, enquanto FPGAs frequentemente implementam moduladores Delta-Sigma em aplicações de aquisição de sinais, áudio e controle de potência.</p>



<p class="wp-block-paragraph">Antes de entender profundamente o funcionamento interno do conversor Delta-Sigma, é importante compreender um conceito fundamental: o processo de amostragem e o problema do ruído de quantização.</p>



<h2 class="wp-block-heading">O Problema da Quantização</h2>



<p class="wp-block-paragraph">Todo conversor analógico-digital precisa transformar uma grandeza contínua em um conjunto discreto de valores binários. Esse processo inevitavelmente introduz um erro chamado erro de quantização.</p>



<p class="wp-block-paragraph">Imagine um sinal analógico variando continuamente entre 0V e 3,3V. Um ADC de baixa resolução possui poucos níveis possíveis para representar esse sinal. Assim, o valor real do sinal precisa ser arredondado para o nível digital mais próximo.</p>



<p class="wp-block-paragraph">Por exemplo, um ADC de 3 bits possui apenas:</p>



<p class="wp-block-paragraph">2^3 = 8</p>



<p class="wp-block-paragraph">níveis possíveis de quantização.</p>



<p class="wp-block-paragraph">Se o intervalo for de 0V até 3,3V, então cada degrau representará aproximadamente:</p>



<p class="wp-block-paragraph">\[\frac{3.3V}{8} \approx 0.4125V\]



<p class="wp-block-paragraph">Isso significa que pequenas variações menores que aproximadamente 412 mV simplesmente desaparecem na conversão.</p>



<p class="wp-block-paragraph">O erro introduzido pela diferença entre o valor analógico real e o valor digital representado é chamado ruído de quantização.</p>



<p class="wp-block-paragraph">Em arquiteturas tradicionais, esse ruído está distribuído aproximadamente de forma uniforme ao longo do espectro de frequência. O grande diferencial do Delta-Sigma é justamente modificar essa distribuição espectral do ruído, empurrando-o para regiões de frequência onde ele pode ser removido digitalmente.</p>



<p class="wp-block-paragraph">Em outras palavras:</p>



<ul class="wp-block-list">
<li>O ruído não desaparece</li>



<li>O conversor reorganiza onde ele aparece no espectro</li>
</ul>



<p class="wp-block-paragraph">Esse conceito é chamado de Noise Shaping (Modelagem de Ruído), sendo um dos pilares matemáticos do conversor Delta-Sigma.</p>



<h2 class="wp-block-heading">Superamostragem (Oversampling)</h2>



<p class="wp-block-paragraph">Outro conceito essencial no Delta-Sigma é a superamostragem.</p>



<p class="wp-block-paragraph">Um ADC convencional normalmente amostra próximo da frequência mínima necessária definida pelo Teorema de Nyquist:</p>



<p class="wp-block-paragraph">f_s \geq 2f_{max}</p>



<p class="wp-block-paragraph">Já o Delta-Sigma trabalha com frequências de amostragem extremamente maiores que a banda útil do sinal.</p>



<p class="wp-block-paragraph">Por exemplo:</p>



<ul class="wp-block-list">
<li>Áudio de 20 kHz</li>



<li>ADC operando em vários MHz</li>
</ul>



<p class="wp-block-paragraph">Essa superamostragem traz duas vantagens fundamentais:</p>



<ol class="wp-block-list">
<li>O ruído de quantização é espalhado em uma faixa espectral muito maior</li>



<li>O filtro digital posterior consegue remover boa parte desse ruído</li>
</ol>



<p class="wp-block-paragraph">Combinando:</p>



<ul class="wp-block-list">
<li>Oversampling</li>



<li>Noise shaping</li>



<li>Filtragem digital</li>
</ul>



<p class="wp-block-paragraph">o conversor Delta-Sigma consegue atingir resoluções extremamente elevadas usando hardware analógico relativamente simples.</p>



<p class="wp-block-paragraph">Na próxima seção veremos a estrutura interna do modulador Delta-Sigma, incluindo:</p>



<ul class="wp-block-list">
<li>Integrador</li>



<li>Comparador</li>



<li>Realimentação (feedback)</li>



<li>DAC interno</li>



<li>Fluxo de bits do modulador</li>



<li>Funcionamento temporal do laço Sigma-Delta</li>



<li>Papel do filtro digital de decimação</li>
</ul>



<p class="wp-block-paragraph">Além disso, começaremos a comparar formalmente essa arquitetura com ADCs SAR, Flash e Pipeline.</p><p>The post <a href="https://mcu.tec.br/algoritimos/dsp/conversor-analogico-delta-sigma-%ce%b4%cf%83-adc/">Conversor Analógico Delta-Sigma (ΔΣ ADC)</a> first appeared on <a href="https://mcu.tec.br">MCU & FPGA</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1430</post-id>	</item>
	</channel>
</rss>
