zoukankan      html  css  js  c++  java
  • Micropython教程之TPYBoardv102 DIY蓝牙智能小车实例

      1.实验目的

      1.学习在PC机系统中扩展简单I/O接口的方法。

      2.进一步学习编制数据输出程序的设计方法。

      3.学习蓝牙模块的接线方法及其工作原理。

      4.学习L298N电机驱动板模块的接线方法。

      5.学习蓝牙控制小车的工作原理。

      2.所需元器件

      TPYBoard板子一块

      蓝牙串口模块一个

      L298N电机驱动板模块一个

      智能小车底盘一个

      数据线一条

      杜邦线若干

      3.蓝牙串口模块原理

      (1)引出接口包括EN,5V,GND,TX,RX,STATE,我们小车只用到RX,TX,GND,5V四个针脚。

      (2)模块默认波特率位9600,默认配对密码为1234,默认名称位为HC-06。

      (3)led指示蓝牙连接状态,闪烁表示没有蓝牙连接,常亮表示蓝牙已连接并打开了端口,当我们用安卓手机软件发送指令时,通过串口给TPYBoard发送指令,TPYBoard收到指令通过L298BN模块来驱动小车前进,后退,向左,向右或者停止。

      如下图接线,5V接TPYBoard的VIN,GND为地线,TX接TPYBoard的RX(这用的是TPYBoard串口2,X3,X4)即X4,RX接TPYBoard的TX即X3。

     


      4.学习L298N电机驱动板模块的接线方法

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

     


      接线ok后,编写main.py,给TOYBoard通电就ok了,下面是源代码。

      5.源代码

     

      

    import pyb
    from pyb import UART
    from pyb import Pin
    
    M2 = Pin('X3', Pin.IN)
    M3 = Pin('X4', Pin.IN)
    N1 = Pin('Y1', Pin.OUT_PP)
    N2 = Pin('Y2', Pin.OUT_PP)
    N3 = Pin('Y3', Pin.OUT_PP)
    N4 = Pin('Y4', Pin.OUT_PP)
    
    u2 = UART(2, 9600)
    
    while True:
        pyb.LED(2).on()
        pyb.LED(3).on()
        pyb.LED(4).on()
        _dataRead=u2.readall()
        if _dataRead!=None:
        #停止(读取手机APP传过来的指令,不同的软件指令可能不同,可以自己设定,在这里是默认的,下同)
            if(_dataRead.find(b'xa5Zx04xb1xb5xaa')>-1):
                print('stop')
                N1.low()
                N2.low()
                N3.low()
                N4.low()
            #向左
            elif(_dataRead.find( b'xa5Zx04xb4xb8xaa')>-1):
                print('left')
                N1.low()
                N2.high()
                N3.high()
                N4.low()
            #向右
            elif(_dataRead.find( b'xa5Zx04xb6xbaxaa')>-1):
                print('right')
                N1.high()
                N2.low()
                N3.low()
                N4.high()
            #后退
            elif(_dataRead.find(b'xa5Zx04xb5xb9xaa')>-1):
                print('back')
                N2.high()
                N1.low()
                N4.high()
                N3.low()
            #向前    
            elif(_dataRead.find( b'xa5Zx04xb2xb6xaa')>-1):
                print('go')
                N1.high()
                N2.low()
                N3.high()
                N4.low()
    

      

  • 相关阅读:
    html5+plus(5+app) 扫一扫(plus.barcode)
    uniapp地图控件(浅显使用)
    sku排列算法,库存类展示(规格,型号,颜色等)
    『嗨威说』数据结构中常用的查找算法思路总结
    『ACM C++』 PTA 天梯赛练习集L1 | 057-063
    『ACM C++』 PTA 天梯赛练习集L1 | 054-056
    『ACM C++』 PTA 天梯赛练习集L1 | 052-053
    『ACM C++』 PTA 天梯赛练习集L1 | 050-51
    『ACM C++』 PTA 天梯赛练习集L1 | 048-49
    『ACM C++』 PTA 天梯赛练习集L1 | 046-47
  • 原文地址:https://www.cnblogs.com/xxosu/p/7544245.html
Copyright © 2011-2022 走看看