锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

Micropython TPYBoard之无线加速度小车

时间:2023-07-24 23:07:00 加速度传感器iepe加速度传感器3023a2h3418内置放大加速度传感器iepe电压加速度传感器

现在无线控制已经成为电子科学领域的主流,这次我们将教你成为主流–无线控制车,先给大家看最终成品演示视频:

://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 (每个加速单位输出1000mV电压值。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]

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章