600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 创新实践【Raspberry Pi 开发】==树莓派智能小车

创新实践【Raspberry Pi 开发】==树莓派智能小车

时间:2021-12-18 12:05:18

相关推荐

创新实践【Raspberry Pi 开发】==树莓派智能小车

初始树莓派系列文章

树莓派小车小白从0到1开发之路,大家如果有兴趣可以共同讨论

第一篇: 基础模块的学习使用 (L298N驱动板)

一、关于L298N电机驱动板

78M05是一种三端口电流正固定电压稳压器,这些端子分别是输入端子、公共端子和输出端子,使用平面外延制造工艺构造, 以TO-220形式封装,输出电流的最大值为500mA,输入偏置电流为3.2mA,输入电压的最大值为35V,由于其具有在过流过热时关断的保护功能,在现实中被广泛使用。稳压模块能否生效完全取决于5V使能跳帽是否启用(拔掉禁用、插入启用,默认是板载连通的),这里分两种情况,接通和未接通:

板载跳帽:当电源小于或等于12V时,内部电路将由稳压器供电,并且5V引脚作为微控制器供电的输出引脚,即:VCC作为7805的输入,5V是7805的输出,从而可以为板载提供5v电压,为外部电路供电使用

拔掉跳帽:当电源大于12V时,拔掉跳帽,并且应通过5V端子单独为内部供电,即:VCC不作为7805的输入,而+5v由外部电路提供,此时就需要两个供电电源,VCC和+5V

7V<U<12V:当使用驱动电压(上图标识为12V,实际可以接受的输入范围是 7-12V)为7V-12V的时候,可以使能板载(就是图中板载5V使能)的5V逻辑供电,当使用板载5V供电之后,接口中的+5V供电不要输入电压,如果强行供电,有可能会烧坏右侧电容,但可以直接5V电压供外部使用,一般引出来直接给开发板供电,比如:Arduino12V<U<=24V:芯片手册中提出可以支持到35v,但是按照经验一般298保守应用最大电压支持到24V已经很牛了,如果要驱动额定电压为18V的电机,首先必须拔除板载5V输出使能的跳帽,然后在5V输出端口外部接入5V电压对L298N内部逻辑电路供电。

1.1电源引脚

VCC :外接直流电源引脚,电压范围在5~35V之间GND:是接地引脚,连接到电源负极+5V :驱动芯片内部逻辑供电引脚,如果安装了5V跳帽,则此引脚可输出5V电压,为微控板或其他电路提供电力供给,如果拔掉5V跳帽,则需要独立外接5V电源

1.2控制引脚

IN1 & IN2 :电机驱动器A的输入引脚,控制电机A转动及旋转角度

IN1输入高电平HIGH,IN2输入低电平LOW,对应电机A正转

IN1输入低电平LOW,IN2输入高电平HIGH,对应电机A反转

IN1、IN2同时输入高电平HIGH或低电平LOW,对应电机A停止转动

PWM调速:就是改变IN1、IN2高电平的占空比(需拔掉ENA处跳帽,不拔跳帽就是全速启动)

IN3 & IN4 :电机驱动器B的输入引脚,控制电机B转动及旋转角度

IN3输入高电平HIGH,IN4输入低电平LOW,对应电机B正转

IN3输入低电平LOW,IN4输入高电平HIGH,对应电机B反转

IN3、IN4同时输入高电平HIGH或低电平LOW,对应电机B停止转动

PWM调速:就是改变IN3、IN4高电平的占空比(需拔掉ENB处跳帽,不拔跳帽就是全速启动)

1.3输出引脚

OUT1 & OUT2 电机驱动器A的输出引脚,接直流电机A或步进电机的A+和A-

OUT3 & OUT3 电机驱动器B的输出引脚,接直流电机B或步进电机的B+和B-

1.4调速控制引脚

ENA 电机A调速开关引脚,拔掉跳帽,使用PWM对电机A调速,插上电机A高速运行

ENB 电机B调速开关引脚,拔掉跳帽,使用PWM对电机B调速,插上电机B高速运行

二、样例程序

需要特别注意引脚编码方式:

GPIO.setmode(GPIO.BOARD) 下方附图

