Python 物联网入门指南(一)(1)

简介: Python 物联网入门指南(一)


原文:zh.annas-archive.org/md5/4fe4273add75ed738e70f3d05e428b06

译者:飞龙

协议:CC BY-NC-SA 4.0

前言

这个学习路径将带您进入机器人世界,并教会您如何利用树莓派和 Python 实现一切。

它教会您如何利用树莓派 3 和树莓派零的力量构建卓越的自动化系统,可以改变您的业务。您将学会创建文本分类器,预测单词的情感,并使用 Tkinter 库开发应用程序。当您使用 Python 构建人脸检测和识别系统以及家庭自动化系统时,事情将变得更有趣,不同的设备将使用树莓派进行控制。通过这些多样化的机器人项目,您将掌握机器人学的基础知识和功能,并了解机器人与物联网环境的整合。

通过学习路径的最后,您将涵盖从配置机器人控制器到使用 Python 创建自驾动机器车的一切。

这个学习路径包括以下 Packt 产品的内容:

  • Raspberry Pi 3 Cookbook for Python Programmers - Third Edition by Tim Cox, Dr. Steven Lawrence Fernandes
  • Python Programming with Raspberry Pi by Sai Yamanoor, Srihari Yamanoor
  • Python Robotics Projects by Prof. Diwakar Vaish

本书适合对象

这本书专为想要通过创建可以改善人们生活的机器人来提升技能的 Python 开发人员设计。熟悉 Python 和电子学将有助于理解本学习路径中的概念。

充分利用本书

要开始使用本书,读者应该了解 Python 编程的基础知识。读者对机器学习、计算机视觉和神经网络有基本的了解将是有益的。还建议使用以下硬件:

  • 带有任何操作系统的笔记本电脑
  • 树莓派
  • 一个 8GB 或 16GB 的 MicroSD 卡
  • USB 键盘、鼠标和 WiFi 卡
  • 带有 HDMI 输入的显示器
  • 电源供应,最低 500 毫安
  • 显示器电缆和其他配件

读者需要下载并安装 RASPBIAN STRETCH WITH DESKTOP;这将为我们提供树莓派的 GUI 界面

下载示例代码文件

您可以从www.packt.com的帐户中下载本书的示例代码文件。如果您在其他地方购买了本书,可以访问www.packt.com/support并注册,以便直接通过电子邮件接收文件。

您可以按照以下步骤下载代码文件:

  1. www.packt.com登录或注册。
  2. 选择“支持”选项卡。
  3. 单击“代码下载和勘误”。
  4. 在搜索框中输入书名,然后按照屏幕上的说明操作。

文件下载完成后,请确保使用最新版本的解压缩或提取文件夹:

  • WinRAR/7-Zip 适用于 Windows
  • Zipeg/iZip/UnRarX 适用于 Mac
  • 7-Zip/PeaZip 适用于 Linux

该书的代码包也托管在 GitHub 上,网址为github.com/PacktPublishing/GettingStartedwithPythonfortheInternetofThings。如果代码有更新,将在现有的 GitHub 存储库上进行更新。

我们还有其他代码包,来自我们丰富的图书和视频目录,可在github.com/PacktPublishing/上找到。去看看吧!

使用的约定

本书中使用了许多文本约定。

CodeInText:表示文本中的代码词、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄。以下是一个例子:“input()方法用于从用户那里获取输入。”

代码块设置如下:

try:         
    input_value = int(value)      
except ValueError as error:         
    print("The value is invalid %s" % error)

任何命令行输入或输出都以以下形式编写:

sudo pip3 install schedule

粗体:表示一个新术语,一个重要词或屏幕上看到的词。例如,菜单或对话框中的单词会在文本中显示为这样。这是一个例子:“如果你需要不同的东西,点击页眉中的下载链接以获取所有可能的下载:”

警告或重要说明会显示为这样。提示和技巧会显示为这样。

第一章:开始使用树莓派 3 电脑

在本章中,我们将涵盖以下主题:

  • 连接外围设备到树莓派
  • 使用 NOOBS 设置您的树莓派 SD 卡
  • 通过 LAN 连接器将您的树莓派连接到互联网
  • 在树莓派上使用内置的 Wi-Fi 和蓝牙
  • 手动配置您的网络
  • 直接连接到笔记本电脑或计算机
  • 通过 USB 无线网络适配器将您的树莓派连接到互联网
  • 通过代理服务器连接到互联网
  • 使用 VNC 通过网络远程连接到树莓派
  • 使用 SSH(和 X11 转发)通过网络远程连接到树莓派
  • 通过 SMB 共享树莓派的主文件夹
  • 保持树莓派最新

