Devo comprar um Netduino ou Arduino?

17

Estou pensando em comprar um NetDuino para alguns divertidos projetos de hobby em casa.

Algum de vocês já usou e como foi sua experiência?

Devo olhar para o intervalo Arduino ou FreeDuino (ou algo totalmente diferente)?

Decidi manter o NetDuino devido ao meu conhecimento de C #, mas isso não é um requisito.

obrigado

PS. Não tenho certeza se isso pertence ao wiki da comunidade ou não (orientação apreciada).

SetiSeeker
fonte
5
O que você quer fazer com o quadro? Isso afetará sua escolha.
Toby Jaffey
3
O microcontrolador ARM7 no NetDuino e o AVR de 8 bits no Arduino estão em uma classe completamente diferente. É como se você estivesse perguntando se deveria comprar um servidor ou um netbook. No entanto, você está diminuindo a velocidade do servidor executando uma VM inadequada - o desempenho será semelhante e você estará usando as duas ferramentas para a mesma tarefa. Você realmente precisa dessa camada de abstração?
Kevin Vermeer
@reemrevnivek - "Mal adaptado" uh ... é uma camada de abstração, mas certamente não é inadequada (e também não é uma VM).
Connor Lobo
2
@Fake Name Parece que o netduino (TinyCLR) não possui um compilador JIT. Portanto, é um VM / intérprete. tinyclr.com/faq/#13
Toby Jaffey
1
VMs são o que Smalltalk, Java, Python, etc ... executam. Significa qualquer máquina abstraída, executando um conjunto de instruções diferente do "bare metal". Não é apenas um PC virtualizado.
Joe Koberg

Respostas:

16

Adoro o C # e considero os benefícios de produtividade do desenvolvimento em C # com o Visual Studio um fator muito forte a favor do Netduino. Eu não faria bobagem do Netduino porque "C # não é para microcontroladores / ambientes incorporados", como indicam outras respostas aqui.

Você pode criar projetos muito divertidos e aprender muito sobre como conectar diferentes dispositivos físicos de entrada e saída usando o Netduino, da mesma forma que pode com o Arduino ou usar o "bare metal" e fazer o gerenciamento direto do MCU do AVR, PIC ou outros microcontroladores.

Com isso dito, estou mantendo o Arduino pelos seguintes motivos:

  • Melhor apoio da comunidade. O Arduino tem muito mais exemplos, exemplos e uma comunidade maior com a qual você pode recorrer.
  • O Netduino não tem uma história para ir além da abordagem cara de kit / prototipagem. Vai implementar uma exposição de arte interativa que exige dezenas de microcontroladores executando seu código? Prepare-se para desembolsar US $ 35 cada um para os Netduinos. Com o Arduino, você pode criar um protótipo no Arduino e, em seguida, implementar em uma solução básica do MCU com o microcontrolador AVR por menos de US $ 10 cada.

Então, eu diria que, se suas habilidades em C são empoeiradas ou inexistentes, você ama C # e Visual Studio e quer apenas mexer em alguns projetos de hobby que não precisam ser dimensionados para onde o custo se torna um problema maior, vá para o Netduino.

Se você se sente à vontade em C ou com a ajuda de exemplos de código e da comunidade, e quer estar mais próximo do metal e eventualmente se afastar da abordagem de "protótipo" do Netduino e do Arduino, vá Arduino para começar.

Pat James
fonte
1
Sei que essa é uma resposta antiga, mas gostaria de acrescentar que, como o Netduino é totalmente de código aberto (incluindo o hardware), você pode comprar o uC de qualquer pessoa e atualizar o firmware do Netduino para ele. Então você pode usar a plataforma Netduino em um produto de produção.
Unkwntech
"De qualquer maneira, seu conhecimento de C # é praticamente inútil em uma plataforma incorporada, portanto, não coloque muito peso nisso." - Que coisa boba de se dizer. O Netduino está incorporado, é
ótimo
11

