我应该购买Netduino还是Arduino?


17

我正在为一些有趣的家庭爱好项目购买NetDuino。

你们中有人使用过吗,您的经历如何?

我应该看看Arduino还是FreeDuino系列(或完全不同的东西)?

由于我的C#知识,我决定坚持使用NetDuino,但这不是必须的。

谢谢

PS。我不确定这是否属于社区Wiki(感谢指导)。


5
您想对董事会做什么?那会影响您的选择。
Toby Jaffey 2010年

3
NetDuino上的ARM7微控制器和Arduino上的8位AVR完全不同。就像您要购买服务器还是上网本。但是,您通过运行不合适的VM来降低服务器的速度-性能将相似,并且您将这两种工具用于同一任务。您真的需要该抽象层吗?
凯文·维米尔

@reemrevnivek-“不适”,这是一个抽象层,但肯定不是很不适合(也确实不是vm)。
康纳·沃尔夫

2
@Fake名称看起来netduino(TinyCLR)没有JIT编译器。因此,它一个VM /解释器。tinyclr.com/faq/#13
Toby

1
VM是Smalltalk,Java,Python等运行的工具。它表示任何抽象的机器,运行的指令集与“裸机”不同。不只是虚拟PC。
Joe Koberg 2011年

Answers:


16

我喜欢C#,并且发现使用Visual Studio在C#中进行开发可以提高生产力,这是支持Netduino的一个非常重要的因素。我不会抱怨Netduino,因为“ C#不适用于微控制器/嵌入式环境”,如此处的其他答案所示。

您可以制作有趣的项目,并学到很多有关如何使用Netduino连接不同的物理输入和输出设备的知识,就像您可以使用Arduino或“裸机”并进行AVR,PIC或其他微控制器的直接MCU管理一样。

出于上述原因,出于以下原因,我坚持使用Arduino:

  • 更好的社区支持。Arduino可以提供更多示例,示例和更大的社区供您借鉴。
  • Netduino没有超越昂贵的工具包/原型制作方法的故事。要实现一个需要数十个微控制器来运行您的代码的交互式艺术展览吗?准备为Netduinos掏出$ 35美元。使用Arduino,您可以在Arduino上进行原型制作,然后在AVR微控制器上以纯MCU的纯解决方案实施,每个价格低于10美元。

因此,我想说,如果您的C技能尘土飞扬或不存在,您会喜欢C#和Visual Studio,并且只想修改一些业余项目,而这些项目不需要扩展到成本成为更大问题的地方,那就去Netduino。

如果您对C感到满意,或者愿意在代码示例和社区的帮助下熟悉C,并且想要更接近金属,并希望最终摆脱Netduino和Arduino的“原型”方法,请去Arduino入门。


1
我知道这是个旧答案,但是我想补充一点,因为Netduino是完全开源的(包括硬件),所以您可以从任何人那里购买uC并将Netduino固件刷新到其中。因此,您可以在生产产品中使用Netduino平台。
Unkwntech

“无论如何,您的C#知识在嵌入式平台上几乎是无用的,因此不要对此施加太大的重视。” -可笑的话。Netduino已嵌入,它在摇摆,它是C#...
Jonesome Reinstate Monica 2012年

11

无论如何,您的C#知识在嵌入式平台上几乎是无用的,因此不要对此施加太大的重视。

我会使用Arduino或其中一个克隆,不是因为.Net是魔鬼,而是因为其他人都在使用它,所以您将可以轻而易举地获得帮助并简化人们的代码。

一旦弄湿了脚,就一定要尝试其他方法。


您是在提倡在Arduino上使用Wiring语言,还是在avrfreaks淘汰 C语言(并对此做出贡献)?
凯文·维米尔

1
@reemrevnivek Arduino只是带有某些库的C ++。我不会将其归类为“语言”-它是带有页眉和页脚的C ++
Toby Jaffey 2010年

糟糕,接线就是我的意思。
凯文·维米尔

我觉得这有点奇怪,我几乎会接受“一旦您弄湿了脚,一定要分支出去”作为与Netduino一起开始的建议,因为编程元素应该不那么重要-允许发展所需的“其他”技能。
Murph