介绍

本章介绍了树莓派 3 和首次设置的过程。我们将树莓派连接到合适的显示器,电源和外围设备。我们将在 SD 卡上安装操作系统。这是系统启动所必需的。接下来,我们将确保我们可以通过本地网络成功连接到互联网。

最后,我们将利用网络提供远程连接和/或控制树莓派,以及确保系统保持最新状态的方法。

完成本章中的步骤后,您的树莓派将准备好供您进行编程使用。如果您已经设置并运行了您的树莓派,请确保您浏览以下部分,因为其中有许多有用的提示。

树莓派介绍

树莓派是由树莓派基金会创建的单板计算机,该基金会是一个旨在向英国儿童重新介绍低级计算机技能的慈善机构。其目标是重新点燃 20 世纪 80 年代的微型计算机革命,这产生了一整代熟练的程序员。

即使在 2012 年 2 月底发布计算机之前,树莓派已经在全球范围内获得了巨大的追随者,并且在撰写本书时已经销售了超过 1000 万台。以下图片显示了几种不同的树莓派型号:

树莓派 3B 型号,A+型号和 Pi Zero

名字是怎么回事?

树莓派的名称是希望创建一个以水果命名的替代计算机(如苹果,黑莓和杏子),并向最初的概念致敬,即可以使用 Python 编程的简单计算机(缩写为 Pi)。

在这本书中,我们将拿起这台小电脑,了解如何设置它,然后逐章探索它的功能,使用 Python 编程语言。

为什么选择 Python?

经常有人问:“为什么选择 Python 作为树莓派上的编程语言?”事实上,Python 只是可以在树莓派上使用的许多编程语言之一。

有许多编程语言可供选择,从高级图形块编程,如 Scratch,到传统的 C,再到 BASIC,甚至原始的机器码汇编语言。一个优秀的程序员通常必须精通多种编程语言,以便能够充分发挥每种语言的优势和劣势,以最好地满足其所需应用的需求。了解不同语言(和编程技术)如何克服将您想要的转换为您得到的的挑战是有用的,因为这也是您在编程时所要做的。

Python 被选为学习编程的良好起点,因为它提供了丰富的编码工具,同时又允许编写简单的程序而无需烦恼。这使得初学者可以逐渐了解现代编程语言的概念和方法,而无需从一开始就了解所有内容。它非常模块化,有许多额外的库可以导入以快速扩展功能。随着时间的推移,您会发现这会鼓励您做同样的事情,并且您会想要创建自己的模块,可以将其插入到自己的程序中,从而迈出结构化编程的第一步。

Python 解决了格式和表现方面的问题。缩进会增加可读性,在 Python 中缩进非常重要。它们定义了代码块如何组合在一起。一般来说,Python 运行速度较慢;因为它是解释性的,所以在运行程序时创建模块需要时间。如果需要对时间关键事件做出响应,这可能会成为一个问题。然而,您可以预编译 Python 或使用其他语言编写的模块来克服这个问题。

它隐藏了细节;这既是优点也是缺点。对于初学者来说很好,但当您不得不猜测数据类型等方面时可能会有困难。然而,这反过来又迫使您考虑所有可能性,这可能是一件好事。

Python 2 和 Python 3

对于初学者来说,一个巨大的困惑来源是树莓派上有两个版本的 Python(版本 2.7版本 3.6),它们彼此不兼容,因此为 Python 2.7 编写的代码可能无法在 Python 3.6 上运行(反之亦然)。

Python 软件基金会不断努力改进并推动语言向前发展,这有时意味着他们必须牺牲向后兼容性来拥抱新的改进(并且重要的是,去除多余和过时的做法)。

支持 Python 2 和 Python 3

有许多工具可以帮助您从 Python 2 过渡到 Python 3,包括转换器,如2to3,它将解析并更新您的代码以使用 Python 3 的方法。这个过程并不完美,在某些情况下,您需要手动重写部分代码并进行全面测试。您可以编写同时支持两者的代码和库。import __future__语句允许您导入 Python 3 的友好方法,并在 Python 2.7 中运行它们。