import RPi.GPIO as GPIOimport time# 设置GPIO引脚编号模式GPIO.setmode(GPIO.BOARD) # 物理引脚模式# out输出引脚不在程序中体现# 定义左右轮电机引脚motor1_pin1 = 11motor1_pin2 = 12motor1_en = 13 # 电机1使能引脚motor2_pin1 = 15motor2_pin2 = 16motor2_en = 18 # 电机2使能引脚# 初始化GPIO引脚状态GPIO.setup(motor1_pin1, GPIO.OUT)GPIO.setup(motor1_pin2, GPIO.OUT)GPIO.setup(motor1_en, GPIO.OUT)GPIO.setup(motor2_pin1, GPIO.OUT)GPIO.setup(motor2_pin2, GPIO.OUT)GPIO.setup(motor2_en, GPIO.OUT)# 定义方向函数def forward():GPIO.output(motor1_pin1, True)GPIO.output(motor1_pin2, False)GPIO.output(motor2_pin1, True)GPIO.output(motor2_pin2, False)def backward():GPIO.output(motor1_pin1, False)GPIO.output(motor1_pin2, True)GPIO.output(motor2_pin1, False)GPIO.output(motor2_pin2, True)def left():GPIO.output(motor1_pin1, False)GPIO.output(motor1_pin2, True)GPIO.output(motor2_pin1, True)GPIO.output(motor2_pin2, False)def right():GPIO.output(motor1_pin1, True)GPIO.output(motor1_pin2, False)GPIO.output(motor2_pin1, False)GPIO.output(motor2_pin2, True)# 定义速度函数def setSpeed(speed):motor1_pwm = GPIO.PWM(motor1_en, 100)motor2_pwm = GPIO.PWM(motor2_en, 100)motor1_pwm.start(speed)motor2_pwm.start(speed)# 运动控制setSpeed(50) # 设置初始速度forward() # 小车前进time.sleep(3) # 前进3秒left() # 左转time.sleep(2) # 左转2秒backward() # 后退time.sleep(3) # 后退3秒right() # 右转time.sleep(2) # 右转2秒GPIO.cleanup() # 清除GPIO引脚状态

三、关于树莓派引脚图(4B)

四、接入FLASK框架

下一步计划是采用FLASK框架开发网站,实现远程操控接口

实例开发:

树莓派(Raspberry Pi)是一款功能强大的微型计算机,可以用来执行各种任务。Flask是一个轻量级的Python Web框架,可以用来快速搭建Web应用。通过结合这两者,可以实现对树莓派的远程控制。

以下是一个简单的例子,演示如何使用Flask框架在树莓派上搭建一个远程控制系统:

首先,确保已经在树莓派上安装了Python和Flask。可以通过以下命令进行安装:

sudo apt-get updatesudo apt-get upgradesudo apt-get install python3 python3-pippip3 install flask

创建一个新的Python文件,例如app.py,并输入以下代码:

from flask import Flask, render_template, requestimport RPi.GPIO as GPIOapp = Flask(__name__)GPIO.setmode(GPIO.BCM)# 定义一个控制LED的函数def control_led(pin, state):GPIO.setup(pin, GPIO.OUT)GPIO.output(pin, state)@app.route('/')def index():return render_template('index.html')@app.route('/control', methods=['POST'])def control():pin = int(request.form['pin'])state = int(request.form['state'])control_led(pin, state)return 'Success'if __name__ == '__main__':app.run(host='0.0.0.0', port=80, debug=True)

创建一个HTML模板templates/index.html:

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>树莓派远程控制</title></head><body><h1>树莓派远程控制</h1><form action="/control" method="post"><label for="pin">Pin:</label><input type="number" name="pin" id="pin"><label for="state">State:</label><input type="number" name="state" id="state"><button type="submit">Submit</button></form></body></html>

运行app.py文件,启动Flask服务器:

python3 app.py

通过浏览器访问树莓派的IP地址,例如http://192.168.1.100(请根据实际情况替换),然后通过表单控制树莓派上的GPIO引脚。

这个简单的例子只能控制LED灯的开关。可以根据需求扩展此项目,例如实现对电机、传感器等其他硬件设备的远程控制。将在后续文章中陆续实现。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。