经过一个轮回,硬件开发、硬件创业又被推到了历史的前台。

面向低端、初级的硬件爱好者,以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智能主控】开发计划的更多相关文章

  1. 【开源】OSharp3.3框架解说系列:开发计划与进度

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

  2. 使用C#开发计划任务调度服务

    在系统运维中常常需要定期去跑一些计划任务,比如扫描服务器监控其性能.检查SQL Server作业是否正常.监控MQ队列是否存在堵塞现象等.如果使用Windows计划任务调度,一来管理起来就比较松散,二 ...

  3. Fragment开发计划

    Fragment是什么 Fragment正如字面意思所言是碎片,所以这是一个管理碎片时间的应用程序.目前考虑的是先在Android上实现,如果IOS的合作伙伴靠谱可以交给他做,如果不靠谱就等Andro ...

  4. 引擎设计跟踪(九.14.2h) 开发计划

    以后的开发计划: 完善game runtime code, 跑简单的demo目前只有编辑器的运行流程, 没有游戏/demo流程, 图形的测试主要在编辑器上测试, 现在需要测试android系统的图形, ...

  5. 智能合约开发环境搭建及Hello World合约

    如果你对于以太坊智能合约开发还没有概念(本文会假设你已经知道这些概念),建议先阅读入门篇. 就先学习任何编程语言一样,入门的第一个程序都是Hello World.今天我们来一步一步从搭建以太坊智能合约 ...

  6. 智能合约开发solidity编程语言开发一个以太坊应用区块链投票实例

    智能合约开发用solidity编程语言部署在以太坊这个区块链平台,本文提供一个官方实战示例快速入门,用例子深入浅出智能合约开发,体会以太坊构建去中心化可信交易技术魅力.智能合约其实是"执行合 ...

  7. NEO智能合约开发(二)再续不可能的任务

      NEO智能合约开发中,应用合约比较简单,是的你没看错,应用合约比较简单. 应用合约三部曲,发布.调用.看结果.除了看结果工具比较缺乏,发布调用neogui最起码可以支撑你测试.   鉴权合约比较麻 ...

  8. EOS智能合约开发(四):智能合约部署及调试(附编程示例)

    EOS智能合约开发(一):EOS环境搭建和创建节点 EOS智能合约开发(二):EOS创建和管理钱包 EOS智能合约开发(三):EOS创建和管理账号 部署智能合约的示例代码如下: $ cleos set ...

  9. EOS智能合约开发(三):EOS创建和管理账号

    没有看前面文章的小伙伴可以看一下 EOS智能合约开发(一):EOS环境搭建和启动节点 EOS智能合约开发(二):EOS创建和管理钱包 创建好钱包.密钥之后,接下来你就可以创建账号了,账号是什么?账号保 ...

随机推荐

  1. 'telnet' 不是内部或外部命令,也不是可运行的程序 或批处理文件。

    在telnet与ftp服务器相连时出现的问题: 原因:windows自带telnet,只是没有安装 解决如下: 然后关机重启

  2. TCP控制拥塞的四种算法:慢开始,拥塞避免,快重传,快恢复

    我们在开始假定: 1:数据是单方向传递,另一个窗口只发送确认. 2:接收方的缓存足够大,因此发送方的大小的大小由网络的拥塞程度来决定. 一:慢开始算法和拥塞避免算法 发送方会维持一个拥塞窗口,刚开始的 ...

  3. TStringList TMemo Text与Add赋值的区别 Memo.Text赋值高度注意事项,不得不知的技巧。

    Memo.Text赋值高度注意事项,不得不知的技巧. list := TStringList.Create;  list.Text:= str:  list.Count; list.Clear;  l ...

  4. 如何防止ElasticSearch集群出现脑裂现象(转)

    原文:http://xingxiudong.com/2015/01/05/resolve-elasticsearch-split-brain/ 什么是“脑裂”现象? 由于某些节点的失效,部分节点的网络 ...

  5. MFC坐标空间与映射模式

    逻辑坐标:使用GDI绘图时使用的坐标系 设备坐标系:实际设备(显示器.打印机)的坐标系,即我们实际看到的坐标系. 坐标空间 在Windows NT/2000中Win32 API中支持以下四层坐标空间: ...

  6. IOC和AOP使用扩展 多种方式实现依赖注入

    多种方式实现依赖注入 1.Spring 使用setter访问器实现对属性的赋值, 2.Spring 构造constructor方法赋值, 3.接口注入 4.Spring P命名空间注入直接量 sett ...

  7. System.IO中的File、FileInfo、Directory与DirectoryInfo类(实例讲解)

    一.建立的文件夹(对这些文件进行以上四个类的操作): 父目录: 父目录的子目录以及父目录下的文件: 子目录下的文件: 二.效果图 三.代码实现 using System; using System.I ...

  8. 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 ...

  9. easyul获取各种属性ID 和赋值

    //span赋值 $('#state1').text("审核通过"); //textarea赋值 $("#memo").val('');  //隐藏域 $(&q ...

  10. [转] mhvtl虚拟磁带库的安装与应用

    转自:candon123  -- http://candon123.blog.51cto.com/704299/388192/ 1.获取mhvtl: 官方网站:http://mhvtl.nimsa.u ...