Micropython TPYBoard 控制无线加速度小车

现在无线控制已经成为了电子科学领域的主流,这次就来教大家做一个主流中的主流--无线控制的小车,先给大家看一下最终的成品演示视频:

://v.youku.com/v_show/id_XMTY2MzAzNDAzNg==.html?spm=a2h0k.8191407.0.0&from=s1.8-1-1.2

    首先介绍一下需要用到的材料

TPYBoardv102开发板两块
    小车底盘一个
    LORA无线模块两块
    充电宝一个
    9014三极管两个(为什么用到它呢,后面再说)。

在这个开发板上有一个及速度传感器,我是看到开发板上有个加速度传感器才想起来这样做的,这里的呢我们先介绍一下加速度传感器。

加速度传感器,包括由硅膜片、上盖、下盖,膜片处于上盖、下盖之间,键合在一起;一维或二维纳米材料 、金电极和引线分布在膜片上,并采用压焊工艺引出导线;工业现场测振传感器,主要是压电式加速度传感器。其工作原理主要利于压电敏感元件的压电效应得到与振动或者压力成正比的电荷量或者电压量。目前工业现场典型采用IEPE型加速度传感器,及内置IC电路压电加速度传感器,传感器输出与振动量正正比的电压信号,例如:100mV/g (每个加速度单位输出100mV电压值。1g=9.81m/s-2)。

关于上面的介绍你是不是没看懂?没看懂也没关系,那是我参照官方的介绍写的,其实我也看不懂。其实通俗的说吧,加速度传感器就是通过测量由于重力引起的加速度,你可以计算出设备相对于水平面的倾斜角度。通过分析动态加速度,你可以分析出设备移动的方式。是不是还是不太懂怎么获取这个倾斜的值?那也没关系,我们的Python语言里有获得这个倾斜值的函数,直接使用就可以啦。但是这里值得注意的是,这个函数返回的倾斜度是一个值,每一个传感器因为做工时的差异,返回值不同,这个需要大家自己做实验看一下。

得到倾斜值后,下面的工作的就简单了,那就是判断板子在怎么倾斜,然后把倾斜的信号传出去,这样就OK啦,妥妥哒。

介绍完了这控制端的,那咱们得说说怎么把控制的信号传出吧。这里呢主要是使用了lora模块,这个模块现在还是挺流行的。我亲自去做过一个传输距离的实验,具体的距离我没测,但是我感觉最起码也得有个二三里地吧,这距离对于做个小车妥妥哒够用啦。

说一下lora模块的使用吧,lora模块的使用呢,也很简单,串口通信,无线透传。就是说你使用单片机通过串口给模块什么,模块就给你传输什么(定点的话需要带上地址信道),这个lora模块说明说的很详细。但是是不是觉得还要用串口,感觉好麻烦?我也觉得麻烦,但是Python语言和这个开发板的功能都很强大,有一个写好的使用串口的方法,直接调用就可以(瞬间感觉开发好简单啦)。

上面介绍了控制端的工作和原理,下面说一下被控制端(就是按在小车上的)。

被控制端就是要使用开发板控制小车地盘的电机转动,这里被我被坑了一次,我在某宝上买这架车的时候,问了客服需不需要其他的东西,客服说不用。我感觉现在连电机的驱动都不用啦,感觉好高端,但是买回来发现还是需要一个L298N驱动。瞬间感觉被骗了,但是,悲愤的同时,我的两个9014上场了,简单的做了一个三极管开关电路,妥妥哒(虽然速度略慢)。

信号接收部分,这个和控制端差不多的,都是使用了lora模块,然后把收到的数据做判断。判断后再按照自己的逻辑驱动电机,小车就开起来了(小车怎么拐弯的我就不介绍了,网上教程大把多)。

上面说了这么多,其实也很抽象啦,下面来个聚象的,上图。

先上一个自己画的简单的原理图。

控制器

被控制端

这两张图是我画来帮助大家理解的(我这样做的被控制端的电路,速度略慢。大家可以在驱动那里做个放大电路,速度可以上去的,但是不能后退,大家可以直接使用L298N驱动。),我做的时候是使用杜邦线的,并没有电路图,再上一张成品图给大家

成品图

这些都是给大家参考的,大家做的时候多学习多看看,亲身体验了才能真的学到东西。

