quinta-feira, 8 de março de 2012

Netduino + Arduino Ethernet Shield

Depois de um bom tempo sem postar, nada como uma ameaça de processo por uma postagem de 2010 para dar aquela vontade de voltar a escrever (não, não é sobre politica).

No final do ano passado travei uma pequena e peculiar batalha com o Arduino Ethernet Shield, ele deveria ter sido a parte mais simples do meu projeto já que a conexão é simples, basta apenas encaixar e o driver já esta todo escrito em C#, porém não foi bem assim. A principio fui por eliminação, revisei as configurações de rede (roteador, notebook e projeto), depois revisei as configurações de acesso e permissão, desativei firewall, antivírus e nada. Em seguida testei portas, troquei cabo, troquei roteador, testei em ambiente completamente diferente (roteador, notebook). O mais estranho era ver que a porta do roteador ficava acesa, assim como o da placa, mas nada de comunicação.

A essa altura já comecei a temer o pior, importar outras placas literalmente não estava em meus planos, mais uma vez recorri ao fórum mas minhas postagens não foram respondidas a contento, acredito que esse fato seja porque as novas versões do Netduino já possuem sua própria interface de rede, logo meu cenário não ganhou muita importância. Garimpando postagens antigas acabei encontrando o meu problema, é necessário conectar o ICSP do Ethernet Shield ao Netduino, da primeira vez não ficou bom, acho que usei conectores muito curtos ou a solda não ficou boa já que eu mesmo tive que improvisar esse conector (gambiarra mode on), mas na segunda tentativa ficou tudo perfeito, eu consegui finalmente “pingar” no Netduino !

Eu testei alguns exemplos (todos funcionaram) mas o que eu mais gostei foi um onde o netduino hospeda uma página em html, funcionou muito bem (apesar do limite de conexões simultâneas).

image

Para os interessados, o driver pronto encontra-se nesse post, ele vem com exemplo de uso, não é muito complexo de se usar, e esta bem estável.

No mais, tudo correu bem, no meu caso em especifico tive problemas de compatibilidade entre o LCD que eu havia escolhido inicialmente, não consegui usa-los simultaneamente (aparentemente um problema no uso dos recursos do Netduino). Outro fato foi a necessidade de uma configuração extra no firewall do meu antivírus, já que meu projeto consome um serviço hospedado em meu notebook.

segunda-feira, 18 de julho de 2011

Netduino + LCD Nokia 5110

Em meu post anterior falei um pouco sobre o Netduino, fizemos nosso primeiro “Hello World” com a luz da própria placa piscando e agora vamos escrever em uma tela de LCD.
O LCD que eu escolhi foi o Nokia 5110, ele é bem simples, tem baixo consumo de energia e possui um único chip para todas as suas funções, tem 84 colunas por 48 linhas e originalmente foi desenvolvido para celulares. Eu o escolhi por ser diferente dos tantos LCDs menores (16 colunas por 2 linhas) que eu vi em vários tutoriais, como encontrei no próprio fórum um post dedicado a ele me empolguei e decidi que ele seria minha escolha (para quem estiver interessado eu comprei aqui).
lcd_nokia_5100
Quando abri a caixinha vermelha da sparkfun e peguei o LCD a primeira coisa que me vaio a cabeça foi “e agora como eu ligo esse cara no Netduino”, como eu não tinha ideia entrei no fórum e perguntei e prontamente me ajudaram, em menos de dois dias meu amigo Stefan (moderador do fórum) documentou como fazer essa conexão (para mais detalhes).
image
Na verdade foi tudo bem simples, tive apenas que soldar pinos no LCD para mantê-lo fixado na breadboard e depois conectar os cabos de acordo com a imagem, para mostrar texto na tela bastou usar o driver já implementado. O legal mesmo foi a conversão que existe para imagem, é possível transformar uma imagem em bytes para mostrar no LCD (a foto acima esta fazendo isso).
Dessa vez não colocarei código, no fórum esta tudo bem documentado e funcionando bem, então até a próxima.

quinta-feira, 7 de julho de 2011

Netduino

Recentemente o adquiri para um projeto da especialização, mas o que ele é e porque foi minha escolha?

Bom primeiramente como era necessário o uso de .net para esse projeto comecei a procurar algo diferente e então encontrei o netduino, que é uma plataforma eletrônica open source que usa o .net micro framework. Maravilha não? Com isso poderei usar c# para controlar um hardware!

netduino2

Infelizmente não o encontrei no Brasil, tive que importar, acabei escolhendo a Proto Advantage para fazer a compra e como meu primeiro pedido acabou no buraco negro dos correios o pessoal de lá acabou me mandando outro sem custo algum, tive apenas que arcar com metade do frete (fica ai a dica para os interessados, o atendimento dessa empresa é ótimo).

Já existe uma comunidade relativamente ativa, no fórum do site oficial existem vários projetos já em andamento com drivers para lcds, rfids, rede, sensores entre outros, tudo bem explicado, com os esquemas eletrônicos e exemplo dos códigos (sem contar a boa vontade do pessoal, sempre respondendo de pronto as novas postagens).

Um passo a passo já existe no site mas deixo aqui um resumo do que é preciso e também um código do que seria nosso primeiro hello world !

O que preciso instalar?

  1. Microsoft Visual  C# Express 2010
  2. Microsoft .Net Micro Framework v4.1 SDK
  3. Netduino SDK v4.1 32bits ou Netduino SDK v4.1 64bits

Tudo instalado e agora?

Ao conectar o netduino ao pc pelo cabo usb os drivers devem ser instalados automaticamente, feito isso abra o Visual Studio e crie um novo projeto (New Project => Visual C# => Micro Framework => Netduino Application), o que teremos será uma aplicação nos moldes de um console application.

Vamos ao código

Em nosso primeiro exemplo faremos com que o LED programável da própria placa pisque, basicamente iremos criar um OutPutPort para controlar a voltagem desse LED, em seguida, dentro de um loop, faremos com que esse LED ascenda e apague dentro de um intervalo, segue o código:

  1: using System.Threading;
  2: using Microsoft.SPOT.Hardware;
  3: using SecretLabs.NETMF.Hardware.Netduino;
  4: 
  5: namespace NetduinoApplication1
  6: {
  7:     public class Program
  8:     {
  9:         public static void Main()
 10:         {            
 11:             int i = 0;
 12:             OutputPort led = new OutputPort(Pins.ONBOARD_LED, false);
 13:             while (i < 20)
 14:             {
 15:                 led.Write(true);   // liga o LED
 16:                 Thread.Sleep(250); // aguarda 250ms
 17:                 led.Write(false);  // desliga o LED
 18:                 Thread.Sleep(250); // aguarda 250ms
 19:                 i++;
 20:             }
 21:         }
 22: 
 23:     }
 24: }
 25: 

 


Bom é isso, nos próximos meses terei muito a fazer com esse cara, sobrando um tempo eu postarei aqui meu progresso.