domingo, 15 de janeiro de 2012

Desempacotamento do Netduino

Geralmente quem usa Arduino e kit’s afins gosta do termo “unboxing” que é simplesmente o ato de abrir a caixa e ver o produto com um ar de surpresa e um grande “oh!!!!”.
O ato de desempacotar em sim não significa muito para o Netduino, a final trata-se tão somente de uma placa com 4 pés de borracha, basta cola-los na parte inferior da placa sem atrapalhar os periféricos e o Netduino está pronto para se usado.

Antes de liga-lo propriamente deve-se baixar a plataforma de desenvolvimento do netduino: http://www.netduino.com/downloads/. Baixe e instale na seguinte ordem:
1.    Microsoft Visual C# Express 2010 (Ou Visual Basic se achar melhor);
2.    .NET Micro Framework SDK v4.1 (Eu recomendo o beta 4.2 );
3.    Netduino SDK v4.1.0 (32-bit) ou Netduino SDK v4.1.0 (64-bit);


Essa é a parte fácil, agora sim, use o cabo USB e plugue o Netduino na USB do computador o driver será instalado. Exite um programa exemplo de piscar led com o Netduino que está disponível na página http://www.netduino.com/projects/. Mas cria-lo  é mais fácil do que fazer o download.
1º - Criando um projeto novo:


 2º Criando a solução de projeto do Visual Studio em C#

3º O código:

using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware;
using SecretLabs.NETMF.Hardware.Netduino;

namespace NetduinoApplication1
{
    public class Program
    {
        public static void Main()
        {
            //Cria a porta "led" sendo uma IO de saida ligada ao pino do LED da placa
            OutputPort led = new OutputPort(Pins.ONBOARD_LED, false);

            //loop infinito
            while (true)
            {
                //Liga
                led.Write(true);
                Thread.Sleep(250);
                //desliga
                led.Write(false);
                Thread.Sleep(250);
            }


        }

    }
}

 4º Ajustando as Propriedades do projeto.




  5º Aperte F5 e comece a debugar o código! Você verá o Led azul na placa piscando, o que seria do desempacotamento sem ver o led piscar.

O Netduino

No final do ano passado comecei a usar a plataforma do Neduino. No inicio me pareceu um tanto estranho programar em .NET para dispositivos embarcados mas isso é uma questão apenas de costume mesmo.
Há muitos anos programo apenas microcontroladores PIC, não que isso seja um problema, mas de certa forma me deixou um pouco limitado em termos de tecnologias do mercado. Os PIC's e dsPIC's tem um desempenho bom além de qualidades em termos de hadware como os pinos remapeáveis, osciladores internos, DMA's etc... e sobretudo do excelente suporte da Microchip 24/7 Support (24 por dia, 7 dias por semana, nunca tive respostas aos domingos naturalmente...). O que me deixava atônito quando visitava os sites de outros fabricantes como a STM, Atmel, Freescale (exceto a Texas) é a confusão de informações e dos méritos de pagamentos pelas IDE’s e Compiladores, posso até estar errado quanto a isso mas se o objetivo da empresa e vender o chip porque cobrar pela IDE e pelo compilador.
Os dsPIC’s da MICROCHIP sempre me atendeu bem para aplicações de controle embarcado mas em meados de 2010 um novo projeto entrou em cena na ENELTEC. Seria um medidor de energia, tão logo vi diversas soluções no site da MICROCHIP usando Ethernet, USB e Wifi e assim tratei de comprar diversas placas PICtail para Explorer 16. Depois de uma incansável espera pela entrega finalmente comecei a fazer testes e logo percebi as dificuldades no TCP/IP Stack e nos outros Stack’s da MICROCHIP. Definitivamente para uma solução rápida isso se tornou um pesadelo!
Vencido os desafios inicias finalmente comecei a fazer algo útil e utilizável para o projeto, quando estava prestes a fazer o lote de testes eis o problema: o custo do hadware superava qualquer custo de mercado para medidor!
Esse foi o índico da desilusão com a MICROCHIP... No mesmo dia fiz uma visita ao Edifício Central (para quem não mora no Rio de Janeiro, esse prédio é um centro de venda de periféricos e informática) para comprar alguns itens de informática para a ENELTEC, dando uma olhada rápida vi diversas lojas vendendo aparelhos celulares por R$250,00 usando Andoid mais barato do que o custo que eu havia estimado para o medidor. A pergunta que me fiz foi: Como é possível competir com isso, uma capacidade de processamento boa a um preço baixo.
Uma breve pesquisa na internet e estava diante dos processadores ARM. Diversos fabricantes, diversas plataformas, preços diferentes e uma capacidade de processamento muito maior que a maioria dos PIC’s, já era hora de mudar de plataforma.
Conversando com alguns amigos me indicaram a plataforma do Netduino que utilizava o Visual Studio com o .NET Micro Framework (que nem sabia que existia até então). Nós já trabalhávamos com o .NET Framework em aplicativos para engenharia na ENELTEC usando o AutoCAD e já tínhamos ideia que isso facilitaria as coisas em termos de programação devido a orientação a objeto.
Foi assim que comecei a usar o Netduino comprei três placas pela internet, duas do Netduino e uma do Netduino Plus. Os USD 29,00 chegam aqui no Brasil a R$200,00, mas fora esse detalhe eu comprei as placas e com elas mais uma shield Wifi. Não vou afirmar que essas placas são as melhores, até porque a Fez Panda II é muito superior em termos de desempenho mas .NET Micro Framework também tem limitações, em fim, o importante é o desempenho.
Migrar para o .NET foi muito bom para fazer as aplicações com velocidade de execução estatística como o TCP/IP, cálculos, rotinas de comunicação, armazenamento em massa, controle de temperatura e 97% de todas as aplicações que existem no planeta. O problema é que, como sempre, me deparo com os outros 3% das aplicações àquelas que dependem fielmente do tempo de execução, os controles em malha fechada. Isso será um paradigma para as novas aplicações: como programar em alto nível sem deixar de ter o controle pleno sobre o tempo de execução.
O meu objetivo com o blog é divulgar os avanços que tive com o Netduino e com o .NET Micro Framework nas aplicações que faço.