import Header from "@/components/Header"; import Footer from "@/components/Footer"; import BookCover from "@/components/BookCover"; import CodeSample from "@/components/CodeSample"; import Link from "next/link"; import { jsonLd, paginaMeta, SITE } from "@/lib/seo"; import { ArrowRight, ArrowUpRight, BookOpen, Cpu, Gauge, Radio, ShieldCheck, Terminal, Wifi, } from "lucide-react"; export const metadata = paginaMeta({ titulo: "Microcontroladores ESP32, o livro", descricao: "Conheça o livro Microcontroladores ESP32: conectividade, eficiência e desempenho. 12 partes e 78 capítulos em português sobre arquitetura, energia, rádio, periféricos e firmware.", caminho: "/livro", keywords: [ "livro ESP32", "Microcontroladores ESP32", "livro de ESP32 em português", "Lucas Rayan Guerra", "Ciência Embarcada", ], }); const CHAPTERS = [ { title: "O ecossistema ESP32", desc: "Como as famílias se organizam, o que muda entre Xtensa e RISC-V e por que a escolha do chip começa pelo problema.", topics: ["Famílias e sufixos", "Critérios de escolha", "Ferramentas de apoio"], icon: Cpu, }, { title: "Arquitetura e memória", desc: "Núcleos, caches, SRAM, PSRAM e o caminho entre o código em flash e a execução em alta velocidade.", topics: ["Mapa de memória", "PSRAM na prática", "Caches e latência"], icon: Gauge, }, { title: "Energia e autonomia", desc: "Os modos de sono, o custo real do rádio e as decisões de hardware que definem a vida útil da bateria.", topics: ["Deep sleep", "Domínios de energia", "Orçamento de consumo"], icon: Gauge, }, { title: "Conectividade", desc: "Wi-Fi, BLE, Thread, Zigbee e Matter: o que cada rádio resolve e onde a arquitetura começa a pesar.", topics: ["Wi-Fi 6 e TWT", "BLE e malhas", "Matter e 802.15.4"], icon: Radio, }, { title: "Periféricos e pinagem", desc: "GPIO, ADC, I2S, USB, MIPI e as restrições que só aparecem quando o hardware já está na placa.", topics: ["Pinos de strapping", "ADC e rádio", "USB nativo"], icon: Wifi, }, { title: "Do protótipo ao produto", desc: "Firmware, partições, OTA, segurança e os cuidados de engenharia que sobrevivem ao primeiro deploy.", topics: ["ESP-IDF e Arduino", "OTA e rollback", "Secure boot"], icon: ShieldCheck, }, ]; const ESP_IDF = `#include "driver/gpio.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" #define LED GPIO_NUM_2 void app_main(void) { gpio_reset_pin(LED); gpio_set_direction(LED, GPIO_MODE_OUTPUT); while (1) { gpio_set_level(LED, 1); vTaskDelay(pdMS_TO_TICKS(500)); gpio_set_level(LED, 0); vTaskDelay(pdMS_TO_TICKS(500)); } }`; const ARDUINO = `#include const char *ssid = "SUA_REDE"; const char *senha = "SUA_SENHA"; void setup() { Serial.begin(115200); WiFi.begin(ssid, senha); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(WiFi.localIP()); } void loop() {}`; const DEEP_SLEEP = `#include "esp_sleep.h" #include "esp_log.h" void app_main(void) { uint64_t intervalo_us = 30ULL * 1000000ULL; esp_sleep_enable_timer_wakeup(intervalo_us); ESP_LOGI("energia", "dormindo por 30 segundos"); esp_deep_sleep_start(); }`; const FACTS = [ ["Idioma", "Português"], ["Partes", "12"], ["Capítulos", "78"], ["Digital", "Amazon Kindle"], ["Impresso", "UICLAP"], ["ISBN", SITE.livroIsbn], ]; export default function LivroPage() { return (