WEB控制的WIFI小车(基于树莓派)

网上有不少基于树莓派的wifi小车了,不过大都不是用WEB界面来控制的,所以我就想做一个能用WEB控制的小车,用WEB控制是因为通用性比较好,不管什么设备只要有浏览器就能控制它。

硬件部分

首先要感谢我敬爱的老师,为我提供各种资源。

所需硬件:

  • 树莓派(我用的是树莓派3)
  • CSI接口的摄像头
  • PCA9685(PWM扩展板,用于产生PWM波,树莓派也可以产生PWM波,不过不好用)
  • L298N模块(驱动马达)
  • 电池
  • DC-DC电源模块(将电池电压升/降至树莓派需要的5V)
  • 小车底盘、马达等

硬件连接:

首先是电源分别接L298N模块DC-DC电源模块,并将DC-DC电源模块的5V输出接树莓派,树莓派的几个I/O口接L298N模块L298N模块的输出接马达。L298N模块的使用方法很简单,在这里就不多介绍了,不明白的话请自行搜索。由于小车是四轮四驱,差速转向,所以理论上一个L298N模块就够了。
然后树莓派和PCA9685是通过I2C协议和树莓派通信,PCA9685的PWM输出接L298N模块,关于PCA9685的使用可参见我的另一篇博文

软件部分

代码全部开源,已上传GitHub https://github.com/cosimahan/MyRaspberryPi ,小车的启动程序是web目录下的myweb.py
主要使用树莓派官方推荐的Python语言,和下面几个库:

  • flask 轻量级的web框架
  • RPi.GPIO 控制I/O口
  • smbus I2C通信

这几个库的用法不再赘述,网络上有相关资料。
大概思路是通过flask这一web框架,实现对发来的请求(GET和POST)进行响应(即返回HTML)和动作(即使小车行动)。
在网页中使用了JavaScript来实现键盘监听(这样按上下左右就可以让小车动了),JavaScript中的jQuery库来实现请求的发送。
视频回传是直接用的mjpg-streamer,实现WEB端视频实时回传。