实现的功能:

l  APP控制月球灯

l  本地月球灯控制

l  APP控制“大白”颜色,实现各种颜色变身

l  门状态传感器状态APP显示

l  网络状态指示灯,连接服务器长亮,断开后闪烁

l  配网按键

l  云端定时功能

l  云端报警提示功能

l  云端历史数据查看

l  远程升级介绍

视频演示:https://www.bilibili.com/video/BV1jg411P7f6

一、界面展示

       

       

二、 涂鸦开发概述

零代码开发

提供可视化功能配置界面,无需任何编程经验,只需要在线配置好产品的功能,及可自动生成固件

MCU SDK开发

在MCU上进行代码开发,通过串口和涂鸦模组进行通信,从而实现与平台通信

模组SDK开发

开发者利用涂鸦提供的SDK对模组进行二次开发,灵活性强,节省成本

先注册一个账号:

https://t.tuya.com/AY1D3R8gZc

三、硬件选型

Wi-Fi&BLE SoC NANO主控板(BK7231N)

l  Wi-Fi &BLE 双模芯片

l   1:MICROUSB(CN1) :即是 5V DC 输入口,也扩展了 2 个串口功能。

l   2:拨码开关(S1): 拨码切到 ON 方向导通,通断 USB 转串口芯片的双串口和芯片串口之间的链路。

l   3: 指示灯(D3):3.3V 电源指示灯。

l   4:按键(S2):通过 P9 检测,初始化高电平,按下为低电平。

l   5:指示灯(D2):通过 P16 控制,低电平点亮。

l   6:按键(RST):复位按键,按下后芯片复位。

原理图:

两个串口:

其中

l  A可以作为程序下载使用的

l  B通常是用来打印日志的

参考:

https://developer.tuya.com/cn/docs/iot/tuya-sandwich-wifi-and-ble-soc-board-BK7231N?id=Kao72e6net3bs

对标的模组为:

l  内置低功耗 32 位 CPU,可以兼作应用处理器

l  主频达 120MHz

l  工作电压:3.0V~3.6V

l  内置2Mbyte 闪存和 256 KB RAM

l  外设:5×PWM,2×UART,1×SPI

l  Wi-Fi 连通性

n  802.11 b/g/n

n  通道1-14@2.4GHz

n  支持WEP,WPA/WPA2,WPA/WPA2 PSK (AES) 安全模式

n  802.11b模式下最大+16dBm的输出功率

n  支持STA/AP/STA+AP工作模式

n  支持SmartConfig和AP两种配网方式(包括Android和IOS设备)

n  板载PCB天线,天线峰值增益2.2dBi

n  工作温度:-40℃ to 105℃

l  蓝牙连通性

n  蓝牙模式支持6 dBm 发射功率

n  完整的蓝牙共存接口

n  板载PCB天线,天线峰值增益2.2dBi

https://developer.tuya.com/cn/docs/iot/cbu-module-datasheet?id=Ka07pykl5dk4u

四、 创建一个产品(模组SDK开发)

创建产品步骤:

  1. 选择品类
  2. 选择开发方式为“自定义方案”
  3. 配置功能点(DP点)
  4. 制作界面,推荐使用Studio面板制作
  5. 硬件开发选型,点击“TuyaOS”,选择支持模组SDK开发的模组
  6. 下载模组的SDK和领取授权码

五、编程环境搭建

Ubuntu虚拟机环境搭建

https://developer.tuya.com/cn/docs/iot/SoC-redevelopment_Windows?id=Kauqrxxka0wv6

安装编译工具

sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install net-tools build-essential wget git python libc6-i386

共享文件夹

共享Linux文件夹,可以实现在Windows中编程,在Linux中编译

Samba安装

sudo apt-get install samba cifs-utils samba-common

在用户目录(/home/dong/)下创建共享文件夹,并且给文件夹可读可写可执行权限

mkdir share
chmod 777 -R share

修改samba配置

sudo gedit /etc/samba/smb.conf

在文件最后面添加配置信息

[share]
path = /home/dong/share
available = yes
browseable = yes
public = no
writable = yes

设置共享文件夹登录账号

sudo smbpasswd -a dong

重启服务

sudo service smbd restart

Windows操作

查询Linux IP ,使用如下进行访问

\\192.168.199.129\share

六、SDK使用及程序编写

下载刚刚创建产品的模组SDK

复制到Linux共享目录下,通过命令解压

tar -zxvf b1daf5huhq0w.tar.gz

l  apps文件夹:用于存放示例工程和后续创建的工程放置处

l  platforms文件夹:用于存放模组的原厂库和工具,在编译时会由build_app.sh进行下载

l  sdk文件夹:涂鸦模组SDK的头文件和库文件

l  build_app.sh:编译脚本

官方例程:

git clone https://github.com/Tuya-Community/bk7231n_light1_io_xx.git