您应该使用哪个版本的 Python?

基本上,选择使用哪个版本将取决于您的意图。例如,您可能需要 Python 2.7 库,这些库尚未适用于 Python 3.6。Python 3 自 2008 年就已经推出,因此这些库往往是较老或较大的库,尚未被翻译。在许多情况下,旧库有新的替代方案;然而,它们的支持程度可能有所不同。

在这本书中,我们使用的是 Python 3.6,它也兼容 Python 3.5 和 3.3。

树莓派家族 - 树莓派的简史

自发布以来,树莓派已经推出了各种版本,对原始的树莓派 B 型进行了小型和大型的更新和改进。虽然一开始可能会令人困惑,但树莓派有三种基本类型可用(以及一个特殊型号)。

主要的旗舰型号被称为B 型。它具有所有的连接和功能,以及最大的 RAM 和最新的处理器。多年来,已经推出了几个版本,最值得注意的是 B 型(拥有 256MB 和 512MB RAM),然后是 B+型(将 26 针 GPIO 增加到 40 针,改用 microSD 卡槽,并将 USB 端口从两个增加到四个)。这些原始型号都使用了 Broadcom BCM2835 系统芯片SOC),包括单核 700MHz ARM11 和 VideoCore IV 图形处理单元GPU)。

2015 年发布的树莓派 2 型 B(也称为 2B)引入了新的 Broadcom BCM2836 SOC,提供了四核 32 位 ARM Cortex A7 1.2 GHz 处理器和 GPU,配备 1GB 的 RAM。改进的 SOC 增加了对 Ubuntu 和 Windows 10 IoT 的支持。最后,我们有了最新的树莓派 3 型 B,使用了另一个新的 Broadcom BCM2837 SOC,提供了四核 64 位 ARM Cortex-A53 和 GPU,以及板载 Wi-Fi 和蓝牙。

A 型一直被定位为精简版本。虽然具有与 B 型相同的 SOC,但连接有限,只有一个 USB 端口,没有有线网络(LAN)。A+型再次增加了更多的 GPIO 引脚和一个 microSD 卡槽。然而,RAM 后来升级为 512MB,再次只有一个 USB 端口/没有 LAN。Model A 上的 Broadcom BCM2835 SOC 到目前为止还没有更新(因此仍然是单核 ARM11);但是,可能会推出 3A 型(很可能使用 BCM2837)。

Pi Zero是树莓派的超紧凑版本,适用于成本和空间有限的嵌入式应用。它具有与其他型号相同的 40 针 GPIO 和 microSD 卡槽,但缺少板载显示(CSI 和 DSI)连接。它仍然具有 HDMI(通过迷你 HDMI)和单个 micro USB on-the-goOTG)连接。尽管在 Pi Zero 的第一个版本中没有,但最新型号还包括用于板载摄像头的 CSI 连接。

Pi Zero 在 2015 年被著名地发布,并随树莓派基金会的杂志The MagPi一起赠送,使该杂志成为第一本在封面上赠送计算机的杂志!这让我感到非常自豪,因为(正如你可能在本书开头的我的传记中读到的那样)我是该杂志的创始人之一。

特殊型号被称为计算模块。它采用 200 针 SODIMM 卡的形式。它适用于工业用途或商业产品中,所有外部接口将由主机/主板提供,模块将插入其中。示例产品包括 Slice Media Player(fiveninjas.com)和 OTTO 相机。当前模块使用 BCM2835,尽管有一个更新的计算模块(CM3)。

树莓派维基百科页面提供了所有不同变体及其规格的完整列表:en.wikipedia.org/wiki/Raspberry_Pi#Specifications

此外,树莓派产品页面提供了有关可用型号和配件规格的详细信息:www.raspberrypi.org/products/

选择哪种树莓派?

本书的所有部分都与当前所有版本的树莓派兼容,但建议首选 3B 型作为最佳型号。这提供了最佳性能(特别是对于 OpenCV 示例中使用的 GPU 示例,如第五章中的检测图像中的边缘和轮廓),大量连接和内置 Wi-Fi,非常方便。

Pi Zero 被推荐用于需要低功耗或减少重量/尺寸但不需要 Model 3B 全面处理能力的项目。然而,由于其超低成本,Pi Zero 非常适合在开发完成项目后部署。

