Skip to content

Latest commit

 

History

History
executable file
·
239 lines (196 loc) · 11.3 KB

README_zh.md

File metadata and controls

executable file
·
239 lines (196 loc) · 11.3 KB

tuyaopen

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 命令手工下载。

设置与编译

step1. 设置环境变量

$ cd tuyaopen
$ export PATH=$PATH:$PWD

或将 tuyaopen 路径添加到系统环境变量中。

tuyaopen 通过 tos 命令进行编译、调试等操作,tos 命令会根据环境变量中设置的路径查找 tuyaopen 仓库,并执行对应操作。

tos 命令的详细使用方法,请参考 tos 命令

step2. 设置 platform

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 文件配置项目多平台同时编译,可参考多平台配置

step3. 编译

选择当前编译的 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 配置中修改。

step4. menuconfig 配置

选择需配置的 examples 或 apps 对应工程,在对应工程目录下运行如下命令进行菜单化配置:

$ cd examples/get-started/sample_project
$ tos menuconfig

配置当前工程,配置完成后保存退出,编译工程。

烧录

GUI 工具烧录

tyutool gui 烧录工具已支持 T2/T3/T5/BK7231N/LN882H 等多种芯片串口烧录,支持 windows/Linux/macOS 等操作系统,请根据运行操作系统选择对应的 GUI 烧录工具。

命令行烧录

可通过 tos flash 命令一键烧录

  1. 在 Linux 环境下需要先使用如下命令设置串口权限,否则运行会报错。
$ sudo usermod -aG dialout $USER
  1. 在需要编译完成后的项目中运行 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 后才可以进行串口烧录。

支持 platform 列表

名称 支持状态 介绍 调试日志串口
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 目录下,可点击 云连接应用

platform 新增与适配

tuyaopen 支持新增与适配新的 platform,具体操作请参考 platform 新增与适配

FAQ

  1. tuyaopen 支持的 platform 通过子仓库动态下载,更新 tuyaopen 仓库不会主动更新子仓库,如遇到问题无法正常编译,请至 platform 文件夹下对应的目录下使用 git pull 命令更新,或删除 platform 文件夹下对应目录后再次下载。

  2. tuyaopen 连提供了丰富的云连接应用示例,如发现无法正常连接或无法正常激活设备,请参考 云连接应用

License

本项目的分发遵循 Apache License 版本 2.0。有关更多信息,请参见 LICENSE 文件。

贡献代码

如果您对 tuyaopen 感兴趣,并希望参与 tuyaopen 的开发并成为代码贡献者,请先参阅 贡献指南

免责与责任条款

用户应明确知晓,本项目可能包含由第三方开发的子模块(submodules),这些子模块可能独立于本项目进行更新。鉴于这些子模块的更新频率不受控制,本项目无法确保这些子模块始终为最新版本。因此,用户在使用本项目时,若遇到与子模块相关的问题,建议自行根据需要进行更新或于本项目提交问题(issue)。

若用户决定将本项目用于商业目的,应充分认识到其中可能涉及的功能性和安全性风险。在此情况下,用户应对产品的所有功能性和安全性问题承担全部责任,应进行全面的功能和安全测试,以确保其满足特定的商业需求。本公司不对因用户使用本项目或其子模块而造成的任何直接、间接、特殊、偶然或惩罚性损害承担责任。

相关链接