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

}

}

}

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

    关注

    215

    文章

    31800

    浏览量

    224991
  • BLE
    BLE
    +关注

    关注

    13

    文章

    829

    浏览量

    66767
  • Arduino
    +关注

    关注

    191

    文章

    6535

    浏览量

    197920
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    机器人超声波避障测距

    。同时产品环境适应性强,温漂控制优异,可长期稳定运行于室内、仓储、轻度潮湿粉尘等复杂工况,是高端服务机器人与工业AGV的经典配套器件。 尽管倍加福进口传感器性能优异,但在行业大批量量产落地过程中
    发表于 06-10 17:20

    满足机器人电机驱动控制设计需求的ADI针对性解决方案

    机器人的发展进程中,电机控制与传动装置是赋予机器人生命力与执行力的核心基石。电机传动与驱动方式的好坏,直接决定了机器人各个关节的张力、灵活
    的头像 发表于 06-07 15:11 729次阅读

    江智康养机器人

    江智康养机器人国内外市场合作模式与26年主要推进计划 1背景: 江智康养机器人自2016年至今市场订单方式深耕10年,已开发了10款以上机器人(其中3款桌面其余地面款),实际应用于养老产业开发
    发表于 06-06 09:20

    为什么说关节扭矩传感器是高端机器人的“触觉神经”?

    “盲动”变成“感知运动” 普通机器人靠编码器控制位置,只能“按死命令走”。而关节扭矩传感器实时测量每个关节受到的扭转力,精度可达0.01牛米,采样频率高达1000赫兹(每秒反馈1000次)。这相当于
    发表于 04-17 17:27

    在 VisionFive 2 上实现机器人伺服控制

    control 在本演示中,PCA9685用于控制机器人伺服。 伺服的核心是直流电机。通过电位器和齿轮,当输入不同的PWM(脉宽调制)信号时,可以实现不同的旋转角度。通常,标准PWM(脉宽调制
    发表于 03-05 07:09

    绳子驱动机器人,会是未来吗?

    电子发烧友网报道(文/梁浩斌)大家现在最熟悉的人形机器人,比如宇树G1,可以很明显地看出驱动其关节运动的电机是直接安装在关节上,关节是通过电机和减速器直接驱动。但最近被“打假”的挪威人
    的头像 发表于 12-03 08:27 1.1w次阅读
    绳子<b class='flag-5'>驱动</b>的<b class='flag-5'>机器人</b>,会是未来吗?

    高精度机器人控制的核心——基于 MYD-LT536 开发板的精密运动控制方案

    控制系统: - 视觉定位模块:通过 CSI 接口将数据实时传输至 MYD-LT536; - 反馈环路:编码器信号经 CAN 总线反馈,实现机器人闭环控制与误差自适应补偿; - 误差修正
    发表于 11-14 15:48

    RK3576机器人核心:三屏异显+八路摄像头,重塑机器人交互与感知

    、远程作业机器人、特种检测机器人· 多摄像头输入:通过多路摄像头无死角监控作业现场,实现精准操作与安全监控。· 多屏显示:将不同视角的画面、传感器数据、控制界面分别显示,帮助操作员远程
    发表于 10-29 16:41

    小萝卜机器人的故事

    经过我的申请, 马老师发放了, 小萝卜机器人的, 开发权限, 原来的小萝卜公司, 因为经营不善倒闭, 作为科研产品, 几个技术对此惋惜, 自掏腰包, 要让小萝卜机器人, 再生, 每次听到小萝卜说
    发表于 10-23 05:24

    自制巡线解迷宫机器人(上)

    ,我再实现一款像稚晖君所做的Qbot那样的小型且高度集成的巡线机器人。 概述 巡线解迷宫机器人是一款能够通过红外反射传感器实现自主巡线以及解迷宫等功能的小型三轮机器人,该
    发表于 10-20 10:39

    Arduino Uno l两轮自平衡机器人 电机驱动无输出求解

    Arduino Uno l两轮自平衡机器人 电机驱动无输出求解
    发表于 10-15 06:36

    ADI安全产品如何简化不同机器人控制系统中安全机制的实现

    我们将探讨各种机器人安全例,展示ADI的安全产品如何简化不同机器人控制系统中安全机制的实现。
    的头像 发表于 08-12 10:43 1.5w次阅读
    ADI安全产品如何简化不同<b class='flag-5'>机器人</b><b class='flag-5'>控制</b>系统中安全机制的实现

    海默RC系列机器人控制

    海默协作机器人与焊接机器人控制器HARMOROBOTICS控制器作为工业机器人的三大核心零部件之一,也是工业
    的头像 发表于 08-01 15:35 1505次阅读
    海默RC系列<b class='flag-5'>机器人</b><b class='flag-5'>控制</b>器

    工业机器人的特点

    机器人是关键。工业互联网是通过端上的数据传输,经过大数据分析和云计算处理,再进行智能化决策的一整个过程,其中端的数据传输是基础。工业互联网的端包括机器人、传感器等一切线下连接端口。因此发展工业
    发表于 07-26 11:22

    轮式移动机器人电机驱动系统的研究与开发

    【摘 要】以嵌入式运动控制体系为基础,以移动机器人为研究对象,结合三轮结构轮式移动机器人,对二轮差速驱动转向自主移动机器人运动学和动力学空间
    发表于 06-11 14:30