连接到树莓派

有许多方法可以连接树莓派并使用各种接口查看和控制内容。对于典型的用途,大多数用户将需要电源、显示器(带音频)和输入方法,如键盘和鼠标。要访问互联网,请参阅通过 LAN 连接器将树莓派连接到互联网在树莓派上使用内置 Wi-Fi 和蓝牙

准备就绪

在使用树莓派之前,您需要一个安装了操作系统或者在其中安装了新开箱系统NOOBS)的 SD 卡,如使用 NOOBS 设置树莓派 SD 卡中所讨论的那样。

以下部分将详细介绍您可以连接到树莓派的设备类型,以及重要的是如何在哪里插入它们。

正如您将在后面发现的那样,一旦您设置好了树莓派,您可能会决定通过网络连接远程连接并使用它,在这种情况下,您只需要电源和网络连接。请参考以下部分:通过 VNC 远程连接树莓派通过 SSH(和 X11 转发)远程连接树莓派

操作步骤如下…

树莓派的布局如下图所示:

树莓派连接布局(3 B 型,A+型和 Zero 型)

有关上图的更多信息如下:

  • 显示:树莓派支持以下三种主要的显示连接;如果 HDMI 和复合视频都连接了,它将默认为仅 HDMI:
  • HDMI:为了获得最佳效果,请使用具有 HDMI 连接的电视或显示器,从而实现最佳分辨率显示(1080p)和数字音频输出。如果您的显示器具有 DVI 连接,您可以使用适配器通过 HDMI 连接。有几种类型的 DVI 连接;一些支持模拟(DVI-A),一些支持数字(DVI-D),一些都支持(DVI-I)。树莓派只能通过 HDMI 提供数字信号,因此建议使用 HDMI 到 DVI-D 适配器(在下图中带有勾号)。这缺少了四个额外的模拟引脚(在下图中带有叉号),因此可以适配到 DVI-D 和 DVI-I 类型插座中:

HDMI 到 DVI 连接(DVI-D 适配器)

如果您希望使用旧的显示器(带有 VGA 连接),则需要额外的 HDMI 到 VGA 转换器。树莓派还支持一个基本的 VGA 适配器(VGA Gert666 Adaptor),它直接驱动 GPIO 引脚。然而,这会使用 40 针引脚排头的所有引脚(旧的 26 针型号不支持 VGA 输出):

HDMI 到 VGA 适配器

  • 模拟:另一种显示方法是使用模拟复合视频连接(通过音频插孔);这也可以连接到 S-Video 或欧洲 SCART 适配器。然而,模拟视频输出的最大分辨率为 640 x 480 像素,因此不太适合一般使用:

3.5 毫米音频模拟连接

在使用 RCA 连接或 DVI 输入时,音频必须通过模拟音频连接单独提供。为了简化制造过程(避免穿孔元件),Pi Zero 没有模拟音频或模拟视频的 RCA 插孔(尽管可以通过一些修改添加):

  • 直接显示 DSI:由树莓派基金会生产的触摸显示器将直接连接到 DSI 插座。这可以与 HDMI 或模拟视频输出同时连接和使用,以创建双显示设置。
  • 立体声模拟音频(除 Pi Zero 外):这为耳机或扬声器提供了模拟音频输出。可以通过树莓派桌面上的配置工具或通过命令行使用amixeralsamixer在模拟(立体插孔)和数字(HDMI)之间进行切换。

要了解有关终端中特定命令的更多信息,您可以在终端读取手册之前使用以下man命令(大多数命令应该都有手册):

man amixer

有些命令还支持--help选项,以获得更简洁的帮助,如下所示:

amixer --help

  • 网络(不包括 A 型和 Pi Zero):网络连接将在本章后面的通过 LAN 连接器将树莓派连接到互联网配方中进行讨论。如果使用 A 型树莓派,可以添加 USB 网络适配器来添加有线或无线网络连接(参考通过 USB Wi-Fi dongle 将树莓派连接到互联网配方)。
  • 内置 Wi-Fi 和蓝牙(仅限 Model 3 B):Model 3 B 具有内置的 802.11n Wi-Fi 和蓝牙 4.1;参见在树莓派上使用内置的 Wi-Fi 和蓝牙配方。
  • USB(1x Model A/Zero,2x Model 1 B,4x Model 2 B 和 3 B):使用键盘和鼠标:
  • 树莓派应该可以与大多数 USB 键盘和鼠标兼容。您也可以使用使用 RF dongles 的无线鼠标和键盘。但是,对于使用蓝牙 dongles 的设备需要额外的配置。
  • 如果您的电源供应不足或设备正在吸取过多电流,您可能会发现键盘按键似乎卡住了,并且在严重情况下,SD 卡可能会损坏。

