树莓派智能小车教程

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_42136833/article/details/102540154

树莓派智能小车。

基于HJduino。树莓派3B

注意:

  • 一定要接好线
  • 看教程
  • 主板上ENA、ENB接上跳线帽

步骤:(参考视频教程)

  1. 安装底盘
  2. 模块安装及接线
  3. 安装树莓派系统

快速操作指令:

  • 摄像头
    • 打开摄像头软件位置
      cd mjpg-streamer/mjpg-streamer-experimental
    • 打开摄像头指令,复制到LX终端
      ./mjpg_streamer -i “./input_raspicam.so” -o “./output_http.so -w ./www”
  • 指令说明
    xxx.c是要编译的c文件,xxx是编译出来的执行文件,运行编译出来的程序是sudo ./xxx
  • WIFI程序hjduino.c
    • 编译指令
      gcc hjduino.c -o hjduino -lwiringPi -lpthread
    • 运行命令
      sudo -/hjduino 2000
  • 循迹程序xj.c
    • 编译指令
      gcc xj.c -o xj -lwiringPi -lpthread
    • 运行命令
      sudo ./xj
  • 红外避障程序bz.c
    • 编译指令
      gcc bz.c -o bz -lwiringPi -lpthread
    • 运行命令
      sudo ./bz
  • 测距程序cj.c
    • 编译指令
      gcc cj.c -o cj -lwiringPi
    • 运行命令
      sudo ./cj
  • 超声避障pwm csb.c
    • 编译指令
      gcc csb.c -o csb -lwiringPi -lpthread
    • 运行命令
      sudo ./csb
  • 停车 .c
    • 编译指令
      gcc stop.c -o stop -lwiringPi -lpthread
    • 运行命令
      sudo ./stop

第三节,PC控制软件安装

  • HJduino

第三节,手机控制软件

  • 小车控制软件->HJduino-STM32
  • 通过安装包安装后设置,
    • 修改IP地址为192.168.12.1
    • 控制端口为2000
    • 视频地址为:http://192.168.12.1:8080/?action=stream
      第三节,树莓派功能讲解
  • GPIO,40pin,两种编码方式:WiringPI物理引脚编码,PCM寄存器编号编码。

第四节,树莓派底板功能讲解(HJduino定制的)

  • 18450电池
  • TTL和蓝牙模块串口通信,因此一次只能接一种。但是派上都自带了,所以不用管地板上的这俩。。
  • 各传感器模块接到底板上,再从底板接到主板(派)上。

第五节,树莓派主板模块接线

  • 5V,2.5A供电

第六节,树莓派系统安装。

准备工作:

  • 准备SD卡,8GB以上(8G即可),最好是高速卡(class4以上,建议用10);
  • 下载树莓派镜像文件;
  • Windows下安装镜像的工具:Win32DiskImager。

安装步骤:

  1. 解压系统镜像压缩文件,得到img镜像文件;
  2. 将SD卡连接到电脑(读卡器或卡托),格式化SD卡,用PanasonicSDFormatter_ha软件;
  3. 解压并打开Win32DiskImager工具,选择小车系统的镜像文件,选择SD卡的盘符,写入;
  4. 把写好的卡装入树莓派;

注意事项:

  • Linux的分区在Windows下看不到,可以用分区软件看。所以安装完系统,内存卡显示剩余容量几十M是正常的;
  • Ext3属于Linux的文件系统;
  • swap区是Linux的虚拟内存区,在物理内存不够用的时候做缓存用。

第七节,树莓派IO口简介

  • wiringPi 是一个简单易用的函数库,通过它可以扩展SPI和I2C等芯片。
  • GPIO相关寄存器。
  • 该树莓派用的CPU是博通的BCM2835,看数据手册。
  • 注意外设寄存器的物理地址和外设虚拟地址的映射关系。(0x7E00 0000 -> 0x2000 0000)tip:GPIO外设的偏移地址是0x0020 0000。
  • 几个寄存器:GPFSELx9(IO口方向或复用寄存器,控制方向为输入或输出),GPSETx(IO口输出寄存器,逻辑高电平),GPCLRx(IO口输出寄存器,逻辑低电平),GPLEVx(IO口输入寄存器,负责输入状态)。
  • IO口分析:
    1. 查看对应树莓派版本。
    2. 打开/dev/mem/设备,用来直接操作内存地址。
    3. 设定wiringPi GPIO外设的操作模式。

第八节,系统启动。

  1. 树莓派开机。开机后自动打开热点。热点名称pi3,密码12345678。
  2. 打开putty(配置ssh,首次需要配置)。树莓派IP地址192.168.12.1,端口号22。用户名pi,密码raspberry(不显示),输入tightvncserver。
  3. 重启树莓派。再次连接到其热点。
  4. 电脑上所有程序>附件>远程桌面连接。连接到IP地址192.168.12.1。用户名pi,密码raspberry。即可进入树莓派远程桌面。

第九节,电机驱动原理

  • L298N电机驱动芯片

第十节,PC控制软件安装。(安装完还不能控制)

  1. 连接小车wifi热点。
  2. 软件在资料包:小车控制软件>PC控制软件>HJduino,以管理员身份运行。如果运行不了,需要下载NET(Microsoft .NET Framework)。
  3. 设置地址。视频地址http://192.168.12.1:8080/?action=snapshot,控制地址192.168.12.1,端口号2000,图片地址。
  4. 指令设置。前进、后退等(指令前后都用ff起稳定作用)。
  5. 保存后重启软件。