De qualquer maneira, seu conhecimento de C # é praticamente inútil em uma plataforma incorporada; portanto, não coloque muito peso nisso.

Eu usaria um Arduino ou um dos clones, não porque .Net é o diabo, mas porque é isso que todo mundo está usando, para que você tenha muito mais facilidade em obter ajuda e aprender com o código das pessoas.

Depois de molhar os pés, por todos os meios se ramifique e tente coisas diferentes.

dren.dk
fonte
Você está defendendo a linguagem Wiring usada no Arduino, ou buscando (e contribuindo para) o código C em avrfreaks ?
22610 Kevin Vermeer
1
@reemrevnivek O Arduino é apenas C ++ com algumas bibliotecas. Eu não classificaria isso como uma "linguagem" - é C ++ com cabeçalho e rodapé anexados #
Toby Jaffey
Opa, fiação é o que eu quis dizer.
Kevin Vermeer
Acho isso um pouco estranho. Eu quase pensaria em "Depois de molhar os pés, por todos os meios" como uma sugestão para iniciar o Netduino porque o elemento de programação deve ser muito menos problemático - permitindo desenvolver as "outras" habilidades necessárias.
Murph
1
Comentário ruim, dren.dk está simplesmente errado. Eu e muitos outros usamos o netduino e o C # o dia inteiro.
Jonesome Reinstate Monica
7

Atualmente, tenho um Arduino, mbed e, finalmente, um Netduino à minha disposição para uso em desenvolvimento / hobby. Nunca gostei de trabalhar com o Arduino, talvez porque o editor não seja muito bom e sou definitivamente mimado como desenvolvedor de C #. Quando recebi meu mbed, gostei muito do desenvolvimento, muito melhor, mas a depuração ainda é dolorosa porque você precisa usar instruções de impressão para descobrir o que está acontecendo.

Quando você está desenvolvendo um produto, ou apenas brincando, a maior parte do seu tempo é gasta a depuração ... e, quando você está depurando, deseja ter pontos de interrupção. É muito difícil voltar ao hardware incorporado que não oferece nenhum tipo de ponto de interrupção.

Ainda não tenho experiência com o JTAG, mas todos os micro que eu vi até agora (além dos módulos RabbitCore) exigem que ele permita a depuração por pontos de interrupção. Imagine minha surpresa quando eu liguei meu Netduino hoje e fui capaz de percorrer meu código no VS2010! Fiquei extremamente satisfeito com isso.

Pessoalmente, eu não me preocuparia com o tamanho da área ocupada, os males do .NET e Microsoft, etc. etc. Gostaria apenas de poder depurar com rapidez e eficiência, para que eu possa fazer as coisas .

Dave
fonte
Fazer o que é feito é uma lição que é melhor aprendida da maneira mais difícil
@kurtnelle parece que você está defendendo não usar o .NET MF?
Dave
@ Dave, sim eu sou. Isso é apenas porque eu experimentei o microcontrolador c de 8 bits antigo e fiz muito pouco com muito esforço.
@kurtnelle, mas com o .NET MF, estou realmente fazendo muito com muito pouco esforço.
Dave
2
@ Dave, desculpe pela resposta disléctica anteriormente; Estou defendendo o .NET MF
5

Como usuário do BasicStamp por quase 20 anos e usuário do NetDuino por apenas 2 semanas (nunca usei um Arduino), eu diria que o NetDuino é uma ótima plataforma. Os dois principais recursos que eu estou gostando: facilidade de programação (e pontos de interrupção!) No VisualStudio e o ADC de alta resolução na placa são os principais motivos. Os poucos escudos do Arduino que eu tentei no SparkFun funcionaram perfeitamente com o NetDuino.

AlfredBr
fonte
4

Pessoalmente, não sou fã de C # ou .NET. Eu sou um ludita. Portanto, minha escolha de plataforma se resume a quais recursos de hardware eu quero (flash, RAM, velocidade do relógio, número de ADCs, número de temporizadores, etc.).

