0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样用Tactigon通过BLE控制Arduino驱动的机器人

454398 来源:工程师吴畏 2019-08-01 09:52 次阅读

我们需要什么

配置了Arduino IDE的Tactigon

机器人。我们使用带有Arduino板的2轮机器人和与UART接口的BLE无线电。其他类型的机器人或定制机器人也可以正常工作。

机器人BLE MAC地址和特征

趣味

收集BLE MAC地址和特征

配置好环境并且我们的电路板开启后,我们需要收集BLE MAC地址和特征。为此,我们使用了一个名为BLE Scanner的免费Android应用程序。

应用程序显示后几秒钟机器人的BLE:

如我们所见,我们周围的所有BLE设备都在本节中展示。我们需要记下Waveshare_BLE MAC地址:在这个例子中它是:00:0E:0B:0C:4A:00

通过点击CONNECT按钮,我们可以访问设备的信息作为属性,服务和自定义特征。

这里我们需要写下CUSTOM CHARACTERISTIC UUID,在这种情况下:0000ffe1-0000 -1000-8000-00805f9b34fb。

通过这些项目,我们可以将Tactigon BLE设置为代码的setup()部分中的BLE Central。

Tactigon Sketch

循环

在本节中,我们有草图的核心。在频率为50Hz时,我们更新四元数和欧拉角。

由Tactigon库提供的Analizyng俯仰角,我们可以通过减速来确定转向半径内轮和加速外轮。

Analizying roll,我们可以确定机器人的行进速度。

使用sprintf我们准备缓冲区以写入特征。

机器人草图

由于我们的蓝牙通过UART发送接收数据,因此我们可以直接在串行缓冲器中获得轮速。

我们将机器人引脚设置如下,全部作为输出:

要解析命令,我们首先读取所有串行缓冲区并验证它是否长于0:

如果命令包含“Wh”,我们可以解析字符串并收集leftSpeed和rightSpeed。

direct_motor函数将Tactigon传输的速度分配给机器人的每个车轮。通过这样做Tactigon将充当虚拟方向盘!

最终注意事项

此草图显示了Tactigon的潜在应用,BLE Central模式可以连接到现有的BLE设备并收集信息或控制它们。

请继续关注更多Tactigon的代码!

Alphabot2代码

Tactigon代码

#include

#include

#include

extern int ButtonPressed;

T_Led rLed, bLed, gLed;

T_QUAT qMeter;

T_QData qData;

T_BLE bleManager;

UUID targetUUID;

uint8_t targetMAC[6] = {0x00,0x0e,0x0b,0x0c,0x4a,0x00};

T_BLE_Characteristic accChar, gyroChar, magChar, qChar;

int ticks, ticksLed, stp, cnt, printCnt;

float roll, pitch, yaw;

void setup() {

// put your setup code here, to run once:

ticks = 0;

ticksLed = 0;

stp = 0;

cnt = 0;

//init leds

rLed.init(T_Led::RED);

gLed.init(T_Led::GREEN);

bLed.init(T_Led::BLUE);

rLed.off();

gLed.off();

bLed.off();

//init BLE

bleManager.setName(“Tactigon”);

bleManager.InitRole(TACTIGON_BLE_CENTRAL); //role: CENTRAL

targetUUID.set(“0000ffe1-0000-1000-8000-00805f9b34fb”); //target characteristic

bleManager.setTarget(targetMAC, targetUUID); //target: mac device and its char UUID

}

