前面几篇文章完成了训练端和部署端的环境搭建以及模型的训练,并经过两次模型转化最终将YOLOv3 TINY模型部署在了树莓派上。其实最核心的内容已经完成了,接下来就是一些应用层面的东西了。
树莓派控制马达:
1. 材料硬件:
1.树莓派3B+
2.四个直流电机
3.一个小车底盘+四个车轮(某宝上有卖)
4.L298N驱动模块(介于树莓派与马达之间的桥梁)
5.充电宝一个(用于给树莓派供电)
6.18650锂电池两节(给小车马达供电,普通干电池真的不能用,不然你会拥有好多废电池)
7.杜邦线公对公、母对母、公对母各40条
8.面包板(可选)
9.蜂鸣器
2.线路连接:
图片是用fritzing这个软件画的,也是第一次用,画的有点丑,凑合看吧。我没有找到L298N这个模块,就用图中红色的这个代替一下吧。
我的马达控制逻辑比较简单,小车左右两侧的马达为一组同时控制,小车左边两个马达正负极分别连在out1、out2接口上,右边两个马达正负极分别连在out3、out4上,通过给out1和out2,out3和out4输出相反的电平实现马达的转动,采用BOARD编码格式,使用35、33、31、29四个GPIO接口分别连接到L298N驱动模块上的in1、in2、in3、in4接口,同时将32、36、38、40分别连接到四个使能端接口,通过python编程设置gpio接口输出高电平和低电平实现相应的控制,蜂鸣器连接到gpio的11号端口上。
3.小车控制与视频直播流web程序:
web程序采用的是基于python的flask框架,便于实现流媒体直播。同时前台的按钮可以将前进后退转弯信号传回后台,并在后台解析后调用相关的控制程序实现小车的前进后退。
# -*- coding:utf-8 -*-
from flask import Flask, render_template, Response,request
import cv2
import os,time
import RPi.GPIO as GPIO
from flask import jsonify
import sys
class Car(object):
def __init__(self):
self.enab_pin = [38, 40, 32, 36]
self.inx_pin = [35, 33, 31, 29] # 1leftahead 2left down 3 right ahead