tuya-open-sdk-for-device使用体验之Windows 下 MSYS2 编译 T2-U 开发板

2024-02-03 01:04

本文主要是介绍tuya-open-sdk-for-device使用体验之Windows 下 MSYS2 编译 T2-U 开发板,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

tuya-open-sdk-for-device 是一款跨芯片平台、操作系统的 IoT 开发框架。它基于通用南向接口设计,支持 Bluetooth、Wi-Fi、Ethernet 等通信协议,提供了物联网开发的核心功能,包括配网,激活,控制,升级等;它具备强大的安全合规能力,包括设备认证、数据加密、通信加密等,满足全球各个国家和地区的数据合规需求。

基于 tuya-open-sdk-for-device 开发的 IoT 产品,如果使用 tuya_cloud_service 组件的功能,就可以使用涂鸦APP、云服务提供的强大生态能力,并与 Power By Tuya 设备互联互通。

官方仓库地址为: https://github.com/tuya/tuya-open-sdk-for-device

tuya-open-sdk-for-device 当前支持在 Linux、Windows-WSL、Windows-MSYS2 等操作系统平台编译、一键烧录,macOS平台正在开发适配中尽情期待!

支持硬件

open-sdk-for-device 当前支持 Linux 运行和 T2-U 开发板,本次演示在 MSYS2 下编译 T2-U开发板。
在这里插入图片描述

T2-U 开发板详细资料可参考文档 https://developer.tuya.com/cn/docs/iot-device-dev/T2-U-development-board?id=Kckeahvfhu7v0。

获取方式
  • 方式一:前往 涂鸦 IoT 开发平台样品商店 获取

  • 方式二:前往 网页版淘宝网商品详情 获取

MSYS2 环境搭建

MSYS2 (Minimal SYStem 2) 是一个MSYS的独立改写版本,主要用于 shell 命令行开发环境。同时它也是一个在Cygwin (POSIX 兼容性层) 和 MinGW-w64(从MinGW-生成)基础上产生的,追求更好的互操作性的 Windows 软件。MSYS2 官网 https://www.msys2.org 有详细介绍。

MSYS2 最大的特色是集成了 pacman 可以很方便的在线安装软件包。

MSYS2 下载

参照 https://www.msys2.org/wiki/MSYS2-installation 说明下载安装。在 https://repo.msys2.org/distrib/x86_64 下载 64bit 安装包,当前最新版本为 20240103 版,可以直接点击 https://repo.msys2.org/distrib/x86_64/msys2-x86_64-20240113.exe 下载。

安装

下载完成后直接双击开始安装,默认按照路径为 C:\msys64,后续需要运行 MSYS2 可在该目录下运行。
在这里插入图片描述

安装完成后即可运行。

在这里插入图片描述

软件包安装

使用 MSYS2 最大的优势是可以使用 pacman 包管理工具一键安装软件包,使用以下命令一键安装开发所需的软件:

$ pacman -S python3 python3-pip cmake make git tar unzip 

根据安装提示输入 Y 后开始安装。

在这里插入图片描述

等待安装完成。

tuya-open-sdk-for-device 使用

下载

使用 git 命令下载

$ git clone --recurse https://github.com/tuya/tuya-open-sdk-for-device

修改代码

下载完成后按照 README.md 中说明,完成以下工作:

  1. 创建产品并获取产品的 PID:

参考文档 https://developer.tuya.com/cn/docs/iot-device-dev/application-creation?id=Kbxw7ket3aujc 在 https://iot.tuya.com 下创建产品,并获取到创建产品的 PID 。

  1. 获取正确的 uuid 和 authkey:

参考文档 https://developer.tuya.com/cn/docs/iot-device-dev/application-creation?id=Kbxw7ket3aujc#title-4-%E7%AC%AC%E4%BA%94%E6%AD%A5%EF%BC%9A%E9%A2%86%E5%8F%96%E6%8E%88%E6%9D%83%E7%A0%81 获取授权码清单,该清单中包含连接涂鸦云服务的 uuid 和 authkey。

  1. 修改示例:

examples/switch_demo/src/tuya_config.h 文件中 TUYA_PRODUCT_KEYTUYA_DEVICE_UUIDTUYA_DEVICE_AUTHKEY 宏分别对应 pid 和 uuid 、authkey,请根据步骤 1 和 2 分别获取到的 PID 及 uuid 、authkey 正确修改,修改后删除 #error 提示语句。

配置工程

依次执行以下命令配置当前编译工程

  1. 选择 board
$ ./configure
Boards1. linux-ubuntu-6.2.0_64Bit2. t2

选择 2. t2

  1. 选择配置
Pre-config1. linux.config2. t2.config

选择 2. t2.config

  1. 选择编译示例
Examples1. hello_world2. switch_demo

选择 2. switch_demohello_world 为最小工程示例,开发者自行创建工程可以使用在最小工程上修改。

选择完成后,工程会根据当前操作系统环境自行下载对应的 toolchain 并自动解压至对应的目录。

编译

open-sdk-for-device 采用 CMake 编译体系。根据提示,输入以下命令:

$ mkdir build; cd build; cmake .. 
$ make example -j8

MSYS2 与 mingw、cygwin 一样,编译运行速度较 Linux 操作系统慢,所以在运行编译的时候加入了并行编译指令 -j8 提速。

一键烧录

编译完成后,系统将根据你当前的目录和编译工程名,提示烧录命令:

###################################################################################################################
Project switch_demo build complete. To flash, run this command:
/home/cys/tuya-open-sdk-for-device/board/t2/tools/tyutool/cli.exe write -d T2 -p [Port] -b [Baudrate] -f /home/cys/tuya-open-sdk-for-device/build/bin/switch_demo_1.0.0/switch_demo_QIO_1.0.0.bin
Port: COM3 or COM4 ...
Baudrate: 921600 or 1500000 or 2000000 ...Flash tool user manual at /home/cys/tuya-open-sdk-for-device/board/t2/tools/tyutool/README.md
###################################################################################################################

注:
路径会根据当前项目所在目录自行修改

复制该命令,并修改:

  • [Port]:当前烧录串口号(T2-U开发板自带 2个串口,1号串口和用户通讯串口;2号串口为日志打印串口)
  • [Baudrate]:可根据当前 USB-TTL 转换器支持的波特率合理选择烧录波特率

示例:

$ /home/cys/tuya-open-sdk-for-device/board/t2/tools/tyutool/cli.exe write -d T2 -p COM22 -b 921600 -f /home/cys/tuya-open-sdk-for-device/build/bin/switch_demo_1.0.0/switch_demo_QIO_1.0.0.bin
[INFO]: tyut_logger init done.
[INFO]: Run Tuya Uart Tool.
[INFO]: Use default start address: [0x00]
[INFO]: Waiting Reset ...
[INFO]: link check success
[INFO]: sync baudrate 921600 success
Erasing: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 8 bytes/s   0:00:00 / 0:00:00''
[INFO]: Erase flash success
Writing: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 21 bytes/s   0:00:19 / 0:00:00''
[INFO]: Write flash success
CRCChecking: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0 bytes/s   0:00:04 / 0:00:00''
[INFO]: CRC check success
[INFO]: Reboot done
[INFO]: Flash write success.

运行

烧录完成后按 RST 按钮或重新上电即可运行新程序,未配网设备会自动进入配网状态。将日志串口连接至电脑后,看日志可发现蓝牙已经进行广播状态。

[02-02 08:27:38 ty I][tuya_iot.c:853] Activated data remove successed
[02-02 08:27:38 ty D][switch_demo.c:77] Tuya Event ID:11(TUYA_EVENT_RESET_COMPLETE)
[02-02 08:27:38 ty W][tuya_iot.c:494] CLIENT RESTART!
[02-02 08:27:38 ty D][tuya_iot.c:650] STATE_START
[02-02 08:27:38 ty I][tuya_iot.c:663] Activation data read fail, go activation mode...
[02-02 08:27:38 ty D][switch_demo.c:77] Tuya Event ID:1(TUYA_EVENT_BIND_START)
[02-02 08:27:38 ty I][switch_demo.c:80] Device Bind Start!
[02-02 08:27:38 ty I][switch_demo.c:81] Device Free heap 60168
[02-02 08:27:38 ty D][netcfg.c:210] netcfg module start type:0x2
[02-02 08:27:38 ty D][ble_netcfg.c:77] bt netcfg start
[02-02 08:27:38 ty D][netcfg.c:32] start 0x2 ret:0
[02-02 08:27:38 ty D][netconn_wifi.c:70] auto connect stop 4
[02-02 08:27:39 ty D][netconn_wifi.c:157] auto conn timeout cnt 0, stat 4
[02-02 08:27:40 ty D][tuya_health.c:59] feed watchdog
[02-02 08:27:40 ty D][ble_mgr.c:377] ble monitor check iot is disconnected, start adv!
[02-02 08:27:40 ty I][ble_gap.c:2248] GAP init: stop adv
[02-02 08:27:40 ty E][ble_mgr.c:338] ret:-28683
[02-02 08:27:40 ty N][ble_gap.c:2509] Start Adv
[02-02 08:27:40 ty N][ble_mgr.c:343] ble adv updated 0
[02-02 08:27:43 ty D][tuya_lan.c:245] i:0,time:1706862463,time:1706862433,fault:0
[02-02 08:27:43 ty D][lan_sock.c:342] unreg post queue 4
[02-02 08:27:44 ty D][lan_sock.c:143] unreg lan sock 4 and close it

配网

T2-U 开发板使用的是 T2-U Wi-Fi && 蓝牙双模模组,支持蓝牙配网。连接手机 Wi-Fi 至路由器,并打开手机蓝牙功能,并打开 智能生活 APP 现当前设备,也可以通过点击 智能生活 APP 右上角 + 按钮手工发现设备。

在这里插入图片描述

控制

设备添加完成后会在设备列表中,点击该设备即可进入控制界面。

在这里插入图片描述

配网及控制相关文档可点击 https://developer.tuya.com/cn/docs/iot-device-dev/TuyaOS-Quick_Start-demostration?id=Kc557s09ol9o1 。

接下来就让我们发挥创意,开发自己想要的智能设备吧!

这篇关于tuya-open-sdk-for-device使用体验之Windows 下 MSYS2 编译 T2-U 开发板的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/672546

相关文章

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

Linux使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

C++ Primer 多维数组的使用

《C++Primer多维数组的使用》本文主要介绍了多维数组在C++语言中的定义、初始化、下标引用以及使用范围for语句处理多维数组的方法,具有一定的参考价值,感兴趣的可以了解一下... 目录多维数组多维数组的初始化多维数组的下标引用使用范围for语句处理多维数组指针和多维数组多维数组严格来说,C++语言没

在 Spring Boot 中使用 @Autowired和 @Bean注解的示例详解

《在SpringBoot中使用@Autowired和@Bean注解的示例详解》本文通过一个示例演示了如何在SpringBoot中使用@Autowired和@Bean注解进行依赖注入和Bean... 目录在 Spring Boot 中使用 @Autowired 和 @Bean 注解示例背景1. 定义 Stud