Micropython教程之TPYBoard制作蓝牙+红外循迹小车
1.实验目的
学习在PC机系统中扩展简单I/O接口的方法。
进一步学习编制数据输出程序的设计方法。
学习蓝牙模块的接线方法及其工作原理。
学习L298N电机驱动板模块的接线方法。
学习蓝牙控制小车的工作原理。
2.所需元器件
TPYBoardv102板子1块
蓝牙串口透传模块(HC-06)1个
L298N电机驱动板模块1个
智能小车底盘1个
数据线1条
杜邦线若干
智能蓝牙小车APP(Android版)点击下载

3.蓝牙串口模块原理

(1)引出接口包括EN,5V,GND,TX,RX,STATE,我们小车只用到RX,TX,GND,5V四个针脚
(2)模块默认波特率位9600,默认配对密码为1234,默认名称位为HC-06
(3)led指示蓝牙连接状态,闪烁表示没有蓝牙连接,常亮表示蓝牙已连接并打开了端口,当我们用安卓手机软件发送指令时,通过串口给TPYBoard发送指令,TPYBoard收到指令通过L298BN模块来驱动小车前进,后退,向左,向右或者停止。
如下表接线:
| 蓝牙模块(HC-06) | TPYBoardv10x |
|---|---|
| 5V | VIN(+5V) |
| GND | GND |
| RX | Y9(UART(3)-TX) |
| TX | Y10(UART(3)-RX) |
4.四路红外循迹模块

(1)当模块检测到前方障碍物信号时,电路板上红色指示灯点亮,同时OUT端口持续输出低电平信号,该模块检测距离2~60cm,检测角度35°,检测距离可以通过电位器进行调节,顺时针调电位器,检测距离增加;逆时针调电位器,检测距离减少。
(2)传感器属于红外线反射探测,因此目标的反射率和形状是探测距离的关键。其中黑色探测距离最小,白色最大;小面积物体距离小,大面积距离大。
(3)传感器模块输出端口OUT可直接与单片机IO口连接即可,也可以直接驱动一个5V继电器模块或者蜂鸣器模块;连接方式:VCC-VCC、GND-GND、OUT-IO。
(4)比较器采用LM339,工作稳定。
(5)可采用3.3V-5V直流电源对模块进行供电。当电源接通时,绿色电源指示灯点亮。
5.四路红外感应探头的安装
寻迹的原理其实就光的吸收,反射和散射。大家都知道,白色反射所有颜色的光,而黑色吸收所有颜色的光,这就为小车寻迹提供了有力的科学依据。在小车的车头上安装上红外探头(我是安装了四个),一字顺序排开。哪个探头接收不到反射或者散射回来的光时,说明这个探头此时正在黑色的寻迹带上。
6.判断反馈的信号
如果要是正前方的探头接收不到光,那么说明小车此时走在黑色的寻迹带上。可以使小车直线行走。如果左面的探头接收不到光,那么说明小车左面出现了黑色寻迹带,此时小车应该执行左转弯。右转弯同左转弯原理。如果要是小车前面,左面,右面三个方向全都接收不到光,或者是两个方向上的探头都接收不到光,到底是左转弯,右转弯还是继续直行,这个就要看你自己在程序里怎么做判断了。
7.探头的安装与接线
四路红外探头接线很简单,虽然有十八根线,但是有十二根是三根三根的分成四组,一一对应接线,其余的六根,是VCC和GND。还有四根是接到TPYBoardv10x开发板的IO口上的,用于接收四路红外循迹模块反馈的信号。
接线OK后,编写main.py,给TPYBoard通电就ok了,下面是源代码。
8.源代码
# main.py -- put your code here!
import pyb
from pyb import UART
from pyb import Pin N1 = Pin('X1', Pin.OUT_PP)
N2 = Pin('X2', Pin.OUT_PP)
N3 = Pin('X3', Pin.OUT_PP)
N4 = Pin('X4', Pin.OUT_PP) M1 = Pin('Y1', Pin.IN)
M2 = Pin('Y2', Pin.IN)
M3 = Pin('Y3', Pin.IN)
M4 = Pin('Y4', Pin.IN) blue=UART(3,9600)
mode='1'#1:表示蓝牙模式 2:循迹模式 def Stop():
N1.low()
N2.low()
N3.low()
N4.low()
def Back():
N1.high()
N2.low()
N3.high()
N4.low()
def Go():
N1.low()
N2.high()
N3.low()
N4.high()
def Left():
N1.high()
N2.low()
N3.low()
N4.high()
def Right():
N1.low()
N2.high()
N3.high()
N4.low()
while True:
if blue.any()>0:
data=blue.read().decode()
print(data)
if data.find('0')>-1:
#stop
Stop()
mode="1"
print('stop')
if data.find('1')>-1:
Go()
print('go')
if data.find('2')>-1:
Back()
pyb.delay(500)
Stop()
if data.find('3')>-1:
Left()
pyb.delay(250)
Stop()
if data.find('4')>-1:
Right()
pyb.delay(250)
Stop()
if data.find('5')>-1:
mode="1"
Stop()
if data.find('6')>-1:
mode="2"
else:
if mode=="2":
print('循迹模式')
if(M1.value() and M2.value() and M3.value()):
Stop()
mode="1"
if(M2.value() or M3.value()):
pyb.LED(2).on()
pyb.LED(3).off()
pyb.LED(4).off()
Go()
if M1.value():
pyb.LED(3).on()
pyb.LED(2).off()
pyb.LED(4).off()
Right()
pyb.delay(10)
if M4.value():
pyb.LED(4).on()
pyb.LED(2).off()
pyb.LED(3).off()
Left()
pyb.delay(10)
9.智能蓝牙小车APP的使用
下载安装后,打开[蓝牙智能小车]APP,进入操作界面。如下:

点击左下角的桃心图标,进入自定义编码界面。通过这个界面,我们可以自定义操作界面中各个按键发出去的指令内容。如下:

点击页面下方的关于我们,可以加入我们的技术交流群和关注微信公众号。如下:

接下来,回到一开始的操作界面,点击右下角的设置图标,进行蓝牙模块的连接。首先先点击[搜索蓝牙设备],界面会自动加载搜索到的蓝牙设备,当出现HC-06时,点击进行连接。

如果是第一次连接,需要进行配对,配对的密码默认1234。

提示连接成功后,我们就可以通过四个方向键来操纵智能蓝牙小车了。
大家可以看到,右上角的图标,可以进行蓝牙模式和循迹模式的切换。当按下时,两种模式来回切换。当处于循迹模式时,界面如下。

Micropython教程之TPYBoard制作蓝牙+红外循迹小车的更多相关文章
- MicroPython教程之TPYBoard开发板DIY红外寻迹小车
智能小车现在差不多是电子竞赛或者DIY中的主流了,寻迹,壁障,遥控什么的,相信大家也都见得很多了,这次就大家探讨一下寻迹小车的制作方法,不同于以往的是这次的程序不用C语言写,而是要使用python语言 ...
- Micropython教程之TPYBoardv102 DIY蓝牙智能小车实例
1.实验目的 1.学习在PC机系统中扩展简单I/O接口的方法. 2.进一步学习编制数据输出程序的设计方法. 3.学习蓝牙模块的接线方法及其工作原理. 4.学习L298N电机驱动板模块的接线方法. 5. ...
- MicroPython教程之TPYBoard开发板DIY小型家庭气象站
众所周知,iPhone6/6Plus内置气压传感器,不过大家对于气压传感器还是很陌生.跟字面的意思一样,气压传感器就是用来测量气压的,但测量气压对于普通的手机用户来说又有什么作用呢? 海拔高度测量 对 ...
- MicroPython教程之TPYBoard v102 CAN总线通信
0x00前言 CAN是控制器局域网络(ControllerAreaNetwork,CAN)的简称,是ISO国际标准化的串行通信协议.CAN总线结构简单,只需2根线与外部相连,并且内部集成了错误探测和管 ...
- Micropython教程之TPYBoard开发板驱动舵机教程(萝卜学科编程教育)
大家应该都看到过机器人的手臂啊腿脚啊什么的一抽一抽的在动弹吧...是不是和机械舞一样的有节奏,现在很多机器人模型里面的动力器件都是舵机. 但是大家一般见到的动力器件都是像步进电机,直流电机这一类的动力 ...
- 基于STM32单片机的简单红外循迹的实现
初步接触STM32,采用两路红外传感器实现小车循迹,稍显简略,如有不好的地方,欢迎大家指点改正
- [Mugeda HTML5技术教程之12]制作跨屏互动应用
mugeda动画平台还可以用来制作跨屏互动的动画应用,比如在PC端的大屏幕上显示动画的主界面,同时会显示出供手机扫描的二维码,手机扫描后会在手机上显示手机端动画界面.通过手机就可以和PC端的显示界面跨 ...
- [Mugeda HTML5技术教程之19]制作可定制贺卡
本文档通过一个实例介绍可定制贺卡的动画的制作过程.实例包含两部分: 1. 动画部分:介绍动画制作过程中如何给祝福词和落款的文本对象命名,如何给定制按钮定义表单动作. 2. 代码部分:介绍贺卡的脚本逻辑 ...
- arduino循迹小车
int MotorRight1=14; int MotorRight2=15; int MotorLeft1=16; int MotorLeft2=17; int MotorRPWM=3; int M ...
随机推荐
- flask-login使用笔记
看外国文献的中文翻译 翻译的程度有的让人会疯,翻译最好的状态是异译 直译会显的很生硬 看起来确实难过:所以在看的时候,建议都看外国文献吧,或者自己用谷歌翻译,感觉比一些翻译的博客准多了: 在使用fl ...
- 自己定义View Controller转换动画
原文链接 : Introduction to Custom View Controller Transitions and Animations 原文作者 : joyce echessa 译文出自 : ...
- 掀起Azure AD的盖头来——深入理解Microsoft Graph应用程序和服务权限声明
作者:陈希章 发表于 2017年7月12日 引子 这是一篇计划外的文章.我们都知道要进行Microsoft Graph的开发的话,需要进行应用程序注册.这个在此前我已经有专门的文章写过了.但这里存在一 ...
- HTML: width,height
在进行前端页面开发时,width(width,offsetWidth,scrollWidth,clientWidth)height(height,offsetHeight,scrollHeight,c ...
- SSH之免密登陆
又来了,上头让小轩我在服务器中写一个Shell脚本,主要用来在机器B中定时备份机器A中的一些文件.那么,小轩是怎么想的呢? 在小轩的知识库里,现在有scp和ssh两个玩具.别的还真没有其他什么东西了. ...
- IOS学习4——block代码块
本文转载自:iOS开发-由浅至深学习block 一.关于block 在iOS 4.0之后,block横空出世,它本身封装了一段代码并将这段代码当做变量,通过block()的方式进行回调.这不免让我们想 ...
- intelij Android 搭建 java 项目
1.打开ide创建页面,点击创建项目 2.选择Android,发现下面有一段红字,解释很清楚,由于第一使用为设置Android的开发环境sdk,去设置一下就好,点击取消回到上一界面 3 配置 4.当然 ...
- CSS篇(上)
紧接着HTML篇的CSS篇开啦,老铁们快来围观... 1.介绍一下标准的CSS盒子模型?低版本IE的盒子模型有什么不同? 1>有两种:IE盒子模型 W3C盒子模型 2>盒模型:内 ...
- ArcGIS API for JavaScript 4.2学习笔记[26] 缓冲区分析【基于geometryEngine工具类】
要说GIS空间分析最经典的例子,就是缓冲区分析了. 本例使用geometryEngine来绘制缓冲区环.因为官方给的例子有3D和2D场景,所以就会显得比较复杂. 当鼠标在视图上点击时,就会生成一个缓冲 ...
- SVO环境搭建
我是装了双系统,实验OS:Ubuntu14.04 Installation: Plain CMake (No ROS) 首先,建立一个工作目录比如:workspace,然后把下面的需要的都在该目录下进 ...