Dito isto, posso imaginar o C # /. NET sendo útil para a criação rápida de protótipos:

  • O manuseio de cordas provavelmente será muito mais simples
  • A serialização de RPC e de objetos é provavelmente fácil. Eu suspeito que você pode simplesmente enviar objetos C # através de um link serial. RPC provavelmente "simplesmente funciona"
  • Portabilidade - o .NET é uma máquina virtual, portanto, o código deve ser executado em outras placas ou mesmo em PCs
  • A coleta de lixo simplifica a implementação de muitos algoritmos

Obviamente, tudo isso tem um custo:

  • A pegada do código é maior (especialmente quando você considera as bibliotecas padrão)
  • O uso de RAM é maior (tudo é um objeto, tudo é digitado?)
  • O coletor de lixo provavelmente interfere no desempenho em tempo real
  • Se um recurso de hardware não for suportado pelas bibliotecas .NET, você não poderá usá-lo (a menos que você mesmo os implemente, para o qual precisará de C / C ++, consulte os comentários)

E, acima de tudo, usando suas habilidades de C # em uma plataforma incorporada, você realmente não está aprendendo nada sobre dispositivos incorporados.

Sim, ele fará o trabalho - mas, onde está a graça nisso?

Toby Jaffey
fonte
Gostaria de saber o quão difícil é corrigir as bibliotecas .NET usadas no NetDuino com um novo recurso. Parece que eles estão usando C ++ para criar seu .NET SDK, lá no SecretLabs.NETMF.Hardware / Stubs - arquivos de origem . Suspiro.
22610 Kevin Vermeer
@reemrevnivek Não é minha idéia de diversão. Se você estiver executando o patch no tempo de execução, é melhor começar com C / C ++ #
Toby Jaffey
1
@Joby - Eu sou um luddite C como você, mas eu só queria ressaltar que isso era possível - Você disse: "Se um recurso de hardware não é suportado pelas bibliotecas .NET, você não pode usá-lo", que não é bem verdade.
Kevin Vermeer
1
Você já viu algum benchmark? É difícil para mim imaginar que um 16 bits de 8 MHz funciona com a mesma velocidade que um micro de 60 bits de 32 bits. Especialmente porque as bibliotecas do Arduino também diminuem a velocidade - nada disso é realmente otimizado para velocidade também. E também possui objetos (se não tantos quanto os usados ​​no .NET). E é muito diferente do Arduino? Se não houver uma biblioteca Arduino apoiar uma característica ... você tem que implementá-lo (chamando diretamente a registros de hardware etc)
davr
@davr Resposta editada
Toby Jaffey
3

Eu achei o mbed um substituto maravilhoso para o Arduino.

A biblioteca de software é mais orientada para C ++, completa com todo o açúcar sintático da sobrecarga do operador de atribuição. Além disso, um sistema é configurado para que os usuários possam publicar e documentar bibliotecas de códigos, que podem ser facilmente pesquisadas e importadas para os projetos.

Outro bom recurso é a capacidade de tratar o dispositivo como um pendrive e simplesmente colocar os .binarquivos diretamente na unidade.

Infelizmente, o IDE é comparável ao do arduino. Além disso, está online . Isso é muito bom (pode ser usado em qualquer PC, não requer instalação) e muito ruim (não pode ser facilmente reprogramado sem uma conexão à Internet).

O custo do conselho é de US $ 60, mas eles têm um esquema de patrocínio, doando conselhos para projetos interessantes, desde que o progresso seja documentado e o código-fonte tornado público.

Eric
fonte
Adoro a ideia do patrocínio - vou ter que analisar isso.
Dave
2

Eu sou principalmente um desenvolvedor de C #. Comprei um Arduino em vez de um Netduino por causa da disponibilidade do código fonte. Não seria fácil integrar o Netduino aos tijolos eletrônicos do Arduino, porque você terá que reescrever algumas amostras do zero.

