bluetooth micropython_[TPYBoard - Micropython之会python就能做硬件 8] 学习使用蓝牙模块及舵机...

1、TPYboard V102板一块

2、电机驱动模块L298N 一个

3、电机两块

4、小车底盘

5、超声波模块

6、5110屏 一块

二、超声波模块

1、什么是超声波模块

超声波传感器是利用超声波的特性研制而成的传感器,它是通过传送一个超声波(远高于人的听觉范围)和提供一个对应于爆裂回声返回到传感器所需时间的输出脉冲来工作的。超声波传感器在非接触性测量方面的应用非常广泛,如检测液体水位(特别是具有腐蚀性的液体,如硫酸、硝酸液体),汽车倒车防撞系统,金属/非金属探伤等,都可以用到超声波距离传感器。

2、超声波模块测距的原理

(1)采用IO口TRIG触发测距,给最少10us的高电平信呈。

(2)模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回。

(3)有信号返回,通过 IO 口 ECHO 输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间。测试距离=(高电平时间*声速(340M/S))/2。

20180110224530328695.png

三、实验一:超声波模块测距,用5110来显示

1、连线方法

(1)超声波模块连接方法

VCC 供 5V电源, GND 为地线,TRIG 触发控制信号输入,接板子的X2,ECHO 回响信号输出,接板子的X1,四个接口端。

(2)5110连线及使用方法

具体见:http://www.cnblogs.com/xiaowuyi/p/6347336.html

2、原代码

导入font.py文件和upcd8544.py文件,编写main.py

main.py的代码如下:

import pyb

from pyb import Pin

from pyb import Timer

import upcd8544

from machine import SPI,Pin

Trig = Pin(‘X2‘,Pin.OUT_PP)

Echo = Pin(‘X1‘,Pin.IN)

num=0

flag=0

run=1

def start(t):

global flag

global num

if(flag==0):

num=0

else:

num=num+1

def stop(t):

global run

if(run==0):

run=1

start1=Timer(1,freq=10000,callback=start)

stop1=Timer(4,freq=2,callback=stop)

while True:

if(run==1):

SPI = pyb.SPI(1) #DIN=>X8-MOSI/CLK=>X6-SCK

#DIN =>SPI(1).MOSI ‘X8‘ data flow (Master out, Slave in)

#CLK =>SPI(1).SCK ‘X6‘ SPI clock

RST = pyb.Pin(‘Y10‘)

CE = pyb.Pin(‘Y11‘)

DC = pyb.Pin(‘Y9‘)

LIGHT = pyb.Pin(‘Y12‘)

lcd_5110 = upcd8544.PCD8544(SPI, RST, CE, DC, LIGHT)

Trig.value(1)

pyb.udelay(100)

Trig.value(0)

while(Echo.value()==0):

Trig.value(1)

pyb.udelay(100)

Trig.value(0)

flag=0

if(Echo.value()==1):

flag=1

while(Echo.value()==1):

flag=1

if(num!=0):

#print(‘num:‘,num)

distance=num/10000*34299/2

print(‘Distance:‘)

print(distance,‘cm‘)

lcd_5110.lcd_write_string(‘Distance‘,0,0)

lcd_5110.lcd_write_string(str(distance),0,1)

lcd_5110.lcd_write_string(‘cm‘,50,1)

flag=0

run=0

3、效果

(1)靠近障碍物

20180110224530338461.png

(2)远离障碍物

20180110224530343344.png

四、实验二:避障小车

1、什么是电机驱动模块

电机驱动模块主要是可以控制电机的运行:调速、运行、停止、步进、匀速等操作

2、L298N的连接及使用方法

L298N模块是2路的H桥驱动,所以可以同时驱动两个电机,接法如图所示使能ENA ENB之后,可以分别从IN1 IN2输入PWM信号驱动电机1的转速和方向,可以分别从IN3 IN4输入PWM信号驱动电机2的转速和方向。我们将电机1接口的OUT1与OUT2与小车的一个电机的正负极连接起来,将电机2接口的OUT3与OUT2与小车的另一个电机的正负极连接起来。然后将两边的接线端子,即供电正极(中间的接线端子为接地)连接TPYboard的VIN,中间的接线端子即接地,连接TPYBoard的GND,In1-In4连接TPYBoard的Y1,Y2,Y3,Y4,通过Y1,Y2与Y3,Y4的高低电平,来控制电机的转动,从而让小车前进,后退,向左,向右。

20180110224530345297.png

3、利用底盘+V102+超声波+L298N当小车往前开时,遇到障碍会自己拐弯,躲避

(1)原代码 main,py文件

# main.py -- put your code here!

import pyb

from pyb import Pin

from pyb import Timer

def start(t):

global flag

global num

if(flag==0):

num=0

else:

num=num+1

def stop(t):

global run

if(run==0):

run=1

def left():

x1.high()

x2.low()

y1.high()

y2.low()

def go():

x1.high()

x2.low()

y1.low()

y2.high()

def back():

x1.low()

x2.high()

y1.high()

y2.low()

def right():

x1.low()

x2.high()

y1.low()

y2.high()

def stop():

x1.low()

x2.low()

y1.low()

y2.low()

Trig = Pin(‘X9‘,Pin.OUT_PP)

Echo = Pin(‘X10‘,Pin.IN)

num=0

flag=0

run=1

start1=Timer(1,freq=10000,callback=start)

stop1=Timer(4,freq=2,callback=stop)

x1 = Pin(‘X1‘, Pin.OUT_PP)

x2 = Pin(‘X2‘, Pin.OUT_PP)

y1 = Pin(‘Y1‘, Pin.OUT_PP)

y2 = Pin(‘Y2‘, Pin.OUT_PP)

while True:

if(run==1):

Trig.value(1)

pyb.udelay(100)

Trig.value(0)

while(Echo.value()==0):

Trig.value(1)

pyb.udelay(100)

Trig.value(0)

flag=0

if(Echo.value()==1):

flag=1

while(Echo.value()==1):

flag=1

if(num!=0):

#print(‘num:‘,num)

distance=num/10000*34299/2

print(‘Distance‘)

print(distance,‘cm‘)

if distance>=20:

go()

if distance<=20:

stop()

back()

flag=0

run=0

(2)实现效果

以上视频如果浏览不了,请访问http://admin.turnipsmart.com/IMG_3362.mp4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值