sábado, 26 de dezembro de 2015

Arduino e Genuino Explicados

Massimo Banzi, em entrevista para revista Maker, explicando os fatos sobre a briga judicial que separou a comunidade Arduino em duas! Para o mundo, agora é Genuino, e apenas nos Estados Unidos é Arduino...


"Esta situação vem fermentando dentro da comunidade Arduino, por um longo tempo.

Quando o projeto Arduino começou, os cinco co-fundadores (eu, David Cuartielles, David Mellis, Tom Igoe, e Gianluca Martino) decidiram criar uma empresa detentora da marca e dos negócios gerados pela plataforma Arduino: fabricantes iriam construir e vender placas, e a equipe do Arduino iria receber direitos autorais, como acontece em muitas outras empresas, como no mundo da moda, por exemplo. Isso aconteceu em abril de 2008, quando Arduino LLC foi fundada e os estatutos da empresa especificaram que cada um dos cinco fundadores iria transferir para esta empresa qualquer propriedade da marca Arduino. No final de 2008, quando Arduino estava prestes a registrar a marca nos EUA e no mundo, sem nos comunicar, e sem nenhum aviso prévio, a empresa de Gianluca, Smart Projects – nosso principal fabricante de placas - foi em frente e registrou o nome Arduino na Itália, mantendo essa notícia para si mesmo, por quase dois anos.

Após o processo de registo nos EUA ter ocorrido e nosso advogado tentado estender a marca para o resto do mundo, ele percebeu que alguém já tinha registado ela na Itália. Nós (Tom Igoe, David Cuartiallez, David Mellis, e eu) ficamos chocados e exigimos explicações. Gianluca tranquilizou-nos que isso foi feito para proteger o nosso investimento coletivo. Éramos amigos (ou então pensávamos que éramos), e assim com base neste acordo, continuamos trabalhando juntos por anos, recebendo royalties, e tentando discretamente trazer a marca de volta para a empresa Arduino, através de intermináveis ​​discussões que se arrastavam enquanto Arduino tornava-se muito bem sucedida, graças à trabalho duro cada um de nós (e por um longo tempo, nós nem recebíamos um salário por isso).
Como o projeto se tornou bem sucedido e as vendas aumentaram, as tentativas de recuperar o controle do registro da marca italiana tornaram-se mais e mais difíceis, com as demandas cada vez maiores feitas por nós enquanto Gianluca efetivamente nos vetava de trazer quaisquer outros fabricantes ou obter investimentos externos. Fizemos progressos com Arduino criando um monte de inovações, empurrando os limites do hardware de código aberto, contratando um monte de pessoas talentosas ao redor do mundo e, finalmente, construindo uma comunidade incrível em torno do site arduino.cc

Não é necessário dizer que se tornou cada vez mais difícil trabalhar com um parceiro que nos era tão relutante em permitir qualquer melhoria significativa de expansão da empresa. Nós tentamos por um longo período de tempo reduzir os custos dos produtos aos clientes, mas nossas mãos estavam atadas. Em julho passado, após outra rodada de conversações, e outro pedido de mais dinheiro, fomos forçados a pedir nossos advogados que começassem a enviar cartas para delinear nossas diferenças, e solicitar que a marca nos fosse devolvida. Quando você acredita estar falando com um amigo de muitos anos, é difícil lidar com isso. É triste e doloroso especialmente para mim, que passou muitos anos falando com essa pessoa todos os dias durante horas no telefone ou pessoalmente, para fazer o que Arduino é hoje.

Um ano atrás, sem explicação, empresa de fabricação de Gianluca deixou de cooperar com a gente e unilateralmente parou de pagar royalties. Então, se as pessoas compraram uma placa Arduino feita na Itália, no ano passado, pensando que estavam apoiando o projeto, estes devem saber que não recebemos nenhum dinheiro, apesar do fato de que projetamos, documentamos, mantivemos e apoiamos esses produtos. (Os outros fabricantes ainda estão ao nosso lado.)

Em novembro passado, a SmartProjects nomeou um novo CEO, o Sr. Musto, que rebatizou a empresa para Arduino Srl e criou um site chamado "Arduino" copiando nossos gráficos e layout, alegando ter inventado Arduino sem menção de nós quatro. Eles até mesmo começaram a imprimir esse novo URL em todas as novas placas.

A gota d'água veio algumas semanas atrás, quando esta pessoa deu entrevistas a uma série de jornais italianos afirmam ser o novo CEO da "Arduino" e insinuando que eu estava deixando o cargo para me dedicar a atividades "sem fins lucrativos".

Nós ficamos chocados e respondemos a suas reivindicações, tentando manter a discrição e evitar danos à comunidade e ao projeto.

Agora, os assuntos estão nas mãos dos advogados de ambos os lados do Atlântico e eu não posso dar muitos detalhes.

Para nós quatro criadores originais são ossos do ofício. Felizmente, há três anos, comecei a expandir as formas em que o Arduino se sustenta: trabalhando com grandes corporações para aconselhá-los em como orientar e se comunicar com a comunidade de Makers, participando em projetos de pesquisa e desenvolvimento internacionais, tocando uma loja virtual de muito sucesso. Isto nos permitiu a crescer, independente das vendas de placas.

Eu tinha essa percepção de que como hardware se torna mais e mais de uma mercadoria, modelos de negócios devem evoluir no sentido de serviços, plataformas de nuvem, educação, e no processo de ajudar Makers em tornarem-se profissionais.

Estamos trabalhando com Makers de todo o mundo, tendo parceiros incríveis que estão do nosso lado, estamos lançando novos produtos nos campos da educação e da Internet das coisas. Estamos muito tristes que estas questões tenham vindo a público, para confundir a comunidade, mas nós continuamos inovando e queremos continuar a empurrar os limites do hardware aberto como temos feito há 10 anos.

Como de costume, a única verdadeira casa da comunidade Arduino é arduino.cc e você pode ver em day.arduino.cc que a próxima Jornada Arduino, em 28 de Março será um evento global incrível, durante o qual nós revelaremos um monte de material bacana."

Massimo Banzi, em entrevista para Revista Make, 19 de Março de 2015.

Tradução livre por Renato Aloi.

quinta-feira, 17 de dezembro de 2015

Whats App no Sri Lanka



Recentemente saiu a notícia que o Brasil foi rebaixado no IDH, que é um índice que mede a qualidade de vida pelo mundo. Agora, segundo esse índice estamos atrás de países como o Sri Lanka e a Venezuela.

Isso significa que é melhor viver nesses países do que viver no Brasil... E vale lembrar que em 2004 o Sri Lanka foi atingido por um Tsunami, que arrasou com o país, e que desde então eles estão tentando se recuperar desse desastre. Mal sabem eles que aqui no Brasil existem desastres bem piores! Afinal de contas quem precisa de um Tsunami se temos as Samarcos e Dilmas da vida?

Não bastasse isso, a justiça brasileira, a pedido do juiz Luiz Moura Correia, retirou o Whats App do ar por um período que ainda não sei se é de 24 ou 48 horas...

Desse jeito, nos próximos anos, será pior viver no Brasil do que na Faixa de Gaza!

Esse Juiz Luiz Moura Correia tomou essa decisão inédita pois o Whats App ignorou o pedido da Justiça do Piauí de retirar material considerado pedófilo do ar. Em suma, não se sabe muito sobre o assunto, pois a investigação corre sob segredo de justiça.

Mas a realidade é que o país todo foi afetado por uma decisão da Justiça de um único estado. O que nós meros mortais temos a ver com o que se passa no Piauí? Que culpa temos da pedofilia que acontece lá?

E quando apareceram as denúncias de padres pedófilos, porque a Igreja Católica não sofreu nenhuma sanção desse tipo?

A pergunta que fica é: Será que o Whats App está funcionando lá no Sri Lanka!?

Abraços,
Renato Aloi

domingo, 13 de dezembro de 2015

Comentários do Curso Arduino na Redes Sociais

Bom dia Pessoal!

Estou aqui trabalhando em novos vídeos, novas parcerias e novo material para 2016, mas percebo que infelizmente não consigo acompanhar os comentários em todas as redes sociais...

Recebo atualizações dos comentários do Youtube pelo email, mas não posso responder pelo próprio email, pois é um endereço sem resposta, ou seja noreply@youtube.com. Então o Youtube disponibiliza um botão onde eu clico e vou para meu próprio vídeo para responder. O problema é que tenho que carregar meu próprio vídeo, todas as propagandas e sugestões de vídeos dos outros canais só para poder responder uma dúvida...

E para piorar ainda o Youtube restringe o texto que pode ser escrito, onde não posso indicar links, nem nada. Não posso indicar nem um tutorial em PDF ou outro site com tutoriais. Não posso indicar nem outros vídeos, pois o Youtube não tem uma ferramenta para auxiliar na digitação e pesquisar outros vídeos existentes.

Eu sei que existe o painel da Comunidade no Estúdio de Criação, dentro do sistema administrativo do Youtube, mas por algum motivo que não sei explicar os comentários que estão lá não batem com os que chegam por email...

Isso sem falar que o Youtube por algum motivo fica classificando mais de 50 mensagens por mês como Spam...

Resumindo é quase impossível acompanhar e responder os comentários...

Já o Blog, este onde escrevo eu consigo moderar os comentários, mas não consigo responder diretamente para o usuário que publicou...

