【NetDIY智能主控】开发计划
经过一个轮回,硬件开发、硬件创业又被推到了历史的前台。
面向低端、初级的硬件爱好者,以Arduino和81单片开发板为核心的开源硬件越来越深入人心,参与的人群越来越多,相关硬件和周边模块也越来越便宜。另外随着各个创客空间的创立,给爱好者即提供了硬件模块,也提供了参与空间和交流平台。不过爱好者也越来越低龄化,参与其中的初高中学生也越来越多,不管怎样,这也算是一种时代的进步。
面向高端、复杂的硬件设计和开发,一般都是面向公司或资深硬件从业者。一部分是以裸机开发为主,Main函数+While循环+各种中断+各种基础库实现各种功能。另外一部分偏于复杂和高端的硬件应用往往基于操作系统了,相对简单的就是uCOS-II、FreeRTOS,复杂的VxWorks、uClinux,大型一些的就是Linux、WinCE和安卓等系统了。
其实无论是爱好者还是硬件从业者,其最终目的不过是希望快速完成心目中的一个产品而已。当制作者心目中想象的产品越来越复杂,其相关的代码越来越多,其硬件平台的限制便越来越凸显了。硬件本身的运算能力,接口数量,扩展能力;以及开发工具的代码编写、开发、调试,管理能力就是一道藩篱。能否突破,或者说能否持续非常关键。
之所以选择.NET技术构建智能主控,就是考虑开发要简单,要快速,并且可扩展性和可持续性要好,要有跨平台的能力,并且代码开发、维护、调试工具要非常强大。
.NET技术可以用一致的开发语言(C#/VB.net等),一致的开发工具(Visual Studio 2010/2012),开发从嵌入式单片硬件、手机、平板、游戏机,Web、云计算平台上的代码。其最大的好处,就是少了新语言学习和平台切换的代价。

NetDIY智能主控是什么?
所谓的NetDIY智能主控,其硬件主板尺寸不超过四个两两并列的1元硬币的大小。采用Cortex-M4为核心的芯片,主频168M,片内Flash 1M byte,片内RAM 192K byte。对外引出的功能接口有:
A、1路USB
B、3路I2C
C、3路SPI
D、24路PWM(含3路软PWM)
E、2路 DA(可以播放WAV语音)
F、12路 AD(12位精度)
G、6路TTL串口
H、31路GPIO
I、1个用户按钮,1个用户LED
J、1个复位按钮,1个电源LED
K、集成如下三个传感器
MPU6050 三轴数字陀螺仪+三轴数字加速度传感器(自动稳定用)
BMP085 数字气压传感器(锁定高度用)
HMC5883L 三轴数字磁阻传感器(电子罗盘,锁定航向用)

注:尺寸单位为毫米。
其软件平台基于开源的.NET Micro Framework系统,并在此基础上扩展了很多实用功能,比如MDK C++用户驱动开发(流式驱动模型)、多路I2C通信、TinyGUI等。
为什么开发NetDIY智能主控?
基于.NET Micro Framework硬件平台已经有SideShow、MsnDirect、Netduino和.NET Gadgeteer平台了。为什么还要推出NetDIY?
SideShow和MsnDirect是早期的系统,目前就不必多说了。Netduino外形完全仿照Arduino,对外接口有限,要开发一个比较复杂的智能设备,需要外扩很多模块。.NET Gadgeteer平台更是需要各种模块的堆叠。另外问题相对严重的是,如果是开发一些比较实时的功能,仅靠C#是很难实现的。
NetDIY智能主控对外引出31个PIN脚(n种功能),支持USB调试开发,无需扩展接口模块,可直接作为智能设备的大脑,控制周边模块。支持C++用户驱动开发,满足实时+易用的开发需求。
NetDIY智能主控的架构模型是什么?

大脑的作用: 整合信息,处理信息,发出指令。
用户代码(C#): 采集信息,逻辑控制,接收命令,传达命令。
小脑的作用: 维持姿势平衡,调节肌紧张,协调身体运动。
用户驱动(C/C++):采集MPU6050/ BMP085/ HMC5883L芯片信息,发出控制指令,维持设备平衡(对自平衡智能车,四翼机,人形机器人来说,这个功能很重要)。
脑干的作用: 维持个体生命,包括心跳、呼吸、消化、体温、睡眠等重要生理功能
TinyCLR: .NET MF核心,维系Net运行时的正常运行,负责解析用户代码,为用户代码提供各种功能支持。
脊髓的作用: 控制肌体,传递大脑命令,反射。
功能接口: 连接各种功能模块,传递控制指令,收集传感器反馈信息。
NetDIY智能主控能做什么?
NetDIY智能主控的定位非常明确,也是专为具体的项目而设计的。其主要项目为:智能车(可以是自平衡车),四翼飞行器,人形机器人,智能家居等。

自平衡小车:NetDIY自带平衡芯片,支持多路PWM,可以直接控制相关电机驱动模块。
四翼飞行器:I2C或PWM接口驱动电调,控制机翼旋转,根据传感器芯片调节自身平衡。外接470M无线模块,支持远程调控。多路PWM可以控制舵机,调整摄像头(树莓派+摄像头)位置。串口通信,可以控制树莓派何时拍照和录制视频。串口外接GPS模块,支持一键返航。
人形机器人:人形机器人一般有17或21个自由度(也就是17或21个舵机),NetDIY有24路PWM,可以直接驱动舵机(可以直接插入NetDIY的PWM专有接口)。直接支持Sony PS2遥控模块,方便远程操控。多个串口,多个SPI、对个I2C接口,可以外挂其他传感器模块。
智能家居:对门禁系统来说,可同时支持8路WG26的刷卡器。对控制和采集来说,31路GPIO,多路通信接口,可以采集各种信息,和控制各种设备。
注:以上不仅仅是设备本身的控制,还会通过蓝牙,wifi或GPRS模块和安卓、Windows Phone手机进行通信控制。另外还支持Web Server,远程传递相关信息。
如何参与NetDIY智能主控能开发计划?
NetDIY开发计划,其实是学习计划,是通过具体的项目,可以对物联网,对嵌入式式设备有更深地了解。可以把相关的技术用在实际的项目当中去。
目前NetDIY计划之四翼机已经初步启动, 相关内容,可以看讨论帖。
《四翼机任务、分工及参与说明》
http://www.yfiot.net/forum.php?mod=viewthread&tid=1963&extra=page%3D1
《NetDIY主板设计》
http://www.yfiot.net/forum.php?mod=viewthread&tid=1961&extra=page%3D1
【NetDIY智能主控】开发计划的更多相关文章
- 【开源】OSharp3.3框架解说系列:开发计划与进度
		OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ... 
- 使用C#开发计划任务调度服务
		在系统运维中常常需要定期去跑一些计划任务,比如扫描服务器监控其性能.检查SQL Server作业是否正常.监控MQ队列是否存在堵塞现象等.如果使用Windows计划任务调度,一来管理起来就比较松散,二 ... 
- Fragment开发计划
		Fragment是什么 Fragment正如字面意思所言是碎片,所以这是一个管理碎片时间的应用程序.目前考虑的是先在Android上实现,如果IOS的合作伙伴靠谱可以交给他做,如果不靠谱就等Andro ... 
- 引擎设计跟踪(九.14.2h) 开发计划
		以后的开发计划: 完善game runtime code, 跑简单的demo目前只有编辑器的运行流程, 没有游戏/demo流程, 图形的测试主要在编辑器上测试, 现在需要测试android系统的图形, ... 
- 智能合约开发环境搭建及Hello World合约
		如果你对于以太坊智能合约开发还没有概念(本文会假设你已经知道这些概念),建议先阅读入门篇. 就先学习任何编程语言一样,入门的第一个程序都是Hello World.今天我们来一步一步从搭建以太坊智能合约 ... 
- 智能合约开发solidity编程语言开发一个以太坊应用区块链投票实例
		智能合约开发用solidity编程语言部署在以太坊这个区块链平台,本文提供一个官方实战示例快速入门,用例子深入浅出智能合约开发,体会以太坊构建去中心化可信交易技术魅力.智能合约其实是"执行合 ... 
- NEO智能合约开发(二)再续不可能的任务
		NEO智能合约开发中,应用合约比较简单,是的你没看错,应用合约比较简单. 应用合约三部曲,发布.调用.看结果.除了看结果工具比较缺乏,发布调用neogui最起码可以支撑你测试. 鉴权合约比较麻 ... 
- EOS智能合约开发(四):智能合约部署及调试(附编程示例)
		EOS智能合约开发(一):EOS环境搭建和创建节点 EOS智能合约开发(二):EOS创建和管理钱包 EOS智能合约开发(三):EOS创建和管理账号 部署智能合约的示例代码如下: $ cleos set ... 
- EOS智能合约开发(三):EOS创建和管理账号
		没有看前面文章的小伙伴可以看一下 EOS智能合约开发(一):EOS环境搭建和启动节点 EOS智能合约开发(二):EOS创建和管理钱包 创建好钱包.密钥之后,接下来你就可以创建账号了,账号是什么?账号保 ... 
随机推荐
- 'telnet' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
			在telnet与ftp服务器相连时出现的问题: 原因:windows自带telnet,只是没有安装 解决如下: 然后关机重启 
- TCP控制拥塞的四种算法:慢开始,拥塞避免,快重传,快恢复
			我们在开始假定: 1:数据是单方向传递,另一个窗口只发送确认. 2:接收方的缓存足够大,因此发送方的大小的大小由网络的拥塞程度来决定. 一:慢开始算法和拥塞避免算法 发送方会维持一个拥塞窗口,刚开始的 ... 
- TStringList  TMemo Text与Add赋值的区别 Memo.Text赋值高度注意事项,不得不知的技巧。
			Memo.Text赋值高度注意事项,不得不知的技巧. list := TStringList.Create; list.Text:= str: list.Count; list.Clear; l ... 
- 如何防止ElasticSearch集群出现脑裂现象(转)
			原文:http://xingxiudong.com/2015/01/05/resolve-elasticsearch-split-brain/ 什么是“脑裂”现象? 由于某些节点的失效,部分节点的网络 ... 
- MFC坐标空间与映射模式
			逻辑坐标:使用GDI绘图时使用的坐标系 设备坐标系:实际设备(显示器.打印机)的坐标系,即我们实际看到的坐标系. 坐标空间 在Windows NT/2000中Win32 API中支持以下四层坐标空间: ... 
- IOC和AOP使用扩展   多种方式实现依赖注入
			多种方式实现依赖注入 1.Spring 使用setter访问器实现对属性的赋值, 2.Spring 构造constructor方法赋值, 3.接口注入 4.Spring P命名空间注入直接量 sett ... 
- System.IO中的File、FileInfo、Directory与DirectoryInfo类(实例讲解)
			一.建立的文件夹(对这些文件进行以上四个类的操作): 父目录: 父目录的子目录以及父目录下的文件: 子目录下的文件: 二.效果图 三.代码实现 using System; using System.I ... 
- UVA 753 A Plug for UNIX(二分图匹配)
			A Plug for UNIX You are in charge of setting up the press room for the inaugural meeting of the Unit ... 
- easyul获取各种属性ID 和赋值
			//span赋值 $('#state1').text("审核通过"); //textarea赋值 $("#memo").val(''); //隐藏域 $(&q ... 
- [转] mhvtl虚拟磁带库的安装与应用
			转自:candon123 -- http://candon123.blog.51cto.com/704299/388192/ 1.获取mhvtl: 官方网站:http://mhvtl.nimsa.u ... 