1
不好的评论,dren.dk完全是错误的。我和许多其他人整日使用netduino和C#。
Jonesome恢复Monica 2012年

7

我目前有一个Arduino,mbed,最后是一个Netduino供我开发/业余爱好者使用。我从来不喜欢使用Arduino,可能是因为编辑器不是很好,而且我肯定是C#开发人员的宠儿。当我收到mbed时,我非常喜欢这种形式的开发,但是调试仍然很痛苦,因为您必须使用print语句来确定发生了什么。

当您开发产品时,或刚开始搞混时,一开始的大部分时间都花在了调试上……而在调试时,您希望拥有断点。我很难回到不提供任何断点的嵌入式硬件。

我还没有JTAG的经验,但是直到现在为止我所见过的每个micro芯片(RabbitCore模块除外)都要求它允许通过断点进行调试。想象一下,当我今天连接Netduino并能够单步浏览VS2010中的代码时,我会感到惊讶!我对此感到非常高兴。

就我个人而言,我不会担心脚印的大小,.NET和Microsoft的弊端等等。我只关心能够快速,高效地进行调试,因此可以完成工作


完成工作是一个最好的方法,这是一个最好的教训

@kurtnelle听起来您是在主张不使用.NET MF?
戴夫

@戴夫,是的。这仅仅是因为我尝试了旧的基于c的8位微控制器,并且花了很多精力才完成。

@kurtnelle,但是有了.NET MF,我实际上只需很少的精力就可以完成很多工作。
戴夫

2
@戴夫,很抱歉以前的不当回应;我主张使用.NET MF

5

作为将近20年的BasicStamp用户和仅2个星期的NetDuino用户(我从未使用过Arduino),我想说NetDuino是一个很棒的平台。我喜欢的两个主要功能是:VisualStudio中的易于编程(和断点!)和板上的高分辨率ADC的主要原因。我从SparkFun尝试的少数Arduino防护罩与NetDuino完美搭配。


4

就个人而言,我不喜欢C#或.NET。我是C luddite。因此,我选择的平台取决于我想要的硬件功能(闪存,RAM,时钟速度,ADC数量,计时器数量等)。

就是说,我可以想象C#/。NET对快速原型制作很有用:

  • 字符串处理可能会更简单
  • RPC和对象序列化可能很容易。我怀疑您只能通过串行链接推送C#对象。RPC可能“有效”
  • 可移植性-.NET是一个虚拟机,因此代码应在其他板上甚至PC上运行
  • 垃圾收集使许多算法更易于实现

当然,这一切都是有代价的:

  • 代码占用空间更大(尤其是当您考虑标准库时)
  • RAM使用率更高(所有都是对象,是否键入了所有内容?)
  • 垃圾收集器可能会干扰实时性能
  • 如果.NET库不支持硬件功能,则不能使用它(除非您自己实现功能,而您需要C / C ++,请参见注释)

而且,最重要的是,通过在嵌入式平台上使用C#技能,您实际上并没有学到任何有关嵌入式设备的知识。

是的,它可以完成工作-但是,这样做的乐趣在哪里?


我想知道用新功能修补NetDuino上使用的.NET库有多困难。看起来他们正在使用C ++构建他们的.NET SDK,在SecretLabs.NETMF.Hardware / Stubs 源文件中找到了。叹。
凯文·维米尔

@reemrevnivek不是我有趣的想法。如果要修补运行时,则不妨先使用C / C ++进行启动
Toby Jaffey 2010年

1
@Joby-我像您一样是C语言,但我只是想指出这是可能的-您说“如果.NET库不支持硬件功能,则不能使用它”,不太正确。
凯文·维米尔

1
您实际上看到过任何基准测试吗?我很难想象16MHz 8位与60MHz 32位micro的运行速度相同。尤其是因为Arduino库也使速度放慢-它们都没有真正针对速度进行优化。而且还有对象(如果不如.NET中使用的对象那么多)。与Arduino有很大不同吗?如果没有支持该功能的Arduino库...您必须自己实现(直接调用硬件寄存器等)
davr 2010年