Então muitas perguntas que são feitas eu tenho que bloquear a publicação e não tenho como entrar em contato diretamente com o aluno para orientá-lo a utilizar o Fórum do Curso Arduino no endereço http://www.seriallink.com.br/forum

E as mídias sociais como Facebook ou Twitter eu nem sei por onde começar a dar suporte... Acho que não foram feitas para isso. Existem grupos para tirar dúvidas, mas acho que servem mais para quem precisa de uma ajuda imediata e não é exatamente o tipo de suporte que ofereço.

O fato é que acredito que as dúvidas mais importantes são as que ajudam mais de uma única pessoa em um único momento. Uma dúvida respondida precisa ajudar várias pessoas que tenham a mesma dúvida e precisa ser encontrada de forma fácil e possa ser atualizada. Isso é muito importante, pois as vezes uma novidade aparece, uma outra solução se mostra mais fácil e essa atualização precisa ser feita na resposta de uma dúvida.

Mas a Internet é uma coisa engraçada, pois tudo muda muito rápido. Alguns anos atrás a maioria das pessoas acessavam a Internet pelo computador em casa ou no trabalho. Hoje em dia, todo mundo possui um celular na mão e acessa a Internet no momento que quiser, até dirigindo, ou no banho, ou ainda da fazenda, no final de semana.

Não existe mais esse negócio de "esperar" ir para casa ou ir para o trabalho para postar uma dúvida...

Além disso, os fóruns e listas de discussão se tornaram obsoletos e não possuem layout compatível com os novos dispositivos moveis utilizados para acesso a Internet. Hoje em dia é muito mais fácil e confortável postar uma dúvida em um grupo do Facebook do que ter que se registrar em um fórum com layout que tem que ser expandido com o dedo a cada refresh de tela...

E atualizar todo esse ferramentário é complicado e custoso!

A Internet não é centralizada, então as pessoas nunca "chegam" pelo mesmo lugar. Algumas pessoas descobrem o canal do Curso Arduino pelo site, ou então por assistir um vídeo antigo, ou ainda por um post no Blog, ou por uma dúvida no forum, ou ainda por um anúncio do Facebook.

O grande desafio é tentar juntar tudo isso em um portal, em um lugar que mesmo que as pessoas "cheguem" ao conteúdo pelos mais diversos links e atalhos, elas possam acessar um site ou um repositório para tirar dúvidas e que reúna todo material existente sobre Arduino, como se fosse uma lista telefônica, onde todos os recursos estejam disponíveis, sejam eles concorrentes ou não.

Esse é o grande desafio atual da Internet e que o Google sozinho com seu monstruoso sistema de pesquisa já não está mais dando conta de resolver sozinho...

Que venha 2016 com novos desafios! Um feliz Natal para todos Arduineiros e um próspero Ano Novo!

Abraços
Renato Aloi

segunda-feira, 30 de novembro de 2015

Arduino ou Genuino?


Pessoal,

Boa tarde! Ontem fui baixar a nova versão 1.66 do ambiente de programação (IDE) do Arduino e descobri (na verdade confirmei, pelo novo banner de abertura do programa) que agora além das placas do Arduino, existem também placas chamadas Genuino!

Isso mesmo! Para ajudar a confundir mais um pouco a cabeça dos iniciantes, agora o Sr. Massimo Banzi, David Cuartialez e a equipe fundadora do Arduino estão brigando na justiça pela marca.

A confusão é tão grande que existem várias publicações sobre a história, incluindo esse post no site Embarcados:

http://www.embarcados.com.br/arduino-anuncia-marca-genuino/

E também essa versão mais completa no site BR-Arduino.org:

http://br-arduino.org/2015/02/arduino-x-arduino-entenda-a-briga-judicial-e-de-mercado-entre-os-co-fundadores-do-projeto.html

Na verdade eu li originalmente em um site gringo sobre o assunto chamado The Makers Workbench, nesse link abaixo:

http://www.themakersworkbench.com/articles/arduino-announces-new-us-made-genuino-brand-amidst-legal-battle-over-arduino-brand

Uma coisa que me chamou atenção foi o fato (que não foi citado nos sites brasileiros) do fundador da Adafruit, chamado Limor "Ladyada" Fried, ter se metido (ou ter sido o causador) do furdunço todo...

Pelo que entendi toda confusão foi causada por um depoimento de Limor na Bay Area Maker Faire 2015, dizendo que a Adafruit já trabalhava junto com a Arduino.cc (vertente italiana da marca), produzindo software e hardware para a comunidade há 10 anos.

Inclusive ele disse já estar produzindo o Arduino Gemma em Nova Iorque! E agora vão produzir (na verdade já estão produzindo) Arduino em fábricas dos Estados Unidos da America (EUA).

Ao que parece isso enfureceu alguns dos membros fundadores do Arduino, que se separaram e decidiram usar a marca Arduino de forma separada, gerando a confusão judicial.

No final das contas sabemos que é apenas uma batalha de egos e que apesar de alguns dos fundadores garantirem que será uma coisa boa, eu acho que enfraquecerá a marca e a comunidade Arduino no mundo. Vou explicar porque acho isso.

Hoje quando falamos Arduino, estamos nos referindo a um conjunto de ferramentas de desenvolvimento de Hardware, incluindo aquela famosa placa azul com o chip ATMega da linha MegaAVR da Atmel; e também um padrão de pinagem chamado Pinout REV3, que deu origem ao famoso Arduino UNO REV3; além um pacote de programas conhecido por IDE do Arduino.

Muita gente acha que a IDE do Arduino trata-se de um único programa, mas não é verdade, pois além de uma toolchain inteira da plataforma MegaAVR da Atmel, traz também o AVRDude e alguns outros programas que atuam nos bastidores, como o compilador GCC.

Esse conjunto de ferramentas, bem azeitado, entregue ao desenvolvedor pronto e integrado foi o que garantiu o sucesso da plataforma de desenvolvimento 8-bits que o PIC, da Microchip, nunca conseguiu oferecer ao iniciante.

Como a equipe fundadora do Arduino está se separando entre brigas judiciais e criando novas marcas, como é o caso do Genuino, apenas para indicar uma placa que não foi fabricada nos EUA, vai confundir demais o iniciante.

E a plataforma Arduino foi criada para o iniciante. Pois quem já é iniciado utiliza apenas a plataforma da Atmel, com os chips da linha MegaAVR. E ainda podem optar por usar o bootloader do Arduino (que na verdade foi escrito pela equipe da Atmel e apenas personalizado pela equipe do Arduino), pois como é código aberto, pode ser utilizado sem restrições, além de poder ser personalizado para as necessidades do desenvolvedor. Ou então não usar bootloader nenhum, o que ocorre também.

Resumindo, a equipe fundadora do Arduino, sem a marca "Arduino" vai afundar em processos e confusões, abrindo espaço para as grandes empresas nadarem de braçada nesse mercado, como a própria Atmel, além da Intel, Microchip, Samsung, entre outras...

Isso sem falar que os Chineses não estão nem aí e vão continuar clonando tudo e aproveitando a confusão para lucrar mais ainda!

E os iniciantes vão ficar sem saber se devem baixar o Arduino IDE Mainstream, ou o Arduino IDE 1.6.6 ou ainda o Arduino Studio 0.0.5 etc. Ou ainda se devem baixar do site Arduino.cc ou do Arduino.org

Isso tudo vai transformar a vida do iniciante um inferno! Pois já tem gente achando que o Arduino Zero é um substituto do Arduino UNO, sendo que o primeiro é 32-bits e o segundo é 8-bits, e que não tem nada a ver um com o outro.

Não é fácil explicar esse tipo de coisa para o iniciante e mesmo para quem contribui com material educacional não vai se arriscar a criar nada para uma plataforma tão instável.

Eu por exemplo prefiro em 2016 criar material educacional para o RaspberryPi do que para o Arduino Due ou para o Arduino Zero.

O fato é que na minha opinião, a equipe fundadora do Arduino não deveria ter saído da plataforma 8-bits. Puseram tudo a perder... Só espero que consigam a tempo reverter as brigas em coisas produtivas, pois o termo IoT já pegou e o Arduino vai perder espaço em breve!

Faz parte. Desenvolver tecnologia de ponta para um mercado que não sabe direito do que precisa ainda; e para uma indústria que não sabe exatamente o que produzir ainda, é assim mesmo! Vamos aos trancos e barrancos.

O fato é que 2015 foi um ano muito ruim para todos. Vamos esperar coisas boas para 2016!

Abraços,
Renato Aloi

quarta-feira, 7 de outubro de 2015

Carta Aberta ao NOVO Ministro de Tecnologia

Boa noite Ministro Celso Panseira!

Parabéns pela "aquisição" da pasta de Ciências & Tecnologia do Brasil!

Sei que o Sr. já passou por 4 partidos e que é dono de restaurante... Além de ser formado em Letras e um leitor assíduo do dicionário!

Gostaria de saber como o Sr. pretende contribuir para esse Ministério tão importante para o futuro do nossos engenheiros e tecnólogos?

Acho que seria importante o Sr. fazer uma declaração pública sobre suas ideias e planos para atuar no Ministério da Tecnologia.

Eu não queria lhe assustar, mas nós tecnólogos temos dificuldades de aceitar administradores da pasta de Tecnologia que são da área de humanas...

Mas eu sei que o Sr. é muito criativo, uma vez que tirou o nome do seu restaurante de uma palavra bonita do dicionário!

Aliás fico muito feliz pela sua dedicação no assunto em que o Sr. é formado! Afinal de contas um letrado que não conhece o dicionário é imprestável, né?