void loop() {

char buffData[24];

int deltaWheel, speedWheel;

int pitchThreshold, rollThreshold, th1, th2;

//update BLE characteristics @ 50Hz (20msec)

if(GetCurrentMilli() 》= (ticks +(1000 / 50)))

{

ticks = GetCurrentMilli();

//get quaternions and Euler angles

qData = qMeter.getQs();

//Euler angles: rad/sec --》 degrees/sec

roll = qData.roll * 360/6.28;

pitch = qData.pitch * 360/6.28;

yaw = qData.yaw * 360/6.28;

//build command to rover depending on Euler angles

//left/right

pitchThreshold = 15;

if(pitch 《 -pitchThreshold || pitch 》 pitchThreshold)

{

if(pitch《-pitchThreshold)

{

deltaWheel =- (fabs(pitch) - pitchThreshold)*3;

}

else

{

deltaWheel =+ (fabs(pitch) - pitchThreshold)*3;

}

}

else

{

deltaWheel=0;

}

//forward/backword

rollThreshold = 15;

th1 = 90 + rollThreshold;

th2 = 90 - rollThreshold;

roll = fabs(roll);

if(roll 》 th1)

{

speedWheel = (roll - th1) * 3;

}

else if(roll 《 th2)

{

speedWheel = (roll - th2) * 3;

}

else

{

speedWheel = 0;

}

//command in buffData

sprintf(buffData,“Wh(%d)(%d)”, speedWheel-(-deltaWheel/2), speedWheel+(-deltaWheel/2));

//if connected and attached to peripheral characteristic write in it

if(bleManager.getStatus() == 3)

{

//signal that connection is on

bLed.on();

//send command every 100msec

rLed.off();

cnt++;

if(cnt 》 5)

{

cnt = 0;

bleManager.writeToPeripheral((unsigned char *)buffData, strlen(buffData));

rLed.on();

}

}

//say hello on serial monitor every second and blink green led

printCnt++;

rLed.off();

if(printCnt 》 50)

{

//Serial.println(“Hello!”);

//Serial.println(roll);

printCnt = 0;

rLed.on();

}

}

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器人
    +关注

    关注

    206

    文章

    26974

    浏览量

    201301
  • BLE
    BLE
    +关注

    关注

    12

    文章

    607

    浏览量

    58796
  • Arduino
    +关注

    关注

    184

    文章

    6425

    浏览量

    184770
收藏 人收藏

    评论

    相关推荐

    开源项目!教你如何复刻自平衡赛车机器人、智能家居中控、竞技机器人先进模糊控制器等

    开源项目作品 为了方便大家更好提升自己,电子发烧友小编为大家整理了一些工程师大佬设计的开源项目作品,供大家可以参考学习,希望对广大工程师有所帮助。 1.全志R128复刻自平衡赛车机器人,还实现
    发表于 12-26 09:17

    LabVIEW的六轴工业机器人运动控制系统

    将系统分为算法实现和仿真模块、DSP控制模块、及机器人驱动模块,以验证算法的有效性。 KUKA KRAGILUS工业机器人的实体控制测试:最
    发表于 12-21 20:03

    全志R128复刻自平衡赛车机器人,还实现了三种不同的操控方式

    通信。 MPU6050的主要作用是帮助机器人实现姿态感知和运动控制,提高机器人的自主性和灵活性。 遥控手柄UI控制(LVGL) 作者本人还利用R128开发板来移植了一个酷炫的LVGL遥
    发表于 12-20 10:22

    利用Arduino机器人学会识别标识并作出行为

    教你Arduino机器人学会识别标识并作出行为。你的人工智能小车从此有了眼睛!材料单:跟踪机器人底盘视觉传感器Arduino Uno电动
    发表于 09-27 07:36

    Arduino教学机器人的使用教程

    本文档的主要内容详细介绍的是Arduino教学机器人的使用教程
    发表于 09-27 06:53

    使用Arduino和PAJ7620手势传感器制作手势控制机器人

    使用Arduino和PAJ7620手势传感器制作手势控制机器人,简单程序即可实现。小小的传感器可以识别各种手势。它采用内置的空间传感器,可以感知接近和离开的对象。
    发表于 09-27 06:17

    教你做个PID控制巡线机器人

    在本项目中,我们将学习如何使用带PID控制器的线跟随机器人使用Arduino Nano来解决迷宫。
    发表于 09-25 06:54

    基于Matlab和VR技术的移动机器人建模及仿真

    ,虚拟模型准确地模拟了真实移动机器人的动力学特征 ; 通过对模型的参数修改 ,为实现对真实机器人的最优控制和设计提供了可信的参考方案
    发表于 09-20 06:24

    由Alexa Echo控制Arduino机器人

    电子发烧友网站提供《由Alexa Echo控制Arduino机器人.zip》资料免费下载
    发表于 07-10 09:09 0次下载
    由Alexa Echo<b class='flag-5'>控制</b>的<b class='flag-5'>Arduino</b><b class='flag-5'>机器人</b>

    制作Arduino控制机器人

    电子发烧友网站提供《制作Arduino控制机器人.zip》资料免费下载
    发表于 07-06 14:21 0次下载
    制作<b class='flag-5'>Arduino</b><b class='flag-5'>控制</b>的<b class='flag-5'>机器人</b>

    Arduino控制的Delta机器人

    电子发烧友网站提供《Arduino控制的Delta机器人.zip》资料免费下载
    发表于 07-05 11:01 4次下载
    <b class='flag-5'>Arduino</b><b class='flag-5'>控制</b>的Delta<b class='flag-5'>机器人</b>

    DIY Arduino蓝牙控制机器人

    电子发烧友网站提供《DIY Arduino蓝牙控制机器人.zip》资料免费下载
    发表于 06-27 14:59 1次下载
    DIY <b class='flag-5'>Arduino</b>蓝牙<b class='flag-5'>控制</b><b class='flag-5'>机器人</b>

    蓝牙控制Arduino机器人

    电子发烧友网站提供《蓝牙控制Arduino机器人.zip》资料免费下载
    发表于 06-27 10:24 0次下载
    蓝牙<b class='flag-5'>控制</b>的<b class='flag-5'>Arduino</b><b class='flag-5'>机器人</b>

    利用Arduino Nano制作一个四足机器人遇到HC-05蓝牙模块问题,可以ESP8266替换Arduino吗?

    我在 Arduino Nano 的帮助下制作了一个四足机器人。但我经常遇到 HC-05 蓝牙模块的问题。所以现在我正在考虑 ESP8266 替换 Arduino。谁能帮我这个?
    发表于 06-02 08:12

    浅谈儿童陪护机器人

    。步进电机芯片通过控制信号转化为驱动信号,实现了机器人转动的精准控制,从而满足了儿童陪护机器人
    发表于 05-11 15:12