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();

}

}

}

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

    关注

    211

    文章

    28372

    浏览量

    206890
  • BLE
    BLE
    +关注

    关注

    12

    文章

    660

    浏览量

    59390
  • Arduino
    +关注

    关注

    188

    文章

    6468

    浏览量

    186922
收藏 人收藏

    评论

    相关推荐

    构建语音控制机器人 - 线性模型和机器学习

    2024-07-31 |Annabel Ng 在该项目的[上一篇博客文章]中,我介绍了运行机器人电机、处理音频信号和调节电压所需的电路的基础知识。然而,机器人还没有完全完成!尽管机器人可以正确移动
    的头像 发表于 10-02 16:31 202次阅读
    构建语音<b class='flag-5'>控制</b><b class='flag-5'>机器人</b> - 线性模型和<b class='flag-5'>机器</b>学习

    伺服控制机器人控制方式有哪些

    伺服控制机器人是一种高度精确的自动化设备,它能够执行复杂的任务,如精确定位、重复运动和力控制。伺服控制系统是机器人技术中的核心部分,它负责接
    的头像 发表于 09-04 09:16 415次阅读

    开源项目!ESP32做一个可爱的无用机器人

    简介 作者在完成硕士论文答辩后,利用空闲时间制作了一个他一直想做的机器人——可爱无用机器人。 无用机器人原理是一个连接到开关的电机,通过逻辑门
    发表于 09-03 09:34

    开源项目!ESP32做一个可爱的无用机器人

    简介 作者在完成硕士论文答辩后,利用空闲时间制作了一个他一直想做的机器人——可爱无用机器人。 无用机器人原理是一个连接到开关的电机,通过逻辑门
    发表于 08-30 14:50

    Al大模型机器人

    丰富的知识储备。它们可以涵盖各种领域的知识,并能够回答相关问题。灵活性与通用性: AI大模型机器人具有很强的灵活性和通用性,能够处理各种类型的任务和问题。持续学习和改进: 这些模型可以通过持续的训练
    发表于 07-05 08:52

    如何使用PLC控制机器人

    随着工业自动化技术的飞速发展,机器人技术作为其中的重要组成部分,其应用范围日益广泛。在机器人控制系统中,PLC(Programmable Logic Controller,可编程逻辑控制
    的头像 发表于 06-17 10:50 1673次阅读

    机器人控制系统的基本单元有哪些

    的自主控制机器人控制系统的基本单元包括传感器、执行器、控制器、驱动器和通信接口等,这些单元相互协作,共同完成
    的头像 发表于 06-16 15:36 1548次阅读

    工业机器人控制系统的基本组成有哪些

    机器人关节的角度位置。 速度传感器 :测量机器人关节的旋转速度。 力/力矩传感器 :检测机器人末端执行器与环境的交互力。 视觉传感器 :提供机器人对环境的视觉感知能力。 执行器系统 :
    的头像 发表于 06-16 15:26 1854次阅读

    基于FPGA EtherCAT的六自由度机器人视觉伺服控制设计

    ,在 PS层运行 苏姆的裸机程序, 并将六自由度串联机器人逆解算法移植到主站代码里,进行机器人末端位置对于视觉反馈的实时跟随控制。 (4)通过实验验证了本设计的对物块识别的准确性和实
    发表于 05-29 16:17

    基于飞凌嵌入式RK3568J核心板的工业机器人控制器应用方案

    控制系统当中。那么今天,我们就通过多轴工业机器人来聊聊机器人控制系统以及控制器的实现。 1
    发表于 05-11 09:40

    怎样用精益思维推动智能机器人的发展?

    提供了全新的视角和动力。本文,天行健咨询将分享如何用精益思维推动智能机器人的发展,以期为相关领域的从业者提供有益的启示。 一、精益思维与智能机器人的结合 精益思维起源于制造业,强调以客户需求为导向,通过消除
    的头像 发表于 02-19 09:48 333次阅读

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

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

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

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

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

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

    高动态人形机器人“夸父”通过OpenHarmony 3.2 Release版本兼容性测评

    近日, 搭载KaihongOS的“夸父”人形机器人通过OpenAtom OpenHarmony(以下简称“OpenHarmony”)3.2 Release版本兼容性测评并获颁兼容性证书 。这体现了
    发表于 12-20 09:31