《 Python树莓派编程》——第1章 树莓派简介 第1.1 树莓派的历史

简介: 本节书摘来自华章出版社《Python树莓派编程》一书中的第1章,第1.1节,作者:[美]沃尔弗拉姆·多纳特(Wolfram Donat)著 韩德强 等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

本节书摘来自华章出版社《Python树莓派编程》一书中的第1章,第1.1节,作者[美]沃尔弗拉姆·多纳特(Wolfram Donat)著 韩德强 等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。



第1章

树莓派简介

如果你现在有一台树莓派,你会用它来做什么呢?也许你已经熟悉了树莓派的基本结构,正在考虑可以拿它来做些什么;也许你之前使用过计算机但并不熟悉Linux或树莓派默认的Raspbian操作系统;也许你已经是一位Linux系统的爱好者,但却不知道如何用Python进行编程,而且正准备好好学一学;也许你根本就不了解计算机,仅仅停留在点击“开始”菜单,转发电子邮件,上网等操作,但是听说过“树莓派”这么个新奇的东西,想了解一下它到底是什么。

无论是何原因,欢迎你的到来!你即将加入我们的大家庭—这个家庭专业性并不是很强,因为你只需花费35美金及必要的邮费,无需其他,便可成为我们的一员。作为一名会员,你将会和所有想听你分享经验的人们讨论你对软件包管理器、ARM11处理器,或是.config文件的一些见解,会了解关于驱动器和API的一些信息,会熟悉关于舵机、LED灯、板载摄像头的内容,最重要的是,你可以与微型计算机进行通信,用任何一门编程语言(本书主要使用的是Python语言)进行编程,构建项目,在树莓派上实现这些项目,这样树莓派便可与真实世界进行交互,并做出一些非常酷的东西。

通过阅读本书,我将引导你进入树莓派的俱乐部。在这里,你之前的经验并不重要,因为我将一步步带着你对树莓派进行配置,这样你就可以轻松地使用它了。我会尽量将Linux的环境介绍得详细透彻,以便你可以理解屏幕背后所发生的一切。同时我会用比较长的篇幅来介绍Python语言,这是当前极客们热衷的脚本语言。谷歌使用Python,NASA使用Python,Facebook也使用Python。Perl的时代已经过去,让我们好好探究Python这种语言。我还会在书中介绍一些构建电子项目的基本常识—这是一些技术或编程书籍仅作简单介绍,甚至完全忽略的部分。在构建好的项目同时,也还有一些安全因素需要考虑(例如,我曾经因为将电池短接而引起一次小型爆炸)。例如,你会学到如何焊出一个好的焊点,如何避免被刀片划伤食指,以及怎样区别40和40K的电阻。

当然,如果你已经熟悉了以上这些事情,可以跳过前面的介绍直接进入后面关于项目的部分。所有的项目都是用Python语言编写的,并且它们都可在一个周末(或一两个月,当然,这取决于你的积极性以及其他你需要做的事情)搭建完成。我会在每个项目之前为你准备一份购物清单,以及买到这些部件的地址,之后便直入主题。这些项目彼此之间并无依赖关系,在复杂程度上彼此也没有特定的顺序,这就意味着如果你想跳过家庭媒体服务器项目直接进入猫玩具项目也是没问题的。

那树莓派到底可以用来完成什么样的项目呢?你会惊讶地发现,树莓派小巧的尺寸并不能掩盖它强大的计算能力。它的应用范围很广,从网络服务器、车载电脑(carputer),到集群计算都可以看到它的身影。我希望当你读完本书之后,不仅可以发现一些新奇的想法,学到一些技术,最主要的是通过所学到的知识将你的想法变为现实。

无论你为何选择本书,你的主要目的就是快乐地学习并且学到一些东西!我会尽我所能去帮助你。

1.1 树莓派的历史

对外人而言,树莓派的确是很新颖的东西,在博客中有许多人也这样认为,还有一部分人甚至完全不知道树莓派是什么。大量树莓派的文章仍旧会以“树莓派是一个小型的、信用卡大小的计算机,爱好者们可以用其……”作为开始。但不同于树莓派,当人们谈及Arduino时,即便大多数人不知道Arduino是什么或是做什么用的,但至少都听说过。因为早在2005年,Arduino就在全球范围内的爱好者们、极客们和喜爱DIY的人们中赢得了很好的口碑。