Jader Dias
fonte
2

Ao ler 'C # não é adequado para plataformas incorporadas', lembre-se de que pessoas com mais de uma certa idade já ouviram falar isso pelo menos uma vez sobre 'C' e, novamente, sobre C ++ em suas vidas ...

É claro que é monumentalmente um "desperdício" dos recursos subjacentes do processador, mas a capacidade de executar seu loop inativo 1000x mais rápido do que você precisa, em vez de 10x mais rápido do que você nunca enriqueceu ninguém.

user1844
fonte
Loops ociosos não são relevantes. Existem alguns usos do MCU em que os ciclos são importantes, como captura ou geração de sinal de vídeo, criação de seu próprio osciloscópio, análise FFT em tempo real do sinal de entrada e muitos outros. Você pode esquecer o C # para estes. Por outro lado, se seus requisitos são mais voltados para a criação de "um software semelhante a um PC em um pequeno pacote", o C # e o .NET MF não são uma má escolha ...
avra
2
... Para essa experiência, prefiro escolher uma placa ARM embarcada baseada em linux, mas esse é um tópico para outra discussão. O ponto é que, para alguém que está entrando no mundo incorporado com experiência em C #, o .NET MF não é o primeiro passo ruim.
Avra
1

Se você quiser sentir o metal puro e, por exemplo, conseguir gerar ou capturar sinal de vídeo diretamente, é aí que todos os ciclos são importantes e o AVR / Arduino permitirá que você faça isso. Se você deseja um nível mais alto de abstração, maior nível de programação e conforto para depuração, coletor de lixo e pode conviver com o fato de que, como no Windows, você não controla tudo, escolha NetDuino ou FEZ Domino. Como os dois têm o ARM em seu coração, aposto que, se necessário, você pode matar o .NET MF na placa e exibir o código ARM GCC bare metal diretamente de alguns Eclipse como IDE, com a ajuda de um pequeno depurador JTAG. Investigue um pouco. O problema pode ser que, se o cabeçalho JTAG estiver ausente, você precisará fazer algumas soldas.

avra
fonte
C e C ++ não são bons o suficiente para vídeo. Você vai precisar de Verilog para que :)
Existem pelo menos 10 projetos que criam vídeo apenas com software. A maioria é P / B ou cinza, mas existem até sistemas de cores e jogos com apenas vídeos gerados pelo software AVR. Projetos OSD também existem. Existem também alguns exemplos de captura de quadros de vídeo de baixa resolução com AVR sem FPGA. Apenas google em torno de ...
Avra
Quando digo vídeo, quero dizer 1080p em cores de 24 bits. C ++ incorporado pode fazer isso?
0

Após um longo hiato da eletrônica e da programação, voltei a participar por causa de um projeto que um dos meus filhos está realizando na universidade. Aprendi eletrônica quando os tubos eram a norma e a programação com interruptores (definir endereço, definir dados, carregar, armazenar, em binário) e cartões perfurados. Ao longo dos anos, aprendi e usei cada avanço da linguagem eletrônica e de programação, que demandou muito esforço e tempo concentrados. Conseqüentemente, sou muito grato pelos avanços nos microcontroladores e por quão incrivelmente baratos eles são, incluindo as placas de desenvolvimento como Arduino, Netduino etc. Os argumentos sobre Arduino x Netduino etc. me lembram as batalhas Microsoft x Apple, como como linha de comando vs GUI. Não importa qual plataforma, linguagem de programação etc. seja usada desde que seja apropriada para o resultado.

user3175
fonte
-1

Se o .net MF forneceu bibliotecas capazes do que o código puro de máquina / metal pode fazer, ... então a única abstração (. Net MF) se torna boa. Além de ocupar mais espaço e executar um GC (o que deve torná-lo eficiente?)

Vijay
fonte