本节书摘来自华章出版社《Microduino实战》一 书中的第1章,第1.1节,作者:姚琪 杨立斌,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.4 开源硬件

开源硬件是对开源软件领域的一种扩展,指的是通过与自由及开放源代码软件相同的方式设计的计算机和电子硬件。与开源软件不同的是,开源硬件最终会涉及物理实体的生产与制造,所以是自由的,但并不免费。这里的自由是指发布硬件设计的详细信息,如电路图、材料列表和电路板布局数据,而且通常会使用开源软件来驱动硬件。
开源的IP核是一种类型的开源硬件。IP核是指在数字电路领域中描述硬件设计功能的可重用模块。比如,OpenSPARC是SUN公司一款开源的处理器设计,使用者可以用来在FPGA等可编程芯片上实现该设计;OpenCores提供了开源的处理器、外围设备、总线控制等逻辑设计。
除此之外,还有像Arduino、树莓派、pcDuino这样的开源软硬件平台。
开源硬件的特点如下:
模块化的设计
允许商业化
有很好的技术支持
完全开放的软硬件
开源硬件降低了硬件入门门槛,让更多的人可以参与到硬件开发中,甚至那些完全没有任何硬件知识的人同样能够快速地使用像Arduino这样的开源平台进行开发。

1.4.1 Arduino

Arduino[2]是一款开放源代码的微芯片控制器平台,如图1-1所示为其中一款Arduino UNO开发板。它使用的是Atmel AVR单片机,具有非常简单的I/O口,以及代码友好的开源编程环境,无需具备任何硬件知识,就可以轻松地入门这一硬件平台。所以,极客、创客、艺术家、电子爱好者,甚至中小学生都能够在这个小巧的平台上发挥自己的创意。

2004年冬,一名意大利的教师和一名西班牙工程师为了学生开发了一款电路板,取名Arduino。随后的几年,Arduino在全球流行了起来,起初只是为了教学,而如今Arduino在开源硬件社区中异常火爆,它就像一种电子积木玩具,可以搭建各种创意
设计。
Arduino有如下的一些特点。
1)开源:Arduino的硬件以及软件都是开源的,开发成本相对较低,可以让用户自由使用,使用者可以在没有商业利益的情况下使用、修改以及发布。这让更多的创新者能够在其基础上发挥自己的创意,并与社区中的创客一起分享、讨论。
2)易使用:简单的Arduino IDE界面,容易上手的编程语言,以及丰富的封装函数,技术门槛很低,这让初学者在很短时间内就能够将类似于“Hello World!”这样的设计运行起来。这大大激发了初学者进一步学习的积极性。
3)庞大的社区:正因为前面两个特点,使Arduino逐渐形成一个很庞大的技术社区。用户本着开源的精神,既能够获得各种开放的源代码和设计,又能够开放自己的设计,并与社区中的人一起交流讨论,形成了一种设计开发的良性循环。
4)丰富的外围设备:除了官方提供的一些扩展板和模块,第三方模块供应商也提供了很多兼容Arduino的扩展板和模块,如WiFi、蓝牙、以太网等通信接口模块,以及各种类型的传感器模块,还有电机驱动模块等。这种相对完善的供应链,能够极大地满足创客的不同需求,加速了从创意到原型设计的过程。
如果仅从外观上看,根本不会觉得Arduino有多大的能耐,但是从开源硬件社区中提供的开源项目中就能看出Arduino的魅力了。比如基于Arduino的数字示波器、智能避障小车、远程遥控侦查机器人等[3]。
当然,Arduino不可能尽善尽美,不可能满足所有人的要求,比如所采用的MCU是一款低功耗的8位微控制器,不能实现复杂的计算,无法运行操作系统,当然也不可能实现图形界面,等等。自然,Arduino整个生态体系也在逐渐地进化和完善。2014年美国TI公司与Arduino开源项目一起合作,推出了一款ARM+MCU架构的开源硬件平台——Arduino TRE,ARM处理器采用了1GHz Cortex-A8处理器,能够运行高性能的桌面应用、处理密集型的算法和高速通信[4],例如3D打印等。此外,Intel发布了一款兼容x86架构的Arduino开发板——Intel Galileo开发板[5]。这两者无疑都说明了世界顶级的芯片厂商非常重视开源硬件这块领域,也间接说明了开源硬件良好的发展趋势。

