首页 > 编程语言 >机器人编程教程3探索Raspberry Pi

机器人编程教程3探索Raspberry Pi

时间:2023-08-13 14:11:56浏览次数:58  
标签:Pi 引脚 编程 端口 Raspberry OS 连接

3探索Raspberry Pi

本章将涉及以下主题:

  • 探索 Raspberry Pi 的功能
  • 选择连接
  • 什么是 Raspberry Pi OS?
  • 为Raspberry Pi OS 准备 SD 卡

3.1 探索Raspberry Pi的功能

控制器将决定机器人的输入和输出类型、电子设备的功率要求、可使用的传感器类型以及运行的代码。更改控制器可能意味着重写代码、重新设计控制器的安装位置以及更改电源要求。

Raspberry Pi 是一系列专为教育领域设计的小型计算机。它既是一台完整的计算机,又有用于连接定制硬件的输入/输出引脚,因此深受创客(指喜欢制作机器人和小玩意儿等业余爱好的人)的喜爱。与标准计算设备相比,微控制器的成本相对低廉,体积也较小,这些都有助于实现这一目标。所有型号的 Raspberry Pi 都具有连接摄像头、显示器和键盘以及网络的功能。

3.1.1 速度和功能

Raspberry Pi 的功能强大,足以处理一些视觉处理任务,如面部识别和跟踪物体,后期型号的 Raspberry Pi 可以更快地完成这些任务。语音识别任务也是如此。因此,推荐使用速度更快的 4B、3B+ 和 3A+ 型号。Pico、Zero 和 Zero W 型号要慢得多,虽然系统仍能运行,但速度可能会令人沮丧。

Raspberry Pi 是一种单板计算机(SBC Single-Board Computer),其功能强大到足以运行完整的计算机操作系统,特别是 Linux 版本。

一些可用作控制器的替代 SBC 运行 Linux,如 BeagleBone、CHIP、OnionIoT 和 Gumstix Linux 计算机,但这些计算机要么比 Raspberry Pi 昂贵,要么功能较弱。只有部分产品集成了摄像头。虽然 BeagleBone 的模拟 IO 连接性更出色,但 Raspberry Pi 3A+ 更像是一个全能型产品,有许多扩展选项。

3.1.2 连接和网络

Raspberry Pi 3A+ 还配有 USB 端口和 HDMI 端口。我们不打算在本书中使用它们,不过如果出现问题,与机器人失去联系,它们在调试时还是很方便的。有鉴于此,我们建议配备额外的屏幕和键盘。

Raspberry Pi 4、3 和 Zero W 系列都板载了 Wi-Fi 和蓝牙。在本书中,我们将一直使用 Wi-Fi 与机器人连接,因此推荐使用具有 Wi-Fi 功能的机型。Wi-Fi 可用于对机器人进行编程、驱动和启动代码运行。

Raspberry Pi 有 I/O 引脚,可以连接到传感器。在 Raspberry Pi 3A+ 中,通用输入/输出 (GPIO General Purpose Input/Output) 连接已经焊接到位,可以随时使用。Raspberry Pi Zero 和 Zero W 型号没有连接针座。第一代 Raspberry Pi 电路板的 I/O 连接器也不尽相同。这些原因使得 3 和 4 系列 Raspberry Pi 成为最佳选择。

选择 Raspberry Pi 3A+ 或Raspberry Pi 4B

以下功能列表可以满足我们的所有需求:

  • 输入/输出
  • 摄像头接口
  • 可进行视觉和语音处理
  • 板载 Wi-Fi 和蓝牙
  • 运行 Python 代码
  • 预焊接接头,可连接机器人设备
  • 体积小,价格相对便宜

除此之外,3A+ 还配备了基于 ARM 的四核 CPU,主频为 1.4 GHz,足以满足我们的使用要求。以后的 Raspberry Pi 版本可能会以更快的处理速度和更多的功能取代该型号。

3.2 选择连接

在制作机器人时,我们将使用 Raspberry Pi 提供的部分连接。让我们来看看这些连接是什么,以及我们将如何使用它们。。


高亮区域表示使用中的连接:

首先,我们将使用电源接口,标记为电源输入,位于图的左下方。它通过微型USB(4B为tpye-c)接口插入,与许多手机上的接口类似。我们可以将 USB 电池组插入这个端口,只要它们能提供适当的电量。

中下部突出显示的端口是摄像头(摄像头串行接口 (CSI))端口;这是用于Pi摄像头的端口,我们将在准备进行视觉处理时连接摄像头。

