涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程

目录

开发板购买

当然 肯定得先创 账号
官网商店:https://iot.tuya.com/purchase/store?page=1&tag=dev_board&q=
购买的 涂鸦三明治BLE SoC 主控板(BT3L)
相关资料可参考官方文档BT3L 模组规格书:https://developer.tuya.com/cn/docs/iot/br3l?id=K97rpns8f6xwh
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
还需要实名认证(好吧)
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
付完钱后等货
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》

到货后实物展示

《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》

环境搭建

参考官网文档:https://developer.tuya.com/cn/docs/iot/development-guide?id=Kaiuyncrmvf3z
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
Arduino IDE我本机就有;
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
STlink驱动 先装了再说;
IDE添加STM32开发板,GitHub下载很慢(折磨);
STM32CubeProgrammer(添加/bin 到环境变量)
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》

烧录相关

串口传输驱动
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》

Jlink驱动 (我没装)
涂鸦云模组烧录授权平台(需要账号登录 https://pms.tuya.com/login
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》

IDE添加tuya SDK库

《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》

手机APP 添加 开发板 简单测试

1、安装 智能生活 和 涂鸦云测 APP

安装 涂鸦APP(智能生活)我这应用商店可以直接搜到。
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
生活 官方链接:https://smartapp.tuya.com/smartlife
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
云测 官网链接:https://smartapp.tuya.com/smartautoapp
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》

2、开发板上电

涂鸦三明治蓝牙 SoC 主控板(BT3L) 的原理图

《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
你可以用其他板子给开发板供电,如stm32(3.3V GND)
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
或者上 USB转TTL
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
我这是直接将开发板插在了 创客Arduino Uno Rev3上。
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》

3、运行 APP,添加设备(可以扫到 但添加失败了 不确定是不是我个人原因)

点击右上角+,选择“添加设备”
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
开发板上电,出厂不知道烧了啥程序,我们添加上看看
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
添加失败
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
莫非出厂不是默认的配网模式,查看官方文档 Arduino 接入涂鸦快速入门BLE SoC 主控板(BT3L)
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
那我们按下 开发板上的按钮康康,点按没有反应,长按 LED2亮了,在添加依然失败,呃···
可能是因为我接着BT3L烧程序的缘故,不知道咋滴扫描不到了,哎。(其实就是处于已配网状态)
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》

尝试问题调试(失败)

接上 USB转TTL 波特率9600,收到数据如下:
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
查看了官方提供的蓝牙mesh协议文档,恩 10s一次的心跳包。
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
十六进制发送 55 AA 00 01 00 00 00
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
返回F0 55 AA 00 03 00 01 02 05 07 55 AA 00 03 00 01 02 05,多了个F0 07不知道啥情况,忽视,后面帧头55 AA 版本号 00 命令字03 返回03好吧,数据长度是 00 01 数据为02,CRC8为05,我们转到03命令看看
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
0x02是已绑定状态,这应该很能说明问题了,设备有蓝牙信号,但是无法被APP识别配网,因为已经配网了(这不是bug嘛 呀嘞呀嘞daze)。既然已经配网,那就删除mesh网络信息,恢复一下。
发送命令55 aa 00 04 00 00 03,还是返回F0 55 AA 00 03 00 01 02 05 呃,什么意思
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》

重新烧录固件(慎用)

放弃,进行固件重新烧录。参考:无需Telink也能烧录涂鸦BT3L
具体步骤可参考下面的
开发板固件烧录
烧完后,重新上电,打开 APP 添加设备,扫到 插座了!(扫不到 就 长按sw1 5秒(看你固件设置))
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
终于添加成功了,可喜可贺。
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》

简单功能演示

《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》

TL_C2 接个小灯,配合APP,做个演示
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
次日,我想稍微改下固件,亮个LED2看看,结果
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
啥,心跳包呢???
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》

开发板固件烧录

参考文档:https://developer.tuya.com/cn/docs/iot/authorization-code-firmware-burning?id=K9br41pefnksv
根据文档准备前期工作,https://iot.tuya.com/pmg/devpanels

1、随便创建了个产品

https://iot.tuya.com/pmg/list
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》

2、生成授权码

https://iot.tuya.com/pmg/devpanels
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
然后绑定刚才创建的产品(插座),授权码也有了
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》

3、运行 云模组烧录授权平台

《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
设置相关参数
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
上图勾选“固件下载”,会下载固件到本地文件夹。 C:\Users\用户名\AppData\Roaming\Tuya\TYDA\bin

4、使用USB转TTL 烧录固件(自行考虑是否这么使用吧)

注意:BT3L烧录据客服说需要泰凌微的烧录器。这卖200多,显然有些肉疼。
参考:无需Telink也能烧录涂鸦BT3L,配合安信可的烧录工具,加上USB转TTL也可以完成烧录(SWS 和 RX短接),然后在根据教程完成授权。(不得不说,安信可 yyds)
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
烧录固件 C:\Users\用户名\AppData\Roaming\Tuya\TYDA\bin这个目录下面(这个固件生成需要前面的 设置中 勾选“固件下载”)
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
设置为 只授权
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
然后选择串口 运行
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》

Arduino 例程

打开 Arduino IDE,导入涂鸦SDK,“文件”-》“示例”-》涂鸦SDK里面有相关示例
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》

ble_led 例程(测试没啥用)

源码

/* * @FileName: led.ino * @Author: Tuya * @Email: * @LastEditors: Tuya * @Date: 2021-10-22 10:41:27 * @LastEditTime: 2021-10-27 19:48:31 * @Copyright: HANGZHOU TUYA INFORMATION TECHNOLOGY CO.,LTD * @Company: http://www.tuya.com * @Description: This demo is based on the Arduino UNO, and the LEDs on the UNO board are controlled by the Tuya Smart App. * Enter network connection mode when Pin7 to GND. * @Github: */

#include <TuyaBLE.h>
#include <SoftwareSerial.h>

TuyaBLE my_device;


/* Current LED status */
unsigned char led_state = 0;

/* Data point define */
#define DPID_SWITCH_LED 1


/* Stores all DPs and their types. PS: array[][0]:dpid, array[][1]:dp type. * dp type(TuyaDefs.h) : DP_TYPE_RAW, DP_TYPE_BOOL, DP_TYPE_VALUE, DP_TYPE_STRING, DP_TYPE_ENUM, DP_TYPE_BITMAP */
unsigned char dp_array[][2] =
{ 
    { DPID_SWITCH_LED, DP_TYPE_BOOL},
};

unsigned char pid[] = { "jxcevwfq"};
unsigned char mcu_ver[] = { "1.0.0"};

/* last time */
unsigned long last_time = 0;

void setup() 
{ 
  // Serial.begin(9600);
  Serial.begin(9600);

  //Initialize led port, turn off led.
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, LOW);

  //Enter the PID and MCU software version
  my_device.init(pid, mcu_ver);
  //incoming all DPs and their types array, DP numbers
  my_device.set_dp_cmd_total(dp_array, 1);
  //register DP download processing callback function
  my_device.dp_process_func_register(dp_process);
  //register upload all DP callback function
  my_device.dp_update_all_func_register(dp_update_all);

  last_time = millis();
}