第十一节,手机控制软件安装。

  • HJduino-STM32.apk
  • 只有旧版Android系统可以启动,但是控制不了小车?

第十二节,摄像头启动

  • 打开摄像头软件位置
    cd mjpg-streamer/mjpg-streamer-experimental
  • 打开摄像头指令,复制到LX终端
    ./mjpg_streamer -i "./input_raspicam.so" -o "./output_http.so -w ./www"
  • 树莓派中打开浏览器,输入192.168.12.1:8080可进入一个网页(mjpg),里面有静态和动态摄像头画面。

第十三节,小车操作指令

  • 先运行 $ sudo ./hjduino 2000,就可以控制了。2000是端口号

第十四节,PC、手机控制小车

  • 和上一个差不多

第十五节,代码上传及编译方法

  • FileZilla软件ftp上传。
  • 端口Port:22
  • 新的程序上传进树莓派小车后,要编译,才能运行。
  • 编译指令:
    gcc xxxx.c -o xxxx -lwiringPi -lwiringPiDev
  • 可以用xshell软件,也可以不用哈。可以用vim编辑器。可以用记事本编辑。可以用gvim73软件。可以用visual studio软件。

第十六节,wifi视频小车控制源码讲解

  • 树莓派的GPIO控制,常见的库函数有:
    • python GPIO,好入门上手,但它还没有支持SPI、I2C、1-wire等总线接口;
    • wiringPi,用的C语言。
    • BCM2835 C Library,用的C语言开发的。
  • GPIO编号方式:[此处有图]
    • 物理引脚,从左到右,从上到下,左边奇数,右边偶数,1-40;
    • BCM,侧重CPU寄存器,根据BCM2835寄存器编号;
    • wpi,侧重实现逻辑,把扩展GPIO端口从0开始编号。

第十七节,黑线循迹原理

  • 常用循迹法:
    • 红外对管循迹法
    • 摄像头循迹法,分为模拟和数字
    • 激光管道循迹法,适用于远距离
  • 本小车采用的红外传感器:白色是发射管,黑色是接收管。
    !(红外循迹传感器)[]
  • 注意调节传感器灵敏度时电池供电要稳定啊!

第十八节,循迹实验

传感器连接:

  • 接口,选择wpi编码下(编程时用该编码方式)的26(右)、27(左),对应物理接口(接线时用)32(右)、36(左)
  • 两个传感器相距2.5-3cm,调好后拧紧螺丝嗷
  • 接线:+、-接到底板上,信号线直接接到树莓派的pin上。
  • 调节灵敏度:主要调得白亮黑灭,向上抬起2-3cm灭。

编译:
$ gcc xj.c -o xj -lwiringPi -lpthread

  • gcc前面需要空格吗?如果要,为什么?

运行:
$ sudo ./xj

第十九节,红外避障原理

  • 所用传感器:HJ-IR2,不怕光。
  • !(红外避障传感器)[]

第二十节,红外避障实验

传感器连接:

  • 接口,选择wpi编码下(编程时用该编码方式)的10(右)、11(左),对应物理接口(接线时用)24(右)、26(左)
  • 把线收拾好看嗷
  • 注意接收头低头的话可能会干扰嗷
  • 出厂时距离一般是10cm左右

代码:

  • 主函数中包含的哪些include头文件在哪里定义的?
  • 俩INT控制一个电机,低高,前进;高低,后退。

第二十一节,超声波原理

  • 所用传感器:HC-SR04
  • 没有温度修正功能
  • 工作电压5V,静态工作电流<2mA,感应角度<15°,探测距离2-400cm,精度0.3cm,盲区2cm。
  • 接口:Vcc、Trig、Echo、Gnd
  • 原理:
    1. IO触发测距,至少给10us高电平信号;
    2. 模块自动发送8个40kHz方波,自动检测是否有信号返回;
    3. 有信号返回,输出高电平;
    4. 由高电平持续时间即可得到距离:
      d i s t a n c e = 340 m / s / 2 distance = (高电平时间 * 声速(340m/s)) / 2
      !(超声波测距原理)[]

第二十二节,超声波实验

  • 设置的接口:在wpi编码下是Trig 28,Echo 29,对应物理引脚38,40。
  • 实验过程中拍照、截图、录视频记录嗷。

关于QT:

  • Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正地组件编程。2008年,Qt Company科技被诺基亚公司收购,Qt也因此成为诺基亚旗下的编程语言工具。2012年,Qt被Digia收购。2014年4月,跨平台集成开发环境Qt Creator 3.1.0正式发布,实现了对于iOS的完全支持,新增WinRT、Beautifier等插件,废弃了无Python接口的GDB调试支持,集成了基于Clang的C/C++代码模块,并对Android支持做出了调整,至此实现了全面支持iOS、Android、WP,它提供给应用程序开发者建立艺术级的图形用户界面所需的所有功能。基本上,Qt 同 X Window 上的 Motif,Openwin,GTK 等图形界 面库和 Windows 平台上的 MFC,OWL,VCL,ATL 是同类型的东西。

猜你喜欢

转载自blog.csdn.net/weixin_42136833/article/details/102540154