## 1. 项目流程和规划:
本项目的整体思路就是,软硬结合,Jetson Nano负责图像识别和处理部分,识别完产生结果,通过串口通信将结果传给STM32F103C8T6,然后STM32再根据结果通过PWM信号控制舵机转动。之所以这样做是因为我STM32通信部分的代码在别的项目中用过,基本都是通用的,稍微改一下,直接将程序烧到32上就可以用了。
下面会详细介绍一下硬件方面和软件方面。
## 2. 硬件方面:
**开发板**:Jetson Nano
功能:Jetson Nano是一款体积小巧、功能强大的人工智能嵌入式开发板,具备的性能和能效可以运行现代AI 工作负载,并行运行多个神经网络,以及同时处理来自多个高清传感器的数据。本项目是在百度飞桨上训练大量垃圾图形识别,训练完模型之后,基于Jetson Nano在Paddle Inference上进行推理部署。
![image-20231109205019499](https://github.com/error-keen/data-structure/blob/main/img/trash1.jpg)
**STM32舵机驱动**:STM32F103C8T6
功能:STM32F103C8T6是一款单片机芯片,由意法半导体Stmicroelectronics设计。STM32F103C8T6广泛应用于电子设备中,具有复杂控制和算法的处理器,如工控系统、机器人和马达控制等。它的主要功能包括模拟数字转换(ADC)、定时器和中断控制器(TIM)、串行通信接口(USART)等功能。此外,它还拥有许多具有创新性和高性能的特性,如高速I/O端口、嵌入式硬件分支预测等。它是一款成本低、功能强大的单片机。本项目以STM32F103C8T6作为主控芯片,Jetson Nano识别完产生结果,通过串口通信将结果传给STM32F103C8T6,然后再根据结果通过PWM信号控制舵机转动。
![STM32](https://github.com/error-keen/data-structure/blob/main/img/trash2.jpg)
**超声波传感器**:HC-SR04
功能:检测垃圾满载。
**摄像头**:接口是usb的摄像头都可以,像素越好识别的效果应该会更好一点,当然影响因素有很多,比如灯光,摄像头角度,或者图像处理的模型等等都会影响识别的结果。
**舵机**:两个DS3120,一个270度,另外一个90度以上都可以。
**伸缩电机**:压缩易拉罐。
## 3. 软件方面:
预测部署模型:在百度飞浆上训练自己的模型,基于训练得到的权重导出 inference 模型。
Paddle Inference推理部署:Paddle Inference 是飞桨的原生推理库, 作用于服务器端和云端,提供高性能的推理能力。 由于能力直接基于飞桨的训练算子,因此Paddle Inference 可以通用支持飞桨训练出的所有模型。Paddle Inference 功能特性丰富,性能优异,针对不同平台不同的应用场景进行了深度的适配优化,做到高吞吐、低时延,保证了飞桨模型在服务器端即训即用,快速部署。
python3.6:准备预测部署程序,摄像头的处理,图像处理,开机一键启动,视频播放,界面UI设计,处理后结果通信传给STM32等等都是通过python控制的。
C语言:此部分是需要烧到STM32F103C8T6上的代码,先在自己电脑上使用Kill5运行和调试一下代码,没问题就烧到32上就行了,如果后面实物做出来发现舵机的角度转动不对,及时调整此部分的代码,我不再过多叙述,因为此部分代码我在很多项目都使用过,没有太大问题,就调整一下控制舵机转动的代码就可以了。
以上对各个版本要求很严格,比如numpy必须用1.16版本,python必须用3.6版本,如果python版本过高或者过低,推荐使用Anaconda升级或者降级python的版本。
## 4. 具体的操作步骤:
1. 配置Jetson Nano的基础环境:参考一下连接的文章,再强调一遍注意numpy,python,以及Jetson Nano的版本,PaddlePaddle的版本必须严格一一对应。
[【从踩坑到入门】基于Jetson Nano的深度学习模型部署教程 - 飞桨AI Studio星河社区 (baidu.com)](https://aistudio.baidu.com/projectdetail/3451173)
ubuntu安装Anaconda:推荐文章https://blog.csdn.net/KRISNAT/article/details/124041869
2. 按照以上的文章,Jetson Nano的基础配置好了之后,即python版本,numpy版本,以及PaddlePaddle安装完之后,如果说你们想直接用我部署好的模型和代码,就不需要往下看了,直接把我的代码传到Jetson Nano上就可以用了。
3. 如果想自己重新拍照,训练模型,参考以下文章,这个文章是我在百度飞浆上发布的项目,我的训练过程以及步骤我在这篇文章上都进行了详细的说明。
[Detection训练pp-yolo_垃圾识别_getson nano部署 - 飞桨AI Studio星河社区 (baidu.com)](https://aistudio.baidu.com/projectdetail/6686744?sUid=4562752&shared=1&ts=1697711405564)
4. 这一步是我对以上文章简单的说明,第一步我推荐标注工具labelme,参考文章[Labelme 安装以及使用_labelme安装-CSDN博客](https://blog.csdn.net/qq_41931453/article/details/125757449)),只需要看到生成每张图片的.json文件就行了,后面不需要管,标注照片时,需要两个文件夹,一个为\_img文件,放置图片,另一个为\_json文件,放置每张图片对应生成的.json文件,这两个文件就是数据集,然后fork一下我的飞浆的这个项目,运行进入,然后将这两个文件的压缩文件传到根目录上,第三步我上面有详细的说明,根据自己的需求修改配置文件,大概就是这样,按照我飞浆上的项目一步一步运行就可以了。
![image-20231111100944784](https://github.com/error-keen/data-structure/blob/main/img/trash3.png)
5. 数据集不能太小,太小的话会报错,如果没问题的话,就可以导出推理模型,里面有这四个文件infer_cfg.yml,model.pdiparams,model.pdiparams.info,model.pdmodel,这四个文件其中有一个没用到,不过问题不大。
6. 将上面的包含着四个文件的文件夹替换掉我的model文件里的ppyolo_tiny_650e_coco_t文件就可以了,最后在终端上运行trash_identification.py就可以了,或者写一个shell程序,设置一下开机自动启动,都可以。
7. ![image-20231111215707643](https://github.com/error-keen/data-structure/blob/main/img/trash4.png)
这三个文件,model和trash_ identification.py是传到Jetson Nano上的,运行trash_ identification.py就可以启动了,串口控制PWM驱动舵机文件是烧到STM32上的,Q.mp4是播放的宣传视频,如果要用自己的模型,替换掉model文件里的ppyolo_tiny_650e_coco_t就可以了。
8. 本来我想把所有的资料都传github上面,但是资料内存太大,更详细的资料我放百度网盘上了。
链接:https://pan.baidu.com/s/1m1zpZeXbX7SPq4eEsRqQig
提取码:0ray
## 5.总结
这个项目将近做了两个月,我起初也是为了参加工训赛的,不过我收获很多知识,一开始我是用的树莓派进行部署,使用深度学习框架TensorFlow(使用MobileNetV1网络),机器学习框架XGBoost(使用XGBoost分类器)做这个项目的,而且我平时树莓派用的比较多,更熟悉一点,真的整整折磨了我快一个多月,遇到了很多很多问题,比如numpy的版本和python的版本,我在树莓派上安装Anaconda,弄了将近一个星期才安装好,然后降级python和numpy的版本,安装TensorFlow这个库也遇到了一堆问题,版本对应问题解决了,但怎么都安装不上去,最后安装上去了也运行不了,真给我搞崩溃了,遇到一堆又一堆的问题,最后能运行了,但树莓派的计算性能不仅弱爆了,运行速度比蜗牛都慢。
最后我换方案了,用jetson nano,使�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
嵌入式优质项目,资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目。 本人单片机开发经验充足,深耕嵌入式领域,有任何使用问题欢迎随时与我联系,我会及时为你解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明,项目具体内容可查看下方的资源详情。 【附带帮助】: 若还需要嵌入式物联网单片机相关领域开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步。 【本人专注嵌入式领域】: 有任何使用问题欢迎随时与我联系,我会及时解答,第一时间为你提供帮助,CSDN博客端可私信,为你解惑,欢迎交流。 【建议小白】: 在所有嵌入式开发中硬件部分若不会画PCB/电路,可选择根据引脚定义将其代替为面包板+杜邦线+外设模块的方式,只需轻松简单连线,下载源码烧录进去便可轻松复刻出一样的项目 【适合场景】: 相关项目设计中,皆可应用在项目开发、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面中 可借鉴此优质项目实现复刻,也可以基于此项目进行扩展来开发出更多功能
资源推荐
资源详情
资源评论
收起资源包目录
基于Jetson Nano+STM32通信控制舵机转动-从准备数据集到完成Jetson Nano深度学习模型部署.zip (111个子文件)
__model__ 352KB
__params__ 21.21MB
keilkill.bat 372B
stm32f10x_tim.c 104KB
stm32f10x_flash.c 59KB
stm32f10x_rcc.c 49KB
stm32f10x_adc.c 45KB
stm32f10x_i2c.c 43KB
stm32f10x_can.c 43KB
stm32f10x_usart.c 36KB
system_stm32f10x.c 35KB
stm32f10x_fsmc.c 34KB
stm32f10x_spi.c 29KB
stm32f10x_dma.c 28KB
stm32f10x_sdio.c 27KB
stm32f10x_gpio.c 22KB
stm32f10x_dac.c 18KB
core_cm3.c 16KB
stm32f10x_cec.c 11KB
stm32f10x_pwr.c 8KB
stm32f10x_rtc.c 8KB
stm32f10x_bkp.c 8KB
OLED.c 7KB
misc.c 7KB
stm32f10x_exti.c 7KB
main.c 6KB
stm32f10x_wwdg.c 5KB
stm32f10x_dbgmcu.c 5KB
stm32f10x_iwdg.c 5KB
stm32f10x_it.c 4KB
Serial.c 3KB
stm32f10x_crc.c 3KB
HCSR04.c 2KB
PWM.c 2KB
Timer.c 2KB
CSB.c 1KB
Delay.c 797B
pulse.c 688B
key.c 591B
Servo.c 339B
sys.c 57B
Target_1_STM32F103C6_1.0.0.dbgconf 7KB
Target_1_STM32F103C8_1.0.0.dbgconf 7KB
.gitattributes 302B
stm32f10x.h 611KB
core_cm3.h 82KB
stm32f10x_tim.h 50KB
stm32f10x_rcc.h 29KB
stm32f10x_i2c.h 29KB
stm32f10x_can.h 26KB
stm32f10x_fsmc.h 26KB
stm32f10x_flash.h 24KB
stm32f10x_sdio.h 21KB
stm32f10x_adc.h 21KB
stm32f10x_dma.h 20KB
stm32f10x_gpio.h 19KB
stm32f10x_spi.h 17KB
stm32f10x_usart.h 16KB
stm32f10x_dac.h 15KB
OLED_Font.h 9KB
misc.h 9KB
stm32f10x_bkp.h 7KB
stm32f10x_exti.h 6KB
stm32f10x_cec.h 6KB
stm32f10x_pwr.h 4KB
stm32f10x_rtc.h 4KB
stm32f10x_dbgmcu.h 4KB
stm32f10x_iwdg.h 4KB
stm32f10x_conf.h 3KB
stm32f10x_wwdg.h 3KB
stm32f10x_crc.h 2KB
stm32f10x_it.h 2KB
system_stm32f10x.h 2KB
HCSR04.h 1KB
sys.h 573B
OLED.h 554B
Timer.h 513B
Serial.h 406B
PWM.h 176B
Servo.h 169B
CSB.h 132B
Delay.h 127B
pulse.h 101B
key.h 82B
model.pdiparams.info 32KB
README.md 9KB
Q.mp4 26.89MB
model.nb 21.44MB
opt 12.8MB
model.pdiparams 4.21MB
model.pdiparams 3.92MB
model.pdmodel 2.21MB
best_model.pdmodel 1.62MB
model.pdmodel 227KB
best_model.pdopt 81.85MB
best_model.pdparams 31.95MB
trash_ identification.py 11KB
startup_stm32f10x_xl.s 15KB
startup_stm32f10x_cl.s 15KB
startup_stm32f10x_hd_vl.s 15KB
共 111 条
- 1
- 2
资源评论
- weixin_378768172024-04-17资源很实用,内容详细,值得借鉴的内容很多,感谢分享。
- m0_614225592024-04-22资源内容总结地很全面,值得借鉴,对我来说很有用,解决了我的燃眉之急。
- clear51810302024-10-29非常有用的资源,有一定的参考价值,受益匪浅,值得下载。
- 2401_856923122024-08-31发现一个宝藏资源,赶紧冲冲冲!支持大佬~
- 2301_774735202024-10-27资源很赞,希望多一些这类资源。
阿齐Archie
- 粉丝: 3w+
- 资源: 2474
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- NSDocumentError如何解决.md
- ModuleNotFoundError解决办法.md
- InterruptedIOException(解决方案).md
- NSFileManagerOperationError如何解决.md
- LazyLoadError解决办法.md
- ConnectionAbortedError.md
- ConnectionRefusedError.md
- HarmonyException如何解决.md
- ClosedChannelException(解决方案).md
- PerformanceWarning解决办法.md
- ConnectionResetError.md
- RuntimeException如何解决.md
- 二手车价格预测,代码核心任务是通过机器学习模型(如线性回归、随机森林和KNN回归)预测车辆的价格(current price),并使用评估指标(如 R² 和 MSE)来衡量不同模型的预测效果
- 在线式缠绕膜机自动覆膜缠绕机sw16全套技术资料100%好用.zip
- 基于Arduino单片机的自动售票系统设计与实现
- 一次性纸杯塑料杯叠杯套膜包装机sw16可编辑全套技术资料100%好用.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功