文档:https://developer.tuya.com/cn/docs/iot/quick-start?id=Kaytf7h5yhp8y

在有build_app.sh文件下编译:

指令格式:

sh build_app.sh ./apps/工程名目录名/ 工程名(工程名目录名) 版本号

示例:

sh build_app.sh ./apps/bk7231n_light1_io_dxd/ bk7231n_light1_io_dxd 1.5

编译成功:

编译成功后在工程目录下会创建“output”文件夹,并且里面有对应的版本

输出

l  QIO是生产固件,生产时下载

l  UA是用户固件,本地调试用原厂工具烧录时使用

l  UG是升级固件

程序介绍:

https://developer.tuya.com/cn/docs/iot/redevelopment?id=Kaytfdoorwc24

七、 固件烧录&授权

上传固件

必须要上传一个固件,然后进行授权烧录一次,如果直接用原厂工具烧录,不上传固件,硬件会始终无法配对

上架前:

上架后:

固件标识名是非常重要的,编译时的“工程名目录名”,这个授权之后就是绑定关系了,后续如果更改,需要云端也下架更改,比较麻烦。原厂工具烧录时也必须同名编译。

获取授权码

每个硬件都要有个独立的授权码,才能正常连接到云平台,就像硬件身份证一样

方式一(模组):

如果是第一次使用平台,可以获取两个免费的授权码

方式二(开发板):

开发板可以通过ID和PASSWD获取一个授权码,这个开发板上一般会有贴纸

烧录方式1,云模组烧录平台,新板子必须经过一次

这里是烧录也是授权,烧录的固件是上传到云平台的固件

将编译输出的固件上传到产品下,获取激活码(生产凭证)

申请一个PMS账号

https://pms.tuya.com/login

需要将我们的生成凭证在此确认

下载云模组烧录软件进行烧录

https://github.com/TuyaInc/TUYA_PTS_SDK/raw/master/Tools/TYDA_Setup_Online.exe

点击运行即可开始下载,点击后需要手动复位模组

原厂工具烧录

在使用原厂工具烧录前,为了确保APP可以正常控制设备,必须进过一次“云模组”烧录,后续就不需要每次更改后上传云平台,直接下载会更加方便些,烧录的固件是用户固件(UA)

下载原厂工具

https://images.tuyacn.com/smart/shiliu_zone/SOC_Develop/tools/bk_writer_gui_V1.6.3.rar

这是个免安装的软件

  1. 选择烧录的模组的芯片,创建产品时可以查看到
  2. 选择烧录的UA文件
  3. 起始地址
  4. 地址长度
  5. 选择烧录串口,烧录波特率可以大一些
  6. 点击烧录,后要进行手动复位

烧录可能会遇到的问题

使用云模组烧录授权平台时,烧录到一半可能会出现这个问题,使用Wi-Fi&BLE SoC NANO主控板时,若出现“获取RF标志位失败”的情况,可在授权阶段,将串口2的RXD引脚(P01引脚)和GND短接。

更多异常解决:

https://developer.tuya.com/cn/docs/iot/flash-and-authorize?id=Kaytfatwdbfj2

八、设计思路

设计思路

https://www.bilibili.com/video/BV1jg411P7f6

九、个人导航

【B站 | 东小东bili】 https://space.bilibili.com/162091292

【博客园 | 东小东 】https://www.cnblogs.com/dongxiaodong/

【CSDN | 东小东博客】https://blog.csdn.net/dongxiaodongvip

【微信 | 东小东】dongxiaodongwx