Assim pensamos os tecnólogos sobre um administrador na pasta de exatas, mas com formação em humanas. É imprestável também, concorda?

Só espero que o Sr. não seja tão imprestável quanto o seu antecessor Aldo Rebelo que não fez nada além de tentar criar um projeto para acabar com o dia do halloween e instituir o dia do Saci-Pererê!

Não espero que o Sr. seja um Marco Antonio Raupp que é formado em física, doutorado em matemática, além de presidente do SBMAC (espero que o Sr. saiba o que é isso) e também ex-diretor do Inpe... Devo continuar ou o Sr. já entendeu?

Não acredite que somos bobos, pois sabemos que seu cargo foi "loteado" e negociado de forma política e que o Sr. passou por 4 partidos, mostrando que não tem escrúpulos e nem firmeza ideológica. Apenas interesses pessoais. Nós sabemos disso e nem precisa se explicar...

Não esperamos muito do Sr., sabemos de suas limitações no assunto de Ciências e Tecnologia.

Portanto não precisa se esforçar muito (eu sei que não vai) apenas esquente a cadeira para alguém que tenha diploma na área de exatas e que leia livros técnicos ao invés de dicionários.

Sem mais nada a dizer, sem mais esperanças no futuro tecnológico do Brasil, termino essa carta pedindo que o Sr. diminua seu próprio salário, pois o Sr. não tem as características necessárias para exercer essa pasta, portanto acredito que o Sr. deveria ganhar menos.

Ah! Se o Sr. interessar, tem umas faculdades de tecnologia que duram apenas 2 anos e iriam agregar muito ao seu conhecimento na área. E algumas ainda oferecem o curso a distância, o que não atrapalharia suas tarefas como dono de restaurante, leitor de dicionário, e no tempo livre, Ministro da pasta de Ciências e Tecnologia.

Atenciosamente,
Renato Aloi
seriallink.com.br
Indústria Brasileira

domingo, 4 de outubro de 2015

O que é Arduino Standalone?

Bom dia pessoal!

Hoje vamos falar do Arduino Standalone!

Esse termo "standalone" não tem tradução direta para o português. Ele significa "ficar sozinho", mas não de uma forma solitária, e sim de uma forma de "vigia da torre".

O vigia de uma torre também "fica sozinho", mas ele está cumprindo um papel! Ele está trabalhando!

O Arduino Standalone é baseado no chip principal da plataforma Arduino, que é o ATMegaXXX (onde XXX é o modelo do ATMega). Ele é fabricado pela Atmel e faz parte da linha de produtos chamada MegaAVR.

Todos os microcontroladores da plataforma Arduino (exceto pelo DUE) são da linha MegaAVR que é uma das plataformas 8 bits da Atmel.

Esta plataforma MegaAVR da Atmel, que lançou os ATMegas, e que a equipe Italiana do Arduino decidiu usar em seu projeto, é a evolução da plataforma anterior, que é o 8051.

Ainda tenho algum material sobre 8051 no Laboratório da Serial Link (e também tem muito material sobre standalone e protuino, que é o standalone da Serial Link):

http://seriallink.com.br/lab/

Pra quem já trabalhou com 8051 sabe que Standalone é o padrão. O Arduino UNO agregou várias funcionalidades na placa pra facilitar nosso trabalho na bancada.

Mas no chão de fábrica, seu chip ATMega com seu programa Arduino estão sozinhos!

Se você quiser alimentação de 3.3V, terá que fazer o circuito você mesmo! Não tem almoço grátis! Mas tem dica! Use um LM317!


Eu mesmo quando comecei, foi pelo Protuino, que é um Arduino Standalone da Serial Link funcionando em uma protoboard, veja o link do produto educacional:

http://seriallink.com.br/web/index.php?r=produtos%2Fkitprotuinoftdi

Essa versão do link acima é a mais atual, com manual para professor, dicas de montagens etc. O material original pode ser encontrado no primeiro link do Laboratório da Serial Link.

Muita gente não conhece a história do Laboratório da Serial Link (LdSL) e confunde com a do Laboratório de Garagem (LdG).

A verdade é que o Laboratório da Serial Link nasceu encubado dentro do LdG, mas que, por desacordos comerciais, separaram.

Dito isso, é possível ver muito do material original no meu canal antigo:

http://www.youtube.com/graccula

Os primeiros vídeos desse canal mostram (de forma amadora, claro) o nascimento do Protuino e todo trabalho de clonagem do FTDi, que é a plataforma USB/Serial da Serial Link.

Pois no Arduino Standalone você não tem conversor USB/Serial, então ou você usa um Arduino UNO pra gravar o chip, ou você conecta um Conversor USB/Serial direto no chip do ATMega para gravar o programa do Arduino.

A equipe italiana do Arduino partiu para outra plataforma diferente do FTDi, pois eles adotaram uma linha de microcontroladores da Atmel que já tem o conversor USB/Serial embutido no chip, e que ainda pode ser programado para nossa vantagem!

Legal né? Só que isso dá muito problema e vemos uma enchurrada de iniciantes reclamando que o Arduino parou de responder quando ligamos na USB do computador.

Isso acontece pois o chip ATmega com USB/Serial embutida as vezes "esquece" sua programação original e pára de funcionar de uma hora pra outra...

Por isso a Serial Link nunca abandonou a plataforma FTDi como sendo a USB/Serial mais eficiente que existe atualmente.

Isso sem falar que o chip FT232RL possui várias funcionalidades adicionais, como por exemplo uma saída 3.3V que já economiza um circuito adicional de regulador de tensão.

A própria Robocore não acompanhou a equipe italiana e manteve o FTDi em seu Arduino Black Board.

Atualmente ficou claro que a plataforma Arduino é um sucesso tão grande e tão avassalador, que já estamos desmontando aquela placa azul e jogando ela fora.

Já estamos conseguindo tomar nossas próprias decisões de layout de circuitos de forma que atenda o mercado brasileiro de uma forma que o italiano ou o chinês nunca vão conseguir.

E vamos em frente!

Que venha a GBK Robotics! Vamos criar uma epidemia de Arduino no Brasil!



Abcs,

Renato Aloi



quarta-feira, 30 de setembro de 2015

Vantagens da FRAM no Arduino Contra EEPROM

O que é FRAM?


É um acrônimo para Memória RAM "Ferro-Elétrica", porém não volátil, que pode reter os dados mesmo depois de desligada alimentação elétrica. Mas ao contrário do que o nome indica, FRAM não é afetada por campos magnéticos, pois não possui realmente ferro na composição do chip. Materiais "ferro-elétricos"mudam de polaridade em um campo elétrico, mas não são afetados por campos magnéticos.

Quais são as vantagens da FRAM sobre Flash/EEPROM?


1) Velocidade! FRAM possui tempos de escrita bem mais curtos. Levando em conta todas operções envolvidas, um ciclo de escrita da FRAM leva menos de 50ns (nanosegundos). Isso é aproximadamente 1000x mais rápido que a EEPROM. Sem falar que a EEPROM precisa de dois passos de escrita: um comando de escrita, seguido por um comando de leitura/verificação. Já a função de escrita na memória FRAM acontece no mesmo processo de leitura da memória. Ou seja, existe apenas um comando para escrita e para leitura. Então, na prática, todo trâmite demorado de escrita da EEPROM é eliminado com eficiência em um modelo baseado em um chip FRAM.

2) Baixo Consumo. A escrita em uma célula da FRAM ocorre em baixa voltagem; e muito pouca corrente é suficiente para alterar os dados. Na EEPROM precisamos de altas voltagens. FRAM utiliza tensão de 1.5V, sendo que essa baixa voltagem se traduz em eficiência energética e permite adicionar mais funcionalidades a taxas mais altas de transferência.

3) Confiabilidade. Pela razão de apenas uma pequena quantidade de energia ser necessária para alimentar a FRAM, o chip já consome de antemão toda energia necessária para funcionar, evitando perda de dados (data-tearing), que é um efeito que ocorre na EEPROM. Além disso, FRAM acumula mais de 100 Trilhões de ciclos de leitura/escrita, ou mais -- excedendo de longe os ciclos de escrita da EEPROM.


Como utilizar no Arduino?


Existe um módulo da Adafruit:

https://www.adafruit.com/products/1897

Mas basta usar diretamente o chip MB85RS256 da Fujitsu para ter 256K de memória não volátil adicionais no seu Arduino!

http://www.fujitsu.com/downloads/MICRO/fma/formpdf/fram_rs256fs.pdf

Veja também a biblioteca para FRAM no Arduino:

Versão 1:
http://hackscribble.github.io/hackscribble-ferro-library/

Versão 2:
https://github.com/adafruit/Adafruit_FRAM_SPI

Abraços
Renato Aloi

Cobertura 4G no Brasil

Bom dia!

Até uns anos atrás, apenas reparávamos no ícone do sinal da rede de celular, quando aparecia o famoso "3G" escrito no topo da tela.

Ficávamos eufóricos quando isso acontecia! E finalmente a conexão fluia! Era até possível navegar na Internet pelo 3G! Baixar email no celular!

A gente ficava olhando aquele "EDGDE" escrito no topo da tela, como se pudéssemos alterá-lo com o poder da mente!

De repente aparecia o tal 3G... Mas só em alguns pontos da cidade de SP.

Agora estou em Uberlândia e meu Android (que ainda não é o tal de Caramelow), aparece a seguinte simbologia:

E, H, H+, 3G, 4G


