{"id":86,"date":"2024-01-24T16:34:17","date_gmt":"2024-01-24T19:34:17","guid":{"rendered":"https:\/\/novelli.eti.br\/site_novelli\/?p=86"},"modified":"2024-04-29T18:19:16","modified_gmt":"2024-04-29T21:19:16","slug":"openwrt-como-plataforma-wireless-para-projetinhos","status":"publish","type":"post","link":"https:\/\/novelli.eti.br\/site_novelli\/openwrt-como-plataforma-wireless-para-projetinhos\/","title":{"rendered":"OpenWRT como plataforma wireless para projetinhos"},"content":{"rendered":"\n<p>Ol\u00e1!<\/p>\n\n\n\n<p>Como estou de f\u00e9rias posso tirar o atraso nos projetinhos que tenho tocado, e um deles \u00e9 uma demonstra\u00e7\u00e3o de como um simples roteador WiFi pode se transformar numa excelente plataforma wireless para eletr\u00f4nica!<\/p>\n\n\n\n<p>A id\u00e9ia:<br>&nbsp; &nbsp;<br>&nbsp;&nbsp;&nbsp; Outro dia, na hora do almo\u00e7o, eu e meu amigo Guto, &#8211; que tamb\u00e9m gosta de eletr\u00f4nica e j\u00e1 \u00e9 formado em Eng. El\u00e9trica &#8211; est\u00e1vamos conversando sobre formas de se implementar um controle remoto de baixo custo, capaz de suprir as necessidades b\u00e1sicas de qualquer projetinho. Analizamos diversas op\u00e7\u00f5es, desde shields p\/ arduino, chips ethernet embutidos em MCU&#8217;s Microchip, mini placas x86 (ALIX PcEngines), avr32 (NGW100), etc, etc&#8230; Em um dado momento conversamos sobre a possibilidade de se utilizar um modem ou roteador wireless qualquer que pudesse rodar linux, foi quando o Guto comentou que ele j\u00e1 havia feito alguns testes e que o resultado era satisfat\u00f3rio. Pronto! nao preciso falar mais nada! Comecei a ca\u00e7ar um modelo que pudesse rodar linux. Acabei comprando um modelo da TP-Link WR1043ND por indica\u00e7\u00e3o do pr\u00f3prio Guto (valeu cara!) e mergulhei de cabe\u00e7a na &#8216;Fu\u00e7ada&#8217;.<\/p>\n\n\n\n<p>Especifica\u00e7\u00f5es do router (<a href=\"http:\/\/wiki.openwrt.org\/toh\/tp-link\/tl-wr1043nd#hardware.highlights\">tiradas do site do OpenWrt<\/a>)<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>CPU<\/strong><\/td><td><strong>Ram<\/strong><\/td><td><strong>Flash<\/strong><\/td><td><strong>Network<\/strong><\/td><td><strong>Gigabit<\/strong><\/td><td><strong>USB<\/strong><\/td><td><strong>Serial<\/strong><\/td><td><strong>JTag<\/strong><\/td><\/tr><tr><td>Atheros AR9132@400MHz<\/td><td>32MB<\/td><td>8MB<\/td><td>4&#215;1<\/td><td>Sim<\/td><td>Sim<\/td><td>Sim (interna)<\/td><td>SIM<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Confesso que n\u00e3o perd\u00ed muito tempo na firmware original que veio com ele, e acabei usando-a apenas para executar o procedimento de instala\u00e7\u00e3o (<a href=\"http:\/\/wiki.openwrt.org\/toh\/tp-link\/tl-wr1043nd#oem.easy.installation\">que pode ser acessado aqui<\/a>). Gostei muito do OpenWRT, boota muito r\u00e1pido, \u00e9 extremamente customiz\u00e1vel e possui um gerenciador de pacotes muito legal, o opkg. \u00c9 com ele que iremos instalar os drivers da placa de rede sem fio do Router.<\/p>\n\n\n\n<p>Instalando os drivers wlan no router:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Fa\u00e7a o router acessar a internet via cabo. Para isto existem diversos m\u00e9todos, o mais comum \u00e9 colocar a interface wan dele para adquirir um IP automaticamente e pluga-lo em uma porta livre no seu switch, ou entao compartilhar a conex\u00e3o do seu laptop roteando a placa Lan para a rede wireless. Nao vou entrar nos detalhes no momento mas nao se preocupe que isto \u00e9 muito simples e se voce nunca fez, est\u00e1 cheio de exemplos na internet.<\/p>\n\n\n\n<p>\u00a0\u00a0\u00a0 Com o router acessando a internet, rode os comandos abaixo:<\/p>\n\n\n\n<p class=\"has-vivid-green-cyan-color has-text-color has-link-color wp-elements-5e43a9fb13bc52953ca2727cc102d5a5\"><br>\u00a0\u00a0\u00a0 #opkg update<br>\u00a0\u00a0\u00a0 #opkg install kmod-ath9k wpad-mini<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Ap\u00f3s isto, reinicie o router e voce ter\u00e1 a parte de wireless funcionando.<\/p>\n\n\n\n<p>Preparando o ambiente:<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Uma das coisas mais legais que o OpenWRT tem \u00e9 o gerenciador de pacotes opkg (j\u00e1 falei disso, n\u00e9?), ele permite voce instalar diversos pacotes j\u00e1 compilados para a plataforma mips, poupando muito trabalho para por o seu projeto em andamento. Uma das primeiras coisas que instalei foi o Python, que ser\u00e1 a base para a comunica\u00e7\u00e3o com meus projetos.<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Pra come\u00e7ar, \u00e9 importante ficar claro que a mem\u00f3ria interna de qualquer equipamento deste tipo \u00e9 bem limitada, este foi um dos motivos que levei em conta ao escolher um modelo com porta USB, pois com ela e um pendrive, eu posso expandir o storage interno dele para colocar mais coisas legais \ud83d\ude42 .<br>&nbsp; &nbsp;<br>&nbsp;&nbsp;&nbsp; EPA! como fazer isso ?<\/p>\n\n\n\n<p>\u00a0\u00a0\u00a0 Bem, para isso nao tinha muita receita de bolo pronta na net, entao, seguem os passos que eu executei:<br>\u00a0 \u00a0<br>\u00a0\u00a0\u00a0 1 &#8211; Instalar suporte para Mass Storage USB<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Esta parte foi relativamente simples, com o router acessando a net, execute os comandos abaixo:<\/p>\n\n\n\n<p class=\"has-vivid-green-cyan-color has-text-color has-link-color wp-elements-9314cac476f34636dc65559b4bdfb0d2\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#opkg update<br>\u00a0\u00a0\u00a0\u00a0\u00a0 #opkg install kmod-usb-core kmod-usb-uhci kmod-usb-storage<\/p>\n\n\n\n<p>\u00a0\u00a0\u00a0 2 &#8211; Instalar drivers USB 2.0<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Para isto, execute:<\/p>\n\n\n\n<p class=\"has-vivid-green-cyan-color has-text-color has-link-color wp-elements-ef6e8dccead6965e1e3e1d6c958aa845\"><br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0#opkg install kmod-usb2<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; 3 &#8211; Instalar o suporte ao sistema de aqrquivos ext2<\/p>\n\n\n\n<p class=\"has-vivid-green-cyan-color has-text-color has-link-color wp-elements-e24bdd46bdfd3096f71fb879eba0c482\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#opkg install kmod-fs-ext2<\/p>\n\n\n\n<p>Com estes passos, espete um pendrive na porta USB e verifique as mensagens do kernel e procure por uma linha parecida com esta:<\/p>\n\n\n\n<p><br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <em>scsi 0:0:0:0: Direct-Access\u00a0\u00a0\u00a0\u00a0 Kingston DT 101 II\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 PMAP PQ: 0 ANSI: 0 CCS<\/em><br>\u00a0\u00a0\u00a0 <\/p>\n\n\n\n<p>Isto significa que seu pendrive foi reconhecido com sucesso e est\u00e1 pronto para uso, bastando format\u00e1-lo em padrao Linux EXT2 e mont\u00e1-lo no caminho desejado.<br>\u00a0 \u00a0<\/p>\n\n\n\n<p>OK, at\u00e9 o momento temos o router com um storage aumentado, agora vamos configurar o opkg para usar este espa\u00e7o para instar os pacotes. Para isto, edite o arquivo localizado em \/etc\/opkg.conf, que dever\u00e1 se parecer com isto:<\/p>\n\n\n\n<p class=\"has-vivid-cyan-blue-color has-text-color has-link-color wp-elements-8455b20442d46a8176437db58ea382cd\">&nbsp;&nbsp;&nbsp; src\/gz packages&nbsp;<a href=\"http:\/\/downloads.openwrt.org\/backfire\/10.03\/ar71xx\/packages\">http:\/\/downloads.openwrt.org\/backfire\/10.03\/ar71xx\/packages<\/a><br>&nbsp;&nbsp;&nbsp; dest root \/<br>&nbsp;&nbsp;&nbsp; dest ram \/tmp<br>&nbsp;&nbsp;&nbsp; lists_dir ext \/var\/opkg-lists<br>&nbsp;&nbsp;&nbsp; option overlay_root \/overlay<\/p>\n\n\n\n<p>&nbsp; Adicione um novo destino, no meu caso, o pendrive est\u00e1 montado em \/mnt e vou chamar o destino de usb:<\/p>\n\n\n\n<p class=\"has-vivid-cyan-blue-color has-text-color has-link-color wp-elements-3d821d0bcc911badf66302e77120b835\">\u00a0\u00a0\u00a0\u00a0src\/gz packages\u00a0<a href=\"http:\/\/downloads.openwrt.org\/backfire\/10.03\/ar71xx\/packages\">http:\/\/downloads.openwrt.org\/backfire\/10.03\/ar71xx\/packages<\/a><br>\u00a0\u00a0\u00a0 dest root \/<br>\u00a0\u00a0\u00a0 dest ram \/tmp<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 dest usb \/mnt<br>\u00a0\u00a0\u00a0 lists_dir ext \/var\/opkg-lists<br>\u00a0\u00a0\u00a0 option overlay_root \/overlay<\/p>\n\n\n\n<p><br>\u00a0\u00a0\u00a0 A primeira linha \u00e9 a declara\u00e7\u00e3o do reposit\u00f3rio de onde o opkg vai baixar os pacotes, note que o final da URL pode variar de acordo com o modelo\/plataforma de seu device e a vers\u00e3o do seu OpenWRT.<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Prontinho, agora temos o opkg configurado para usar o espa\u00e7o externo como path de instala\u00e7\u00e3o. Para us\u00e1-lo voce precisa especificar o destino, da seguinte forma:<\/p>\n\n\n\n<p class=\"has-vivid-green-cyan-color has-text-color has-link-color wp-elements-9a95b1f172f43ca7879ad6e655e585cc\">&nbsp;&nbsp;&nbsp;&nbsp;#opkg install -d usb &lt;nomedopacote&gt;<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Agora que temos o opkg como destino dos pacotes, vamos para a pr\u00f3xima parte, que \u00e9 a instala\u00e7\u00e3o do python.<\/p>\n\n\n\n<p>Instalando o python no OpenWRT<br>&nbsp; &nbsp;<br>&nbsp;&nbsp;&nbsp; Aqui cabe uma observa\u00e7\u00e3o, pelo que eu fucei, existem dois tipos de pacotes que instalam o python, um \u00e9 o python-mini que \u00e9 uma vers\u00e3o light do python, e at\u00e9 cabe na memoria interna do router, por\u00e9m, faltam diversas libs, como por exemplo as libs de porta serial. At\u00e9 daria para copiar as libs pra dentro do router conforme for sendo necess\u00e1rio, mas \u00e9 um saco ficar fazendo isso, e como temos espa\u00e7o de sobra agora, vamos logo colocar o python completo!<\/p>\n\n\n\n<p class=\"has-vivid-green-cyan-color has-text-color has-link-color wp-elements-6e3c9b8a0e9ddeb4b722e0e5b10e7c91\">&nbsp;&nbsp;&nbsp;&nbsp;#opkg update<br>&nbsp;&nbsp;&nbsp; #opkg install -d usb python<\/p>\n\n\n\n<p>\u00a0\u00a0\u00a0 Prontinho, python instalado!\u00a0 Agora, para fazer o python se comunicar com o mundo exterior, vamos instalar os drivers do conversor USB\/Serial.<\/p>\n\n\n\n<p>Instalando os drivers do PL2303 no OpenWRT<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Este procedimento \u00e9 super dificil de ser feito, coisa que voce ainda nunca viu antes \ud83d\ude1b<\/p>\n\n\n\n<p class=\"has-vivid-green-cyan-color has-text-color has-link-color wp-elements-385c62dd00f409eb48b1810ebd3751dc\">&nbsp;&nbsp;&nbsp;&nbsp;#opkg update<br>&nbsp;&nbsp;&nbsp; #opkg install kmod-usb-serial kmod-usb-serial-pl2303<\/p>\n\n\n\n<p>\u00a0\u00a0\u00a0 Agora espete um conversor USB\/Serial com chip prolific pl2303 e verifique nas mensagens do kernel se aparece algo assim:<\/p>\n\n\n\n<p class=\"has-vivid-cyan-blue-color has-text-color has-link-color wp-elements-16b675a149078e634f5ff45089ae4b89\"><br>\u00a0\u00a0\u00a0 USB Serial support registered for pl2303<br>\u00a0 pl2303 1-1.2:1.0: pl2303 converter detected<br>\u00a0 usb 1-1.2: pl2303 converter now attached to ttyUSB0<br>\u00a0 usbcore: registered new interface driver pl2303<br>\u00a0 pl2303: Prolific PL2303 USB to serial adaptor driver<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Pronto, voce tem uma porta serial adicional ao seu router! para us\u00e1-la junto com o pendrive, basta plugar um HUB USB2.0 (uso um de 4 portas sem alimenta\u00e7\u00e3o externa).<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Mas pera\u00ed! Na tabelinha logo acima j\u00e1 diz que existe uma porta serial nesse cara! como \u00e9 isso ?<\/p>\n\n\n\n<p>&nbsp;&nbsp;&nbsp; Bem, existe sim, mas nao \u00e9 muito bom us\u00e1-la para automa\u00e7\u00e3o\/comunica\u00e7\u00e3o, ela \u00e9 uma porta de console, com ela voce pode acessar a shell do router, como num terminal serial de um servidor unix. O pr\u00f3ximo passo mostra como usa-la.<\/p>\n\n\n\n<p><strong>Console serial para o WR1043ND<\/strong><br>\u00a0 \u00a0<br>\u00a0\u00a0\u00a0 Dentro do router existe uma porta serial com n\u00edves LVTTL (3.3v). Com ela \u00e9 poss\u00edvel acessar a console serial do router, caindo diretamente na shell, por\u00e9m como os n\u00edveis de tens\u00e3o sao muito abaixo dos n\u00edveis das portas seriais comuns, nao \u00e9 poss\u00edvel utiliza-la diretamente, sendo necess\u00e1rio fazer algum tipo de interfaceamento. No meu caso, como eu costumo utilizar muito a dita cuja, mas o mesmo router que eu fu\u00e7o \u00e9 o router que distribui a grande rede pro resto da casa, nao posso deixar ele aberto o tempo todo, entao eu coloquei um XBEE da Maxtream nele, e acabei com uma porta serial de console wireless, sem a necessidade de componentes adicionais.<\/p>\n\n\n\n<p>Veja:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"666\" height=\"499\" src=\"https:\/\/novelli.eti.br\/site_novelli\/wp-content\/uploads\/2024\/01\/image.png\" alt=\"\" class=\"wp-image-87\" srcset=\"https:\/\/novelli.eti.br\/site_novelli\/wp-content\/uploads\/2024\/01\/image.png 666w, https:\/\/novelli.eti.br\/site_novelli\/wp-content\/uploads\/2024\/01\/image-300x225.png 300w\" sizes=\"auto, (max-width: 666px) 100vw, 666px\" \/><figcaption class=\"wp-element-caption\">O conector precisou ser soldado, mas nao \u00e9 t\u00e3o complicado, precisa de um suga solda pra desentupir os furos antes.<\/figcaption><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"653\" height=\"490\" src=\"https:\/\/novelli.eti.br\/site_novelli\/wp-content\/uploads\/2024\/01\/image-1.png\" alt=\"\" class=\"wp-image-88\" srcset=\"https:\/\/novelli.eti.br\/site_novelli\/wp-content\/uploads\/2024\/01\/image-1.png 653w, https:\/\/novelli.eti.br\/site_novelli\/wp-content\/uploads\/2024\/01\/image-1-300x225.png 300w\" sizes=\"auto, (max-width: 653px) 100vw, 653px\" \/><figcaption class=\"wp-element-caption\">Conector soldado, repare que abaixo existe um outro conector, JP1, que \u00e9 o JTAG do Atheros<\/figcaption><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"909\" height=\"682\" src=\"https:\/\/novelli.eti.br\/site_novelli\/wp-content\/uploads\/2024\/01\/image-2.png\" alt=\"\" class=\"wp-image-89\" srcset=\"https:\/\/novelli.eti.br\/site_novelli\/wp-content\/uploads\/2024\/01\/image-2.png 909w, https:\/\/novelli.eti.br\/site_novelli\/wp-content\/uploads\/2024\/01\/image-2-300x225.png 300w, https:\/\/novelli.eti.br\/site_novelli\/wp-content\/uploads\/2024\/01\/image-2-768x576.png 768w\" sizes=\"auto, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px\" \/><figcaption class=\"wp-element-caption\">Aqui o servi\u00e7o pronto, console serial wireless, o XBEE cabe dentro do modem com a antena whip a 45 graus. Isolei os pinos extras pra evitar curtos.<\/figcaption><\/figure>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ol\u00e1! Como estou de f\u00e9rias posso tirar o atraso nos projetinhos que tenho tocado, e um deles \u00e9 uma demonstra\u00e7\u00e3o de como um simples roteador WiFi pode se transformar numa excelente plataforma wireless para eletr\u00f4nica! A id\u00e9ia:&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; Outro dia, na hora do almo\u00e7o, eu e meu amigo Guto, &#8211; que tamb\u00e9m gosta de eletr\u00f4nica &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/novelli.eti.br\/site_novelli\/openwrt-como-plataforma-wireless-para-projetinhos\/\" class=\"more-link\">Continue lendo<span class=\"screen-reader-text\"> &#8220;OpenWRT como plataforma wireless para projetinhos&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[],"class_list":["post-86","post","type-post","status-publish","format-standard","hentry","category-eletronica"],"_links":{"self":[{"href":"https:\/\/novelli.eti.br\/site_novelli\/wp-json\/wp\/v2\/posts\/86","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/novelli.eti.br\/site_novelli\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/novelli.eti.br\/site_novelli\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/novelli.eti.br\/site_novelli\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/novelli.eti.br\/site_novelli\/wp-json\/wp\/v2\/comments?post=86"}],"version-history":[{"count":2,"href":"https:\/\/novelli.eti.br\/site_novelli\/wp-json\/wp\/v2\/posts\/86\/revisions"}],"predecessor-version":[{"id":91,"href":"https:\/\/novelli.eti.br\/site_novelli\/wp-json\/wp\/v2\/posts\/86\/revisions\/91"}],"wp:attachment":[{"href":"https:\/\/novelli.eti.br\/site_novelli\/wp-json\/wp\/v2\/media?parent=86"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/novelli.eti.br\/site_novelli\/wp-json\/wp\/v2\/categories?post=86"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/novelli.eti.br\/site_novelli\/wp-json\/wp\/v2\/tags?post=86"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}