我们将使用Raspberry Pi下方的Micro SD卡插槽来运行代码。我们将不使用以太网或 HDMI,因为我们将通过 Wi-Fi与Raspberry Pi通信。


The Raspberry Pi GPIO port (B+, 2, 3, 3B+, Zero, and Zero W)

外部设备可以连接到SPI、I2C、串行和I2S数据总线或数字I/O引脚。

3.2.1 电源引脚

5V和3.3V引脚以及标有GND的引脚用于供电。GND是接地的缩写,相当于电池或电源的负极。5V引脚可用于从电池为Pi供电。5V和3.3V可用于为小型电子设备或传感器供电。

3.2.1.1 数据总线

SPI、I2C 和串行总线用于在控制器和智能设备之间发送控制和传感器数据。I2S用于在Raspberry Pi之间传输编码数字音频信号(PCM)。可以通过配置启用这些数据总线的端口,或者在数据总线关闭时将这些引脚用作普通数字引脚。

标有SDA和SCL的引脚是I2C数据总线。我们将其用于传感器和电机控制板。指令通过该端口发送。

引脚9、10和11组成SPI端口,我们用它来驱动RGB LED。

虽然Raspberry Pi上有一个音频端口,但它并不适合驱动扬声器,因此我们将使用 GPIO 端口上的I2S引脚来驱动扬声器。I2S引脚为 18、19、20 和 21。由于它们也有用于音频输入的引脚,因此我们将其用于语音处理。

3.2.1.2 通用IO

其他没有特定字或阴影类型编号的引脚是通用I/O引脚。通用I/O引脚用于伺服电机、编码器和超声波传感器的数字输入和输出。

3.2.1 Raspberry Pi HAT

Raspberry Pi HAT(也称为 Bonnets)是设计用于插入 GPIO 针座的电路板,可方便地将Raspberry Pi连接到电机或传感器等设备。

有些电路板通过GPIO引脚连接更多电路板/连接装置来使用这些引脚,有些则需要扩展电路板来访问这些引脚。

HAT将GPIO引脚用于不同的用途;例如,音频HAT将I2S引脚用于音频接口,但有些电机控制器 HAT 使用相同的引脚来控制电机。同时使用这些HAT可能会出现问题,因此在使用多个HAT或特定总线时要注意这一点。

参考资料

3.3 什么是 Raspberry Pi OS?

Raspberry Pi OS是我们用来驱动Raspberry Pi的软件,是我们的代码将在其中运行的操作系统。它是Raspberry Pi基金会的官方操作系统,附带的软件可使Raspberry Pi的工作更轻松。Raspberry Pi OS可以支持完整的桌面,也可以支持最小的命令行和纯网络系统。

Raspberry Pi 操作系统基于 Debian Linux 发行版。Debian是一个软件集合,可以一起运行,提供大量功能和多种可能性。这样的Linux发行版是许多互联网服务器、手机和其他设备的基础。该操作系统的软件专为Raspberry Pi硬件进行了优化,即内核和驱动程序。它还有一些巧妙的方法来配置Raspberry Pi用户可能需要的专门功能。

我们将以比台式机更简约的方式使用它,放弃对键盘、鼠标和显示器的支持。这个最小版本被称为Raspberry Pi OS Lite,因为当不需要桌面软件时,它的下载量要小得多,而且占用的micro SD卡空间也更小。不运行窗口管理器可以释放内存,减少对Raspberry Pi处理能力的使用,使其能够用于视觉处理等活动。我们将使用用于机器人编程的软件和工具来扩展Raspberry Pi OS Lite。

在本书的学习过程中,你将主要通过代码和命令行与机器人进行交互。Linux和Raspberry Pi OS在编写时考虑到了通过网络使用命令行,这非常适合机器人编程的无头特性。

我们使用Linux对Python编程语言的强大支持以及Linux提供的网络工具。Raspberry Pi OS在 Raspberry Pi社区被广泛使用,在需要帮助时也最容易找到答案。它不是 Raspberry Pi的唯一操作系统,但对于刚开始使用Raspberry Pi的人来说,它是最有用的选择。

准备 SD 卡

要在Raspberry Pi上使用Raspberry Pi OS,需要将软件以Raspberry Pi可以加载的方式放入微型SD卡中。

Raspberry Pi开发了Raspberry Pi Imager,用于将软件放到SD卡上。让我们下载它并在卡上获得正确的映像:

