1"use strict";(self.webpackChunkFranzininho=self.webpackChunkFranzininho||[]).push([[1676],{66016:(i,o,n)=>{n.r(o),n.d(o,{assets:()=>c,contentTitle:()=>s,default:()=>h,frontMatter:()=>a,metadata:()=>d,toc:()=>t});var e=n(17624),r=n(4552);const a={id:"franzininho-wifi-wokwi-intro",title:"Como simular a Franzininho WiFi no Wokwi",sidebar_label:"Wokwi",slug:"/franzininho-wifi/wokwi/primeiros-passos",description:"Aprenda a usar o Wokwi para simular e prototipar projetos com a Franzininho WiFi, configurando diferentes plataformas como Arduino, CircuitPython e ESP-IDF."},s=void 0,d={id:"FranzininhoWifi/wokwi/franzininho-wifi-wokwi-intro",title:"Como simular a Franzininho WiFi no Wokwi",description:"Aprenda a usar o Wokwi para simular e prototipar projetos com a Franzininho WiFi, configurando diferentes plataformas como Arduino, CircuitPython e ESP-IDF.",source:"@site/docs/FranzininhoWifi/wokwi/franzininho-wifi-wokwi.md",sourceDirName:"FranzininhoWifi/wokwi",slug:"/franzininho-wifi/wokwi/primeiros-passos",permalink:"/docs/franzininho-wifi/wokwi/primeiros-passos",draft:!1,unlisted:!1,editUrl:"https://github.com/Franzininho/docs-franzininho-site/edit/main/docs/FranzininhoWifi/wokwi/franzininho-wifi-wokwi.md",tags:[],version:"current",frontMatter:{id:"franzininho-wifi-wokwi-intro",title:"Como simular a Franzininho WiFi no Wokwi",sidebar_label:"Wokwi",slug:"/franzininho-wifi/wokwi/primeiros-passos",description:"Aprenda a usar o Wokwi para simular e prototipar projetos com a Franzininho WiFi, configurando diferentes plataformas como Arduino, CircuitPython e ESP-IDF."},sidebar:"docs",previous:{title:"Placa Franzininho WiFi",permalink:"/docs/franzininho-wifi/franzininho-wifi"},next:{title:"Primeiros Passos com ESP-IDF",permalink:"/docs/franzininho-wifi/exemplos-espidf/primeiros-passos"}},c={},t=[{value:"Configurando a Plataforma de Compila\xe7\xe3o",id:"configurando-a-plataforma-de-compila\xe7\xe3o",level:2},{value:"Arduino",id:"arduino",level:3},{value:"CircuitPython",id:"circuitpython",level:3},{value:"ESP-IDF",id:"esp-idf",level:3},{value:"Saiba mais",id:"saiba-mais",level:2},{value:"Exemplos no simulador",id:"exemplos-no-simulador",level:2},{value:"Arduino",id:"arduino-1",level:3},{value:"CircuitPython",id:"circuitpython-1",level:3},{value:"ESP-IDF",id:"esp-idf-1",level:3}];function l(i){const o={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.M)(),...i.components};return(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)(o.p,{children:"Wokwi \xe9 um simulador de eletr\xf4nica online. Voc\xea pode us\xe1-lo para simular Arduino, ESP32 e muitas outras placas, componentes e sensores populares. Foi desenvolvido para makers, por makers."}),"\n",(0,e.jsx)(o.p,{children:"A Franzininho WiFi \xe9 baseada no chip ESP32-S2 da Espressif, e o Wokwi oferece suporte completo a ela. Voc\xea pode usar o simulador para aprender a program\xe1-la, criar prot\xf3tipos de suas ideias e compartilhar seus projetos com outros makers \u2014 sem precisar de hardware f\xedsico."}),"\n",(0,e.jsx)("div",{style:{textAlign:"center"},children:(0,e.jsx)(o.p,{children:(0,e.jsx)(o.a,{href:"https://wokwi.com/projects/new/franzininho-wifi",children:(0,e.jsx)(o.img,{alt:"Wokwi Franzininho WiFi",src:n(48472).c+"",width:"243",height:"96"})})})}),"\n",(0,e.jsx)(o.admonition,{title:"Dica",type:"tip",children:(0,e.jsx)(o.p,{children:"Use o Template do Franzininho WiFi clicando na imagem acima para come\xe7ar um novo projeto no Wokwi."})}),"\n",(0,e.jsx)(o.h2,{id:"configurando-a-plataforma-de-compila\xe7\xe3o",children:"Configurando a Plataforma de Compila\xe7\xe3o"}),"\n",(0,e.jsx)(o.p,{children:"Um projeto no Wokwi \xe9 composto por dois elementos:"}),"\n",(0,e.jsxs)(o.ul,{children:["\n",(0,e.jsxs)(o.li,{children:[(0,e.jsx)(o.strong,{children:(0,e.jsx)(o.code,{children:"diagram.json"})})," \u2014 descreve o circuito (placa, componentes e conex\xf5es)"]}),"\n",(0,e.jsxs)(o.li,{children:[(0,e.jsx)(o.strong,{children:"Arquivos de c\xf3digo"})," \u2014 determinam a plataforma usada (Arduino, CircuitPython ou ESP-IDF)"]}),"\n"]}),"\n",(0,e.jsxs)(o.p,{children:["O ",(0,e.jsx)(o.code,{children:"diagram.json"})," \xe9 o ponto de partida de qualquer projeto. Para a Franzininho WiFi, ele deve conter o componente ",(0,e.jsx)(o.code,{children:"board-franzininho-wifi"}),":"]}),"\n",(0,e.jsx)(o.pre,{children:(0,e.jsx)(o.code,{className:"language-json",children:'{\n "version": 1,\n "author": "Seu Nome",\n "editor": "wokwi",\n "parts": [\n {\n "type": "board-franzininho-wifi",\n "id": "franzininho",\n "top": 0,\n "left": 0,\n "attrs": {}\n }
1\n ],\n "connections": [],\n "dependencies": {}\n}\n'})}),"\n",(0,e.jsx)(o.p,{children:"A plataforma \xe9 identificada pelo Wokwi com base no arquivo de c\xf3digo adicionado ao projeto:"}),"\n",(0,e.jsxs)(o.table,{children:[(0,e.jsx)(o.thead,{children:(0,e.jsxs)(o.tr,{children:[(0,e.jsx)(o.th,{children:"Plataforma"}),(0,e.jsx)(o.th,{children:"Arquivo principal"})]})}),(0,e.jsxs)(o.tbody,{children:[(0,e.jsxs)(o.tr,{children:[(0,e.jsx)(o.td,{children:"Arduino"}),(0,e.jsx)(o.td,{children:(0,e.jsx)(o.code,{children:"sketch.ino"})})]}),(0,e.jsxs)(o.tr,{children:[(0,e.jsx)(o.td,{children:"CircuitPython"}),(0,e.jsx)(o.td,{children:(0,e.jsx)(o.code,{children:"code.py"})})]}),(0,e.jsxs)(o.tr,{children:[(0,e.jsx)(o.td,{children:"ESP-IDF"}),(0,e.jsx)(o.td,{children:(0,e.jsx)(o.code,{children:"main.c"})})]})]})]}),"\n",(0,e.jsxs)(o.p,{children:["Para adicionar um arquivo ao projeto no Wokwi, clique no \xedcone ",(0,e.jsx)(o.strong,{children:"+"})," na aba de arquivos do editor e informe o nome do arquivo conforme a tabela acima."]}),"\n",(0,e.jsx)(o.h3,{id:"arduino",children:"Arduino"}),"\n",(0,e.jsxs)(o.p,{children:["O framework Arduino \xe9 a op\xe7\xe3o mais acess\xedvel para iniciantes. O c\xf3digo \xe9 escrito em C++ com as abstra\xe7\xf5es do Arduino (",(0,e.jsx)(o.code,{children:"setup()"})," e ",(0,e.jsx)(o.code,{children:"loop()"}),")."]}),"\n",(0,e.jsxs)(o.p,{children:["Adicione um arquivo chamado ",(0,e.jsx)(o.code,{children:"sketch.ino"})," com o conte\xfado m\xednimo:"]}),"\n",(0,e.jsx)(o.pre,{children:(0,e.jsx)(o.code,{className:"language-cpp",children:'void setup() {\n Serial.begin(115200);\n}\n\nvoid loop() {\n Serial.println("Ol\xe1, Franzininho WiFi!");\n delay(1000);\n}\n'})}),"\n",(0,e.jsx)(o.p,{children:"Todas as bibliotecas compat\xedveis com ESP32/ESP32-S2 no Arduino IDE tamb\xe9m est\xe3o dispon\xedveis no simulador."}),"\n",(0,e.jsx)(o.h3,{id:"circuitpython",children:"CircuitPython"}),"\n",(0,e.jsx)(o.p,{children:"O CircuitPython \xe9 uma vers\xe3o do Python mantida pela Adafruit, voltada para prototipagem r\xe1pida. O c\xf3digo \xe9 interpretado diretamente \u2014 n\xe3o h\xe1 etapa de compila\xe7\xe3o."}),"\n",(0,e.jsxs)(o.p,{children:["Adicione um arquivo chamado ",(0,e.jsx)(o.code,{children:"code.py"})," com o conte\xfado m\xednimo:"]}),"\n",(0,e.jsx)(o.pre,{children:(0,e.jsx)(o.code,{className:"language-python",children:'import time\n\nwhile True:\n print("Ol\xe1, Franzininho WiFi!")\n time.sleep(1)\n'})}),"\n",(0,e.jsx)(o.admonition,{type:"info",children:(0,e.jsxs)(o.p,{children:["No CircuitPython, o arquivo obrigatoriamente deve se chamar ",(0,e.jsx)(o.code,{children:"code.py"}),". Outros nomes n\xe3o ser\xe3o reconhecidos como ponto de entrada."]})}),"\n",(0,e.jsx)(o.h3,{id:"esp-idf",children:"ESP-IDF"}),"\n",(0,e.jsx)(o.p,{children:"O ESP-IDF (Espressif IoT Development Framework) \xe9 o framework nativo da Espressif para chips ESP32. Oferece acesso completo ao hardware e \xe9 indicado para projetos que exigem maior controle, desempenho ou uso direto do FreeRTOS."}),"\n",(0,e.jsxs)(o.p,{children:["Adicione um arquivo chamado ",(0,e.jsx)(o.code,{children:"main.c"})," com o conte\xfado m\xednimo:"]}),"\n",(0,e.jsx)(o.pre,{children:(0,e.jsx)(o.code,{className:"language-c",children:'#include <stdio.h>\n#include "freertos/FreeRTOS.h"\n#include "freertos/task.h"\n\nvoid app_main(void) {\n while (1) {\n printf("Ol\xe1, Franzininho WiFi!\\n");\n vTaskDelay(pdMS_TO_TICKS(1000));\n }\n}\n'})}),"\n",(0,e.jsx)(o.admonition,{title:"Dica",type:"tip",children:(0,e.jsx)(o.p,{children:"Se voc\xea est\xe1 come\xe7ando, use o Arduino. Se j\xe1 tem experi\xeancia com ESP32 e precisa de recursos avan\xe7ados como FreeRTOS, drivers nativos ou otimiza\xe7\xe3o de mem\xf3ria, o ESP-IDF \xe9 a escolha ideal."})}),"\n",(0,e.jsx)(o.h2,{id:"saiba-mais",children:"Saiba mais"}),"\n",(0,e.jsx)(o.p,{children:(0,e.jsx)(o.a,{href:"https://docs.wokwi.com/parts/board-franzininho-wifi",children:"Documenta\xe7\xe3o da Franzininho WiFi no WokWi"})}),"\n",(0,e.jsxs)(o.p,{children:["Caso queira saber mais sobre outras funcionalidades do simulador, d\xea uma olhada na lista abaixo. Voc\xea pode tamb\xe9m consultar a ",(0,e.jsx)(o.a,{href:"https://docs.wokwi.com/",children:"documenta\xe7\xe3o do Wokwi"})," para refer\xeancias completas sobre componentes e diagramas."]}),"\n",(0,e.jsxs)(o.ul,{children:["\n",(0,e.jsx)(o.li,{children:(0,e.jsx)(o.a,{href:"https://docs.wokwi.com/diagram-format",children:"Formato do diagram.json"})}),"\n",(0,e.jsx)(o.li,{children:(0,e.jsx)(o.a,{href:"https://docs.wokwi.com/keyboard-shortcuts",children:"Teclas de Atalho do Editor"})}),"\n",(0,e.jsx)(o.li,{children:(0,e.jsx)(o.a,{href:"https://docs.wokwi.com/guides/serial-monitor",children:"O Monitor Serial"})}),"\n",(0,e.jsx)(o.li,{children:(0,e.jsx)(o.a,{href:"https://docs.wokwi.com/gdb-debugging",children:"Usando o GDB no Wokwi"})}),"\n",(0,e.jsx)(o.li,{children:(0,e.jsx)(o.a,{href:"https://docs.wokwi.com/guides/logic-analyzer",children:"Guia do Analisador L\xf3gico"})}),"\n",(0,e.jsx)(o.li,{children:(0,e.jsx)(o.a,{href:"https://docs.wokwi.com/guides/libraries",children:"Trabalhando com Bibliotecas"})}),"\n",(0,e.jsx)(o.li,{children:(0,e.jsx)(o.a,{href:"https://docs.wokwi.com/guides/esp32",children:"Simulador ESP32"})}),"\n",(0,e.jsx)(o.li,{children:(0,e.jsx)(o.a,{href:"https://docs.wokwi.com/guides/esp32-wifi",children:"Rede WiFi ESP32"})}),"\n"]}),"\n",(0,e.jsx)(o.h2,{id:"exemplos-no-simulador",children:"Exemplos no simulador"}),"\n",(0,e.jsx)(o.h3,{id:"arduino-1",children:"Arduino"}),"\n",(0,e.jsxs)(o.ul,{children:["\n",(0,e.jsx)(o.li,{children:(0,e.jsx)(o.a,{href:"https://wokwi.com/projects/323796775459619410",children:"Rel\xf3gio LCD com cliente (NTP)"})}),"\n",(0,e.jsx)(o.li,{children:(0,e.jsx)(o.a,{href:"https://wokwi.com/projects/327061759288410708",children:"Controle de servo motor"})}),"\n",(0,e.jsx)(o.li,{children:(0,e.jsx)(o.a,{href:"https://wokwi.com/projects/324682033130373716",children:"Misturador de LED RGB (usando 3 potenci\xf4metros)"})}),"\n",(0,e.jsx)(o.li,{children:(0,e.jsx)(o.a,{href:"https://wokwi.com/projects/329013233501340242",children:"Display TFT ILI9341"})}),"\n",(0,e.jsx)(o.li,{children:(0,e.jsx)(o.a,{href:"https://wokwi.com/projects/322524997423727188",children:"MQTT"})}),"\n",(0,e.jsx)(o.li,{children:(0,e.jsx)(o.a,{href:"https://wokwi.com/projects/323043284024820308",children:"NTP"})}),"\n"]}),"\n",(0,e.jsx)(o.h3,{id:"circuitpython-1",children:"CircuitPython"}),"\n",(0,e.jsxs)(o.ul,{children:["\n",(0,e.jsx)(o.li,{children:(0,e.jsx)(o.a,{href:"https://wokwi.com/projects/313606939786347074",children:"Blink com CircuitPython"})}),"\n"]}),"\n",(0,e.jsx)(o.h3,{id:"esp-idf-1",children:"ESP-IDF"}),"\n",(0,e.jsxs)(o.ul,{children:["\n",(0,e.jsx)(o.li,{children:(0,e.jsx)(o.a,{href:"https://wokwi.com/projects/324615433106752083",children:"Entrada anal\xf3gica e sa\xedda PWM com ESP-IDF"})}),"\n",(0,e.jsx)(o.li,{children:(0,e.jsx)(o.a,{href:"https://wokwi.com/projects/324613550740865619",children:"FreeRTOS Tasks"})}),"\n",(0,e.jsx)(o.li,{children:(0,e.jsx)(o.a,{href:"https://wokwi.com/projects/329133882849886804",children:"PWM ESP-IDF"})}),"\n"]})]})}function h(i={}){const{wrapper:o}={...(0,r.M)(),...i.components};return o?(0,e.jsx)(o,{...i,children:(0,e.jsx)(l,{...i})}):l(i)}},48472:(i,o,n)=>{n.d(o,{c:()=>e});const e=n.p+"assets/images/franzininho-wifi-board-b801f9fce63884679d7c579b276a16ab.svg"},4552:(i,o,n)=>{n.d(o,{I:()=>d,M:()=>s});var e=n(11504);const r={},a=e.createContext(r);function s(i){const o=e.useContext(a);return e.useMemo((function(){return"function"==typeof i?i(o):{...o,...i}}),[o,i])}function d(i){let o;return o=i.disableParentContext?"function"==typeof i.components?i.components(r):i.components||r:s(i.components),e.createElement(a.Provider,{value:o},i.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.