Arduino

Arduino是一个微控制器平台,它安装在可以轻松插入绝大多数计算机的芯板上。这使得用户可以通过类似C的编程语言对板上的Atmega芯片进行编程,以实现各种需求。这种程序称为Sketch。一个典型的Arduino Sketch程序如下所示:

 

 948b32c521ca905c0fc81332547ebfe8f27c1c61

c94a35abf66a7474e07c2847eba879489aaabc37

 

以上代码的作用是控制一个和Arduino相连的舵机(一个可以通过软件精确控制转动角度的小型马达)持续进行前后转动,每次转动间隔1秒。

尽管其功能不像树莓派那样强大,但Arduino已经可以完成很多事情,这使得公众对一般的电子项目(尤其是微控制器)更加熟知。我们将在第14章对Arduino和树莓派如何相互完善进行更深入的介绍。

树莓派已经问世很多年了,早已不是什么新的词汇。它的创始人—Eben Upton、Rob Mullins、Jack Lang和Alan Mycroft—在2006年第一次提出了廉价PC机的想法。在英国剑桥大学的时候,他们就意识到:随着像Commodore 64、Amiga和Spectrum这种廉价的个人计算机逐步退出市场,取而代之的台式机和笔记本电脑的价格又十分高昂(若不是几千美元的话,也需要几百美元),年轻人无法随意地在这种家庭主要的电子产品上练习编程,而这一定会严重影响年轻人的编程能力。

与此同时,这些创始人意识到当前许多大学的计算机科学课程已经被缩减为教授“微软Word 101”和“如何创建网页”。4位创始人希望帮助新生提高编程知识,或许以后计算机科学和工程类的课程会变得更加有意义。

很明显,为实现以上目的,需要一台便宜的计算机。为此他们尝试过许多微控制器、各种芯片、面包板、PCB板,等等,直到2008年,这个想法才得以实现。随着移动设备的爆炸式增长,芯片变得更小,更便宜,性能也更加强大。他们使用这些芯片设计了一台支持多媒体的设备,而不是仅支持命令行编程,做到这一点他们认为很重要(见图1-1)。年轻人似乎更喜欢具备媒体功能的设备,因此也就更有可能用此设备去编程。

2008年,4位创始人,和Pete Lomas和David Braben一起,创立了树莓派基金会,3年后,该基金会成为第一个大规模生产树莓派的生产线。

树莓派(Raspberry Pi)这个名字同早期微机根据水果命名的规则一样,如早期的苹果(Apple)和橘子(Tangerine),而派(Pi)则来源于Python这个脚本语言。

一年内,基金会卖出了100多万台设备。基金会成员多次表示他们对这种爆炸式的热情感到十分震惊。最初的目的仅仅是推出一种廉价的、可编程的设备,使教育工作者和学生获益,显然现在这个目的已经达成了。不仅如此,现在的成果比最初设想的要大得多。很明显,他们并不是唯一希望拥有廉价可编程设备的一类人,世界各地的爱好者,连同element14、Premier Farnell和RS Electronics都迫切需要订单,以至于那些预订了树莓派的人不得不等待半年的时间,随后产量才满足需求量。许多消费者现在或之前都是程序员,现如今都渴望一览这台新的体积小性能强的计算机。(我第一次学习编程是在Commodore VIC-20上,这台设备仅有20KB的内存,当时用的还是BASIC语言……好吧!这都是很久以前的事了。)


 fe757dce06c4a7dcb5c22483f0fccd7fa1af43d8

