Bom dia Ministro Aldo Rebelo!
Eu sei que Vossa Excelência não entende nada de Tecnologia, por ser formado em Jornalismo, acredito que seu conhecimento nessa área da pasta que está atuando é perto da ignorância total.
Por isso, para lançar luz sobre essa cadeira que Vossa Excelência só está esquentando para um Tecnólogo de verdade, vou postar algumas informações sobre tecnologia; e quiçá inspirá-lo a conversar com alguém que entenda do assunto.
Quem sabe até por em prática algumas medidas que estamos esperando desde os anos 1980.
Algumas coisas já foram feitas, é verdade! Hoje temos isenção total na importação de livros! Isso foi uma vitória inesperada!
É o item "a" que faz parte do inciso "II" do artigo segundo.
http://www.planalto.gov.br/ccivil_03/leis/L8032.htm
Esse item trata da Isenção do Imposto para livros, jornais, periódicos, enfim textos importados.
Atualmente podemos ver um sem número de vídeos na Internet, de pessoas que ensinam desde programação até cortes de cabelo!
De onde essas pessoas aprenderam isso? Eu mesmo ministro aulas no Youtube sobre Arduino. Eu não teria aprendido eletrônica nos anos 1990 se não fosse a facilidade em comprar livros importados!
E acredito que muita gente também estaria desempregada, passando necessidade na crise em que vivemos atualmente, não fosse estudar os livros "gringos" no passado...
Sim isso faz mais de 20 anos! Olha só o tempo que leva para um pequeno gesto movimentar uma geração na educação.
As Editoras no Brasil faliram? Muito pelo contrário! Se beneficiaram, pois houve uma injeção de novos profissionais: os Tradutores!
Basta ir a uma livraria técnica e verificar que, além de você encontrar todos os livros gringos ali, ao alcance das mãos, existem muitos autores nacionais e também editoras com seus próprios tradutores lançando versões em português dos livros mais vendidos.
Novas editoras gringas apareceram em solo Tupiniquim! Eu aprendi Visual Basic 5 através da bíblia que a McGralHill lançou em português!
Eu não teria capacidade técnica para ter lançado o Curso Arduino em 2011 não fosse meu estudo em livros durante 20 anos.
Muitos podem pensar que é bobagem, pois temos tudo à mão hoje em dia com a Internet. Mas estudar eletrônica nos anos 1990 era outra história!
A Internet se restringia a um grupo de doidos na madrugada conversando pelas BBS's e IRQ's do mundo.
Sim a gente conversava na madrugada, pois a telefonia só cobrava um único pulso depois da meia-noite. Era mais barato!
Tem que ser artista para ser tecnólogo no Brasil! Não é fácil! Nerd sofre :)
Hoje temos essa maravilha da Internet e agora a IOT, do inglês, Internet das Coisas! Que coisa né?
Quem já consertou um Modem de 2400 Bps e fez um motor acionar pela porta paralela do computador sabe que não se fazia isso sem um bom livro!
E revistas! Saudoso Professor Bêda! Quem lembra dele? Eu acho que ele lançou centenas, senão milhares de edições de revistas sobre eletrônica.
Até 2010 ele ainda possuia sua loja na General Osório, centro de SP. Passei lá recentemente e ele parece ter falecido ou saiu do ramo.
É isso aí Ministro! Cadê os deputados? Vamos abrir esse mercado de Chips Eletrônicos para daqui 20 anos nossos filhos poderem estar encabeçando os países de primeiro mundo?
Conto com Vossas Excelências!
Grande Abraço,
Renato Aloi
domingo, 23 de agosto de 2015
sábado, 22 de agosto de 2015
Carta Pública ao Ministro de Tecnologia do Brasil 2015
Assunto: Futuro da Tecnologia no Brasil
Excelentíssimo Ministro da Tecnologia Aldo Rebelo,
Uberlândia, Minas Gerais, passados 22 dias de Agosto de 2015, venho por meio deste post em meu blog pessoal, solicitar Vossa apreciação para um tema, que assumo de vital importância; que trata dos seguintes tópicos, abaixo listados:
Justificando os tópicos do tema sobre Futuro da Tecnologia no Brasil, listei também meus pontos de vista sobre os assuntos; levando em conta minha vivência nos últimos 4 anos como micro-fabricante de Produtos Eletrônicos no Brasil.
Item 1 - Abertura de Mercado Para Chips Eletrônicos
Tecnólogos são acostumados em acompanhar lançamentos da Indústria de Eletrônicos (e mais recentemente da Internet das Coisas), pelo mundo afora.
Faz parte do trabalho de um tecnólogo investir tempo estudando tecnologias que ainda não possuem aplicação prática real.
Com esse intuito, minha opinião em abrir o mercado de chips e trazer mais próxima a realidade dos países evoluídos tecnologicamente para terras Tupiniquins.
Infelizmente não evoluímos nossa tecnologia Brasileira a ponto de produzir Chips, desses utilizados em qualquer placa de qualquer produto eletrônico da atualidade (e desde os anos 1980).
Sim! Produzimos placas, gabinetes, até resistores e capacitores, mas a tecnologia CMOS, utilizada na construção de Chips com "zilhões" de transistores, nós ainda não possuímos!
E pagamos caro por isso! Quer um exemplo?
Vamos pegar o Chip ATMega328 da Atmel. Já tem empresa na China vendendo ele a US$ 1.27 (mais ou menos R$ 5,00).
Aqui no Brasil esse mesmo chip é encontrado no Mercado Livre (!) -- não estou falando do comercio que paga impostos! -- ele é vendido por volta de R$ 12,00.
(desculpem a propaganda, mas se faz necessário)
http://produto.mercadolivre.com.br/MLB-687321910-atmega328-atmega328p-atmega328p-pu-cristal-cap-arduino-uno-_JM
Repare que não parece muito, né? Mas na hora do empresário comprar 100 peças, em vez de pagar R$ 500,00 ele paga R$ 1.200,00 (no mercado cinza, insisto)!
Esse mesmo chip é vendido no mercado que paga impostos por volta de R$ 30,00.
Vossa Excelência, eu apelo para seu sentimento de patriotismo! Os chineses estão fabricando e vendendo chips a 1 dolar e os brasileiros estão pagando caro por Chips falsificados!
Precisamos alavancar a indústria injetando chips a preço de banana no mercado, para que todos os estudantes do Brasil sonhem e consigam ser engenheiros!
Nossos engenheiros-mirins estão indo embora! Eles preferem tentar a vida em países onde tecnologia é levada a sério!
As nossas crianças não querem mais aprender a tabuada! Elas querem aprender a programar e construir robôs!
A indústria da Educação Tecnológica precisa ser levada a sério!
Acabou que ficou tudo em um único tópico, espero que me perdoe não saber redigir um texto "juridiquês", mas ainda acredito na Indústria Brasileira!
Espero que Vossa Excelência também sinta o mesmo.
Sem Mais
Renato Aloi
Serial Link Comunicações e Serviços Ltda.
seriallink.com.br
Excelentíssimo Ministro da Tecnologia Aldo Rebelo,
Uberlândia, Minas Gerais, passados 22 dias de Agosto de 2015, venho por meio deste post em meu blog pessoal, solicitar Vossa apreciação para um tema, que assumo de vital importância; que trata dos seguintes tópicos, abaixo listados:
- Abertura de Mercado Para Chips Eletrônicos
- Manter o Mercado de Placas de Circuitos Eletronicos
- Incentivo à Educação Eletrônica no Brasil
Justificando os tópicos do tema sobre Futuro da Tecnologia no Brasil, listei também meus pontos de vista sobre os assuntos; levando em conta minha vivência nos últimos 4 anos como micro-fabricante de Produtos Eletrônicos no Brasil.
Item 1 - Abertura de Mercado Para Chips Eletrônicos
Tecnólogos são acostumados em acompanhar lançamentos da Indústria de Eletrônicos (e mais recentemente da Internet das Coisas), pelo mundo afora.
Faz parte do trabalho de um tecnólogo investir tempo estudando tecnologias que ainda não possuem aplicação prática real.
Com esse intuito, minha opinião em abrir o mercado de chips e trazer mais próxima a realidade dos países evoluídos tecnologicamente para terras Tupiniquins.
Infelizmente não evoluímos nossa tecnologia Brasileira a ponto de produzir Chips, desses utilizados em qualquer placa de qualquer produto eletrônico da atualidade (e desde os anos 1980).
Sim! Produzimos placas, gabinetes, até resistores e capacitores, mas a tecnologia CMOS, utilizada na construção de Chips com "zilhões" de transistores, nós ainda não possuímos!
E pagamos caro por isso! Quer um exemplo?
Vamos pegar o Chip ATMega328 da Atmel. Já tem empresa na China vendendo ele a US$ 1.27 (mais ou menos R$ 5,00).
Aqui no Brasil esse mesmo chip é encontrado no Mercado Livre (!) -- não estou falando do comercio que paga impostos! -- ele é vendido por volta de R$ 12,00.
(desculpem a propaganda, mas se faz necessário)
http://produto.mercadolivre.com.br/MLB-687321910-atmega328-atmega328p-atmega328p-pu-cristal-cap-arduino-uno-_JM
Repare que não parece muito, né? Mas na hora do empresário comprar 100 peças, em vez de pagar R$ 500,00 ele paga R$ 1.200,00 (no mercado cinza, insisto)!
Esse mesmo chip é vendido no mercado que paga impostos por volta de R$ 30,00.
Vossa Excelência, eu apelo para seu sentimento de patriotismo! Os chineses estão fabricando e vendendo chips a 1 dolar e os brasileiros estão pagando caro por Chips falsificados!
Precisamos alavancar a indústria injetando chips a preço de banana no mercado, para que todos os estudantes do Brasil sonhem e consigam ser engenheiros!
Nossos engenheiros-mirins estão indo embora! Eles preferem tentar a vida em países onde tecnologia é levada a sério!
As nossas crianças não querem mais aprender a tabuada! Elas querem aprender a programar e construir robôs!
A indústria da Educação Tecnológica precisa ser levada a sério!
Acabou que ficou tudo em um único tópico, espero que me perdoe não saber redigir um texto "juridiquês", mas ainda acredito na Indústria Brasileira!
Espero que Vossa Excelência também sinta o mesmo.
Sem Mais
Renato Aloi
Serial Link Comunicações e Serviços Ltda.
seriallink.com.br
sábado, 8 de agosto de 2015
Arduino Ethernet com ENC28J60 - Saga Chega ao Fim!
Bom dia pessoal!
É isso mesmo! A Saga do ENC28J60 está chegando ao fim! Não quero nem ver meus posts antigos sobre o assunto, pois eu sofri demais nesses últimos 4 anos lutando contra o hardware do ENC28J60; até que recentemente consegui vencê-lo!
Sim! Acabei com a raça dele! :)
No início desse ano de 2015 consegui finalmente implementar o Buffer de 8K de memória interna que o ENC28J60 possui; e estava lá sem fazer nada!
Essas bibliotecas, ao invés disso, penduram tudo na memória do Arduino, que deixa tudo mais complicado. Veja tabela comparativa entre as bibliotecas e o consumo de memória RAM:
https://github.com/renatoaloi/EtherEncLib/wiki/Comparsion-Table
Reparem por essa tabela acima que a EtherCard.h (http://jeelabs.org/ethercard), que é outra biblioteca para o ENC28J60, deixa apenas 760 bytes de memória livre no Arduino, para outras partes do programa.
Em resumo, a biblioteca EtherCard consome 80% dos recursos do Arduino e 10% dos recursos do ENC28J60. Não está certo né?
Foi com esse objetivo que desenvolvi a EtherEncLib (https://github.com/renatoaloi/EtherEncLib), que é a minha biblioteca para ENC28J60 que utiliza 90% do poder de fogo desse maravilhoso chip de Ethernet!
Deixando assim o Arduino 90% livre para fazer outras tarefas!
Repare, ainda pela tabela do link acima, que a biblioteca original do Ethernet Shield W5100 (https://www.arduino.cc/en/Main/ArduinoEthernetShield) ocupa apenas 350 bytes de memória (utilizando HTML de meus testes)!
Isso significa que a biblioteca oficial do Arduino é super leve e por isso todo mundo usa e acha maravilhoso! Todo mundo gosta de um programa que funciona e a gente nem percebe que ele está lá!
Agora veja também que a biblioteca EtherEncLib ocupa o segundo lugar (com honra!) gastando apenas 400 bytes de memória!
Isso mesmo, agora você pode utilizar o ENC28J60 como se fosse um W5100 e ainda achar melhor, pois o ENC28J60 é mais rápido que o W5100. Estou preparando uns testes que vão provar isso, principalmente com HTML's grandes, maiores de 2Kbytes.
Para finalizar a Saga, implementei UDP, que estava faltando e agora permite integração com a plataforma Homeseer.
E tivemos uma contribuição Russa do SKA, que implementou todo tratamento POST/GET.
Ontem eu finalizei os testes de desempenho e coloquei uma trava de segurança no caso de colisão de pacotes e o SKA tbém implementou melhoras na comunicação SPI.
Agora a biblioteca está a prova de fogo! Não trava mais e quando acontece por uma colisão de pacotes, em 1 segundo ela se reestabelece e volta a funcionar normalmente.
Essa colisão de pacotes é um problema que surgiu recentemente devida velocidade absurda de funcionamento da biblioteca. O cliente não dá conta de acompanhar e se atrapalha todo. Tive que reduzir a velocidade da biblioteca e adicionar um "fail-safe" baseado em tempo para resetar a conexão caso ela leve mais que 1 segundo.
Pelos testes que fiz, estou transmitindo 2.5Kbytes em 140ms. Na verdade são 2700 bytes em 136 milissegundos. Será que o W5100 consegue essa taxa de transferência?
Vou fazer o teste derradeiro carregando um HTML com uma imagem de 200Kbytes e vamos ver quem vai ganhar esse embate!
Depois posto notícias sobre os testes finais! Eu acho que o ENC28J60 vence! Estou há 4 anos preparando ele para esse confronto final!
Abraços,
Renato
É isso mesmo! A Saga do ENC28J60 está chegando ao fim! Não quero nem ver meus posts antigos sobre o assunto, pois eu sofri demais nesses últimos 4 anos lutando contra o hardware do ENC28J60; até que recentemente consegui vencê-lo!
Sim! Acabei com a raça dele! :)
No início desse ano de 2015 consegui finalmente implementar o Buffer de 8K de memória interna que o ENC28J60 possui; e estava lá sem fazer nada!
Para quem não acompanha a Saga: As outras bibliotecas do Arduino para ENC28J60 não utilizam 10% do poder de fogo desse chip.
Essas bibliotecas, ao invés disso, penduram tudo na memória do Arduino, que deixa tudo mais complicado. Veja tabela comparativa entre as bibliotecas e o consumo de memória RAM:
https://github.com/renatoaloi/EtherEncLib/wiki/Comparsion-Table
Reparem por essa tabela acima que a EtherCard.h (http://jeelabs.org/ethercard), que é outra biblioteca para o ENC28J60, deixa apenas 760 bytes de memória livre no Arduino, para outras partes do programa.
Em resumo, a biblioteca EtherCard consome 80% dos recursos do Arduino e 10% dos recursos do ENC28J60. Não está certo né?
Foi com esse objetivo que desenvolvi a EtherEncLib (https://github.com/renatoaloi/EtherEncLib), que é a minha biblioteca para ENC28J60 que utiliza 90% do poder de fogo desse maravilhoso chip de Ethernet!
Deixando assim o Arduino 90% livre para fazer outras tarefas!
Repare, ainda pela tabela do link acima, que a biblioteca original do Ethernet Shield W5100 (https://www.arduino.cc/en/Main/ArduinoEthernetShield) ocupa apenas 350 bytes de memória (utilizando HTML de meus testes)!
Isso significa que a biblioteca oficial do Arduino é super leve e por isso todo mundo usa e acha maravilhoso! Todo mundo gosta de um programa que funciona e a gente nem percebe que ele está lá!
Agora veja também que a biblioteca EtherEncLib ocupa o segundo lugar (com honra!) gastando apenas 400 bytes de memória!
Isso mesmo, agora você pode utilizar o ENC28J60 como se fosse um W5100 e ainda achar melhor, pois o ENC28J60 é mais rápido que o W5100. Estou preparando uns testes que vão provar isso, principalmente com HTML's grandes, maiores de 2Kbytes.
Para finalizar a Saga, implementei UDP, que estava faltando e agora permite integração com a plataforma Homeseer.
E tivemos uma contribuição Russa do SKA, que implementou todo tratamento POST/GET.
Ontem eu finalizei os testes de desempenho e coloquei uma trava de segurança no caso de colisão de pacotes e o SKA tbém implementou melhoras na comunicação SPI.
Agora a biblioteca está a prova de fogo! Não trava mais e quando acontece por uma colisão de pacotes, em 1 segundo ela se reestabelece e volta a funcionar normalmente.
Essa colisão de pacotes é um problema que surgiu recentemente devida velocidade absurda de funcionamento da biblioteca. O cliente não dá conta de acompanhar e se atrapalha todo. Tive que reduzir a velocidade da biblioteca e adicionar um "fail-safe" baseado em tempo para resetar a conexão caso ela leve mais que 1 segundo.
Pelos testes que fiz, estou transmitindo 2.5Kbytes em 140ms. Na verdade são 2700 bytes em 136 milissegundos. Será que o W5100 consegue essa taxa de transferência?
Vou fazer o teste derradeiro carregando um HTML com uma imagem de 200Kbytes e vamos ver quem vai ganhar esse embate!
Depois posto notícias sobre os testes finais! Eu acho que o ENC28J60 vence! Estou há 4 anos preparando ele para esse confronto final!
Abraços,
Renato
sábado, 25 de julho de 2015
Internet das Coisas
Conheci o termo pela hashtag #IoT -- fui procurar saber do que se tratava e descobri ser um acrônimo para "Internet das Coisas", em inglês. Literalmente temos o mesmo significado nas duas línguas, em inglês e em português.
É um termo novo, cunhado nesse momento que vivemos, onde todos possuem:
1x Notebook ou Tablet, ou ainda Smartphone;
1x Arduino ou RaspberryPi etc;
1 bilhão de ideias na cabeça
Pronto, nesse cenário foi cunhado o termo Internet das Coisas!
Hoje em dia, qualquer um pode acessar a internet, assistir alguns vídeos, ligar alguns cabos e sair construindo algum tipo de automação.
Sim! Não precisa mais ser engenheiro da Nasa, ou um Nerd para conseguir programar um microcontrolador e sair automatizando as coisas.
E quando eu digo automatizar, leia-se: personalizar!
Hoje em dia, você mesmo pode comprar um motor de vidro elétrico, alguns sensores e criar seu próprio mecanismo de vidro elétrico no seu carro!
Com alguns sensores adicionais, você pode ainda implementar funções simples que só existem nos modelos mais caros de vidros elétricos, como anti-esmagamento!
Sim, você pode criar um sistema anti-esmagamento para a porta da sua varanda por exemplo! Hoje em dia isso é possível fazendo apenas algumas compras no mercado Livre!
Até cremalheira tem pra vender hoje em dia pela Internet! Existem kits de caixas de redução para todo tipo de projeto e cada vez mais novidades estão aparecendo!
Cada vez mais novas feiras de tecnologia e da famigerada Internet das Coisas estão ocorrendo!
Hoje, exatamente, está acontecendo a Campus Party e mais uma ou duas feiras de tecnologia pelo país, todas mostrando projetos inovadores, como Drones, Impressoras 3D, Robôs e isso não tem fim! É fantástico!
A Robocore está patrocinando há vários anos campeonatos de robótica. O Laboratório de Garagem vem tentando criar um time de makers. A Serial Link tentando fabricar projetos educacionais de baixo custo.
Mas é só! Temos heróis anônimos ministrando cursos (as vezes bancando do próprio bolso) em Arduino e difundindo seus conhecimentos.
Mas cadê as grandes corporações? Cadê a Estrela? A Grow? Ainda existem essas empresas de brinquedos?
Cadê o grandes fabricantes de brinquedos no Brasil? O que aconteceu?
As fábricas de PCB estão fechando pois não tem mais demanda da indústria de eletrodomésticos.
As fabricas de plásticos também estão respirando sob aparelhos...
Cadê os desenvolvedores e inovadores que são os únicos que podem fomentar essa indústria do plástico e dos circuitos no Brasil?
Falta é o projetista parar de enviar a placa pra fabricar na China!
Só isso que falta!
Seu projeto é brasileiro ou chinês?
Entre em contato com uma empresa brasileira: seriallink.com.br
Todas as outras que citei, mandam fabricar na China!
Eu não RESPEITO quem manda fabricar na China!
Abraços,
Renato
É um termo novo, cunhado nesse momento que vivemos, onde todos possuem:
1x Notebook ou Tablet, ou ainda Smartphone;
1x Arduino ou RaspberryPi etc;
1 bilhão de ideias na cabeça
Pronto, nesse cenário foi cunhado o termo Internet das Coisas!
Hoje em dia, qualquer um pode acessar a internet, assistir alguns vídeos, ligar alguns cabos e sair construindo algum tipo de automação.
Sim! Não precisa mais ser engenheiro da Nasa, ou um Nerd para conseguir programar um microcontrolador e sair automatizando as coisas.
E quando eu digo automatizar, leia-se: personalizar!
Hoje em dia, você mesmo pode comprar um motor de vidro elétrico, alguns sensores e criar seu próprio mecanismo de vidro elétrico no seu carro!
Com alguns sensores adicionais, você pode ainda implementar funções simples que só existem nos modelos mais caros de vidros elétricos, como anti-esmagamento!
Sim, você pode criar um sistema anti-esmagamento para a porta da sua varanda por exemplo! Hoje em dia isso é possível fazendo apenas algumas compras no mercado Livre!
Até cremalheira tem pra vender hoje em dia pela Internet! Existem kits de caixas de redução para todo tipo de projeto e cada vez mais novidades estão aparecendo!
Cada vez mais novas feiras de tecnologia e da famigerada Internet das Coisas estão ocorrendo!
Hoje, exatamente, está acontecendo a Campus Party e mais uma ou duas feiras de tecnologia pelo país, todas mostrando projetos inovadores, como Drones, Impressoras 3D, Robôs e isso não tem fim! É fantástico!
A Robocore está patrocinando há vários anos campeonatos de robótica. O Laboratório de Garagem vem tentando criar um time de makers. A Serial Link tentando fabricar projetos educacionais de baixo custo.
Mas é só! Temos heróis anônimos ministrando cursos (as vezes bancando do próprio bolso) em Arduino e difundindo seus conhecimentos.
Mas cadê as grandes corporações? Cadê a Estrela? A Grow? Ainda existem essas empresas de brinquedos?
Cadê o grandes fabricantes de brinquedos no Brasil? O que aconteceu?
As fábricas de PCB estão fechando pois não tem mais demanda da indústria de eletrodomésticos.
As fabricas de plásticos também estão respirando sob aparelhos...
Cadê os desenvolvedores e inovadores que são os únicos que podem fomentar essa indústria do plástico e dos circuitos no Brasil?
Falta é o projetista parar de enviar a placa pra fabricar na China!
Só isso que falta!
Seu projeto é brasileiro ou chinês?
Entre em contato com uma empresa brasileira: seriallink.com.br
Todas as outras que citei, mandam fabricar na China!
Eu não RESPEITO quem manda fabricar na China!
Abraços,
Renato
sexta-feira, 22 de maio de 2015
EtherEncLib - A Biblioteca do ENC28J60 Para Arduino
Ok! Ainda não é exatamente oficial, mas a nova versão da biblioteca EtherEncLib.h para Arduino, já está consolidada no branch "enc28coremerge", conforme link abaixo:
https://github.com/renatoaloi/EtherEncLib/tree/enc28coremerge
Em breve farei o "merge" para o ramo principal "master".
Verifiquem as páginas do Wiki (em inglês):
https://github.com/renatoaloi/EtherEncLib/wiki
Venho trabalhando há dois anos para consolidar uma biblioteca do Módulo Ethernet ENC28J60 para Arduino.
Quem acompanha aqui pelo blog já pode testemunhar meu sofrimento com os revezes do desenvolvimento.
Mas agora é definitivo! Essa nova versão da biblioteca EtherEncLib.h para Arduino foi entalhada a mão e faz uso da Memória RAM interna do ENC28J60, aliviando e liberando mais memória para o Arduino!
Um dos grandes desafios de se ligar um Arduino UNO na Rede Local (Ethernet) é sua Memória RAM estreita. Essa versão em particular do Arduino possui apenas 2Kb de espaço na RAM e qualquer biblioteca que ocupe mais que 500 bytes é muito grande e com certeza faltará espaço na memória para o código principal da aplicação...
E foi isso que me motivou durante esses dois anos a continuar esse trabalho, mesmo tendo a impressão todo dia de estar "reinventando a roda".
Mas eu sabia que não estava e os motivos eram bem claros!
1. O principal motivo é que o código "oficial" do Arduino que controla Ethernet só funciona para o Arduino Ethernet Shield (aka. W5100)
2. Não existe biblioteca oficial para o Módulo ENC28J60
3. As bibliotecas que existem para o Módulo ENC28J60 são implementações muito cruas e superficiais.
O grande problema do cenário aqui é controlar uma comunicação com a Rede Local. Em termos de programação, isso chama-se: "Controlar um TCP-Stack".
Na verdade 99% dos sistemas possuem já TCP-Stack implementados. Podemos ver na AN833 da Microchip uma solução pronta para TCP, UDP etc.
http://www.microchip.com/wwwAppNotes/AppNotes.aspx?appnote=en011993
Neste link acima é possível baixar todo código que pode ser compilado e carregado em um PIC (na verdade esse código é compatível com uma paulada de modelos de PIC's).
Mas porque o Arduino não tem um TCP-Stack? Programadores C++ escrevem do zero ou fazem adaptações em Stack's de vários protocolos toda hora... Qual o problema?
Lembra da Memória RAM do Arduino UNO: 2Kb? Pois é...
Bom, mas você deve estar se perguntando, como a equipe italiana que criou o Arduino resolveu isso?
Eles resolveram de uma forma bem simples: delegando a tarefa para outro chip! Eles passaram a mão no telefone e ligaram para a WizNet e disseram: viu, sabe esse chip milagroso de vocês chamado W5100? Nós queremos no nosso projeto chamado Arduino...
Eu não posso tirar o mérito não! Esse W5100 é uma obra de arte mesmo! Ele tem 4 FIFO's independentes de 2Kb capazes de controlar 4 fluxos de Sockets ao mesmo tempo! Ultra rápido e só tem um defeito: precisa de muitos componentes externos.
Mas ele (W5100) controla pilhas de TCP, UDP, já possui buffers pré-programados e buffers separados para as respostas. Ele realmente é muito bom!
Mas...
Não tem mas, é isso! Você pode se perguntar o quanto você quiser onde o ENC28J60 entra nessa história, mas não entra!
O ENC28J60 não é concorrente para o Arduino Ethernet Shield W5100 por vários motivos:
- Ele é um chip desenvolvido pela principal concorrente da Atmel, a Microchip
- Ninguém da equipe do Arduino se propôs a escrever código para um chip da concorrente
- Muitos já tentaram, mas até agora a melhor proposta, que é a EtherCard, tem um buffer limitado de 700 bytes e faz apenas um envio por vez. Essa biblioteca é tão grande que ocupa 75% da Memória RAM do Arduino, por volta de 1.5K!!!
Essa biblioteca faz uso de todo potencial do ENC28J60 e toda extensão de sua Memória RAM de 8Kb! Isso mesmo, esse chip possui uma memória interna de mais de 8 mil bytes nunca antes usada!
Mas agora todo esse potencial foi liberado e a biblioteca inteira consome apenas 400 bytes de memória RAM e envia pacotes TCP de 1024 bytes várias vezes na mesma requisição.
Com essas novas características a biblioteca EtherEncLib emparelha, focinho a focinho com a biblioteca oficial de Ethernet do Arduino! Veja a tabela abaixo:
https://github.com/renatoaloi/EtherEncLib/tree/enc28coremerge
Em breve farei o "merge" para o ramo principal "master".
Verifiquem as páginas do Wiki (em inglês):
https://github.com/renatoaloi/EtherEncLib/wiki
Venho trabalhando há dois anos para consolidar uma biblioteca do Módulo Ethernet ENC28J60 para Arduino.
Quem acompanha aqui pelo blog já pode testemunhar meu sofrimento com os revezes do desenvolvimento.
Mas agora é definitivo! Essa nova versão da biblioteca EtherEncLib.h para Arduino foi entalhada a mão e faz uso da Memória RAM interna do ENC28J60, aliviando e liberando mais memória para o Arduino!
Um dos grandes desafios de se ligar um Arduino UNO na Rede Local (Ethernet) é sua Memória RAM estreita. Essa versão em particular do Arduino possui apenas 2Kb de espaço na RAM e qualquer biblioteca que ocupe mais que 500 bytes é muito grande e com certeza faltará espaço na memória para o código principal da aplicação...
Afinal de contas a biblioteca está ali para ajudar e não para ocupar espaço na RAM e atrapalhar o programa principal!
E foi isso que me motivou durante esses dois anos a continuar esse trabalho, mesmo tendo a impressão todo dia de estar "reinventando a roda".
Mas eu sabia que não estava e os motivos eram bem claros!
1. O principal motivo é que o código "oficial" do Arduino que controla Ethernet só funciona para o Arduino Ethernet Shield (aka. W5100)
2. Não existe biblioteca oficial para o Módulo ENC28J60
3. As bibliotecas que existem para o Módulo ENC28J60 são implementações muito cruas e superficiais.
O grande problema do cenário aqui é controlar uma comunicação com a Rede Local. Em termos de programação, isso chama-se: "Controlar um TCP-Stack".
Na verdade 99% dos sistemas possuem já TCP-Stack implementados. Podemos ver na AN833 da Microchip uma solução pronta para TCP, UDP etc.
http://www.microchip.com/wwwAppNotes/AppNotes.aspx?appnote=en011993
Neste link acima é possível baixar todo código que pode ser compilado e carregado em um PIC (na verdade esse código é compatível com uma paulada de modelos de PIC's).
Mas porque o Arduino não tem um TCP-Stack? Programadores C++ escrevem do zero ou fazem adaptações em Stack's de vários protocolos toda hora... Qual o problema?
Lembra da Memória RAM do Arduino UNO: 2Kb? Pois é...
Bom, mas você deve estar se perguntando, como a equipe italiana que criou o Arduino resolveu isso?
Eles resolveram de uma forma bem simples: delegando a tarefa para outro chip! Eles passaram a mão no telefone e ligaram para a WizNet e disseram: viu, sabe esse chip milagroso de vocês chamado W5100? Nós queremos no nosso projeto chamado Arduino...
Resumo: o TCP-Stack do Arduino na verdade está dentro do chip da WizNet, fechado, trancado... Filosofia de código aberto meio estranha essa né?
Eu não posso tirar o mérito não! Esse W5100 é uma obra de arte mesmo! Ele tem 4 FIFO's independentes de 2Kb capazes de controlar 4 fluxos de Sockets ao mesmo tempo! Ultra rápido e só tem um defeito: precisa de muitos componentes externos.
Mas ele (W5100) controla pilhas de TCP, UDP, já possui buffers pré-programados e buffers separados para as respostas. Ele realmente é muito bom!
Mas...
Não tem mas, é isso! Você pode se perguntar o quanto você quiser onde o ENC28J60 entra nessa história, mas não entra!
O ENC28J60 não é concorrente para o Arduino Ethernet Shield W5100 por vários motivos:
- Ele é um chip desenvolvido pela principal concorrente da Atmel, a Microchip
- Ninguém da equipe do Arduino se propôs a escrever código para um chip da concorrente
- Muitos já tentaram, mas até agora a melhor proposta, que é a EtherCard, tem um buffer limitado de 700 bytes e faz apenas um envio por vez. Essa biblioteca é tão grande que ocupa 75% da Memória RAM do Arduino, por volta de 1.5K!!!
Enfim, a EtherEncLib veio finalmente resolver essa lacuna nas opções de Módulos Ethernet, quando o assunto é Arduino!
Essa biblioteca faz uso de todo potencial do ENC28J60 e toda extensão de sua Memória RAM de 8Kb! Isso mesmo, esse chip possui uma memória interna de mais de 8 mil bytes nunca antes usada!
Mas agora todo esse potencial foi liberado e a biblioteca inteira consome apenas 400 bytes de memória RAM e envia pacotes TCP de 1024 bytes várias vezes na mesma requisição.
Com essas novas características a biblioteca EtherEncLib emparelha, focinho a focinho com a biblioteca oficial de Ethernet do Arduino! Veja a tabela abaixo:
| Biblioteca | RAM Livre Arduino UNO | Estimativa de Consumo | Tamanho do Sketch | Plataforma |
| Ethernet.h (oficial) | 1444 | 350 | 12000 | W5100 |
| EtherEncLib.h | 1401 | 400 | 13000 | ENC28J60 |
| EtherCard.h | 760 | 1200 | 9500 | ENC28J60 |
| Todos os valores estão em bytes | ||||
| Valores aproximados, teste padronizado |
quinta-feira, 21 de maio de 2015
Eu, Eu Mesmo e o Android
Bom dia Arduineiros, Androideiros, Raspizeiros!
Venho por meio desta declarar que prefiro programar em Objective-C do que configurar um aparelho Android!
Quem conhece Objective-C, sabe do que estou falando. O pessoal da Apple pegou o C++ virou de ponta-cabeça!
Nesse quesito ponto para o Android que se baseou no Java em vez de criar uma linguagem nova.
Mas essa questão das versões do Android é de matar!
Para resumir as experiências desde meu último post frustrado, vejam se eu não tenho razão em estar frustrado:
0. Tentei instalar o AI2 Companion e o Android disse que não havia espaço...
1. Resetei o aparelho Andoid Gingerbread 2.3.6
2. Perdi todas as informações do SD Card
3. Formatei o SD Card com 2 partições para usar o Link2SD
4. Resetei o aparelho de novo e ele formatou o SD Card com 1 partição
5. Formatei de novo o SD card com 2 partições
6. Acessei o Playstore e tive que acessar com a conta do Google
7. Levei 2 horas para recuperar a senha da minha conta do Google
8. Ao tentar logar na PlayStore ficava dando erro dizendo que minha conexão não era fidedigna
9. Percebi uma série de problemas de autenticação de certificado na hora de navegar em qqer site.
10. Gerei uma palavra-chave nova, registrei no SDCard e depois resetei as chaves de segurança
11. Formatei o Android tudo de novo.
12. Finalmente consegui logar na minha conta do google!
13. Consegui baixar o Link2SD e configurei ele na segunda partição do SDCard.
14. Baixei o QRCode reader
15. Acessei o AI2 e apontei para o QRCode, que me levou direto para o link de Download do AI2 Companion.
16. Descobri que o AI2 Companion não instala no Android Gingerbread...
17. Vou ter que começar tudo de novo, mas agora com o APPInventor1, ao invés do 2. Pois o AppInventor 1 acredito que funciona no meu Android 2.3.6
Bom, vcs devem estar se perguntando: puxa Renato, mas você não verificou se funcionava no Android Gingerbread? Esse é o pior, eu verifiquei e apostei minhas fichas nisso!
Leiam a ultima linha dessa página:
http://appinventor.mit.edu/explore/ai2/setup.html
Agora, depois de ver no documento oficial deles que o requisito mínimo de hardware é um Android Gingerbread 2.3.
Só pra lembrar o meu é um Android Gingerbread 2.3.6, então...
Enfim, as aulas sobre AppInventor vão demorar mais um pouco. E se alguém quiser doar um tablet/celular com Android KitKat, eu ficaria muito feliz!
Infelizmente não tenho dinheiro nem pra comprar uma versão mais atual para testes.
Ah! Uma última coisa: não dá pra usar o emulador, pois ele não tem bluetooth para comunicar com o Arduino.
Se alguém tiver alguma ideia sobre usar o emulador eu ficaria mais feliz ainda!
Abraços
Renato
Venho por meio desta declarar que prefiro programar em Objective-C do que configurar um aparelho Android!
Quem conhece Objective-C, sabe do que estou falando. O pessoal da Apple pegou o C++ virou de ponta-cabeça!
Nesse quesito ponto para o Android que se baseou no Java em vez de criar uma linguagem nova.
Mas essa questão das versões do Android é de matar!
Para resumir as experiências desde meu último post frustrado, vejam se eu não tenho razão em estar frustrado:
0. Tentei instalar o AI2 Companion e o Android disse que não havia espaço...
1. Resetei o aparelho Andoid Gingerbread 2.3.6
2. Perdi todas as informações do SD Card
3. Formatei o SD Card com 2 partições para usar o Link2SD
4. Resetei o aparelho de novo e ele formatou o SD Card com 1 partição
5. Formatei de novo o SD card com 2 partições
6. Acessei o Playstore e tive que acessar com a conta do Google
7. Levei 2 horas para recuperar a senha da minha conta do Google
8. Ao tentar logar na PlayStore ficava dando erro dizendo que minha conexão não era fidedigna
9. Percebi uma série de problemas de autenticação de certificado na hora de navegar em qqer site.
10. Gerei uma palavra-chave nova, registrei no SDCard e depois resetei as chaves de segurança
11. Formatei o Android tudo de novo.
12. Finalmente consegui logar na minha conta do google!
13. Consegui baixar o Link2SD e configurei ele na segunda partição do SDCard.
14. Baixei o QRCode reader
15. Acessei o AI2 e apontei para o QRCode, que me levou direto para o link de Download do AI2 Companion.
16. Descobri que o AI2 Companion não instala no Android Gingerbread...
17. Vou ter que começar tudo de novo, mas agora com o APPInventor1, ao invés do 2. Pois o AppInventor 1 acredito que funciona no meu Android 2.3.6
Bom, vcs devem estar se perguntando: puxa Renato, mas você não verificou se funcionava no Android Gingerbread? Esse é o pior, eu verifiquei e apostei minhas fichas nisso!
Leiam a ultima linha dessa página:
http://appinventor.mit.edu/explore/ai2/setup.html
Agora, depois de ver no documento oficial deles que o requisito mínimo de hardware é um Android Gingerbread 2.3.
Só pra lembrar o meu é um Android Gingerbread 2.3.6, então...
Enfim, as aulas sobre AppInventor vão demorar mais um pouco. E se alguém quiser doar um tablet/celular com Android KitKat, eu ficaria muito feliz!
Infelizmente não tenho dinheiro nem pra comprar uma versão mais atual para testes.
Ah! Uma última coisa: não dá pra usar o emulador, pois ele não tem bluetooth para comunicar com o Arduino.
Se alguém tiver alguma ideia sobre usar o emulador eu ficaria mais feliz ainda!
Abraços
Renato
quarta-feira, 20 de maio de 2015
Android, App Inventor & Arduino
Pessoal, bom dia!
Estou fazendo um trabalho para um cliente em que o programa funciona via App Inventor 2.
Alguns meses atrás, eu gravei uma série de aulas (acho que foram duas aulas em 3 partes), sobre programação Android para comunicar via bluetooth com o Arduino.
Essas aulas podem ser vistas no http://youtube.com/cursoarduino e fazem parte de um especial feito para o Curso Arduino Express.
Essas aulas podem ser assistidas também em melhor qualidade através dos DVD's do Curso Arduino Express, já lançado! Mas atualmente só vendido pelo email renato.aloi@gmail.com (estou apostando nos meus produtos para resolver o problema financeiro da Loja do Curso Arduino).
Mas eu sinceramente não sei mais o que fazer sobre esse Android. Estou a ponto de desistir. Já criei o canal sobre o Curso Android, mas não consigo fechar uma linha de material para criar as video-aulas...
Tentei com as aulas citadas acima, mostrar como fazer na programação Java para ativar e usar o Bluetooth, mas se vocês assistirem as aulas agora, verão que nada bate com nada, pois mudou tudo de lá prá cá!
A mesma coisa com o AppInventor, já mudou tudo para o AppInventor2.
Até agora não consegui instalar e usar o AppInventor2. Meu telefone Android diz que não possui espaço na memória para instalar. Aquele velho problema de falta de espaço na memória interna, grande vilã nos aparelhos Samsung e LG.
Não me espanta que grandes empresas como Samsung e LG não consigam lançar plataformas decentes para suportar o Android. Ninguém suporta o Android!
Nenhum desenvolvedor consegue suportar a quantidade de versões do Java e do Android. Impossível de acompanhar e de criar material de estudo... Estou entregando os pontos...
Não acho que o Android seja uma plataforma confiável e funcional. Simplesmente não funciona! Talvez para acessar Facebook e Redes Sociais. Mas para aplicativos de verdade, do mundo real, não consegui nenhum resultado até agora.
Talvez seja incompetência minha, ou falta de recursos para gastar míseros R$ 5 mil com um Samsung novo.
Prefiro pensar que é incompetência minha, porque ainda consegui acreditar que o novo Samsung custa R$ 5 mil!!!
Desculpem a frustração com esse sistema que deve ser maravilhoso, mas hoje estou a ponto de jogar o aparelho celular na parede!
Mas e o Arduino? Onde entra nessa história? Não entra, pois não consigo usar o aparelho Android, quiçá conseguir comunicar com o Arduino!
Abraços,
Renato
Estou fazendo um trabalho para um cliente em que o programa funciona via App Inventor 2.
Alguns meses atrás, eu gravei uma série de aulas (acho que foram duas aulas em 3 partes), sobre programação Android para comunicar via bluetooth com o Arduino.
Essas aulas podem ser vistas no http://youtube.com/cursoarduino e fazem parte de um especial feito para o Curso Arduino Express.
Essas aulas podem ser assistidas também em melhor qualidade através dos DVD's do Curso Arduino Express, já lançado! Mas atualmente só vendido pelo email renato.aloi@gmail.com (estou apostando nos meus produtos para resolver o problema financeiro da Loja do Curso Arduino).
Mas eu sinceramente não sei mais o que fazer sobre esse Android. Estou a ponto de desistir. Já criei o canal sobre o Curso Android, mas não consigo fechar uma linha de material para criar as video-aulas...
Tentei com as aulas citadas acima, mostrar como fazer na programação Java para ativar e usar o Bluetooth, mas se vocês assistirem as aulas agora, verão que nada bate com nada, pois mudou tudo de lá prá cá!
A mesma coisa com o AppInventor, já mudou tudo para o AppInventor2.
Até agora não consegui instalar e usar o AppInventor2. Meu telefone Android diz que não possui espaço na memória para instalar. Aquele velho problema de falta de espaço na memória interna, grande vilã nos aparelhos Samsung e LG.
Não me espanta que grandes empresas como Samsung e LG não consigam lançar plataformas decentes para suportar o Android. Ninguém suporta o Android!
Nenhum desenvolvedor consegue suportar a quantidade de versões do Java e do Android. Impossível de acompanhar e de criar material de estudo... Estou entregando os pontos...
Não acho que o Android seja uma plataforma confiável e funcional. Simplesmente não funciona! Talvez para acessar Facebook e Redes Sociais. Mas para aplicativos de verdade, do mundo real, não consegui nenhum resultado até agora.
Talvez seja incompetência minha, ou falta de recursos para gastar míseros R$ 5 mil com um Samsung novo.
Prefiro pensar que é incompetência minha, porque ainda consegui acreditar que o novo Samsung custa R$ 5 mil!!!
Desculpem a frustração com esse sistema que deve ser maravilhoso, mas hoje estou a ponto de jogar o aparelho celular na parede!
Mas e o Arduino? Onde entra nessa história? Não entra, pois não consigo usar o aparelho Android, quiçá conseguir comunicar com o Arduino!
Abraços,
Renato
Assinar:
Postagens (Atom)