English | 简体中文
tuyaopen 是一款跨芯片平台、操作系统的 IoT 开发框架。它基于通用南向接口设计,支持 Bluetooth、Wi-Fi、Ethernet 等通信协议,提供了物联网开发的核心功能,包括配网,激活,控制,升级等;它具备强大的安全合规能力,包括设备认证、数据加密、通信加密等,满足全球各个国家和地区的数据合规需求。
基于 tuyaopen 开发的 IoT 产品,如果使用 tuya_cloud_service 组件的功能,就可以使用涂鸦APP、云服务提供的强大生态能力,并与 Power By Tuya 设备互联互通。
同时 tuyaopen 将不断拓展,提供更多云平台接入功能,及语音、视频、人脸识别等功能。
Ubuntu and Debian
$ sudo apt-get install lcov cmake-curses-gui build-essential wget git python3 python3-pip python3-venv libc6-i386 libsystemd-dev
$ git clone https://github.com/tuya/tuyaopen.git
tuyeopen 仓库中包含多个子模块,tos 工具会在编译前检查并自动下载子模块,也可以使用 git submodule update --init
命令手工下载。
$ cd tuyaopen
$ export PATH=$PATH:$PWD
或将 tuyaopen 路径添加到系统环境变量中。
tuyaopen 通过 tos 命令进行编译、调试等操作,tos 命令会根据环境变量中设置的路径查找 tuyaopen 仓库,并执行对应操作。
tos 命令的详细使用方法,请参考 tos 命令。
tos 工具通过项目工程目录下的 project_build.ini
文件配置编译 platform,project_build.ini
包括以下字段:
- project: 项目名称,可自定义,建议工程目录名_<platform/chip name>。
- platform: 编译目标平台,可选值:ubuntu、t2、t3、t5、esp32、ln882h、bk7231x。该名称与
platform/platform_config.yaml
中定义的 name 名称一致。 - chip: 可选值,当 platform 中支持多 chip 时,需指定 chip 名称。
- platform 为 esp32 时可选值:esp32、esp32c3。
- platform 为 bk7231x 时可选值:bk7231n。
示例如下:
[project:sample_project_bk7231x]
platform = bk7231x
chip = bk7231n
同时 tos 工具可通过 project_build.ini
文件配置项目多平台同时编译,可参考多平台配置。
选择当前编译的 examples 或 apps 对应工程,运行如下命令编译:
$ cd examples/get-started/sample_project
$ tos build
编译完成后目标文件位于当前编译项目 .build/<project>/bin
目录下,如 examples/get-started/sample_project/.build/sample_project_t2/bin
目录。
编译后的目标文件包括:
- sample_project_t2_QIO_1.0.0.bin:包括 boot 在内的完整固件,用于烧录。
- sample_project_t2_UA_1.0.0.bin:未包括 boot 的应用固件,使用该文件需根据不同的 platform/chip 烧录该 bin 至对应的地址,否则可能无法正常运行。
- sample_project_t2_UG_1.0.0.bin:用于 OTA 升级的 bin 文件,无法直接烧录后运行。
项目版本默认为 1.0.0
,可在 menuconfig 配置中修改。
选择需配置的 examples 或 apps 对应工程,在对应工程目录下运行如下命令进行菜单化配置:
$ cd examples/get-started/sample_project
$ tos menuconfig
配置当前工程,配置完成后保存退出,编译工程。
tyutool gui 烧录工具已支持 T2/T3/T5/BK7231N/LN882H 等多种芯片串口烧录,支持 windows/Linux/macOS 等操作系统,请根据运行操作系统选择对应的 GUI 烧录工具。
- windows:tyutool_win
- Linux:tyutool_linux.tar
- macOS_x86:tyutool_mac_x86
- macOS_arm64:tyutool_mac_arm64.zip
可通过 tos flash 命令一键烧录
- 在 Linux 环境下需要先使用如下命令设置串口权限,否则运行会报错。
$ sudo usermod -aG dialout $USER
- 在需要编译完成后的项目中运行 tos flash 命令一键烧录,tos flash 会根据当前运行的环境自动下载对应的 tyutool 工具,并自动烧录。
$ cd examples/get-started/sample_project
$ tos flash
tyutool params:
[INFO]: tyut_logger init done.
[INFO]: Run Tuya Uart Tool.
[INFO]: Use default baudrate: [921600]
[INFO]: Use default start address: [0x00]
--------------------
1. /dev/ttyS0
2. /dev/ttyS1
3. /dev/ttyS2
4. /dev/ttyS3
5. /dev/ttyS4
6. /dev/ttyS5
7. /dev/ttyS6
8. /dev/ttyS7
9. /dev/ttyS8
10. /dev/ttyS9
11. /dev/ttyS10
12. /dev/ttyS11
13. /dev/ttyS12
14. /dev/ttyS13
15. /dev/ttyS14
16. /dev/ttyS15
17. /dev/ttyS16
18. /dev/ttyS17
19. /dev/ttyS18
20. /dev/ttyS19
21. /dev/ttyS20
22. /dev/ttyS21
23. /dev/ttyS22
24. /dev/ttyS23
25. /dev/ttyS24
26. /dev/ttyS25
27. /dev/ttyS26
28. /dev/ttyS27
29. /dev/ttyS28
30. /dev/ttyS29
31. /dev/ttyS30
32. /dev/ttyS31
33. /dev/ttyUSB0
^^^^^^^^^^^^^^^^^^^^
Select serial port: 33 ## 选择正确的串口
[INFO]: Waiting Reset ...
[INFO]: unprotect flash OK.
[INFO]: sync baudrate 921600 success
Erasing: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 4 bytes/s 0:00:04 / 0:00:00
[INFO]: Erase flash success
Writing: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 16 bytes/s 0:00:18 / 0:00:00
[INFO]: Write flash success
[INFO]: CRC check success
[INFO]: Reboot done
[INFO]: Flash write success.
注:烧录过程中需要根据芯片实际情况进入 boot 后才可以进行串口烧录。
名称 | 支持状态 | 介绍 | 调试日志串口 |
---|---|---|---|
Ubuntu | 支持 | 可在 ubuntu 等 Linux 主机上直接运行 | |
T2 | 支持 | 支持模组列表: T2-U | Uart2/115200 |
T3 | 支持 | 支持模组列表: T3-U T3-U-IPEX T3-2S T3-3S T3-E2 等 | Uart1/460800 |
T5 | 支持 | 支持模组列表: T5-E1 T5-E1-IPEX 等 | Uart1/460800 |
ESP32/ESP32C3 | 支持 | Uart0/115200 | |
LN882H | 支持 | Uart1/921600 | |
BK7231N | 支持 | 支持模组列表: CBU CB3S CB3L CB3SE CB2S CB2L CB1S CBLC5 CBLC9 CB8P 等 | Uart2/115200 |
raspberry pico-w | 开发中,将在 2024-11 发布 |
tuyaopen 提供了丰富的示例工程,方便开发者快速上手,了解 tuyaopen 的使用。
$ tuyaopen
├── ai
│ └── llm_demo
├── ble
│ ├── ble_central
│ └── ble_peripher
├── get-started
│ └── sample_project
├── peripherals
│ ├── adc
│ ├── gpio
│ ├── i2c
│ ├── pwm
│ ├── spi
│ ├── timer
│ └── watchdog
├── protocols
│ ├── http_client
│ ├── mqtt
│ ├── tcp_client
│ └── tcp_server
├── system
│ ├── os_event
│ ├── os_kv
│ ├── os_mutex
│ ├── os_queue
│ ├── os_semaphore
│ ├── os_sw_timer
│ └── os_thread
└── wifi
├── ap
├── low_power
├── scan
└── sta
每个示例工程下对应有 README.md 文件,详细介绍了示例工程的配置、编译、运行等操作。
tuyaopen 提供了丰富的云连接应用示例,相关应用位于 apps 目录下,可点击 云连接应用。
tuyaopen 支持新增与适配新的 platform,具体操作请参考 platform 新增与适配。
-
tuyaopen 支持的 platform 通过子仓库动态下载,更新 tuyaopen 仓库不会主动更新子仓库,如遇到问题无法正常编译,请至 platform 文件夹下对应的目录下使用
git pull
命令更新,或删除 platform 文件夹下对应目录后再次下载。 -
tuyaopen 连提供了丰富的云连接应用示例,如发现无法正常连接或无法正常激活设备,请参考 云连接应用。
本项目的分发遵循 Apache License 版本 2.0。有关更多信息,请参见 LICENSE 文件。
如果您对 tuyaopen 感兴趣,并希望参与 tuyaopen 的开发并成为代码贡献者,请先参阅 贡献指南。
用户应明确知晓,本项目可能包含由第三方开发的子模块(submodules),这些子模块可能独立于本项目进行更新。鉴于这些子模块的更新频率不受控制,本项目无法确保这些子模块始终为最新版本。因此,用户在使用本项目时,若遇到与子模块相关的问题,建议自行根据需要进行更新或于本项目提交问题(issue)。
若用户决定将本项目用于商业目的,应充分认识到其中可能涉及的功能性和安全性风险。在此情况下,用户应对产品的所有功能性和安全性问题承担全部责任,应进行全面的功能和安全测试,以确保其满足特定的商业需求。本公司不对因用户使用本项目或其子模块而造成的任何直接、间接、特殊、偶然或惩罚性损害承担责任。
- Arduino 版 tuyaopen:https://github.com/tuya/arduino-tuyaopen
- Luanode 版 tuyaopen:https://github.com/tuya/luanode-tuyaopen