Eu só vi esse 4G aparecer (depois que eu troquei o chip para essa nova tecnologia) lá no centro da cidade, em alguns pontos... E ainda sim muito instável.

Aqui na periferia fica sempre ativo o E e as vezes, entra o H (maioria das vezes). Mas bem de vez em quando entra um modo H+. Vai entender!

Eu não sei como eles fatiaram essas faixas de frequencia e nem como organizaram essas portadoras, mas ainda há muito trabalho a ser feito!

O aumento de velocidade quando pula de um Edge para um 3G ou ainda para o 4G é realmente gritante (!) mas a impressão que dá é que "eles" não "liberam" o total do sinal pois a rede não aguentaria o fluxo de dados.

A maior prova disso é que a próprias operadoras estão tendo que limitar o consumo de dados dos clientes.

Na verdade os limites sempre existiram, mas só agora como as velocidades do 4G, conseguimos consumir taxas absurdas de download. E isso está causando problemas para as operadoras e fazendo com que elas tenham que investir em equipamentos caros. O que acaba encarecendo mais ainda a telefonia no Brasil.

A agência que regula telefonia só aplica multas e castigos para os "excessos" que as operadoras aprontam.

Mas quando as operadoras estão excedendo nas suas torturas, é porque o consumidor final já sofreu tanto que ficou evidente! Começa a aparecer notícias na mídia, etc.

Mas a grande verdade é que as agências reguladoras não regulam, os agentes de concessão apenas concedem, e ninguém quer fazer o trabalho de acompanhar de perto o andamento dessas implantações tecnológicas no Brasil.

Enquanto faltarem engenheiros nos cargos e sobrarem politicos nas agências em ONG's, continuaremos assim.

Abraços,
Renato Aloi

terça-feira, 29 de setembro de 2015

Clonagem de Controle de Portão com Arduino

Pessoal,

Bom dia! Eu resolvi escrever hoje sobre esse assunto, pois é de interesse de proprietários de portões eletrônicos, síndicos e administradores de condomínios em geral.

Eu sei que a molecada está doida querendo clonar tudo! Mas vamos com calma aí! Esse post inclusive não é voltado para o técnico, ao contrário, é voltado para o usuário do sistema de portão eletrônico.

Eu tenho uma biblioteca de Controle Remoto RF para Arduino, conforme segue link:

https://github.com/renatoaloi/RFremote

Mas tomei o cuidado de não publicar a parte de clonagem!

Mas e se você tivesse publicado, Renato?

Bom, quando eu publiquei a minha biblioteca no GitHub, em 2013, os fabricantes de controladora de portões eletrônicos já estavam se antecipando e usando códigos criptografados para aumentar a segurança na hora de abrir o portão da garagem.

Eu sei que é tudo uma questão de tempo até que se consiga quebrar todas essas proteções que as empresas de segurança criam, mas até lá elas criam outras e assim vamos tendo alguma segurança.

Vamos entender como funciona essa briga de gato-e-rato e também porque ela acontece!

Porque tem gente tentando quebrar segurança desses controles?

Nem todos são bandidos. Lógico que existem aqueles que desejam um programa igual daqueles filmes de aventura, que com alguns cliques o meliante abre o portão da vítima.

Mas a Internet está aí e programadores do mundo inteiro podem ser contratados com alguns cliques em sites específicos... Precisamos entender onde estão os pontos fracos para nos defender.

E ao mesmo tempo, temos estudantes, hobbistas, músicos, querendo aprender e utilizar essa tecnologia para seus fins.

Ahh, você pensa: Mas estão querendo roubar a criptografia do sistema de portão eletronico desse jeito!

Não é bem assim. As fabricantes de controladoras de portão eletrônico não possuem tecnologia de criptografia. Elas importam de empresas como Microchip, Atmel, etc. Então, muitas vezes os programadores das empresas que fabricam essas controladoras possuem o mesmo conhecimento (ou menos) de um programador experiente da indústria!

Então é um jogo de gato e rato pois as empresas de portões eletrônico tem que consultar os hackers especialistas em quebrar esses códigos para justamente saber qual a melhor opção. E tem que ser assim!

Um bom hacker que consegue uma façanha dessas deve ser contratado e não preso!

Ahhh, mas como saber se eu estou seguro com o meu portão eletrônico?

A dica que eu quero deixar para os moradores,  síndicos e administradores de condomínio que fazem uso de portão eletrônico, verifiquem qual tecnologia é utilizada para criptografia dos dados.

Vejamos, existem atualmente 3 tipos de segurança envolvendo acionamento de portões eletrônicos.

1) Learning Code - Sem criptografia
2) Rolling Code - Criptografia por "rolagem" de chave-privada
3) Hopping Code - Criptografia KeeLoq da Microchip de 128-bit

O primeiro é o Learning Code, que não tem criptografia e se você está usando esse tipo de sistema no seu portão eletrônico, você NÃO está seguro!

O segundo Rolling Code é bem mais seguro e é baseado em uma chave fornecida pela empresa fabricante da controladora. O usuário nem percebe que essa chave existe e sem ela o hacker mal-intencionado não consegue fazer nada! Você ESTÁ seguro! Até um futuro próximo. Pois não é impossível tentar advinhar essa chave, pois ela não é grande como nosso próximo caso.

O terceiro e último sistema de segurança é o Hopping Code, que é o mais atual e mais seguro que se manterá assim por bastante tempo no futuro. Mesmo os melhores hackers vão ter que suar muito a camisa pra conseguir burlar a chave de 128-bits e a criptografia KeeLoq da Microchip, que é uma das principais fabricantes de chip no MUNDO.

Verifique então com seu fornecedor qual é o chip que ele está usando ao lhe fornecer o equipamento.

Qual Chip deve ter meu equipamento para eu me sentir seguro?

Abra o controle remoto do seu portão eletronico e tente ler as inscrições no chip principal da placa. Compare com as informações abaixo para saber se você está seguro ou não:

Chip HT6P20X - Troque imediatamente seu sistema de portão eletrônico! Pois ele não é seguro!

Chip HCSXXXX - Se seu chip começa com HCS, pode ficar tranquilo, você está seguro, mas tenha em mente nos próximos 4 anos trocar pelo Hopping Code.

Chip MCSXXXX - Esses são da Microchip, você estará seguro pelos próximos 4 anos pelo menos.

Não existe computador no mundo atualmente que consiga quebrar uma chave de criptografia de 128-bits nos próximos 2 anos pelo menos.


Mas como tudo muda muito rápido, pode ser que a minha previsão não chegue a 4 anos. Vamos ver!

Material para leitura:

Para finalizar, se você gosta de números, veja quando tempo levaria para quebrar uma chave de 128-bits:

São 2128 = 340282366920938463463374607431768211456 possiveis chaves de  128 bits; significa que levaria milhões de anos para descobrir a chave certa.

Fonte: http://security.stackexchange.com/questions/31726/why-so-long-to-break-128-bit-encryption


Abraços,
Renato

sábado, 26 de setembro de 2015

Tutorial Matemática de Bits no Arduino


Introdução

Normalmente quando programamos no ambiente computacional do Arduino (ou em qualquer outro computador), habilidades como manipular bits individualmente se tornam úteis e até necessárias. Aqui algumas situações onde a Matemática de Bits pode auxiliar:

  • Economizar memória, armazenar 8 valores binários (true/false) em apenas 1 byte
  • Ativar/Desativar bits individualmente para controlar Registradores de Porta
  • Executar determinadas operações aritméticas, envolvendo cálculos em potência de base 2

Neste tutorial primeiro exploraremos o básico dos operadores de bit disponíveis na linguagem C++. Então aprendermos a combinar essas técnicas para efetuar certas operações bem úteis.


Sistema Binário

Para explicar melhor os operadores de bit, este tutorial apresentará a maioria dos valores inteiros usando a notação binária, também conhecida como “Base de 2” ou “Base Binária”. Neste sistema binário, todos os valores inteiros são expressos utilizando-se apenas dígitos 0 e 1. É dessa forma que todos os equipamentos eletrônicos armazenam dados internamente. Cada dígito 0 ou 1 é chamado de bit, que é um apelido para “binary digit” (dígito binário, em inglês).

No sistema decimal (base 10), que estamos acostumados, fatorando um número como 572 temos 5*102 + 7*101 + 2*100. Da mesma forma, fatorando um número binário como 11010, temos 1*24 + 1*23 + 0*22 + 1*21 + 0*20 = 16 + 8 + 2 = 26 (em decimal).

Infelizmente a maioria dos compiladores C++ não fornecem quaisquer meios para o programador expressar números binários diretamente no código. Mas felizmente o Arduino, desde a versão 0007, possui as constantes B0 até B11111111 definidas por para nos ajudar a representar números binários de 8 bits, do 0 ao 255 (em decimal).

Dica: Lembre-se que 28 = 256


Operador de Bit AND

O operador de bit chamado AND no padrão C++ é expresso por um “ampersand” &, usado entre duas expressões numéricas. O operador AND manipula cada posição de bit, atuando sobre os números envolvidos na operação, de acordo com a seguinte regra: se ambos os bits da mesma posição em ambos os lados da expressão forem 1, o resultado também é 1, caso contrário o resultado é 0. Uma outra forma de escrever isso é:

0 & 0 == 0
0 & 1 == 0
1 & 0 == 0
1 & 1 == 1
No Arduino, o tipo de variável int é um valor de 16-bits, então ao usarmos o operador & entre duas expressões int, temos 16 operações simultâneas ocorrendo, uma para cada posição de bit. Em um fragmento de código como este:

int a =  92;    // em binario: 0000000001011100
int b = 101;    // em binario: 0000000001100101
int c = a & b;  // resultado:  0000000001000100, or 68 in decimal.
Cada um dos 16 bits da variável a ou b são processados usando o operador AND, e todos os 16 resultados são gravados na variável c, gerando o valor 01000100 em binário, que é 68 em decimal.

Um dos usos mais comuns para o operador de bit AND é selecionar um (ou mais) bit(s) a partir de um valor inteiro, o que chamamos de “masking” (mascarar). Por exemplo, se você quiser acessar o último bit menos significante da variável x, e guardá-lo na variável y, você poderia usar o código a seguir:

int x = 5;       // em binario: 101
int y = x & 1;   // agora y == 1
x = 4;           // em binario: 100
y = x & 1;       // agora y == 0
Dica: Use essa técnica para saber se o número é par ou impar. Se você verificar o bit mais alto, você consegue determinar se o número é positivo ou negativo. Veja mais abaixo...

Operador de Bit OR

O operador OR em C++ é o símbolo de barra vertical |. Assim como o operador &, o operador | atua independentemente em cada bit dos dois lados da operação. Mas o que ele faz é diferente (claro). O operador OR retorna 1 quando qualquer um dos bits de entrada for 1, caso contrário, retorna 0. Em outras palavras:

0 | 0 == 0
0 | 1 == 1
1 | 0 == 1
1 | 1 == 1
Abaixo podemos ver um exemplo de uso do operador OR em um trecho de código C++:

int a =  92;    // em binario: 0000000001011100
int b = 101;    // em binario: 0000000001100101
int c = a | b;  // resultado:  0000000001111101, ou 125 em decimal.
O operador de bit OR é normalmente usado para garantir que um bit esteja ligado (configurado com valor 1) em uma determinada expressão. Por exemplo, para copiar os bits da variável a para variável b, garantindo que o último bit seja 1, use o seguinte código:

b = a | 1;


Operador de Bit XOR

Temos aqui um operador não muito usual em C++ chamado operador de bit exclusivo OR, também conhecido por XOR. Este operador é expresso pelo símbolo de circunflexo ^, e é similar ao operador OR, exceto pelo fato que ele retorna 1 quando apenas um dos lados da operação tem entrada com valor 1. Se ambos os bits dos dois lados da operação forem 0 ou forem 1, ambos ao mesmo tempo, o retorno do XOR será 0, conforme segue:

0 ^ 0 == 0
0 ^ 1 == 1
1 ^ 0 == 1
1 ^ 1 == 0
Outra forma de olhar para o operador XOR é que o resultado é 1 quando ambos bits da operação são diferentes; e o resultado é 0 quando são iguais, ao mesmo tempo.

Temos aqui um código de exemplo:

int x = 12;     // em binario: 1100
int y = 10;     // em binario: 1010
int z = x ^ y;  // em binario: 0110, ou em decimal = 6
O operador ^ é normalmente usado para inverter um valor de 1 para 0 e vice-versa. Atuando em apenas um ou mais bits da equação e deixando outros em paz. Por exemplo:

y = x ^ 1;   // inverte o bit menos significativo em x
   // e guarda resultado em y.


Operador de Bit NOT

O operador NOT em C++ é escrito usando o símbolo do til ~. Ao contrario dos operadores & e |, o operador NOT é aplicado a um único operando que fica a direita. O operador NOT muda cada bit para seu oposto: 0 vira 1 e 1 vira 0. Por exemplo:

int a = 103;    // em binario:  0000000001100111
int b = ~a;     // em binario:  1111111110011000 = -104
Você deve estar surpreso de ver um número negativo como resultado da operação, como -104. Isto acontece porque o bit mais alto de um número inteiro é chamado de bit de sinal. Se o maior bit do número, em questão, for 1, significa que ele é interpretado como negativo. Esta codificação de positivo e negativo de um número é chamada de “complemento de dois”.

As vezes um inteiro com sinal pode causar problemas na programação. Veremos mais adiante.

Dica: Para retirar o sinal de um tipo de variável, declare-a antecedendo com a palavra "unsigned". Exemplos: unsigned int a; unsigned long b; unsigned char c;

Operadores de Deslocamento de Bit

Existem dois operadores de deslocamento na linguagem C++: o operador de deslocamento para a esquerda << e deslocamento para direita >>. Estes operadores deslocam os bits do operando da esquerda da equação pela quantidade de posições determinadas pelo operando da direita. Por exemplo:

int a = 5;        // em binario: 0000000000000101
int b = a << 3;   // em binario: 0000000000101000 = 40
int c = b >> 3;   // em binario: 0000000000000101 = 5
Quando você desloca um valor x por y bits (x << y), a quantidade y de bits mais a esquerda de x será perdida, deslocada para o além:

int a = 5;        // em binario: 0000000000000101
int b = a << 14;  // em binario: 0100000000000000
   // descartou primeiro 1 de 101
O importante é que não existam bits de interesse mais a esquerda quando for efetuar um deslocamento para esquerda. E a mesma coisa vale para o deslocamento a direita. Uma forma simples de encarar este operador é que o deslocamento para a esquerda é o mesmo que 2 elevado ao operando da direita. Por exemplo, para gerar potências de 2, as seguintes expressões podem ser usadas:

1 <<  0  ==    1
1 <<  1  ==    2
1 <<  2  ==    4
1 <<  3  ==    8
...
1 <<  8  ==  256
1 <<  9  ==  512
1 << 10  == 1024
...
Quando você desloca x a direita por y bits (x >> y), e o bit mais alto é 1, o comportamento depende do tipo de dados da variável x. Se x for do tipo int, é bit mais alto é o que controla o sinal, determinando se x é positivo ou negativo. Como discutido acima, nesse caso, o bit do sinal é copiado para os bits mais baixos, por razões historicamente esotéricas!

int x = -16;     // em binario: 1111111111110000
int y = x >> 3;  // em binario: 1111111111111110
Esse fenômeno é chamado de extensão de sinal. E normalmente não é o efeito que você quer. Ao invés disso, você esperararia que zeros fossem preenchendo os bits novos mais a esquerda. Acontece que as regras para deslocamento a direita são diferentes para as variáveis do tipo unsigned int, então você pode usar um “cast” para suprimir os 1's aparecendo na esquerda.

int x = -16;               // em binario: 1111111111110000
int y = unsigned(x) >> 3;  // em binario: 0001111111111110
Se você tomar cuidado em evitar tipos de dados com sinal, você então pode usar o operador de deslocamento a direita >> como uma forma de dividir pelas potências de 2. Por exemplo:

int x = 1000;
int y = x >> 3;   // divisao de 1000 por 8
    // resultado y = 125.

Operadores de Atribuição

Muitas vezes na programação queremos operar nos valores de uma variável x e guardar essa informação modificada de volta na mesma variável x. Na maioria das linguagens de programação, por exemplo, você poderia incrementar o valor por 7, usando o seguinte código:

x = x + 7;    // incrementa x em 7

Por causa desse tipo de coisa ocorrer tão frequentemente, a programação C++ oferece um atalho em forma de operadores de atribuição especiais. O código acima pode ser escrito de forma mais concisa, assim:

x += 7;    // incrementa x em 7

Acontece que os operadores de bit AND e OR, deslocamento para direita e deslocamento para a esquerda, todos eles também possuem atalhos de atribuição. Vejamos um exemplo:

int x = 1;  // em binario: 0000000000000001
x <<= 3;    // em binario: 0000000000001000
x |= 3;     // em binario: 0000000000001011
            // porque 3 = 11 em binario
x &= 1;     // em binario: 0000000000000001
x ^= 4;     // em binario: 0000000000000101
     // inverte usando mascara 100
x ^= 4;     // em binario: 0000000000000001
     // inverte usando mascara 100 de novo
Não existe atalho para o operador de bit NOT, então se você precisar inverter os bits de uma variável x, você precisará fazer assim:

x = ~x;    // inverte todos os bits de x
    // guarda de volta em x

Tradução livre do original http://playground.arduino.cc/Code/BitMath
Por Renato Aloi


quinta-feira, 24 de setembro de 2015

Arduino - Manipulação Direta de Portas

Registradores de Portas

Registradores de portas (PORT) nos permitem acesso de baixo-nível e uma manipulação mais eficiente das portas de e/s do microcontrolador, em uma placa Arduino. Vamos falar dos chips utilizados, que podem variar entre o ATMega8, 168 e 328. Estes chips em questão possuem 3 canais de Portas:
  • B (portas digitais de 8 a 13)
  • C (entradas analógicas)
  • D (portas digitais de 0 a 7)
Cada canal é controlado por 3 Registradores (sendo 1 de configuração, um de manipulação de portas digitais e um só de leitura), e cada qual pode ser definido como variável de sistema, na linguagem do Arduino.

1) Existe um registrador chamado DDR que configura o sentido da porta se ela é de saida (OUTPUT) ou de entrada (INPUT).
2) O Registrador PORT controla se a porta está no estado lógico alto (HIGH) ou baixo (LOW).
3) Existe também o Registrador PIN que efetua a leitura das portas configuradas como INPUT pela função pinMode().

O mapeamento dos chips ATmega8 e ATmega168 mostram essas portas. O chip Atmega328p que é mais novo, segue o mesmo modelo de portas do Atmega168 exatamente!