早期 Model B 修订版 1 板的 USB 电源可能存在问题,这些板在 2012 年 10 月之前就已经上市。它们在 USB 输出上包含了额外的Polyfuses,如果超过 140 mA 的电流被吸取,就会跳闸。Polyfuses 可能需要数小时甚至数天才能完全恢复,因此即使电源改善了,也可能导致不可预测的行为。

您可以通过缺少后期型号上存在的四个安装孔来识别修订版 1 板。

  • Debian Linux(Raspbian 的基础)支持许多常见的 USB 设备,如闪存驱动器、硬盘驱动器(可能需要外部电源)、相机、打印机、蓝牙和 Wi-Fi 适配器。一些设备将被自动检测,而其他设备将需要安装驱动程序。
  • Micro USB 电源:树莓派需要一个能够舒适地提供至少 1,000 mA(特别是对于更耗电的 2 型和 3 型,建议提供 1,500 mA 或更多)的 5V 电源,带有一个 micro USB 连接。可以使用便携式电池组来为设备供电,比如适用于平板电脑的电池组。再次确保它们可以提供 5V 的电压,至少 1,000 mA。

在连接电源之前,您应该尽量将所有其他连接连接到树莓派上。但是,USB 设备、音频和网络可以在运行时连接和移除,而不会出现问题。

还有更多…

除了标准的主要连接之外,树莓派还具有许多其他连接。

次要硬件连接

以下每个连接都提供了树莓派的其他接口:

  • 20 x 2 GPIO 引脚排针(Model A+,B+,2 B,3 B 和 Pi Zero):这是树莓派的主要 40 针 GPIO 引脚排针,用于直接与硬件组件进行接口。本书中的章节也适用于具有 13 x 2 GPIO 引脚排针的较旧型号的树莓派。
  • P5 8 x 2 GPIO 引脚排针(仅限 Model 1 B 修订版 2.0):我们在本书中不使用这个接口。
  • 复位连接:这个连接出现在较新的型号上(没有插脚)。当引脚 1(复位)和引脚 2(GND)连接在一起时,会触发复位。我们在第七章的A controlled shutdown button概念中使用了这个接口,Using Python to Drive Hardware
  • GPU/LAN JTAG联合测试行动组JTAG)是用于配置和测试处理器的编程和调试接口。这些接口出现在较新的型号上作为表面垫。使用这个接口需要专门的 JTAG 设备。我们在本书中不使用这个接口。
  • 直接相机 CSI:这个连接支持树莓派相机模块。请注意,Pi Zero 的 CSI 连接器比其他型号要小,因此需要不同的排线连接器。
  • 直接显示 DSI:此连接支持直接连接的显示器,例如 7 英寸 800 x 600 电容触摸屏。

使用 NOOBS 设置您的 Raspberry Pi SD 卡

在启动之前,树莓派需要将操作系统加载到 SD 卡上。设置 SD 卡的最简单方法是使用NOOBS;您可能会发现可以购买已经加载了 NOOBS 的 SD 卡。

NOOBS 提供了一个初始启动菜单,提供了安装几种可用操作系统到您的 SD 卡的选项。

准备工作

由于 NOOBS 创建了一个RECOVERY分区来保存原始安装映像,建议使用 8GB 或更大的 SD 卡。您还需要一个 SD 卡读卡器(经验表明,一些内置读卡器可能会导致问题,因此建议使用外部 USB 类型读卡器)。

如果您使用的是以前使用过的 SD 卡,可能需要重新格式化以删除任何先前的分区和数据。NOOBS 期望 SD 卡由单个 FAT32 分区组成。

如果使用 Windows 或 macOS X,您可以使用 SD 卡协会的格式化程序,如下面的屏幕截图所示(可在www.sdcard.org/downloads/formatter_4/找到):

使用 SD 格式化程序清除 SD 卡上的任何分区

