小组成员:1组 柳珏玺、石雅文、张高萌、周泽坤
2组 崔提提,邓宏,郭媛
什么是开源?
开源,即开放源代码(Open Source),一般的软件仅可取得已经过编译的二进制可执行档,通常只有软件的作者或著作权所有者等拥有程序的原始码。有些软件的作者会将原始码公开,此称之为“源代码公开”。
什么是开源软件?
开放源代码软件就是在开放源代码许可证下发布的软件,以保障软件用户自由使用及接触源代码的权利。这同时也保障了用户自行修改、复制以及再分发的权利。简而言之,所有公布软件源代码的程序都可以称为开放源代码软件。
什么是开源硬件?
开源硬件指与自由及开放原始码软件相同方式设计的计算机和电子硬件。开源硬件开始考虑对软件以外的领域开源,是开源文化的一部分。
开源硬件协会(Open Source Hardware Association)这样定义开源硬件:开源硬件是可以通过公开渠道获得的硬件设计,任何人可以对已有的设计进行学习,修改,发布,制作和销售。
其中,Arduino的诞生可谓开源硬件发展史上的一个新的里程碑。
开源硬件延伸着开源软件代码的定义,包括软件、电路原理图、材料清单,设计图等都使用开源许可协议,自由使用分享,完全以开源的方式去授权方式。这些硬件的开发者将硬件的全部资料都对外公开,包括电路图、固件、软件、元件列表、器件列表以及印刷版图。这些资料允许任何人使用,比开源软件的开放度更高的地方在于,作者更是允许将这些资料及硬件用于任何商业开发。
当今的开源硬件有以下几类:
一类是由用户板进化出的可二次开发的板级开源硬件(早期以树莓派为代表);
另一类是开源硬件描述语言(以Chisel为代表源代码开放的开源硬件);
还有一类是开源操作系统中的开源硬件数据结构(如ARM Device Tree)。
开源硬件的特点:
Richard Stallman在他的经典文章“Why Software Should be Free”中指出的限制软件拷贝所带来的3个层面的损害:
1、越来越少的人使用程序;
2、没有人能够改编或者修正程序;
3、其他开发者不能够从中学习并运用到新的程序中。
同样的这几个方面在某种程度上对硬件也是同样适用的。
硬件开源的好处:
1、硬件开源使得其他的制造商能进行二次开发,这在有些时候对于打破垄断是非常好的办法。
2、硬件开源这样使用者可能对产品进行维修,而爱好者们可以在此基础上改编出自己喜欢的东西。这样社会和环境资源的节约也是影响很大的。
3、其他开发者能够从中学习,加快知识的传播和积累。
特点:
1、人人可用(任何人可以任何目的自由的使用软件);
2、人人可探(任何人可以探知软件的原理、编程方法、算法等等);
3、人人可改(任何人可以按照自己的方式自由的修改软件);
4、人人可再分发(任何人可以把自己修改过的软件自由的再次发布)。
几个著名的开源硬件:
1、Arduino
Arduino是Atmel公司的一款微处理器作为主芯片,包含硬件(各种型号的Arduino板)和软件(Arduino IDE),具有体积小、价格实惠等特性。Arduino在设计之初就考虑到了与不同的外设进行交互,在与现有的电子元件例如传感器或者其他控制器件、LED、步进马达等连接时,几乎不需要增加支持电路。当然,Arduino也可以独立运行,并与软件进行交互。
Arduino主要包含两个主要的部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,计算机中的程序开发环境。只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。
特点:
跨平台
Arduino IDE可以在Windows、Macintosh OS X、Linux三大主流操作系统上运行,而其他的大多数控制器只能在Windows上开发。
简单清晰
Arduino IDE基于processing IDE开发。对于初学者来说,极易掌握,同时有着足够的灵活性。Arduino语言基于wiring语言开发,不需要太多的单片机基础、编程基础,简单学习后,也可以快速的进行开发。
开放性
Arduino的硬件原理图、电路图、IDE软件及核心库文件都是开源的,在开源协议范围内里可以任意修改原始设计及相应代码。
发展迅速
Arduino不仅仅是全球最流行的开源硬件,也是一个优秀的硬件开发平台,更是硬件开发的趋势。Arduino简单的开发方式使得开发者更关注创意与实现,更快的完成自己的项目开发,大大节约了学习的成本,缩短了开发的周期。
2、树莓派(Raspberry Pi)
树莓派(Raspberry Pi)是一款基于Linux系统的,针对电脑业余爱好者、教师、学生以及小型企业等用户的迷你电脑。其目的是以低价硬件及自由软件刺激在学校的基本的电脑科学教育。Raspberry Pi并采用ARM架构处理器作为主芯片,也提供了USB与以太网接口。不过需要注意的是,Raspberry Pi没有板载存储芯片,仅留有SD卡座,因而运行Raspberry Pi需要提供SD卡(新版树莓派仅支持micro SD)。可连接键盘、鼠标和网线,同时拥有视频模拟信号的电视输出接口和HDMI高清视频输出接口,以上部件全部整合在一张仅比信用卡稍大的主板上,具备所有PC的基本功能只需接通电视机和键盘,就能执行如电子表格、文字处理、玩游戏、播放高清视频等诸多功能。
树莓派A型与B型的区别
树莓派A型内置256MB内存,带一个USB端口,不带有线网接口。
树莓派B型内置512MB内存,带两个USB端口,带100M有线网接口。
3、Beagleboard
BeagleBone基于Linux系统,可以支持程序并行运行,也支持使用多语言编程。BeagleBone有着性能强、价格相对较低、硬件扩展性强等特点,是为喜爱嵌入式Linux的玩家量身打造的产品。开发难度要比Arduino大一些,不太适合初学者。
三者比较:
Arduino Uno是一个非常易于开发的平台,有很多开发者也都选择它作为开发环境,而且它的设计让它易于和其他设备相连。与Arduino相比,Raspberry Pi是一个比较新的成员。它实际上是一个嵌入式电脑。它也是一个并不昂贵的全功能桌面电脑。它是一个准系统,而作为$35的电脑,它在很多项目中都是一个很好的平台。BeagleBone可能是三个平台中最鲜为人知的一种,但它有很好的兼容性,许多项目都可使用。它是一款强大的Linux电脑,而且可以安装到Altoid’s的容器中。
规格与特色:
首先,Arduino和Raspberry Pi非常便宜,不到40美元,BeagleBone的价值几乎是Arduino Uno的三倍,而Arduino的每秒周转速率大约比另外两款慢40倍,RAM则是其他两款的1/128000。从中你可以发现他们的差异逐渐产生了,Arduino和Raspberry Pi价格较低,而Rasphberry Pi与BeagleBone功能较强。从这点来看的话Rasphberry Pi似乎是最好的选择,但事情没有这么简单。首先它的价格并不如第一眼看到的那么美好,因为运行Raspberry Pi,你需要提供SD卡,而这额外增加了5%到10%的成本。
此外,抛开每秒运转速率的相似性能不谈,BeagleBone的运转速度几乎是Raspberry Pi的两倍。也许有悖常理,对于初学者来说,Arduino也许性能更好。这是因为Raspberry Pi和BeagleBone都是基于Linux系统。这个系统让它们可以在小型电脑上,运行多个程序,并支持使用多语言编程。Arduino的设计非常简单,它一次只能运行一个程序,而且只支持低阶的C++语言编程。
BeagleBone和Raspberry Pi还有一个有意思的特性,就是他们可以在Flash卡上运行(Raspberry Pi使用SD卡,BeagleBone使用microSD)。这就意味着,你可以通过换存储卡来实现系统移植。在不同的储存卡上,你可以储存不同的设定值,只要更换储存卡,你就可以继续之前正在开发的项目。因为这两个板非常的复杂,这意味着你可以通过换卡而轻松的换操作系统。
其他开源硬件:
4、Atmel Xplained / Xplained Pro 开发板
作为低成本单片机,Atmel Xplained / Xplained Pro 开发板有很多型号可供大家选择,如:8位或32位AVR单片机、ARM Cortex-M0+ 或 Cortex-M4 或 Cortex-M4F、ARM Cortex-M0+ 加无线 SoC、ARM Cortex-A5 微处理器等。基于ARM Cortex-M0+ 架构的开发平台,低外围资源,但同时具备低功耗,二次开发简易,拥有32位ARM的计算性能等优势。Xplained Pro开发板同样具有可扩展性,可以使用标准排针在开发板侧面连接扩展板。
5、MSP430 LaunchPad
LaunchPad是TI专门推出的一系列开发平台,其特点是使用简单:下载使用一体,无需额外硬件。与此同时,来自美国的工程师还向创客们演示直接在电路板上方加上“Booster Pack”外围板(相当于扩展板),去完成不同外设的二次开发。Launchpad的性价比是非常高的,低功耗,低价格,性能也有保障,非常适合学习和低资源需求的应用。
6、Galileo(伽利略)开发板
英特尔伽利略电路板是基于英特尔架构、兼容Arduino的系列可开发电路板的首款产品。这一可开发电路板支持Arduino软件库的开源Linux操作系统,可扩展性强,可重复使用现有软件库资源(名为“sketches”)。英特尔伽利略电路板可以采用Mac OS、微软Windows和Linux主机操作系统进行编程,也可被设计成为与Arduino生态系统兼容的软硬件产品。
开源硬件的最佳实践
最佳实践的大部分内容是为了解决定义中的含糊之处。社区内曾经发生了一些由于没有遵守定义而导致的混乱。例如,一些公司声称以开源的方式发布他们的硬件,但迟迟没有公开发布源文件。为应对这个问题,最佳实践文档称,如果没有发布项目源代码文件,就称该项目开源是不合适的。
1、一个开源硬件项目的组成部分
当你希望发布开源硬件项目时,你应该考虑共享这些文件。你不需要发布所有的文件,但是你共享的越多,社区就会收益越多,而社区选择你项目的可能性就越大。
2、概述/简介
开源硬件项目应包括一份硬件特性和目的的整体概述,撰写时尽可能地将读者当做普通观众。也就是说,在讲述技术细节之前应解释项目是什么及其目的。一张好的照片或效果图都会有很大帮助。
3、原始设计文件
这些文件是你将用来更改硬件设计的原始源文件。共享这些文件的行为是开源硬件的核心范例。理想情况下,你应使用一个免费的开源软件应用程序设计开源硬件项目,以最大限度地方便他人查看和编辑。然而,硬件设计文件往往是在专有程序中创建并以专有格式存储。共享这些原始设计文件仍然是必要的,它们构成了硬件的原始“源代码”。人们要对你的项目做修改时就需要这些文件。
尽量将你的设计文件做得易读。有逻辑地将他们组织好;解释一下复杂部分;说明任何特殊的制造程序等。
4、辅助设计文件
除了原始设计文件,用其他更易使用的格式共享您的设计往往也是很有帮助的。例如,开源一个CAD设计的最佳范例不仅是共享其本地文件格式的设计,而且还共享一系列其他CAD程序能打开和导入的互换或导出的格式。
向希望了解(不一定会更改)设计的终端用户提供现成的视图输出也是有帮助的。例如,可以是一个电路板示意图的PDF文档或者一个3D设计的STL文件。这些辅助设计文件使人们能够学习硬件的设计,有时甚至可以生产它,即使他们没能使用特定的专有软件套件。但是,请注意,我们从来不允许用辅助设计文件替代原始设计文件。
5、物料清单
6、软件和固件你必须共享操作硬件所需的任何代码或固件。这样其他人才能将它与他们的硬件一起使用或对你的硬件进行修改。将创建你的软件所需的流程以文档形式归档包括到任何相关(如第三方库或工具)的链接。此外,提供软件的状况概述也是很有帮助的(如“stable”或“beta”或“barely-working hack”)。
7、照片
图片可帮助人们了解你的项目是什么,以及如何进行组装。最好能够发布多个角度的照片和组装各阶段的照片。如果没有照片,发布设计的3D效果图也是一个很好的选择。无论用哪种方式,提供标题或文字来阐述每个图片所展示的内容和图片有用的原因都是不错的。
8、解释和其他的说明
除了设计文件本身,还有很多说明对于帮助他人制作或修改你的硬件是非常宝贵的:
制作硬件。为了帮助他人制作及修改你的硬件设计,你应该提供一份说明包括你的设计文件和工作的物理硬件。作为说明的一部分,提供硬件的部件/零件数据表链接并且列出组装所需的工具是非常有帮助的。如果设计需要专门的工具,请说明可以在哪里获取。
使用硬件。一旦有人制作了硬件,他们就需要知道如何使用它。请提供说明解释它能做什么,如何设置它,以及如何与它进行互动。·设计原理。如果有人想修改你的设计,他们会想知道为什么它是这样的。请说明硬件设计的总体规划以及你做了具体选择的原因。
设计原理。如果有人想修改你的设计,他们会想知道为什么它是这样的。请说明硬件设计的总体规划以及你做了具体选择的原因。
开源硬件,以Arduino为例,带来的是什么呢?
标准化。
1、接口的标准化
Arduino定义了很多标准化的接口。如Arduino UNO,Arduino Mega,Arduino Nano,以及xbee接口。在Arduino中包括SPI接口以及12C接口的位置都是标准化的。这些标准化带来的好处就是,对于Arduino兼容模块的设计者来说,只要设计兼容这些接口的硬件。那么客户拿到手的模板使用会非常简单。
扩展板直接可以插上就可以用,模板看清楚数字口或者模拟口就行,12C,SPI设备接的位置都一样。非常方便使用。
2、使用流程的标准化
对于开源硬件来说,接口的标准化使得使用流程也可以标准化选择一个模块的流程,一般是:想一个功能(idea)—>百度查询使用传感器—>淘宝开源硬件店询问合适模块—>查看模块使用方式—>购买收到模块后下载程序库文件—>打开库里的demo例程烧录程序—>修改程序为自己所用
3、教育的标准化
流程的标准化使得硬件的入门门槛被大幅度地降低。包括出现了一些图形化编程软件sketch等使得门槛被进一步降低。
门槛低,东西又标准化,那么低龄教学,便成为可能。那么门槛到底有多低呢?小学生也可以学。目前创客风流行,很多中小学教师也加入行列。使得创客的工具Arduino也可以中小学生认识。目前使用Arduino教学的中小学主要还是集中在上海及周边地区。根据老师的反馈确实效果不错。
开源硬件是一个桥梁,他连接了硬件和软件,他让软件工程师可以不了解底层的使用硬件的功能。
同时它也让硬件工程师,在不了解库的具体实现的情况下能使用很多人编写的库。再也不用过多的纠结于各种不同的通信协议,各种驱动的编写。
如果创客能够改变世界,那开源硬件一定是他背后的那个默默付出的她。
附录:
开源硬件领域的活跃组织
OpenCores.org
OpenCores 是全世界最大的用于开发开源硬件 IP 核心的网站和社区。Opencores创建于1999年,但这个网站直到2001年被CNET报道之后才进入公众视野。秉承自由软件运动的精神,OpenCores希望消除冗余设计工作并减少开发成本。
Arduino.cc
Arduino爱好者官方社区,该社区覆盖范围广泛,也包括特定区域群体和特殊利益集团。官方论坛(多国语言)是用户交流各种各样问题的地方。Playground提供各种关于Arduino的知识,教程,和各种说明文件。
官方网站:http://arduino.cc/
Arduino中文社区(非官方):http://www.arduino.cn/
BeagleBoard.org
BeagleBoard.org基金会是一个提供嵌入式计算机开源软件及硬件教育和推广的非营利性组织,其总部设在美国。BeagleBoard.org是为开源软件和硬件的用户和开发者提供的论坛,以交流思想、知识和经验。
北京创客空间
北京创客空间成立于2011年1月,是一个针对于创客的公共服务平台和孵化基地,在北京拥有创客会员超过300人,影响人数超过10万人,拥有超过1000平方米的活动场地和300平方米的原型加工基地以及最完备的加工设施与设备。
官方网站:http://www.bjmakerspace.com/
柴火创客空间
柴火创客空间由深圳矽递科技有限公司(SeeedStudio)赞助成立,后者是一家致力于促进开源硬件发展的服务型企业。“柴火创客空间”寓意“众人拾柴火焰高”,为创新制作者(Maker)提供自由开放的协作环境,鼓励跨界的交流,促进创意的实现以至产品化。空间提供基本的原型开发设备如3D打印机,激光切割机,电子开发设备,机械加工设备等,并组织创客聚会和各种级别的工作坊。
新车间
新车间成立于2010年10月,向硬件高手,电子艺术家,设计师,DIY爱好者和所有喜欢自己动手捣鼓各种东西的人提供了一个开放式社区,实验空间和基础设备。在这里,大家不仅可以和兴趣相投的人一起拆拆装装各种电子和物理产品,而且还可以共同实施一些好的设计和想法。
OpenHW开源硬件社区
2007年3月,美国赛灵思公司(Xilinx)和与非网(www.eefocus.com)合作建设OpenHW开源硬件社区。此社区是美国赛灵思公司(Xilinx)大学计划在中国资助的非营利学生社团组织,是Xilinx学生俱乐部的官方网站,社区为高校学生以及所有FPGA爱好者提供一个交流和分享硬件开发经验的开放式社区平台。对于OpenHW社区的项目,Xilinx公司会提供各种形式的技术支持。
树莓派社区
http://www.raspberrypi.org/community/
rduino论坛
开源硬件社区
https://wiki.debian.org/open_hardware
http://p2pfoundation.net/Category:Design
比较有意思的硬件hack的网站
几个有意思的开源硬件项目
Hacking RF项目
http://greatscottgadgets.com/hackrf/
开源汽车
http://www.osvehicle.com/download/
http://www.oschina.net/news/47698/10-incredible-open-source-hardware-projects-in-2013?from=20140112
网友评论