下面的程序给大家,大家可以参考一下。

    控制端源代码:

[code]import pyb
    xlights = (pyb.LED(2), pyb.LED(3))
    ylights = (pyb.LED(1), pyb.LED(4))
    from pyb import UART
    from pyb import Pin
    #from ubinascii import hexlify
    from ubinascii import *
    accel = pyb.Accel()
    u2 = UART(2, 9600)
    i=0
    K=1

[/code]
    *******************************主程序**********************************

[code]  print(‘while‘)
    while (K>0):
    _dataRead=u2.readall()
    if(1>0):
    x = accel.x()
    print("x=")
    print(x)
    if x > 10:
    xlights[0].on()
    xlights[1].off()
    u2.write(‘\x00\x05\x18YOU‘)
    #pyb.delay(1000)
    print(‘\x00\x01\x18YOU‘)
    elif x < -10:
    xlights[1].on()
    xlights[0].off()
    u2.write(‘\x00\x05\x18ZUO‘)
    print(‘\x00\x01\x18ZUO‘)
    #pyb.delay(1000)
    else:
    xlights[0].off()
    xlights[1].off()
    y = accel.y()
    print("y=")
    print(y)
    if y > 15:
    ylights[0].on()
    ylights[1].off()
    #u2.write(‘\x00\x05\x18HOU‘)
    #pyb.delay(1000)
    #print(‘\x00\x01\x18HOU‘)
    elif y < -15:
    ylights[1].on()
    ylights[0].off()
    u2.write(‘\x00\x05\x18QIAN‘)
    #pyb.delay(1000)
    print(‘\x00\x01\x18QIAN‘)
    else:
    ylights[0].off()
    ylights[1].off()
    pyb.delay(10)

[/code]
    被控制端源代码:

[code]import pyb
    from pyb import UART
    from pyb import Pin
    from ubinascii import hexlify
    from ubinascii import *
    M1 = Pin(‘X1‘, Pin.OUT_PP)
    M3 = Pin(‘Y1‘, Pin.OUT_PP)
    u2 = UART(2, 9600)
    i=0
    K=1

[/code]
    *******************************主程序**********************************

[code]print(‘while‘)
    while (K>0):
    M1.high()
    pyb.delay(3)
    M3.high()
    if(u2.any()>0):
    print(‘1234‘)
    M1.low()
    M3.low()
    pyb.delay(3)
    _dataRead=u2.readall()
    print(‘123‘,_dataRead)
    if(_dataRead.find(b‘QIAN‘)>-1):
    M1.low()
    M3.low()
    print(‘QIAN‘)
    pyb.delay(250)
    elif(_dataRead.find(b‘ZUO‘)>-1):
    M1.low()
    M3.high()
    print(‘ZUO‘)
    pyb.delay(250)
    elif(_dataRead.find(b‘YOU‘)>-1):
    M1.high()
    M3.low()
    print(‘ZUO‘)
    pyb.delay(250)

[/code]

原文地址:https://www.cnblogs.com/xxosu/p/8391217.html

时间: 2024-08-01 10:31:07

Micropython TPYBoard 控制无线加速度小车的相关文章

MMS-F-A01无线加速度传感器

MMS-F-A01无线加速度传感器请添加链接描述说明书 1.产品介绍: MMS-F-A01无线加速度传感器请添加链接描述采用最先进的无线物联网技术--LORA技术,同时具有低功耗和长距离通信的特性,通信距离可达5km,传感器引进欧洲专利技术的三轴加速度传感单元,具有结构固定.功耗低.稳定性好等特点,无线加速度传感器请添加链接描述使用简单,可用于振动测试.撞击测试等领域. 2.产品特点: ● 超低功耗,使用寿命>10年@每小时采集并发送一组数据● 长距离通信,相邻通信节点距离可达1km以上● 无线

MicroPython TPYBoard v102 驱动28BYJ-48步进电机

实验目的 了解步进电机的工作原理 学习步进电机的驱动方法 实验器材 TPYBoard v102 1块 微型步进电机(28BYJ-48) 1个 步进电机驱动板(ULN2003APG) 1块 micro USB数据线 1条 杜邦线 若干 步进电机的介绍 本次实验采用的是28BYJ-48 四相八拍电机,电压DC5V~12V. 24BYJ48名称的含义: 24:电机外径24mm B:步进电机中步字的拼音首字母 Y:永磁中永字的拼音首字母 J:减速的减字拼音首字母 48:四相8步 实物图 工作原理 步进电