从选项设置对话框中,设置 FORMAT SIZE ADJUSTMENT。这将删除以前创建的所有 SD 卡分区。

如果使用 Linux,您可以使用gparted清除任何先前的分区并将其重新格式化为 FAT32 分区。

完整的 NOOBS 软件包(通常略大于 1GB)包含了 Raspbian,最受欢迎的树莓派操作系统映像。还提供了一个精简版的 NOOBS,它没有预装的操作系统(尽管需要 Raspberry Pi 上的较小的初始下载 20MB 和网络连接来直接下载您打算使用的操作系统)。

NOOBS 可在www.raspberrypi.org/downloads上获得,文档可在github.com/raspberrypi/noobs上获得。

如何做…

通过执行以下步骤,我们将准备好 SD 卡来运行 NOOBS。然后,这将允许我们选择并安装我们想要使用的操作系统:

  1. 准备好您的 SD 卡。
  2. 在新格式化或新的 SD 卡上,复制NOOBS_vX.zip文件的内容。复制完成后,您应该得到类似于 SD 卡以下屏幕截图的东西:

从 SD 卡中提取的 NOOBS 文件这些文件可能会因不同版本的 NOOBS 而略有不同,并且在您的计算机上显示的图标可能会有所不同。

  1. 您现在可以将卡插入树莓派,连接键盘和显示器,然后打开电源。有关所需的详细信息和操作方法,请参阅连接到树莓派配方。

默认情况下,NOOBS 将通过 HDMI 连接显示。如果您有其他类型的屏幕(或者什么也看不到),您需要通过按 1、2、3 或 4 手动选择输出类型,具体操作如下:

  • 键 1 代表标准 HDMI 模式(默认模式)
  • 键 2 代表安全 HDMI 模式(如果未检测到输出,则为备用 HDMI 设置)
  • 键 3 代表复合 PAL(通过 RCA 模拟视频连接进行连接)
  • 键 4 代表复合 NTSC(同样,适用于通过 RCA 连接器连接)

此显示设置也将用于安装的操作系统。

过了一会儿,您将看到列出可用发行版的 NOOBS 选择屏幕(离线版本仅包括 Raspbian)。 有许多其他可用的发行版,但只有选定的发行版可以直接通过 NOOBS 系统获得。 点击 Raspbian,因为这是本书中使用的操作系统。

Enter或单击“安装操作系统”,并确认您希望覆盖卡上的所有数据

卡。 这将覆盖以前使用 NOOBS 安装的任何发行版,但不会删除 NOOBS 系统; 您可以在任何时候按下Shift键返回到它。

根据其速度,写入数据到卡上大约需要 20 到 40 分钟。 当完成并出现“图像应用成功”消息时,单击“确定”,树莓派将开始引导到树莓派桌面

它是如何工作的…

以这种方式将映像文件写入 SD 卡的目的是确保 SD 卡格式化为预期的文件系统分区和文件,以正确引导操作系统。

当树莓派启动时,它会加载存储在 GPU 内存中的一些特殊代码(通常被树莓派基金会称为二进制块)。 二进制块提供了读取 SD 卡上的BOOT分区所需的指令(在 NOOBS 安装的情况下,将从RECOVERY分区加载 NOOBS)。 如果此时按下Shift,NOOBS 将加载恢复和安装菜单。 否则,NOOBS 将根据SETTINGS分区中存储的首选项开始加载操作系统。

在加载操作系统时,它将通过BOOT分区引导,使用config.txt中定义的设置和cmdline.txt中的选项最终加载到root分区上的桌面。 请参阅以下图表:

NOOBS 在 SD 卡上创建了几个分区,以允许安装多个

操作系统,并提供恢复

NOOBS 允许用户在同一张卡上选择性地安装多个操作系统,并提供引导菜单以在它们之间进行选择(在超时期间设置默认值的选项)。

如果以后添加、删除或重新安装操作系统,请首先确保复制任何文件,包括您希望保留的系统设置,因为 NOOBS 可能会覆盖 SD 卡上的所有内容。

还有更多…

当您首次直接启动树莓派时,将加载桌面。 您可以使用 Raspberry Pi Configuration 菜单(在桌面上的首选项菜单下或通过sudo raspi-config命令)配置系统设置。 使用此菜单,您可以更改 SD 卡或设置一般首选项:

更改默认用户密码