Os Registradores DDR e PORT podem ser escritos e lidos. Já o Registrador PIN só pode ser lido!

PORTD mapeado para as portas digitais 0 até 7 do Arduino
DDRD - Registrador de Sentido do Port D - leitura/escrita
PORTD - Registrador de Estado do Port D - leitura/escrita
PIND - Registrador das Entradas do Port D - leitura apenas
PORTB mapeado para as portas digitais 8 até 13 do Arduino. Os dois bits mais altos (6 e 7) são dos pinos do cristal e não são usados.
DDRB - Registrador de Sentido do Port B - leitura/escrita
PORTB - Registrador de Estado do Port B - leitura/escrita
PINB - Registrador das Entradas do Port B - leitura apenas
PORTC mapeado para as portas analógicas 0 até 5 do Arduino. Pinos 6 e 7 são acessíveis apenas no Arduino Mini
DDRC - Registrador de Sentido do Port C - leitura/escrita
PORTC - Registrador de Estado do Port C - leitura/escrita
PINC - Registrador das Entradas do Port C - leitura apenas
Cada bit desses 3 Registradores correspondem a uma única porta; exemplo: os bits mais baixos dos Registradores DDRB, PORTB e PINB são referentes ao pino PB0 (porta digital 8). Para conhecer o mapeamento completo de portas do Arduino e dos bits dos Registradores, acesse o diagrama correspondente ao seu chip: ATmega8, ATmega168. (Nota: Alguns bits de algumas portas podem ser usados para outras funcionalidades além de e/s (entrada/saida); seja cuidadoso para não alterar os bits correspondentes a essas portas)

Atenção! Nota do Renato Aloi! Não altere os bits da porta serial! Você pode desligar ela e vai ser difícil ligar ela de novo! Veja mais abaixo, continue lendo...

Exemplos

Se pegarmos os pinos do mapeamento acima, os Registradores referentes ao PortD controlam as portas digitais 0 até 7.

Você deve notar, entretanto, que as portas 0 e 1 já são usadas pela comunicação serial, para carregar programas e para depuração. Portanto, alterar os bits dessas portas deve ser evitado para não desligar a serial! Esteja avisado que estes procedimentos podem interferir no funcionamento da Serial e que você pode acabar não conseguindo mais carregar programas no Arduino!

DDRD é o registrador que configura a direção para o PortD (portas digitais 0-7 do Arduino). Os bits nesse Registrador controlam se as portas do PORTD estão configuradas como entradas ou saídas, por exemplo:

DDRD = B11111110;  // configura portas 1 ate 7 como saidas,
                   //e a porta 0 como entrada
 
DDRD = DDRD | B11111100;  // esta eh uma forma mais segura 
                   // de configurar os pinos 2 ate 7 como saida
                   // sem mudar as configuracoes dos 
                   // pinos 0 e 1 que sao da serial 


Vide operadores de bit nas páginas de referência The Bitmath Tutorial do Playground (traduzido para português por Renato Aloi).

PORTD é o Registrador dos estados das saídas. Por exemplo:

PORTD = B10101000; // registra valor HIGH 
                   // nas portas digitais 7,5,3

Você deverá ver 5V saindo nessas portas, mas só se você configurou o Registrador DDRD como saída, ou através da função pinMode().


PIND é o Registrador das entradas. E ele faz a leitura de todas as portas digitais de uma só vez!

Porque usar Manipulação Direta de Portas?

Retirado do The Bitmath Tutorial:

De forma geral, fazer esse tipo de acesso direto a portas não é uma boa ideia. Porque não? Aqui vão algumas razões:
  • O código fica muito mais difícil de ler e de manter. Além de ser muito mais difícil para outras pessoas poderem entender ou reaproveitar seu código. Leva apenas alguns microsegundos para que o processador execute o código, mas você pode levar horas para encontrar algum defeito e consertá-lo!
  • O código é menos "portável". Se você usar as funções digitalRead() e digitalWrite(), é muito mais fácil de escrever códigos que vão funcionar em todas as versões das placas Arduino. Já controlar diretamente os Registradores é diferente para cada tipo de microcontrolador.
  • Não é difícil causar avarias por acidente enquanto programando e testando acesso direto às portas digitais. Executar a linha DDRD = B11111110; trocando o 0 final por 1, sem querer, ou por distração mudará a configuração do pino RX da serial para saída em vez de entrada e seu Arduino ficará "surdo" da serial.
Então você deve estar pensando: Legal! Nunca vou usar esse negócio então! Mas não é bem assim, existem muitas vantagens em se usar essa técnica de acesso direto às portas, tais como:
  • Você pode querer mudar o estado (entre ligado e desligado) de uma porta muito rapidamente, em frações de microsegundo. Se você der uma olhada no código lib/targets/arduino/wiring.c, verá que as funções digitalRead() e digitalWrite() são compostas de uma dúzia de linhas, que ao serem compiladas formam algumas instruções de máquina. Cada instrução de máquina precisa de um ciclo de clock rodando a 16Mhz, que pode adicionar erros de tempo em circuitos críticos, como processamento de sinal, etc. Manipulação direta das portas pode fazer o mesmo serviço em muito menos ciclos de clock.
  • Algumas vezes você precisa acionar várias portas digitais ao mesmo tempo, e não pode esperar acionar uma primeiro pra depois acionar a outra. Chamando a função digitalWrite(10,HIGH); seguida por digitalWrite(11,HIGH); fará com que a porta 10 primeiro fique em estado HIGH, para apenas vários microsegundos depois a porta 11 também ficar com estado HIGH. Se houver algum circuito externo que espere que ambas as portas fiquem ativas ao mesmo tempo, ele não funcionará. Mas usando acesso direto as portas, você pode configurar as portas para ficarem ativas ao mesmo tempo, com a mesma instrução PORTB |= B1100;
  • Ou se você está sem memória FLASH, você pode usar essas tecnicas para fazer seu código ficar menor. Pois muito menos instruções serão geradas para alterar o estado das portas usando manipulação direta do que pelas funções. As vezes esses truques são a diferença que fazem seu programa caber na memória flash ou não!

Veja Também

The text of the Arduino reference is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.
Tradução livre do original https://www.arduino.cc/en/Reference/PortManipulation
Por Renato Aloi

segunda-feira, 21 de setembro de 2015

Arduino -- Por onde começar?

Bom dia!

Muita gente nova chegando no mundo Arduino! Bem vindos!

Mas por onde começar? Eu sei que parece difícil a princípio, mas não é não!

Leva um tempo, é verdade! Se você já tem um projeto e não tem tempo para aprender você mesmo Arduino, sugiro que procure um profissional da área. Você pode começar pelo fórum, no tópico de classificados de empregos e oportunidades do Curso Arduino:

http://seriallink.com.br/forum/viewforum.php?f=93

Eu também desenvolvo projetos em Arduino, mas não estou dando conta de atender o Brasil todo.

Por isso estou lançando insistentemente campanhas convocando os programadores em Arduino, pois estamos precisando! Os clientes estão carentes de soluções simples e baratas!

E o Arduino traz tudo isso de bom para o desenvolvedor e para o cliente também!

O desenvolvedor ganha experiência, dinheiro e investe pouco. O cliente resolve seu problema gastando pouco. Todo mundo sai ganhando e fica feliz!

Você está começando?

Começe pelo Arduino UNO!

Eu sei que muita gente ainda tem dúvidas sobre o Arduino ser original ou falsificado ou ainda qual versão comprar?

A grande verdade é que não importa muito se você vai comprar um Arduino Original ou um Clone Chines. Você estará enriquecendo um Italiano ou um Chinês. Você escolhe.

Uma opção muito boa enquanto eu não lanço de novo o Arduino Tupiniquim, é o Arduino Blackboard da Robocore:

https://www.robocore.net/modules.php?name=GR_LojaVirtual&prod=530

Que é uma placa com design brasileiro e você tem garantia de estar comprando um produto brasileiro e não um pirata de outro país.

Enfim, de uma forma ou de outra compre um Arduino UNO Compatível! Seja pelo Mercado Livre ou pela Robocore, compre o seu!

Ahh, Renato, posso comprar um Arduino MEGA?

Pode também! Mas o Arduino MEGA tem algumas características que vão dificultar a vida do iniciante. Melhor começar com o UNO mesmo.

Não tenha pressa! Em menos de um ano você terá comprado mais de um Arduino, então não precisa de pressa em começar com o MEGA. Primeiro compra um UNO e depois você vai se sentir seguro pra comprar um MEGA em menos de 6 meses, eu garanto!

Mas depois de comprar a placa? Fazer o que?

Primeiro você deve seguir esse link para aprender a instalar toda parafernália:

http://renatoaloi.blogspot.com.br/2011/10/instalando-arduino-guia-completo.html

Depois siga esse outro post do blog para se orientar em seus estudos:

http://renatoaloi.blogspot.com.br/2015/09/programador-arduino-brasil-precisa-de.html

Fora todo esse material, ainda tenho alguns posts bem interessantes neste mesmo blog para aumentar seus conhecimentos.


Um material explicando as portas digitais do Arduino. 


Material de referência explicando sobre as funções básicas do Arduino.


Material que explica como separar trechos de códigos e encapsular em funções que possam ser reutilizadas em outras partes do mesmo código.


Material que explica como utilizar, os escopos, tipos e detalhes sobre as variáveis de memória do Arduino.