1.4.2 Microduino

Microduino[6]是一款兼容Arduino的微控制器平台,如图1-2所示。它将USB接口与微控制器分离开,分别做成了一个模块,可以通过Microduino制定的U型27 Pin的接口标准,将所有Microduino系列模块堆叠起来使用,这让Microduino变得更加小巧而富有灵活性。
对于尺寸大小受限的设计来说,Microduino有很大的吸引力,而且通过堆叠模块的方式添加功能模块,方便了模块的连接,还能防止引脚插错的失误。第2章会详细介绍Microduino一系列的电子积木。

1.4.3 树莓派

树莓派(Raspberry Pi)[7]是一款基于ARM的微型计算机板,是专门为学生学习计算机编程而设计的,采用了博通公司的700MHz BCM2835 CPU,可以运行Debian、Archlinux等Linux系统,内置多种接口,包括USB、HDMI、LAN等。它自从问世以来,就受到广大计算机和硬件爱好者的追捧。最新版本树莓派B+在中国国内的价格不到200元,非常小巧,只有一张信用卡那么大,却可以当作一台普通的计算机,如
图1-3所示。任何年龄段的电脑爱好者都可以拥有它,可以在上面进行硬件DIY,以及软件编程。
树莓派毕竟是一台计算机,对于技术薄弱的爱好者而言,上手比较困难,比如Linux系统的使用,C、Python、Java等编程语言的学习。目前国内有一个树莓派论坛,在上面可以获得一些入门资料和必备的知识,还可以找到一些高级玩家实现的方案,而且在市面上已经有好几本树莓派的教材可供参考。

在采访树莓派联合创始人Eben Upton时,他说道:“8岁是很好的年纪。你有合适的身体,有合适的心智,而且还处于生命中能轻松学习新知识的时候。你的大脑还具有非常大的可塑性,可以学习语言……所以我认为越早接触计算机编程越好,而8岁是奇妙的年纪。8岁,10岁,12岁,12岁可能都有点晚了。”从采访中可以看出,树莓派的一大初衷在于初级教育,在于鼓励和教育小孩子编程。这样的做法有一定的理想主义,但这样的尝试具有很大的意义,这条路还需有很长一段要走。或许从小让孩子学编程,可能其中的一部分人会将编程当作一种爱好,而不只是一种谋生的工具,那么“编程要从娃娃抓起”这样的话,就变得更加有意义了。

1.4.4 pcDuino

pcDuino[8]是一款高性能的迷你PC平台,可以运行Ubuntu和Android ICS,它专门针对开源快速增长的需要而开发,I/O接口兼容Arduino。如图1-4所示是最新的pcDuino 3,全志A20Soc芯片,内置1GHz ARM Cortex A7双核处理器,1G内存,4GB闪存,自带兼容Arduino的扩展接口。最新版本的技术参数可以参考官方网站所提供的资料[8]。它可以看作是Arduino和树莓派集成和增强版,价格为300~400元。

1.4.5 其他开源硬件平台

除了以上所介绍的开源硬件,还有BeagleBone Black[9],如图1-5所示。它使用的是TI的1GHz ARM Cortex-A8处理器,2GB eMMC存储,512MB的DDR3内存,有46Pin可供使用,支持LCD、UART、ADC、I2C、PWM、SPI等接口。它同样是一款迷你的嵌入式系统开发平台。

中国珠海的一个团队推出了一款叫作Cubieboard[10]的开源平台,如图1-6所示。它使用1GHz ARM Cortex-A8处理器,1GB DDR3内存, 4GB 闪存,有96个扩展口,可以运行Android、Ubuntu等系统。