确保在登录后更改pi用户帐户的默认密码,因为默认密码是众所周知的。 如果您连接到公共网络,这一点尤为重要。 您可以使用passwd命令来执行此操作,如下面的屏幕截图所示:

为 Pi 用户设置新密码

这样可以更加放心,因为如果您以后连接到另一个网络,只有您才能访问您的文件并控制您的树莓派。

确保安全关闭

为了避免任何数据损坏,您必须确保通过发出shutdown命令正确关闭树莓派,如下所示:

sudo shutdown -h now  

或者,使用这个:

sudo halt  

在从树莓派断电之前,必须等待此命令完成(在 SD 卡访问指示灯停止闪烁后等待至少 10 秒)。

您还可以使用reboot命令重新启动系统,如下所示:

sudo reboot  

手动准备 SD 卡

使用 NOOBS 的替代方法是手动将操作系统映像写入 SD 卡。 尽管最初这是安装操作系统的唯一方法,但一些用户仍然更喜欢它。 它允许在将 SD 卡用于树莓派之前准备 SD 卡。 它还可以更容易地访问启动和配置文件,并且为用户留下更多的空间(与 NOOBS 不同,不包括RECOVERY分区)。

默认的 Raspbian 映像实际上由两个分区BOOTSYSTEM组成,可以放入 2GB 的 SD 卡(建议使用 4GB 或更多)。

您需要一台运行 Windows/Mac OS X/Linux 的计算机(尽管可以使用另一台树莓派来写入您的卡;请准备等待很长时间)。

下载您希望使用的操作系统的最新版本。 本书假定您正在使用www.raspberrypi.org/downloads上提供的最新版本的 Raspbian。

根据您计划用于写入 SD 卡的计算机类型执行以下步骤(您需要的.img文件有时会被压缩,因此在开始之前,您需要提取文件)。

以下步骤适用于 Windows:

  1. 确保您已经下载了 Raspbian 映像,并将其提取到一个方便的文件夹以获取.img文件。
  2. 获取www.sourceforge.net/projects/win32diskimager上提供的Win32DiskImager.exe文件。
  3. 从下载位置运行Win32DiskImager.exe
  4. 单击文件夹图标,导航到.img文件的位置,然后单击保存。
  5. 如果尚未这样做,请将 SD 卡插入卡读卡器并将其插入计算机。
  6. 从小下拉框中选择与您的 SD 卡对应的设备驱动器号。 仔细检查这是否是正确的设备(因为在写入映像时,程序将覆盖设备上的任何内容)。

在选择源映像文件之前,可能不会列出驱动器号。

  1. 最后,单击“写入”按钮,等待程序将映像写入 SD 卡,如下图所示:

手动将操作系统映像写入 SD 卡,使用 Disk Imager

  1. 完成后,您可以退出程序。 您的 SD 卡已准备就绪。

以下步骤适用于大多数常见的 Linux 发行版,如 Ubuntu 和 Debian:

  1. 使用您喜欢的网络浏览器下载 Raspbian 映像并将其保存在合适的位置。
  2. 从文件管理器中提取文件或在终端中找到文件夹并使用以下命令解压.img文件:
unzip filename.zip  
  1. 如果尚未这样做,请将 SD 卡插入卡读卡器并将其插入计算机。
  2. 使用df -h命令并识别 SD 卡的sdX标识符。 每个分区将显示为 sdX1,sdX2 等,其中 X 将是abcd等,用于设备 ID。
  3. 确保使用以下命令卸载 SD 卡上的所有分区

对于每个分区,使用umount /dev/sdXn命令,其中sdXn是要卸载的分区。

  1. 使用以下命令将映像文件写入 SD 卡:
sudo dd if=filename.img of=/dev/sdX bs=4M  
  1. 写入 SD 卡的过程需要一些时间,在完成时返回终端提示符。
  2. 使用以下命令卸载 SD 卡,然后从计算机中取出它:
umount /dev/sdX1  

以下步骤适用于大多数 OS X 版本:

  1. 使用您喜欢的网络浏览器下载 Raspbian 映像并将其保存在合适的位置。
  2. 从文件管理器中提取文件或在终端中找到文件夹并解压.img文件,使用以下命令:
unzip filename.zip  
  1. 如果尚未这样做,请将 SD 卡插入卡读卡器并将其插入计算机。
  2. 使用diskutil list命令并为 SD 卡标识**disk#**标识符。每个分区将显示为 disk#s1,disk#s2 等,其中#将是1234等,用于设备 ID。

如果列出了 rdisk#,则使用它可以更快地写入(这使用原始路径并跳过数据缓冲)。

  1. 确保使用unmountdisk /dev/diskX命令卸载 SD 卡,其中diskX是要卸载的设备。
  2. 使用以下命令将映像文件写入 SD 卡:
sudo dd if=filename.img of=/dev/diskX bs=1M  
  1. 该过程将花费一些时间来写入 SD 卡,并在完成时返回到终端提示符。
  2. 在从计算机中移除 SD 卡之前卸载 SD 卡,使用

以下命令:

unmountdisk /dev/diskX  

请参阅以下图表:

手动安装的 OS 映像的引导过程

扩展系统以适应您的 SD 卡

手动编写的映像将是固定大小的(通常是为了适应最小尺寸的 SD 卡)。要充分利用 SD 卡,您需要扩展系统分区以填满 SD 卡的其余部分。这可以通过 Raspberry Pi 配置工具实现。

选择“扩展文件系统”,如下截图所示:

Raspberry Pi 配置工具


Python 物联网入门指南(一)(2)https://developer.aliyun.com/article/1506423

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
9天前
|
数据采集 存储 XML
Python爬虫定义入门知识
Python爬虫是用于自动化抓取互联网数据的程序。其基本概念包括爬虫、请求、响应和解析。常用库有Requests、BeautifulSoup、Scrapy和Selenium。工作流程包括发送请求、接收响应、解析数据和存储数据。注意事项包括遵守Robots协议、避免过度请求、处理异常和确保数据合法性。Python爬虫强大而灵活,但使用时需遵守法律法规。
|
10天前
|
Python
深入理解Python装饰器:从入门到实践####
本文旨在通过简明扼要的方式,为读者揭开Python装饰器的神秘面纱,从基本概念、工作原理到实际应用场景进行全面解析。不同于常规的摘要仅概述内容概要,本文将直接以一段精炼代码示例开篇,展示装饰器如何优雅地增强函数功能,激发读者探索兴趣,随后深入探讨其背后的机制与高级用法。 ####
39 11
|
6天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
6天前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
|
6天前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!
|
12天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
48 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
6天前
|
设计模式 缓存 开发框架
Python中的装饰器:从入门到实践####
本文深入探讨了Python中装饰器的工作原理与应用,通过具体案例展示了如何利用装饰器增强函数功能、提高代码复用性和可读性。读者将学习到装饰器的基本概念、实现方法及其在实际项目开发中的实用技巧。 ####
18 3
|
9天前
|
机器学习/深度学习 数据采集 数据可视化
Python在数据科学中的应用:从入门到实践
本文旨在为读者提供一个Python在数据科学领域应用的全面概览。我们将从Python的基础语法开始,逐步深入到数据处理、分析和可视化的高级技术。文章不仅涵盖了Python中常用的数据科学库,如NumPy、Pandas和Matplotlib,还探讨了机器学习库Scikit-learn的使用。通过实际案例分析,本文将展示如何利用Python进行数据清洗、特征工程、模型训练和结果评估。此外,我们还将探讨Python在大数据处理中的应用,以及如何通过集成学习和深度学习技术来提升数据分析的准确性和效率。
|
8天前
|
机器学习/深度学习 数据挖掘 开发者
Python编程入门:理解基础语法与编写第一个程序
【10月更文挑战第37天】本文旨在为初学者提供Python编程的初步了解,通过简明的语言和直观的例子,引导读者掌握Python的基础语法,并完成一个简单的程序。我们将从变量、数据类型到控制结构,逐步展开讲解,确保即使是编程新手也能轻松跟上。文章末尾附有完整代码示例,供读者参考和实践。
|
8天前
|
人工智能 数据挖掘 程序员
Python编程入门:从零到英雄
【10月更文挑战第37天】本文将引导你走进Python编程的世界,无论你是初学者还是有一定基础的开发者,都能从中受益。我们将从最基础的语法开始讲解,逐步深入到更复杂的主题,如数据结构、面向对象编程和网络编程等。通过本文的学习,你将能够编写出自己的Python程序,实现各种功能。让我们一起踏上Python编程之旅吧!