MicroPython TPYBoard v201 简易家庭气象站的实现过程

前言 上一篇教程中我们实现了一个简单网页的显示.本篇呢,增加上温湿.时间等信息的展示,实现一个简单的家庭气象站. TPYBoard v201实物图: 准备工作 硬件&工具 TPYBoard v201 开发板 1块 TPYBoard v201 网络参数配置的工具 路由器.电脑.网线等 DHT11温湿度模块 1个 DS3231时钟模块 1个 知识储备 了解基本的TCP.HTTP通信协议等相关的知识.不知道的可自行去百度,相关教程很多. 掌握DHT11温湿度模块的使用方法. 掌握DS3231时钟模块的

Micropython TPYBoard I2C的用法

先看看基本用法: from pyb import I2C i2c = I2C(1)                         # create on bus 1 i2c = I2C(1, I2C.MASTER)             # create and init as a master i2c.init(I2C.MASTER, baudrate=20000) # init as a master i2c.init(I2C.SLAVE, addr=0x42)       # init

两轮自平衡小车双闭环PID控制设计

                                                                                        两轮自平衡小车的研究意义 1.1两轮平衡车的研究意义 两轮平衡车是一种能够感知环境,并且能够进行分析判断然后进行行为控制的多功能的系统,是移动机器人的一种.在运动控制领域中,为了研究控制算法,建立两轮平衡车去验证控制算法也是非常有用的,这使得在研究自动控制领域理论时,两轮平衡车也被作为课题,被广泛研究.对于两轮平衡车模型的

专业教育版-手动遥控云视频监控巡逻小车

    一.整机说明 基于平衡车设计三轮底盘,采用加厚加固型结构,加上单片机控制板.超声模块.4G路由器.GPS北斗双模定位模块.前后双视摄像头等模块设计的一款手动遥控云视频监控巡逻小车. 1.1结构尺寸 1.2部件说明 二.性能参数 整机参数 整机重量 约40kg 整机尺寸 54.6 x 52.8 x 111cm 最高速度 约16km/h 续航 约30km 最大爬坡度 约15° 工作温度 -10℃~ +40℃ 储存温度 -20℃~ +45℃ 电池组参数 额定电压 DC  54.8V 最高充电电

截取usb数据包,控制usb设备----Relay设备

在项目开发当中,我们需要一个usb转继电器的设备当开关控制无线发射设备,采购部采购时并未详细了解Relay设备的运行环境就买了一批设备,之后发现设备厂家只提供了windows库,而我们是要在linux中开发.无语中...... Relay设备虽然是无驱的,可我并不知道它的协议,怎么办呢? I have no choice ,but I have bus hound,LOL. 厂家提供了windows的管理工具,可以实现Relay的开断,因此我通过Bus Hound截取usb数据包,得到通信协议.

红外控制GPIO

论坛里有人说要拿红外控制GPIO弄小车,问我怎么弄,我就写了这个帖子我在GPIO口上焊了4个LED,代表上下左右 不止可以控制gpio,还可以执行任意shell不是lirc,是我自己写的轻量级红外接收程序CbOS GM中有运行方法(请先加载红外驱动): cd ~/source_code/IR ./ir 然后按下遥控器的一个按键(我按"上"),得到 get key event! Key 112 Pressed get key event! Key 112 Released 记下按键代码(

aruba无线轻轨项目

在无线网络管理方面,必须具有无线的集中控管.智能调控.自动恢复.负载均衡等实用功能,所建无线网络可以适应多种环境的变化,可动态地保证良好的应用效果.还应具有远端AP数据进行采集.远程监控.终端定位等功能,支持多SSID,可以方便的把语音.视频以及其他类型的数据的应用进行分开管理. 安全性 在无线网络安全性方面,无线局域网系统具有比有线局域网更高的的安全防护要求,无线网的安全性主要从以下几个方面考虑: (1)无线接入认证:具有支持多种用户认证方式: (2)采用具有用户状态访问控制的防火墙技术: (