> # ♻️ 资源
> **大小:** 8.23MB
> **文档链接:**[**https://www.yuque.com/sxbn/ks/100010367**](https://www.yuque.com/sxbn/ks/100010367)
> **➡️ 资源下载:**[**https://download.csdn.net/download/s1t16/87368165**](https://download.csdn.net/download/s1t16/87368165)
> **注:更多内容可关注微信公众号【神仙别闹】,如当前文章或代码侵犯了您的权益,请私信作者删除!**
> ![qrcode_for_gh_d52056803b9a_344.jpg](https://cdn.nlark.com/yuque/0/2023/jpeg/2469055/1692147256036-49ec7e0c-5434-4963-b805-47e7295c9cbc.jpeg#averageHue=%23a3a3a3&clientId=u8fb96484-770e-4&from=paste&height=140&id=u237e511a&originHeight=344&originWidth=344&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=8270&status=done&style=none&taskId=ud96bf5f7-fe85-4848-b9c2-82251181297&title=&width=140.1999969482422)
# 智能系统中的嵌入式应用
## 1. 实验目的
嵌入式系统(Embedded System),是一种嵌入机械或电气系统内部、具有专一功能和实时计算性能的计算机系统。
嵌入式计算机是面向应用、面向产品的、具有特定用途的计算机。它们没有刻意被制造成计算机的形态,往往以产品本身的形式展现在用户面前。
本次实验使用树莓派作为开发平台,AlphaBot 作为开发载体,Python 作为开发语言,开发一种基于红外线遥控控制的、可自动避障的嵌入式智能小车系统。
## 2. 实验介绍
### 2.1 树莓派介绍
树莓派结构简单、体积小、耗电低,却拥有与普通计算机几乎相同的功能和性能,可以很方便地植入到各种应用系统中。此类单板计算机是典型的嵌入式系统的基础。
### 2.2 AlphaBot2 介绍
AlphaBot2 智能车开发套件,包含一个基板 AlphaBot2-Base 和一个适配板(AlphaBot2-Ar、AlphaBot2-Pi、AlphaBot2-PiZero 三者之一)。其结构稳定,集成度高,不用复杂的组装以及繁琐的接线,有助于快速学习嵌入式系统开发。
### 2.3 Python 介绍
Python 有着大量支持嵌入式系统开发的第三方库,例如 RPi.GPIO 等。以 Python 作为开发语言,可以避免直接与底层交互,将主要精力放在高层抽象逻辑上。
## 3. 实验内容
源码见附录处。
### 3.1 实验方法
本次实验使用 Python 的第三方库 RPi.GPIO 和 rpi_ws281x,实现小车的红外控制、led 控制、蜂鸣器控制、超声波自动避障。
### 3.2 实验流程
#### 3.2.1 智能小车组装
本次实验用到的智能小车组件:
1. AlphaBot2-Base(基板)
2. AlphaBot2-Pi(适配板)
3. 树莓派
4. 蜂鸣器
5. 红外遥控器
6. 超声波探测器
根据 AlphaBot2 智能小车官网教程,组装智能小车。
官网链接见附录,具体路径为:资料 -> AlphaBot2 原理图/组装图 -> AlphaBot2-Pi 组装图。
#### 3.2.2 生产环境配置
本次实验的特殊性在于,生产环境无法直接测试代码,必须将代码移植到树莓派上才可以测试。
生产环境只需代码编辑器即可,以 vscode 和 PyCharm 为佳。
#### 3.2.3 Python 代码实现
系统模块如下表所示:
| 模块名 | 文件名 | 依赖模块 | 功能 |
| --- | --- | --- | --- |
| app | app.py | lib util | 系统的入口文件 |
| lib | pithon.py | uitl | 小车状态的转换和任务调度 |
| lib | alphabot.py | uitl | 小车驱动控制 |
| lib | led.py | | 小车 led 控制 |
| lib | infrared.py | util | 红外线解码 |
| lib | buzzer.py | util | 小车蜂鸣器控制 |
| lib | ultrasonic.py | util | 超声波测距 |
| util | gpio.py | | GPIO 初始化以及常量配置 |
| util | state.py | | 小车状态枚举类 |
以下是详细介绍。
注:本部分较为**冗长**且**非必需**,如有需要请结合代码查阅。
##### 3.2.3.1 app.py
系统入口为`app.py`。
`app.py`的任务是:初始化 GPIO channels,创建小车实例,开始监听,并在小车系统退出后清除 GPIO 设置。
![a7967640da5adaf0524a8d233aafae40.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1710811973780-16d4b937-7d81-472e-8138-c6a6d2aeffb7.png#averageHue=%232a2f39&clientId=u5eb148ba-cff6-4&from=paste&height=198&id=u7bdf952c&originHeight=248&originWidth=589&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=18921&status=done&style=none&taskId=u2e9b2846-e945-4b83-aeba-9ea02847a0c&title=&width=471.2)
`init_gpio()`职责是在系统启动时**唯一**初始化 GPIO channels,源码在`util/gpio.py`中。
`Pithon`为对应小车的实体类,具体实现在`util/pithon.py`中。
##### 3.2.3.2 lib/pithon.py
![377ecff10d776b1f1c3a2d2e64cf8893.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1710811990976-0d6c86c6-169a-4290-8bf8-5c00150155cd.png#averageHue=%23292e36&clientId=u5eb148ba-cff6-4&from=paste&height=414&id=u1fff40b4&originHeight=518&originWidth=824&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=49371&status=done&style=none&taskId=ub7697356-50f3-48b3-9e3b-1985801a8ab&title=&width=659.2)
`self.drive`为掌控小车驱动的实体类,其实现在`lib/alphabot.py`中,提供了前进、后退、停止、左转、右转、加速、减速的驱动实现。
`self.state`为枚举类`State`的实例,具体实现在`util/state.py`中。一共三个属性`set_param`、`auto_run`、`manual`,分别对应三种状态。
`self.PWM`为小车的速度。
`self.beep`为小车蜂鸣器的开关。
该实例的启动函数为`self.start()`。职责为创建一条监听线程监听红外线信号。
![de774a3de431e4347819c0d541421e7f.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1710812011077-2a1e4490-7d63-4092-9e8f-b09d840682e4.png#averageHue=%23282e36&clientId=u5eb148ba-cff6-4&from=paste&height=198&id=u8a805db6&originHeight=248&originWidth=960&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=23901&status=done&style=none&taskId=u626bfd54-a0ea-484f-a25c-c78386d26cf&title=&width=768)
`self.listen()`负责监听、处理红外信号。辅助函数为`get_key()`,实现在`util/infrared.py`中,有红外信号则返回信号,没有则返回`None`。
当没有红外信号时,小车保持当前状态。
![69bbf92df3a7824a9af693808810d504.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1710812032407-dc524068-de82-4014-bff6-13472d391a12.png#averageHue=%23292f38&clientId=u5eb148ba-cff6-4&from=paste&height=432&id=u89f22e20&originHeight=540&originWidth=878&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=63789&status=done&style=none&taskId=uf44ee3e3-c07d-49f4-8970-cd0c61852d4&title=&width=702.4)![f6d5b1898620cb4095c494cf52ce3f80.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1710812032400-d75e332f-5d72-4704-80e2-aa934234d021.png#averageHue=%232a303a&clientId=u5eb148ba-cff6-4&from=paste&height=179&id=u8c6c6223&originHeight=224&originWidth=498&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=24858&status=done&style=none&taskId=ufac07cd7-6e49-42f3-a253-b7711fbde52&title=&width=398.4)
如上图所示,如果是在`auto_run`模式下,小车会持续通过超声波获取距离,而后选择避障与否。如果实在`manual`模式下,会不作处理即保持当前运行状态。
超声波测距的实现在`util/ultrasonic.py`中。
若有红外信号,则根据当前状态进行有选择性的处理。
![907a566d454b237b31b4666500b41209.PNG](https://cdn.nlark.com/yuque/0/2024/png/2469055/1710812378660-f9e13a9d-2bec-4a58-91e8-f985b4562b15.png#averageHue=%23292e37&clientId=u5eb148ba-cff6-4&from=paste&height=810&id=u092f97dd&originHeight=1013&originWidth=665&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=156200&status=done&style=none&taskId=ucce8c2c3-d729-4beb-9179-8f4201ce7be&title=&width=532)
如上图所示,1 号按钮使函数返回 1,系统退出。
在`set_param`模式下,小车可以接收 0、1、2、5 号按钮的指令,进行相应的处理。
其中 0 号按钮控制 led,实现在`util/led.py`中,2 号按钮控制蜂鸣器,实现在`util/buzzer.py`
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
详情介绍:https://www.yuque.com/sxbn/ks/100010367 嵌入式系统(Embedded System),是一种嵌入机械或电气系统内部、具有专一功能和实时计算性能的计算机系统。 嵌入式计算机是面向应用、面向产品的、具有特定用途的计算机。它们没有刻意被制造成计算机的形态,往往以产品本身的形式展现在用户面前。 本次实验使用树莓派作为开发平台,AlphaBot 作为开发载体,Python 作为开发语言,开发一种基于红外线遥控控制的、可自动避障的嵌入式智能小车系统。
资源推荐
资源详情
资源评论
收起资源包目录
100010367-基于Python+AlphaBot 实现红外遥控且自动避障的嵌入式智能小车系统.zip (35个子文件)
embeddedsmartcar
__init__.py 0B
lib
ultrasonic.py 340B
__init__.py 0B
buzzer.py 158B
pithon.py 3KB
led.py 1KB
alphabot.py 2KB
infrared.py 1KB
.vscode
settings.json 77B
doc
report.pdf 2.94MB
img
pithon_py_exec_default.png 62KB
poster.JPG 2.8MB
pithon_py_listen_default.png 24KB
pithon_py_exec_handle.png 153KB
pithon_py_listen_handle.png 152KB
pithon_py_init.png 48KB
infrared.png 2.06MB
pithon_py_start.png 23KB
state.png 25KB
app_py.png 18KB
report.md 10KB
app.py 164B
LICENSE 1KB
.idea
saveactions_settings.xml 397B
vcs.xml 180B
misc.xml 203B
inspectionProfiles
Project_Default.xml 626B
profiles_settings.xml 174B
modules.xml 258B
.gitignore 176B
cur.iml 335B
util
__init__.py 0B
gpio.py 555B
state.py 109B
README.md 13KB
共 35 条
- 1
资源评论
- mygao02132024-01-11这个资源对我启发很大,受益匪浅,学到了很多,谢谢分享~
神仙别闹
- 粉丝: 3749
- 资源: 7464
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 无锁异步化、事件驱动架构设计的 java netty 网络编程框架; 轻量级,无需依赖任何第三方中间件或数据库就能支持集群、分布式; 适用于网络游戏服务器、物联网、内部系统及各种需要长连接的场景
- 单通道H桥马达驱动器T1016H的技术参数与应用指南
- 全国各地级市GDP、土地流转和耕地面积数据-最新出炉.zip
- ARM Cortex-M0+微控制器 CW32F030x6/x8 数据手册解析与应用指导
- 1/2.55英寸CMOS图像传感器IMX362的技术特性与应用
- 使用TensorFlow实现花卉分类识别系统
- SSS1700C1-USB Headset Line-in Controller Datasheet-v1.1-20241119
- ISO 14229-1:2020(E)
- Java企业级开发中数据结构的理解与应用
- Nginx Windows版本 自用
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功