Esse material fala das constantes, que são macros utilizadas durante a programação, sempre com o mesmo valor, como se fossem parametros configuráveis. Explica a maior parte das palavras-chaves que usamos, como HIGH, LOW etc.

Material completo sobre criação e manipulação de textos no Arduino. Entenda como funcionam os arrays de chars e conheça o objeto String.


Material sobre loops e desvios condicionais da programação do Arduino.


Exemplo completo de como ler os dados analogicos com o Arduino e imprimir na Serial.


Material sobre as portas PWM do Arduino, que possibilitam saída analógica, regulada por largura de pulsos.


Material sobre as portas analógicas do Arduino.
 
Material sobre arrays dentro de arrays, como declarar e como usar essa poderosa ferramenta!


Material completo sobre criação de bibliotecas no Arduino que ajudam a compartilhar o mesmo código entre programas diferentes do Arduino.

Já dá pra montar um livro de programação com esse material né? Vou juntar com um outro material não publicado e tentar achar uma editora pra publicar...


Fora todo esse material de referência, ainda tem minha saga com o ENC28J60 e também alguns posts importantes sobre os módulos RF433mhz.

Esse aqui parar finalizar esse post, fala todos os detalhes do Arduino e a Internet através dos Shields de Ethernet para Arduino:

http://renatoaloi.blogspot.com.br/2013/12/arduino-e-internet-ou-seria-ethernet.html

Boa leitura!

Abraços,
Renato

domingo, 20 de setembro de 2015

Windows 10 vs. Ubuntu 14



Bom dia!

Os usuários do Windows estão em polvorosa!

Basta acessar qualquer rede social para ver telas dos usuários satisfeitos porque conseguiram atualizar seus sistemas!

E também começaram a surgir todo tipo de tutorial. Hoje um me chamou atenção. Explicava como instalar um Projetor no Windows 10... Achei estranho. Precisa de manual pra instalar um mísero projetor no Windows 10?

Falando nisso o que aconteceu com o Windows 9? Pulou do 8 para o 10? Microsoft desaprendeu a contar?

Tenho muita pena de quem depende de Windows pra trabalhar. Eu já tive que usar Windows todo dia e posso dizer que é um inferno e a gente nem sabe.

Basta começar a usar um MACOSX ou um Linux para perceber quanto o Windows é ruim e ainda está em fase de amadurecimento.

Vejamos, o MACOSX, como o próprio nome diz, já está na sua versão 10 desde 2006 eu acho... Atualmente está indo pra versão 11..

O Ubuntu já está na versão 14.04 ou superior. Nem sei qual versão está agora, pois a equipe do Ubuntu não faz marketing com suas atualizações como faz a Microsoft.

Na verdade a Microsoft é uma empresa marketeira e não de sistemas operacionais.

Quem lembra do Bill Gates passando vergonha em 98 com seu Windows que travou ao vivo ao instalar um mísero Scanner!

Bom, se você ainda precisa usar Windows todo dia, grave o Ubuntu em um pen-drive, assim vc pode usar um sistema operacional maduro, sem precisar formatar o computador.


O Linux é só gravar no PenDrive e sair usando!

Pra quem pensa em me perguntar se o Arduino funciona no Windows 10, a resposta é bem simples: Não sei e não pretendo testar tão cedo...

Boa sorte!


Abraços,
Renato

sábado, 19 de setembro de 2015

Interface de Audio para Arduino (VoxRecog Parte 1)

Pessoal,

Bom dia! Estou fazendo 15 coisas ao mesmo tempo, pra variar! :)

Mas uma delas é bem legal pois tem a ver com o post sobre reconhecimento de Voz no Arduino que fiz esses dias aqui no Blog, segue link:

http://renatoaloi.blogspot.com.br/2015/09/reconhecimento-de-voz-no-arduino.html

Bom o que fiz foi desenhar um circuito bem básico para que o aluno possa melhorar depois, mas que a princípio tenha um circuito-base para ligar um microfone de eletreto no Arduino.

Referência sobre Microfones por Unicamp:

http://adessowiki.fee.unicamp.br/media/Attachments/courseEA079_1S2010/MainPage/microfones.pdf

Foto do microfone de eletreto:





Foto do Circuito Utilizado:





Vídeo de funcionamento pode ser visto na Fanpage do Curso Arduino, nesse link:

https://www.facebook.com/cursoarduino1

Abraços,
Renato



sexta-feira, 18 de setembro de 2015

Futuro da Tecnologia - Quem lembra do bidê?

Bom dia!

Os mais novos provavelmente nunca ouviram falar do bidê! Quem é mais antigo conhece e deve estar dando risada agora.

O bidê é um exemplo ótimo da tecnologia que cai em desuso!

https://pt.wikipedia.org/wiki/Bid%C3%AA

Ele simplesmente é uma bacia para lavar as regiões dos "países baixos"!

Quem precisa de uma bacia instalada com um chuveiro hoje em dia para lavar a "parte de trás"? Talvez os idosos e hospitais, mas no dia-a-dia, o bidê caiu em desuso!

Porque uma tecnologia sai do foco de interesse das pessoas?

Afinal de contas alguém teve que pensar, projetar, desenhar (no papel, pois não tinha CAD na época), fabricar, montar linha de produção e tudo mais; para comercializar bidês!

Pensem nisso! Muitas empresas investiram dinheiro fabricando bidês!

Agora se ampliarmos esse conceito, um Motorola StarTAC pode ser considerado um bidê, não?

https://pt.wikipedia.org/wiki/Motorola_StarTAC

Afinal de contas quem usa um Motorola StarTAC, que foi um sucesso nos anos 2000, quando da chegada dos aparelhos celulares no Brasil?

Não tem mais uso. Acho que a rede dele nem funciona mais, não deve ser compatível com as novas redes modernas 4G... Então esse tipo de bidê acaba sendo jogado no fundo de uma gaveta e esquecido.

-------

Muito tempo depois.... em 2015? (diria um filme holiudiano)

Um garoto que acaba de receber seu StarterKit Microcontrolador Plus+, em visita na casa dos avós, sai abrindo todos os compartimentos a procura de todos os bidês que podem ser desmontados e ligados no seu novíssimo kit de desenvolvimento que acabou de chegar pelo correio intergalático!

Abraços,
Renato Aloi


quinta-feira, 17 de setembro de 2015

ENC28J60 - Nova Contribuição da Comunidade Arduino

Pessoal,

Boas novas sobre o ENC28J60! Parece que finalmente vou ter tempo para finalizar as novas implementações (e finais!) da biblioteca EtherEncLib.h, para Arduino.

Essas últimas implementações são as que vão garantir a entrada da biblioteca para o rol das "oficiais".

Afinal de contas não dá pra chamar de oficial uma biblioteca de Ethernet que não tenha DHCP!

Bom essa é uma das implementações finais que estão faltando...

Mas a outra que nem é tão importante para oficializar a biblioteca, mas vai garantir um lugar ao Sol, por oferecer um recurso que a concorrente biblioteca do W5100 não oferece de forma transparente: WOL (Wake-up On Lan).

Veja como é complicado implementar WOL no W5100:
http://playground.arduino.cc/Main/ArduinoWaker

A biblioteca EtherEncLib.h deve apresentar essas duas características em breve!

E a novidade mesmo é que tivemos mais uma contribuição da comunidade Arduino que nos enviou um código novo para implementar uma Errata que... deixa pra lá... Depois eu explico porque eu mesmo preciso entender direito. Mas o código ficou bonito! Vou testar!

https://github.com/renatoaloi/EtherEncLib/issues/10

Valeu Comunidade Arduino!

Abraços,
Renato Aloi

domingo, 13 de setembro de 2015

Patreon Fazendo Papelon - Pra cima do Arduino!

Bom dia!

O mundo tá virado! Que fique registrado aqui minha previsão de que a Internet das Coisas (IoT) será um fisco tão grande no Brasil, quanto a Black Friday!

Nem preciso explicar porque né?

Dias atrás fiquei sabendo por um grupo do G+ (que finalmente começou a carregar no 3G), de um tal de Patreon, uma plataforma educacional nova...

Até então era só o que eu sabia... Tolinho...

A Samsung já passou na frente de todas as empresas brasileiras e já fechou com a USP sua plataforma educacional chamada Android Samsung.

Ok, vou fechar as portas e vou abrir uma tecelagem. Foi o que sobrou pra os empresários brasileiros...

Se a USP que é uma universidade pública está virando as costas literalmente para a indústria brasileira, quem sou eu pra acreditar em derivativos do Arduino?

A USP já deciciu que a plataforma chamará Android Samsung, que diga-se de passagem NUNCA fez nada pela comunidade Arduino; chega agora e ainda renega o nome da maior comunidade de microcontroladores do Mundo?

Já chega atropelando chegando cheia de termos que não tem nada a ver com a plataforma que estamos tentando amadurecer na comunidade Arduino!

Como a USP pode ser traidora a esse ponto!?

Já fui traído pela Campus-Party (estou pouco me lixando se quiserem me processar, entrem na fila!), quando fez um orçamento gigantesco comigo, me fez comprometer compras enormes com meus fornecedores e depois foi na Sta. Ifigênia e comprou tudo na MultComercial, "porque já estava ali e era mais fácil"!!!

Pode? Depois de todo investimento que fizemos não só em material, mas em auxilio educacional e suporte ao Alexandre da Oficina de Chão, a organização da Campus-Party vai lá e compra na Sta Ifigenia porque era mais fácil!?

Nunca mais participei dessa palhaçada!