@davr编辑答案
Toby

3

我发现mbed可以替代Arduino。

该软件库更面向C ++,带有赋值运算符重载的所有语法糖。此外,还建立了一个系统,以便用户可以发布和记录代码库,然后可以轻松地搜索它们并将其导入到项目中。

另一个好的功能是能够将设备视为USB记忆棒,并将.bin文件直接放入驱动器中。

不幸的是,IDE与arduino相当。另外,它在线上。这既非常好(可以在任何PC上使用,无需安装),也很糟糕(如果没有Internet连接就无法轻松地重新编程)。

董事会的成本是60美元,但是他们有一个赞助计划,只要记录下进度并公开源代码,他们就会向有趣的项目捐赠董事会。


我喜欢赞助商的想法-我必须研究一下。
戴夫

2

我主要是C#开发人员。由于源代码的可用性,我购买了Arduino而不是Netduino。将Netduino与Arduino电子积木集成起来并不容易,因为您必须从头开始重写一些示例。


2

在阅读“ C#不适合嵌入式平台”时,请记住,年龄超过一定年龄的人已经听说过至少有一次关于“ C”,然后再谈到了C ++。

当然,这是对处理器基础功能的巨大“浪费”,但是使空闲循环运行的速度比您所需的速度快1000倍,而不是比所需的速度快10倍,这永远不会使任何人变得富有。


空闲循环无关紧要。在某些重要的周期中使用MCU,例如视频信号的捕获或生成,制作自己的示波器,对输入信号进行实时FFT分析等。您可以为这些忘记C#。另一方面,如果您的需求更多地是要“只用小包装制作类似PC的软件”,那么C#和.NET MF根本不是一个坏选择……
avra

2
...对于这样的体验,我宁愿选择一些基于Linux的嵌入式ARM板,但这是其他讨论的主题。要点是,对于刚刚进入C#背景嵌入式世界的人来说,.NET MF根本不是一个糟糕的第一步。
avra

1

如果您想摸索裸机,例如能够直接生成或捕获视频信号,那么每个周期都很重要,AVR / Arduino可以让您做到这一点。如果您想要更高级别的抽象,更高级别的编程和调试舒适度,垃圾收集器,并且可以忍受像Windows之类的事物无法控制一切的事实,请选择NetDuino或FEZ Domino。既然两者都内置了ARM,我敢打赌,如果需要,您可以在板上杀死.NET MF,并借助小型JTAG调试器直接从某些Eclipse(如IDE)中刷新裸机ARM GCC代码。调查一点。问题可能是,如果缺少JTAG标头,则需要进行一些焊接。


C和C ++不足以用于视频。为此,您需要使用Verilog :)

至少有10个项目仅使用软件创建视频。大多数是黑白或灰色,但是甚至有彩色的和仅带有AVR软件生成视频的游戏系统。OSD项目也存在。也有几个不使用FPGA的AVR捕获低分辨率视频帧的示例。只是谷歌周围...
Avra

当我说视频时,我的意思是1080p 24位彩色。嵌入式C ++可以做到吗?

0

在电子学和编程方面经过了很长的休假之后,由于一个儿子在大学里做的一个项目,我重新回到了这个领域。我学会了电子学,那时电子管是常态,并使用拨动开关(设置地址,设置数据,加载,存储,二进制)和打孔卡进行编程。多年来,我已经学习并使用了每种电子和编程语言的进步,这需要大量的精力和时间。因此,我非常感谢微控制器的进步以及它们的便宜程度,包括Arduino,Netduino等开发板的价格令人难以置信。有关Arduino与Netduino等的争论使我想起了Microsoft与Apple之战作为命令行vs GUI。只要使用适合结果的平台和编程语言等都无关紧要。


-1

如果.net MF提供了能够执行纯机器/金属代码功能的库,那么...那么唯一的抽象(.Net MF)就会成为一个很好的抽象。除了占用更多资源并运行GC外(这应该使其效率更高??)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.