void loop() 
{ 
  my_device.uart_service();

  /* LED blinks when network is being connected */
  if ((my_device.mcu_get_ble_work_state() != BLE_CONNECTED) && (my_device.mcu_get_ble_work_state() != BLE_SATE_UNKNOW)) { 
    if (millis()- last_time >= 500) { 
      last_time = millis();

      if (led_state == LOW) { 
        led_state = HIGH;
      } else { 
        led_state = LOW;
      }
      digitalWrite(LED_BUILTIN, led_state);
    }
  }
  
  delay(10);
}

/** * @description: DP download callback function. * @param {unsigned char} dpid * @param {const unsigned char} value * @param {unsigned short} length * @return {unsigned char} */
unsigned char dp_process(unsigned char dpid,const unsigned char value[], unsigned short length)
{ 
  switch(dpid) { 
    case DPID_SWITCH_LED:
      led_state = my_device.mcu_get_dp_download_data(dpid, value, length); /* Get the value of the down DP command */
      if (led_state) { 
        //Turn on
        digitalWrite(LED_BUILTIN, HIGH);
      } else { 
        //Turn off
        digitalWrite(LED_BUILTIN, LOW);
      }
      //Status changes should be reported.
      my_device.mcu_dp_update(dpid, value, length);
    break;

    default:break;
  }
  return TY_SUCCESS;
}