访问raspberrypi.org/software上的 Raspberry Pi软件下载页面,为你的电脑选择下载按钮,如下图所示:

将微型SD卡装入读卡器,插入笔记本电脑的端口。

选择 Raspberry Pi OS(其他)。由于我们要尽量简化操作,因此请从该菜单中选择 Raspberry Pi OS Lite(32 位)。

现在准备写入。单击 "写入 "按钮:

系统会问你是否确定,点击 "是 "继续。下载和写入图像需要一些时间。

标签:Pi,引脚,编程,端口,Raspberry,OS,连接
From: https://www.cnblogs.com/testing-/p/17622068.html

相关文章

  • 什么是 SAP Fiori Elements 的 extensionAPI
    在SAPFioriElements中,"extensionAPI"是一种用于自定义和扩展FioriElements应用的强大工具。它提供了一组API(应用程序编程接口),允许开发人员通过代码的方式对FioriElements应用进行定制和增强。借助extensionAPI,开发人员可以在不影响标准FioriElements功能的基础上,......
  • RCC & GPIO库函数&传感器输入
    RCC: ResetandClockControl,即复位和时钟控制。  一般在.h文件的末尾都是一些函数声明,RCC常用的三个函数(外设时钟控制,没有时钟外设不工作):voidRCC_AHBPeriphClockCmd(uint32_tRCC_AHBPeriph,FunctionalStateNewState);voidRCC_APB2PeriphClockCmd(uint32_tRCC_AP......
  • Pixi.js的使用整理
    最近在做的一个前端项目中,有一些图像的处理操作(3D图,2D图都有),其中3D图也是通过获取后端服务的图像2D数据进行绘制展示,通过鼠标各种操作调用后端服务来进行重新获取新图数据。这里前端设计到图像的操作使用了PIXIJS,这里将使用的方式做一个说明,以作参考。首先pixijs的官网:https://pi......
  • Spark编程
    Spark编程Transformation算子-Value型函数作用map(f,preservesPartitioning=False)通过对这个RDD的每个元素应用一个函数来返回一个新的RDDflatMap(f,preservesPartitioning=False)将函数应用于该RDD的所有元素,然后将结果平坦化(压扁),从而返回新的RDDmapPar......
  • n、Appium_Python_Api
    一、Appium_Python_Api方法参考博客:https://blog.csdn.net/ezreal_tao/article/details/80911950https://cloud.tencent.com/developer/article/1569596contextscontexts(self):Returnsthecontextswithinthecurrentsession.返回当前会话中的上下文,使用后可以识别H5......
  • 学习go语言编程之函数
    函数定义函数的基本组成:关键字func,函数名,参数列表,返回值,函数体,返回语句。示例如下:funcAdd(aint,bint)(retint,errerror){ ifa<0||b<0{ err=errors.New("shouldbenon-negativenumbers") return } returna+b,nil//支持多重返回值}如果参......
  • 中国首款量子计算机操作系统本源司南 PilotOS正式上线
    中国安徽省量子计算工程研究中心近日宣布,中国国产量子计算机操作系统本源司南PilotOS客户端正式上线。如果把量子芯片比喻成人的“心脏”,那么量子计算机操作系统就相当于人的“大脑”,量子计算应用软件则是人的“四肢”。据安徽省量子计算工程研究中心副主任窦猛汉介绍,Pi......
  • 学习go语言编程之常量
    什么在常量在Golang中,常量是指在编译期就已知且不可改变的值。字面常量在程序中硬编码的常量值被称为字面常量,如:-12//整数类型常量3.1415926//浮点类型常量3.2+12i//复数类型常量true//布尔类型常量"foo"//字符串常量常量定义使用关键字con......
  • 学习go语言编程之数据类型
    数据类型概述Golang语言内置了如下基础数据类型:布尔类型:bool整型:int8,unit8,int16,uint16,int32,uint32,int64,uint64,int,uint,uintptr浮点类型:float32,float64复数类型:complex64,complex128字符串:string字符类型:rune错误类型:error同时,Golang还支持如下复合类型:指针:pointer数组......
  • 学习go语言编程之流程控制
    Golang支持如下4种流程控制语句:条件语句:if,else和elseif选择语句:switch,case和select循环语句:for,range跳转语句:goto条件语句示例代码:a:=3ifa<5{fmt.Println(a,"litterthan5")}else{fmt.Println(a,"notlitterthan5")}关于条件语句,要注意以下......