Agora a USP! Não!

Chega! Agora vou colocar a boca no trombone e os próximos da fila são SPC e DETRAN!

Fiquei puto!

Link dessa putaria da USP:
http://googlediscovery.com/2015/08/31/estudantes-de-sao-paulo-comecam-a-estudar-internet-das-coisas-com-android-em-kit-da-samsung/

Estou decepcionadíssimo com a classe educadora e acadêmica desse país!

Uma vergonha! Bando de ratos corruptos!

Abraços,
Renato


sábado, 12 de setembro de 2015

Programador Arduino - Brasil Precisa de Você!

Convocação geral do Curso Arduino a todos Arduineiros de Plantão!

Nos próximos anos vamos precisar de muitos programadores treinados na linguagem do Arduino.

Não perca tempo! A hora é agora!

Sim! Você mesmo! Nunca pensou que poderia se lançar no mercado vendendo programas para Arduino?

Vai sim!

Você acha sua região muito distante e que não tem mercado para isso?

Tem sim! Quanto mais distante a região, melhor o mercado!

Não precisa experiência prévia em eletrônica! É realmente sair fazendo!

Ahhh, mas eu nunca vou construir um módulo comercial...

Pode até ser que não, mas com certeza você já tem partes que são utilizadas em módulos comerciais, largamente utilizados, em cima da sua mesa!

Pegue como exemplo os módulos GPS's: que são os mesmo vendidos no Mercado Livre, aqueles usados pelas grandes empresas nas colheitaderas.

De onde você acha que veio o módulo RFID que você liga no seu Arduino para impedir sua irmã de entrar no seu quarto? Da indústria!

O mesmo módulo que você tem em cima da sua mesa de RFID que você liga no seu Arduino é o mesmo utilizado em 90% das empresas do Mundo (!) para dar acesso aos seus funcionários, todo santo dia!

Eu não estou falando de um módulo "parecido"... Mais "robusto", você pensa...

Não! É um módulo tão besta quanto esse que você encomenda no Aliexpress!

Não sabe por onde começar? Não tem problema, é tudo gratuito e online, você aprende no seu tempo!

http://www.youtube.com/cursoarduino

Neste canal, siga as "listas de reprodução" para orientar seu estudo!

https://www.youtube.com/user/cursoarduino/playlists

Comece pelo Básico!

https://www.youtube.com/watch?v=inYEsklZXNE&list=PLCAF80AF0CB5DF8D2

Siga para o Advanced!

https://www.youtube.com/watch?v=wXvlk5I4kSc&list=PLZBvA3l7rI6G7UyWQ4c1Pfq_-FDJwjb65

Exercite seus estudos no Módulo Express do Curso Arduino!

https://www.youtube.com/playlist?list=PLZBvA3l7rI6G9RaYHy0Y1EpcL-klbur7i

E defina sua carreira estudando o Curso Arduino Pró!

https://www.youtube.com/playlist?list=PLZBvA3l7rI6Eb2YMvCvvEWMnsVQKXpprR

Ou o Curso Arduino Automation:

https://www.youtube.com/playlist?list=PLZBvA3l7rI6Fwbi5JSjnD-ONgS0JeQ5Rt

Mas se você é como eu que gosta de fabricar suas próprias placas...

Sim! Tem muito mercado para você também!

Comece pelo Curso Arduino Confecção de PCB's!

https://www.youtube.com/playlist?list=PLZBvA3l7rI6F-vby7e3GkKGJfZwBw-L1D

Existe também um atalho para o quem está estudando Motores DC, Motores de Passo e Ponte H, nesse link aqui:

https://www.youtube.com/playlist?list=PLZBvA3l7rI6HW7nk7KNcbIBH43d8pLrOD

Amém! Você está formado!

Escreva um email para renato. aloi@gmail.com solicitando prova teste para certificado (que ainda não existe, mas você já vai treinando, eu vou criar em breve).

E agora????

Bom, é o seguinte, você vai fazer uma "engenharia reversa" no Arduino!

Isso mesmo você vai tirar o chip ATMega328 com bootloader Arduino UNO, daquela plaquinha bonitinha e azulinha e jogá-la fora!

Você só precisa de um Conversor USB/Serial e um ATMega328 com bootloader Arduino UNO.

Além disso você precisa de um cristal de 16Mhz, um resistor de 10K e um Capacitor de 100nF.

Assim foi criado o Arduino!

Sim! O SEU Arduino!

Você começará a criar derivativos da plataforma Arduino, sem infringir nenhum direito autoral!

Por isso você precisa jogar fora sua placa do Arduino e manter o chip ATMega!

A placa possui direitos autorais sobre o logo etc...

Mas o Código é Aberto! Basta retirar o chip da placa e criar suas próprias placas integradas com o chip do "Arduino" (o ATMega com bootloader Arduino UNO) e dar o nome e o logo que quiser!

Por onde começar a "engenharia reversa"?

Basta montar um Protuino UNO, que foi um produto educacional que criei em 2010 justamente para esse fim. Para que o aluno pudesse experimentar as dificuldades de se construir um Arduino "do zero" em cima de uma Protoboard.

Assim nasceu Protuino!

http://seriallink.com.br/lab/Arduino/Protuino_SerialLink.html

e

http://seriallink.com.br/lab/Arduino/Protuino_UNO_SerialLink.html

Com a mudança da plataforma Arduino Original para os chips ATMega8u2, eu voltei para o FTDi, e sigo até hoje, por isso lancei o Protuino FTDi:

http://seriallink.com.br/web/index.php?r=produtos%2Fkitprotuinoftdi

E também vale dar uma estudada nos links do Laboratório da Serial Link

http://seriallink.com.br/lab

Não é possível formar completamente sem uma graduação em todos os manuais de todas as placas das plataformas Arduino da Serial Link; e confira mais de 200 páginas de material que deve ser completamente compreendido, para total entendimento do conceito derivativo da plataforma Arduino!

http://seriallink.com.br/web/index.php?r=produtos%2Fplacas


Participe do Fórum do Curso Arduino para tirar dúvidas e me envie o email com o link para eu participar. Não consigo atender dúvidas pelo email, apenas no fórum.

http://seriallink.com.br/forum/

Utilize o Arduino Inventor para criar Automações pela Internet usando apenas um Arduino e um Ethernet Shied:

http://seriallink.com.br/web/index.php?r=arduino%2Fsaibamais

E finalmente se você tiver interesse em algum dos tópicos abaixo, estamos por aqui!

Instaladores da Plataforma Automation
http://seriallink.com.br/forum/viewtopic.php?f=93&t=3220

Solução de Gabaritos Utilizando Rede Neural Perceptron
http://seriallink.com.br/forum/viewtopic.php?f=68&t=3450&p=8847


Valeu pessoal! Acompanhem lançamentos de placas e novas plataformas Serial Link pela Fanpage http://facebook.com/cursoarduino1

Ah! E se você ainda quiser as aulas em melhor qualidade, tenho elas em DVD: http://seriallink.com.br/web/index.php?r=produtos%2Fdvds

Abraços,
Renato Aloi



sexta-feira, 4 de setembro de 2015

Europa: chega de afogamentos!

Participe da Petição da Avaaz. Eu participei!

https://secure.avaaz.org/po/no_more_drownings_loc/?wEbdYhb

Para todos os chefes de Estado e governos da União Europeia, e para o presidente da Comissão Europeia:

Nós, cidadãos globais, pedimos que V. Exas tomem a frente dos esforços para construir uma política global de apoio aos refugiados digna do século XXI. Esta política tem que focar em salvar vidas e proteger refugiados de guerras e da fome. Pedimos que V. Exas aumentem consideravelmente o número de refugiados que serão reassentados e realocados em toda a Europa, com o objetivo de reunir as famílias e de modo que a responsabilidade seja compartilhada com toda a União Europeia. Pedimos ainda que dêem apoio financeiro e técnico aos países na linha de frente da crise como a Grécia e garantam que nenhuma ação policial atrapalhará os esforços de resgate das pessoas que procuram refúgio.

Estou Indo Embora... Do Planeta Terra!


Estou Indo Embora... Do Planeta Terra!

Recentemente vi a imagem do menino migrante, tentando chegar na Europa, morto, afogado, deitado de bruços na praia.

Eu choro só de escrever essas linhas. Todo mundo que tem filho viu ali seu próprio filho! Acho que até os alienígenas estão incomodados com isso!

Se sofrermos uma invasão alienígena nos próximos dias não vão se dizer espantados!

Eu mesmo iria dizer para os alienígenas: Podem exterminar toda a raça humana, pois ela merece!

Eliminem também todos os animais e plantas e água da face do planeta para que não exista possibilidade dessa praga que chamamos de ser humano volte a habitar o planeta!

Precisamos extinguir, erradicar de uma vez por todas a raça humana do Universo!

O Ser Humano não merece viver nesse planeta ou em qualquer lugar da Galáxia!

Mas como eu sou humano também só rezo para que nenhuma vingança venha dos Céus em forma de apocalipse, pois estamos merecendo.

Crucificamos Jesus. Deus falou, ok, eles não sabem o que estão fazendo...

Agora o que dizer para Deus sobre aquele menino morto na praia!? Vamos dar a mesma desculpa que não sabíamos o que estávamos fazendo???

Que Deus e os Alienígenas nos perdoem, não desbravem sua ira ainda! Eu sei que ainda existe bondade no coração humano.

A gente só não sabe usar!

Abraços,
Renato Aloi