以上介绍的开源硬件主要涉及微控制器和迷你PC系列的开源硬件。另外还有NetFPGA,它是一款用于网络设计的开放平台,核心控制芯片采用的是FPGA,需要对FPGA内部的逻辑资源进行编程,才能让芯片实现某种具体的功能。考虑到本书的写作目的,这里就不再介绍了。

《Microduino实战》——1.4 开源硬件相关推荐

  1. 《Microduino实战》——1.5 如何选择开源硬件

    本节书摘来自华章出版社<Microduino实战>一 书中的第1章,第1.5节,作者:姚琪 杨立斌,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1.5 如何 ...

  2. 《Microduino实战》——1.2 为什么要开源

    本节书摘来自华章出版社<Microduino实战>一 书中的第1章,第1.2节,作者:姚琪 杨立斌,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1.2 为什 ...

  3. 《Microduino实战》——1.1 什么是开源

    本节书摘来自华章出版社<Microduino实战>一 书中的第1章,第1.1节,作者:姚琪 杨立斌,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 第1章 开 ...

  4. 《Microduino实战》——1.3 开源软件

    本节书摘来自华章出版社<Microduino实战>一 书中的第1章,第1.3节,作者:姚琪 杨立斌,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1.3 开源 ...

  5. 《Microduino实战》——3.4 重新认识软件与硬件

    本节书摘来自华章出版社<Microduino实战>一 书中的第3章,第3.4节,作者:姚琪 杨立斌,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 3.4 重新 ...

  6. 《Microduino实战》——第2章 Microduino

    本节书摘来自华章出版社<Microduino实战>一 书中的第2章,作者:姚琪 杨立斌,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 第2章 Microdui ...

  7. 《Microduino实战》——3.1 准备开发环境

    本节书摘来自华章出版社<Microduino实战>一 书中的第3章,第3.1节,作者:姚琪 杨立斌,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 3.1 准备 ...

  8. 《Microduino实战》——1.6 总结

    本节书摘来自华章出版社<Microduino实战>一 书中的第1章,第1.6节,作者:姚琪 杨立斌,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1.6 总结 ...

  9. 《Microduino实战》——2.1 Microduino系列产品

    本节书摘来自华章出版社<Microduino实战>一 书中的第2章,第2.1节,作者:姚琪 杨立斌,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2.1 Mi ...

最新文章

  1. /dev/null 位桶
  2. MySQL数据类型中DECIMAL的作用和用法
  3. 从源码深处体验Spring核心技术--IOC容器初体验
  4. 注解@NotNull/@NotEmpty/@NotBlank
  5. Django 框架02: 模型与站点
  6. ROS笔记(21) 地图
  7. python中usecols_Python学习路线?
  8. C#_基础,初始化器
  9. can总线配置读入是什么意思_CAN总线基础知识学习笔记
  10. python idle使用教程_PythonIDLE使用教程
  11. 关于java中Exception异常
  12. TextWatcher
  13. C语言中关于中文字符的存储及相关探索
  14. VMware虚拟机安装黑苹果
  15. (专升本)信息安全(计算机病毒)
  16. 一文带你了解c++使用endl和使用‘\n‘的区别
  17. 餐饮店如何做活动吸引人
  18. 使用exe4j把jar转换成exe文件时,报错java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Composite
  19. 还在为图片转Excel而烦恼?6种转换方法让你3秒实现转换
  20. 自然语言处理-应用场景-文本分类:基于LSTM模型的情感分析【IMDB电影评论数据集】--(重点技术:自定义分词、文本序列化、输入数据批次化、词向量迁移使用)

热门文章

  1. v-for图片九宫显示
  2. 基于photoswipe实现的vue图片预览组件vue-image-swipe
  3. svn初步安装使用(详细教程图文操作)
  4. 线性动态系统LDS(别名:卡尔曼滤波)
  5. proxy_redirect
  6. C++之getch(),getche(),getchar()的区别
  7. 查看linux版本是多少位
  8. JS push()方法
  9. vmstat命令详解!看了很多vmstat的详解,自己总结的
  10. 为什么千万不要小瞧月薪几千的女生