collapse

* Links de Robótica

* Posts Recentes

Pendentes de compras colectivas por Hugu
[Hoje às 00:51]


Preços e fabricantes de pcb por vasco
[Ontem às 23:18]


Palavras Cruzadas por LVirtual
[Ontem às 20:54]


[Projecto] Bomba Airsoft por jm_araujo
[Ontem às 19:01]


Apresentação por Tech_JA
[23 de Setembro de 2017, 09:19]


Medir Agua que está no Poço por filjoa
[21 de Setembro de 2017, 20:58]


URGENTE - display de 7 segmentos com backpack por helderjsd
[20 de Setembro de 2017, 12:30]


Isaac Asimov - I, Robot por senso
[18 de Setembro de 2017, 03:41]


ic SL440 da Plessey? por senso
[16 de Setembro de 2017, 13:11]


Compra Colectiva RS-Amidata por brunus
[15 de Setembro de 2017, 22:31]

Autor Tópico: [Projecto] .NET Arduino Firmata Control  (Lida 5691 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline samuelpereira

  • Mini Robot
  • *
  • Mensagens: 11
[Projecto] .NET Arduino Firmata Control
« em: 04 de Julho de 2011, 22:40 »
[Em actualização]



Projecto
- Arduino Firmata Control for .NET, por Samuel Pereira.

O que é?
- DLL/Componente para .NET
- Um devaneio de uma noite sem sono

Para que serve?
- Controlar um Arduino através de uma linguagem .NET, recorrendo à biblioteca Firmata v2.2.

Funcionalidades
- Controlar as saídas digitais (High/Low e Pwm);
- Ler os valores nas entradas digitais(High/Low);
- Ler os valores nas entradas analógicas(0-1023);
- Detecta automaticamente a porta à qual o Arduino está ligado;
- Detecta alterações nas entradas digitais(High --> Low, Low --> High) e dispara o respectivo evento;
- Detecta alterações nas entradas analógicas(x --> !x) e dispara o respectivo evento;
- Virtualiza luzes Rx/Tx;
- ... [Em actualização]


Exemplos
- Este snippet em c# permite ligar e apagar um Led, e resume-se a:
Código: [Seleccione]
firmataControl1.Connect("COM1", 57600);
firmataControl1.PinMode(13, FirmataControl.PinModes.OUTPUT);
firmataControl1.DigitalWrite(13, 1);
//aguardar x tempo
firmataControl1.DigitalWrite(13, 0);


No futuro...
- Criação de uma outra dll/componente que permite controlar este componente através do protocolo tcp/ip.
Aplicação .net --> Socket --> 123.1.1.123:1234 --> Socket --> Aplicação .net --> Serial --> Arduino com firmata
Aplicação .net <-- Socket <-- 111.0.0.111:4321 <-- Socket <-- Aplicação .net <-- Serial <-- Arduino com firmata

Download
.NET Arduino Firmata Control (beta)
- [Em actualização]

Screenshots

Design do componente


Componente na Toolbox


Exemplo de um digitalWrite


Exemplo de um analogWrite


Algumas propriedades da lista de pinos digitais


Changelog
- 04/07/2011: Publicação do artigo e disponibilização dos primeiros detalhes e imagens do projecto.
- 05/07/2011: Actualização dos detalhes do projecto.

Referências
Arduino
Firmata Protocol
« Última modificação: 22 de Novembro de 2011, 00:22 por samuelpereira »

Offline SJD22

  • Mini Robot
  • *
  • Mensagens: 660
Re: [Projecto] .NET Arduino Firmata Control
« Responder #1 em: 04 de Julho de 2011, 23:39 »
Ha uma coisa que nao percebi: se estás a controlar o arduino por uma aplicação .NET como fazes o upload do firmware? Ou seja, sempre que carregas num botão, um novo firmware é enviado?

Estou confuso, mas acho isso interessante.

Offline andre_f_carvalho

  • Mini Robot
  • *
  • Mensagens: 1.457
    • Pro - andrefcarvalho
Re: [Projecto] .NET Arduino Firmata Control
« Responder #2 em: 04 de Julho de 2011, 23:45 »
provavelmente deve enviar um valor e que por sua vez faz ligar ou desligar uma saída, caso seja isto


Offline samuelpereira

  • Mini Robot
  • *
  • Mensagens: 11
Re: [Projecto] .NET Arduino Firmata Control
« Responder #3 em: 04 de Julho de 2011, 23:48 »
Passo a explicar: o sketch que envias para o arduino é o do Firmata 2.2, que já vem com o IDE do Arduino em FIle>Examples>Firmata>StandardFirmata

No entanto aconselho sempre a utilizarem a última versão oficial do Firmata (http://at.or.at/hans/pd/Firmata-2.2.zip).
Só precisas de fazer upload deste Sketch uma vez.

Esse sketch será a ponte entre a tua aplicação feita numa linguagem .net(c#,vb.net, etc...) e o hardware do teu Arduino.
Em vez de programares directamente o Arduino, fazes a tua aplicação em c# usando este componente, e podes controlar em tempo real o teu Arduino.

Offline andre_f_carvalho

  • Mini Robot
  • *
  • Mensagens: 1.457
    • Pro - andrefcarvalho
Re: [Projecto] .NET Arduino Firmata Control
« Responder #4 em: 04 de Julho de 2011, 23:52 »
é tipo o que eu disse


Offline SJD22

  • Mini Robot
  • *
  • Mensagens: 660
Re: [Projecto] .NET Arduino Firmata Control
« Responder #5 em: 04 de Julho de 2011, 23:55 »
Entao com essa tua aplicação posso fazer programas mais complexos do que simplesmente acender leds, correcto? Por exemplo, como defino o ciclo loop() com o teu controlo?

Offline samuelpereira

  • Mini Robot
  • *
  • Mensagens: 11
Re: [Projecto] .NET Arduino Firmata Control
« Responder #6 em: 05 de Julho de 2011, 00:03 »
Entao com essa tua aplicação posso fazer programas mais complexos do que simplesmente acender leds, correcto? Por exemplo, como defino o ciclo loop() com o teu controlo?

Sim, claro.
Num dos testes que fiz hoje, fiz uma placa com 2 servos e 2 rodas a serem controlados com um xBee.
Toda a programação foi feita numa aplicação C#, portanto todo o controlo era feito pela aplicação de C#.

App(PC) --> Master xBee (xBee + xBee explorer) --> ......... -->Slave xBee(Arduino + Firmata + xBee) --> Robot

O limite é mesmo a imaginação de cada um...
Podia colocar um sensor na entrada de minha casa, e tinha uma aplicação a correr no meu computador que me avisava quando o sensor disparasse. Tudo isto numa aplicação feita em .net. Se algum dia quisesse alterar o programa, não teria de ir à rua buscar o arduino. Bastava apenas alterar o código da minha aplicação .net e estava tudo pronto a funcionar de novo.

Não se me fiz entender  :D

Edit: Quanto ao ciclo loop... A vantagem disto tudo é mesmo essa, não é necessário existir um ciclo loop, já que todas as alterações que ocorrem no hardware fazem disparar o respectivo evento. Mas se mesmo assim forem necessários ciclos loop(), tudo isso pode ser feito no .Net com um timer por exemplo para não sobrecarregar a comunicação com um while(true).
« Última modificação: 05 de Julho de 2011, 00:08 por samuelpereira »

Offline SJD22

  • Mini Robot
  • *
  • Mensagens: 660
Re: [Projecto] .NET Arduino Firmata Control
« Responder #7 em: 05 de Julho de 2011, 00:08 »
Então será possível programar o arduino em C#, uploadar o codigo de alguma forma e ficar residente no arduino e correr sem qq contacto com o PC?

Offline samuelpereira

  • Mini Robot
  • *
  • Mensagens: 11
Re: [Projecto] .NET Arduino Firmata Control
« Responder #8 em: 05 de Julho de 2011, 00:13 »
Então será possível programar o arduino em C#, uploadar o codigo de alguma forma e ficar residente no arduino e correr sem qq contacto com o PC?

Não, não é possível programar o Arduino em c#.
No entanto é possível usares uma dll como esta que faz a ligação da tua aplicação em c# (a correr num computador) com o Arduino.

Imagina que fazes um jogo tipo snake em .NET .Colocas 4 botões de pressão no teu Arduino, e sempre que pressionas/largas um botão, é disparado o respectivo evento que te diz qual foi o botão pressionado/largado.
« Última modificação: 05 de Julho de 2011, 02:12 por samuelpereira »

Offline CBX

  • Mini Robot
  • *
  • Mensagens: 1.315
Re: [Projecto] .NET Arduino Firmata Control
« Responder #9 em: 05 de Julho de 2011, 00:16 »
já existe semelhante: netduino, fez panda\domino, mas estes têm o .NET Micro framework embutido no firmware, é demasiado grande e come demasiados recursos para um simples micro controlador de 8bits

mesmo assim, talvez seja possível escrevendo um core do 0, tipo o actual do arduino

Offline SJD22

  • Mini Robot
  • *
  • Mensagens: 660
Re: [Projecto] .NET Arduino Firmata Control
« Responder #10 em: 05 de Julho de 2011, 00:16 »
ahhhhhhhhhhhh!!!! Já estava eu aqui todo contente a pensar que dava... :) Bom, mas parabéns pelo que fizeste porque é bastante util tb, sem duvida!

Offline samuelpereira

  • Mini Robot
  • *
  • Mensagens: 11
Re: [Projecto] .NET Arduino Firmata Control
« Responder #11 em: 05 de Julho de 2011, 00:20 »
ahhhhhhhhhhhh!!!! Já estava eu aqui todo contente a pensar que dava... :) Bom, mas parabéns pelo que fizeste porque é bastante util tb, sem duvida!

De uma maneira muito genérica, no Arduino só trabalhas com números e caracteres(que acabam por ser números...adiante...).
O que precisas do c# que o c/c++ do Arduino não tem? A finalidade deste meu projecto não é programar o arduino numa linguagem .net(??????) mas sim controlar o Arduino através de uma aplicação feita em .net. Compreendes ?

Offline SJD22

  • Mini Robot
  • *
  • Mensagens: 660
Re: [Projecto] .NET Arduino Firmata Control
« Responder #12 em: 05 de Julho de 2011, 00:24 »
Sim, já compreendi. Acontece que eu e o C# temos uma relação muito intimia já há alguns anos... :) Só por acaso é que os meus filhos não sao programados em C#... :)

Offline samuelpereira

  • Mini Robot
  • *
  • Mensagens: 11
Re: [Projecto] .NET Arduino Firmata Control
« Responder #13 em: 05 de Julho de 2011, 00:27 »
Sim, já compreendi. Acontece que eu e o C# temos uma relação muito intimia já há alguns anos... :) Só por acaso é que os meus filhos não sao programados em C#... :)

const bool obedecer=true;

loop()
{
if(obedecer)
{
fazeroqueopaimanda();
}
}

Offline SJD22

  • Mini Robot
  • *
  • Mensagens: 660
Re: [Projecto] .NET Arduino Firmata Control
« Responder #14 em: 05 de Julho de 2011, 00:31 »
 :D :D