(image但无论是之前还是现在,人们在各领域内都使用树莓派。就像美国树莓派基金会网页上写的那样:

我们已经收到来自教育机构数不尽的热情、支持和帮助。在看到来自机构大量的咨询时,我们十分激动,而当人们对设备的使用目的与我们的初衷相差甚远时,我们又感到有些羞愧。在发展中国家,由于部分地区的电力无法为传统的桌面PC设备提供所需要的功率和硬件设备,因此他们对树莓派很感兴趣。医院和博物馆已经联系我们,希望树莓派能够驱动显示设备。一些重度残疾孩子的父母也跟我们联系,谈论关于监控和可沟通应用的事情;与此同时,似乎还有数以百万的人正拿着电烙铁准备制作机器人呢。

幸运的是,供应及时满足了需求。现在买树莓派便无需等待了,而且每位用户也不再限购了。树莓派基金会正策划一个“买一赠一”的活动,即每卖出一台树莓派便向教育机构捐赠一台树莓派。最近发行的树莓派板载摄像头是一台小型芯片集成摄像头,可直接插入树莓派,用户可以用它拍摄静态照片,也可拍摄视频。基金会保证将会为这台小型计算机开发更多的外部设备。如今创始人正在积极说服其他公司复制他们的模式,接下来会发生的事情,让我们拭目以待吧。

相关文章
|
12天前
|
安全 Java 数据处理
Python网络编程基础(Socket编程)多线程/多进程服务器编程
【4月更文挑战第11天】在网络编程中,随着客户端数量的增加,服务器的处理能力成为了一个重要的考量因素。为了处理多个客户端的并发请求,我们通常需要采用多线程或多进程的方式。在本章中,我们将探讨多线程/多进程服务器编程的概念,并通过一个多线程服务器的示例来演示其实现。
|
12天前
|
程序员 开发者 Python
Python网络编程基础(Socket编程) 错误处理和异常处理的最佳实践
【4月更文挑战第11天】在网络编程中,错误处理和异常管理不仅是为了程序的健壮性,也是为了提供清晰的用户反馈以及优雅的故障恢复。在前面的章节中,我们讨论了如何使用`try-except`语句来处理网络错误。现在,我们将深入探讨错误处理和异常处理的最佳实践。
|
16天前
|
缓存 监控 Python
解密Python中的装饰器:优雅而强大的编程利器
Python中的装饰器是一种强大而又优雅的编程工具,它能够在不改变原有代码结构的情况下,为函数或类添加新的功能和行为。本文将深入解析Python装饰器的原理、用法和实际应用,帮助读者更好地理解和利用这一技术,提升代码的可维护性和可扩展性。
|
1月前
|
编译器 测试技术 C++
【Python 基础教程 01 全面介绍】 Python编程基础全攻略:一文掌握Python语法精髓,从C/C++ 角度学习Python的差异
【Python 基础教程 01 全面介绍】 Python编程基础全攻略:一文掌握Python语法精髓,从C/C++ 角度学习Python的差异
164 0
|
4天前
|
安全 数据处理 开发者
《Python 简易速速上手小册》第7章:高级 Python 编程(2024 最新版)
《Python 简易速速上手小册》第7章:高级 Python 编程(2024 最新版)
17 1
|
4天前
|
人工智能 数据挖掘 程序员
《Python 简易速速上手小册》第1章:Python 编程入门(2024 最新版)
《Python 简易速速上手小册》第1章:Python 编程入门(2024 最新版)
34 0
|
5天前
|
API Python
Python模块化编程:面试题深度解析
【4月更文挑战第14天】了解Python模块化编程对于构建大型项目至关重要,它涉及代码组织、复用和维护。本文深入探讨了模块、包、导入机制、命名空间和作用域等基础概念,并列举了面试中常见的模块导入混乱、不适当星号导入等问题,强调了避免循环依赖、合理使用`__init__.py`以及理解模块作用域的重要性。掌握这些知识将有助于在面试中自信应对模块化编程的相关挑战。
18 0
|
6天前
|
Python
Python金融应用编程:衍生品定价和套期保值的随机过程
Python金融应用编程:衍生品定价和套期保值的随机过程
|
6天前
|
Python
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
44 0
|
7天前
|
机器学习/深度学习 算法 定位技术
python中使用马尔可夫决策过程(MDP)动态编程来解决最短路径强化学习问题
python中使用马尔可夫决策过程(MDP)动态编程来解决最短路径强化学习问题
22 1