/** * @description: Upload all DP status of the current device. * @param {*} * @return {*} */
void dp_update_all(void)
{ 
  my_device.mcu_dp_update(DPID_SWITCH_LED, led_state, 1);
}

编译烧录

拔掉 BT3L开发板!!!,给Uno3烧写了 ble_led
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
不过这个程序没写啥内容,模块配网一直失败,呃,没啥用呀 不要了。

拓展

涂鸦蓝牙mesh模块BT3L+步进电机+Arduino

实现手机控制 电机转动,带动小装置控制 模拟按压开关

效果图

《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》
《涂鸦三明治BLE SoC 主控板(BT3L) 使用记录 + APP远控步进电机例程》

源码

unsigned int forward[4] = { 0x03,0x06,0x0c,0x09}; // 正转
unsigned int reverse[4]= { 0x03,0x09,0x0c,0x06}; // 反转
int IO_array[4] = { 8, 9, 10, 11};
int flag = 0;
int temp = 0;
int ble_in = 7;

void SetMotor(unsigned int InputData)
{ 
  if(InputData == 0x03)
  { 
    digitalWrite(8, HIGH);
    digitalWrite(9, HIGH);
    digitalWrite(10, LOW);
    digitalWrite(11, LOW);
  }
  else if(InputData == 0x06)
  { 
    digitalWrite(8, LOW);
    digitalWrite(9, HIGH);
    digitalWrite(10, HIGH);
    digitalWrite(11, LOW);
  }
  else if(InputData == 0x09)
  { 
    digitalWrite(8, HIGH);
    digitalWrite(9, LOW);
    digitalWrite(10, LOW);
    digitalWrite(11, HIGH);
  }
  else if(InputData == 0x0c)
  {   
    digitalWrite(8, LOW);
    digitalWrite(9, LOW);
    digitalWrite(10, HIGH);
    digitalWrite(11, HIGH);
  }
  else if(InputData == 0x00)
  { 
    digitalWrite(8, LOW);
    digitalWrite(9, LOW);
    digitalWrite(10, LOW);
    digitalWrite(11, LOW);
  }
}

/* 功能:转1/64圈 步距角5.625 360/5.625=64 减速比1/64 故64*64个脉冲转一圈 n 圈数 _direction 方向 1正转 非1反转 delay_ms delay_ms >= 2 */
void motor_circle(int n, int _direction, int delay_ms)
{ 
  int i, j;
  for(i = 0; i < n * 8; i++)
  { 
    for(j = 0; j < 4; j++)
    { 
      if(1 == _direction)
      { 
        SetMotor(0x00);
        SetMotor(forward[j]);
      }
      else
      { 
        SetMotor(0x00);
        SetMotor(reverse[j]);
      }

      delay(delay_ms > 2 ? delay_ms : 2);
    }
  }
}

void setup() { 
  // put your setup code here, to run once:
  int i = 0;
  for( i = 0 ; i < 4 ; i++ )
  { 
    pinMode(IO_array[i], OUTPUT);
  }
  pinMode(ble_in,INPUT); //定义蓝牙控制信号脚为输入接口
}

void loop() { 
  // 电机正转半圈
  // motor_circle(32, 1, 2);
  // 电机反转半圈
  // motor_circle(32, 0, 2);
  temp = digitalRead(ble_in);//读取数字7 口电平值赋给temp
  // temp和上一次的flag不同 则执行电机正反转
  if(temp != flag)
  { 
    flag = temp;
    motor_circle(8, 1, 2);
    delay(500);
    motor_circle(8, 0, 2);
  }
  
  delay(1000);
}
    原文作者:Love丶伊卡洛斯
    原文地址: https://blog.csdn.net/Ikaros_521/article/details/122036607
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