制作一个有趣的涂鸦物联网小项目(涂鸦模组SDK开发 CBU BK7231N WiFi+蓝牙模组 HSV彩色控制)的更多相关文章

  1. iOS:quartz2D绘图小项目(涂鸦画板)

    介绍:学了quartz2D的绘图知识后,我根据它的一些功能制作了一个小项目:涂鸦画板. 功能:绘制各种图形,还可以选取相册上的照片做涂鸦,然后保存到相册中.其中,还包括功能有:颜色的选取.线宽的选取. ...

  2. 【涂鸦物联网足迹】涂鸦云平台消息服务—顺带Pulsar简单介绍

    前序系列文章>>> [涂鸦物联网足迹]涂鸦云平台标准指令集 开放消息平台主要通过 Pulsar 主动推送各种事件数据给外部合作伙伴,以满足合作伙伴对消息实时性和消息持久化的要求. 一 ...

  3. 一个vue练手的小项目

    编程路上的菜鸟一枚 : 最近接触了vue 然后写了一个练手的项目 使用vue-cli脚手架来搭建了的项目 技术: vue2  + vue-router  + ES6 + axios 框架有 mint- ...

  4. VC++:制作一个控件注册的小工具

    在平时的工作中,时常需要注册与反注册ActiveX控件,有时需要判断控件是否已经注册.   所以通过查找资料编写了一个控件注册的小工具,欢迎学习交流,不当之处请多多交流. 先直接上图:   主要代码: ...

  5. 一个基于TCP/IP的小项目,实现广播消息的功能。(超详细版)

    1.结合现状 功能分析 该功能基于上个项目的改进,主要是通过对服务器端代码的修改,以及对客户端作少许修改,实现开启多客户端时,一个客户端发送消息,达到对所有客户端广播的效果.可参考网吧里的点歌系统,比 ...

  6. 又见angular----步一步做一个angular4小项目

    这两天看了看angular4的文档,发现他和angular1.X的差别真的是太大了,官方给出的那个管理英雄的Demo是一个非常好的入门项目,这里给出一个管理个人计划的小项目,从头至尾一步一步讲解如何去 ...

  7. Swift 中使用 SwiftyJSON 制作一个比特币价格 APP

    Swift 中处理 JSON 数据有很多种方式,可以使用原生的 NSJSONSerialization,也可以使用很多第三方库.原生的 NSJSONSerialization 方式这篇文章中介绍过.这 ...

  8. 如何使用OLAMI自然语言理解开放平台API制作自己的智能对话助手小程序

    我们经常在电影中看到机器和人对答如流,随着越来越多自然语言开放平台的出现,IT爱好者制作一个自己的APP或者小玩具等逐渐可以变为现实. 自然语言对话即你的APP或者你制作的工具.机器人等能够对用户输入 ...

  9. vue练手小项目--眼镜在线试戴

    最近看到了一个眼镜在线试戴小项目使用纯js手写的,本人刚学习vue.js没多久,便试试用vue做做看了,还没完善. 其中包括初始图片加载,使用keywords查找,父子组件之间传递信息,子组件之间传递 ...

随机推荐

  1. 【JAVA】笔记(3)---封装;如何选择声明静态变量还是实例变量;如何选择声明静态方法还是实例方法;静态代码块与实例代码块的执行顺序与用途;

    封装: 1.目的:保证对象中的实例变量无法随意修改/访问,只能通过我们自己设定的入口,出口(set / get)来间接操作:屏蔽类中复杂的结构,使我们程序员在主方法中关联对象写代码时,思路/代码格式更 ...

  2. 大一C语言学习笔记(5)---函数篇-定义函数需要了解注意的地方;定义函数的易错点;详细说明函数的每个组合部分的功能及注意事项

    博主学习C语言是通过B站上的<郝斌C语言自学教程>,对于C语言初学者来说,我认为郝斌真的是在全网C语言学习课程中讲的最全面,到位的一个,这个不是真不是博主我吹他哈,大家可以去B站去看看,C ...

  3. 简单的SQl时间序列生成,每次时间间隔10分钟。

    create table #timeseries(Times datetime not null) go declare @firstdate datetime , @lastdate datetim ...

  4. java更开源-安全可靠国产系统背景下的应有.NET Core的一席之地

    "安可"背景下的中国软件开发 在中美当前背景下的安全可靠国产系统(简称安可),安可产业要实现技术自主可控,需要在四个层面逐步实现:基础硬件设施,如芯片.服务器.存储.交换机.路由器 ...

  5. [bzoj3524]Couries

    首先用到bzoj2456的做法,因为要求这个数出现次数超过了一半,如果其与不同的数两两相消的话最终一定会剩下自身(如果不保证存在可能会剩下别的,但保证存在了只会剩下自身),然后再用可持久化线段树维护即 ...

  6. Linux学习 - 树莓派4b的U-Boot的初识

    Linux学习 - 树莓派4b的U-Boot的初识 初识U-Boot 学习书籍:<[正点原子]I.MX6U嵌入式Linux驱动开发指南V1.5.1> 章节:第三十章 学习内容: 书中介绍u ...

  7. negix启动不成功

    negix启动闪退,猜测可能端口占用,查看log发现 2020/11/30 11:38:40 [emerg] 15632#8688: CreateFile() "F:\项目工具\nginx- ...

  8. 深入理解Redis 数据结构—简单动态字符串sds

    Redis是用ANSI C语言编写的,它是一个高性能的key-value数据库,它可以作用在数据库.缓存和消息中间件.其中 Redis 键值对中的键都是 string 类型,而键值对中的值也是有 st ...

  9. Codeforces 605D - Board Game(树状数组套 set)

    Codeforces 题目传送门 & 洛谷题目传送门 事实上是一道非常容易的题 很容易想到如果 \(c_i\geq a_j\) 且 \(d_i\geq b_j\) 就连一条 \(i\to j\ ...

  10. 三个 AGC D(AGC037D、AGC043D、AGC050D)

    大概就 lxr 讲了 4 个 AGC 的 D,有一个以前做过了不算,另外三个都会做罢( 为了避免开三个博客就把它们合并到一起了 AGC 037 D lxr:难度顺序排列大概是 037<043&l ...