你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于STM32对接涂鸦wifi模块经验分享

[复制链接]
攻城狮Melo 发布时间:2023-6-11 19:00
前言

本项目从了解平台到样品实际落地,还是挺方便的,这得得益于涂鸦的SDK和相关资料,

本文意在于对本次项目做个笔记,方便以后再次用到,也给大家一个参考。

最后所有的资料原理图和程序都会上传至资源。

一、如何选择合适的涂鸦wifi模块?

第一步,在这个问题上,没有接触过涂鸦的朋友或许会犯迷糊。

没办法,没法偷懒了(按照以前开发的流程,厂家推荐一款wifi模块,大部分时间会花在写模块驱动,测试上面),只能自己去看看平台操作流程,去看资料,然后直接试着操作起来,之后才发现其实涂鸦生态做得挺完善的,只要熟悉了整套系统,哪个部分都不需要画太多时间,可能涂鸦项目画PCB需要的时间才是最多的了。

因为wifi模块驱动,手机APP涂鸦都做好了……而且,你需要做什么产品,平台会推荐你最合适的wifi模块,前提是你得在IoT平台上创建产品。

所以使用那个型号的涂鸦wifi模块不需要自己根据每一个型号的资料去选择,进入涂鸦 IoT平台,注册账号后,创建你需要设计的产品,配置好自己产品功能后,平台自己会给你推荐合适的wifi模块。

二、涂鸦IoT平台操作2.1 创建产品

接下来就来讲解一下涂鸦IoT平台的操作,账号肯定得注册一个,然后在产品栏目,找到创建产品,如下图(图中因为以前创建过,所以有一个存在产品):

微信图片_20230611185349.png

点进去以后,界面如下,可以看到涂鸦已经给产品分好了类,而且基本上物联网领域能关联的设备都包含了,在这个里面选择你的产品或者方案对于或者相似的产品:

微信图片_20230611185353.png

我们这里点击一个插座看看:

微信图片_20230611185359.png

2.2 添加标准功能

点击创建产品,会让你给产品方案取个名字,然后接下来会让你配置功能,其中会有几个必选功能,因为作为智能插座,几个必须具备的基础功能他会给先定好,其他的额外功能根据自己的需求去选择:

微信图片_20230611185403.png

选择好以后如下图:


- _& p) L5 b* t/ `$ u) h/ V& v

微信图片_20230611185414.png


7 a# N" d+ J0 T& G$ y2.3 APP界面设置

接下来就是设计自己产品APP上的界面了,在上图中点击下一步设计面板,我这里随便选了一个:

0 S0 B. P' R, j4 N1 Q. T# J4 G8 i

微信图片_20230611185422.png


) C8 a; n# I& ~

通过手机扫描上面的二维码,可以看到刚才创建的产品:

# N5 `  R, ^& H1 S; n' p

微信图片_20230611185426.png


3 R* V0 I, z# s0 v4 F3 b9 B

2.4 ☆硬件选择☆

根据步骤提示,接下来是就是选择硬件了:

! w" P4 G% r7 S0 g: d

微信图片_20230611185453.png

( S; f  ^5 g; {' J

我们随便选择,点第一个模块:

2 g+ `) V' C2 s5 N. P$ j

微信图片_20230611185456.png


9 f/ p/ H& R6 ?" s& W* K/ h3 y

点击生成固件,然后就可以下单买样品了,功能按照我们自己的选择配置会在固件里面设置好,只需要自己画个电路图:


8 a7 D3 v6 h% C+ d6 u! r0 v

微信图片_20230611185459.png

3 v: b% m6 z& S7 p$ g( z' \8 o- ~' U

硬件设计也可以点击参考电路设计,也会根据你选择的模块给出参考电路图:


8 i* a# n" D4 W2 v" n/ a

- u7 y8 J4 X4 J2 S* e' G5 U4 V- j" c. |
微信图片_20230611185502.png

* V- r0 X' v! ~1 N
, f: G1 ?5 s6 C/ f7 r" Z4 e/ m, U5 P

4 G, I7 V$ V3 ~
2.5 其他说明

完成以上设置后,基本上模块选型就完成了,后面的第4步和第5步可以暂时不管:

! O" H2 b+ Y7 G% T2 Q1 d7 o

微信图片_20230611185506.png


! @/ `+ o# y8 R0 Z5 _

如果是做一个上面描述的插座产品,工程师做的只是需要在IOT平台做一下选择配置,根据自己设定的功能引脚设计电路图,最后焊接完成后,基本上电配好网,直接手机控制插座开关了,app也能实时显示插座开关状态

上图的示例是创建了一个插座的新品,而且是零代码开发的,不存在SDK移植之类的,因为不需要,简单标准的功能涂鸦可以直接做好固件程序,根据你配置好的功能采购的模块就直接上电可以用,无需另加MCU。

我们回头来看一下产品的生产管理,可以看到除了我以前创建的产品,多了一个我们刚才创建的插座,除了这些标准的产品,在遇到一些定制化项目产品不是那么常规标准的情况下,就得使用通用模块进行SDK移植了:


* k3 o6 E: r$ C% A2 X6 ?

微信图片_20230611185510.png


% U' v: B% u, [* t

在上图中的第二个名为demo产品,人体红外传感器中选择的功能如下:

- B% c8 I/ N4 n( b3 Y( Y

微信图片_20230611185514.png


: i* F/ H- k3 o$ x; {5 I. R' F% Q

除了人感基本的有无人信息,还有继电器控制开关,还有预约功能,倒计时,其实还可以自己加很多功能,只需要注意增加功能的数据类型,属性,是为了后面自己写程序的时候不会出错。

在硬件开发部分,涂鸦推荐的模块为 TYWE3S Wi-Fi模组(当时选完功能后就只有这么一个模块推荐),因为这个是需要移植SDK的,需要自己外带一个MCU做处理,所以这个界面中,有 下载资料 这么一栏,主要是MCU SDK下载:

% S1 X& C2 ]1 Q4 L' _7 v+ H6 t

微信图片_20230611185517.png


, ~1 [8 y" R1 r- g  M- G8 d

如果是做一个需要移植SDK的产品,那除了电路图设计,还得根据自己选择的MCU型号移植一下官方的SDK包,我们这里记录的是使用 STM32F103C8T6 芯片进行的移植操作

) J; |4 h7 Y  h( s0 a

三、SDK移植

下载好SDK包,打开后里面包含的文件如下图:

: A4 N2 ]2 N* u6 p! G

微信图片_20230611185522.png


9 u' ?' `" q2 R6 _; [7 c3 k

SDK的移植,官方有详细视频教程:涂鸦官方SDK包移植教程

官方的文档教程:涂鸦官方SDK包移植文档说明

我这里就把自己移植的过程作记录一遍, 我个人整体来说,没有详细的一点一点去看文档和视频,只是大概浏览一下,然后几个大步骤注意,都是修改编译,然后出了error 以后找到问题所在,去修改的:


. [% [! a+ A: U/ t9 Z! d% Q

3.1  添加对应的文件和头文件

在需要使用到wifi功能的文件中包含一下wifi.h文件,#include "wifi.h",主函数中肯定需要,其他地方需不需要没必要特意去看,用到的时候没包含报错了,我们再包含也不迟


- v; u" _1 B& p: m( U

微信图片_20230611185525.png


  d9 _5 z7 p4 {5 B" u. _. a  }


6 N) x) E2 y: R$ y

3.2 添加 PRODUCT_KEY 定义

PRODUCT_KEY  就是我们在IoT平台创建的产品 ID,如下图:


9 V4 Z6 Z9 L6 q7 N. q9 b) l
, C( v# o8 u$ F' \& G5 j/ d
微信图片_20230611185528.png
7 P. A9 p) Y4 i6 {* _% T1 K
  1. " ^" d7 b  D! ^8 M+ W, s: u
  2. /******************************************************************************$ B- G4 P3 @+ {
  3.                        1:修改产品信息* @+ I- c0 v  p0 o" I
  4. ******************************************************************************/' ~0 [( q4 v$ p4 Y
  5. #define PRODUCT_KEY "v2psrivahslotbha"    //开发平台创建产品后生成的16位字符产品唯一标识1 a1 W% o+ o5 i/ p3 S: s

  6. 7 `- n" \; b9 O' f& E0 k+ a
  7. #define MCU_VER "1.0.0"         //用户的软件版本,用于MCU固件升级,MCU升级版本需修改
    * m) c' W- `0 p- v" s" D! L1 ^

  8. : f' ^  |, `+ L( f' z
  9. /*  模块工作方式选择,只能三选一,推荐使用防误触模式  */
    9 `. L) G6 G" E; O- v; h# ~
  10. #define CONFIG_MODE     CONFIG_MODE_DEFAULT             //默认工作模式
复制代码

; [8 T& t' P: t- L' i
& g. s( o' E3 Y
3.3 调用 wifi_protocol_init 函数

在 MCU 串口及其他外设初始化后调用 mcu_api.c 文件中的 wifi_protocol_init() 函数。我样品使用的是串口3和涂鸦wifi连接的,然后波特率为9600:


+ b$ [$ U. ?" w+ \

微信图片_20230611185534.png

) w* V3 d- N3 D% }1 S- W+ H6 b, u
3.4 串口收发处理

串口发送:

将 MCU 串口单字节发送函数填入  protocol.c 文件中  uart_transmit_output 函数内,并删除 #error。

就是我们使用的MCU,哪个串口连接的涂鸦wifi,自己把此串口发送一个字节的函数放在uart_transmit_output 函数内:

( Z1 b6 \0 z- ^  [

微信图片_20230611185539.png


& g* |, M7 j7 c9 Y$ n3 [5 ?

串口接收:

在串口接收中断服务函数里面调用  mcu_api.c 文件内的  uart_receive_input 函数,并将接收到的字符作为参数传入。

- S0 S& v6 R! {0 ]; e2 K* L

微信图片_20230611185542.png


% l) f: U$ O+ |; t. }

3.5 调用 wifi_uart_service函数

单片机进入 while(1) 循环后调用 mcu_api.c 文件内的 wifi_uart_service() 函数。

, b1 m6 a" z  _9 [4 m! ^8 D2 K# n

微信图片_20230611185545.png


0 z& [# ^' A# M

3.6 设备上电初始状态上报

修改  protocol.c 中的函数  all_data_update(void) ,此函数是产品上电状态,这个可以根据自己的意愿上报初始状态:


8 }. V9 W% I1 S6 R" E) F

微信图片_20230611185553.png

4 u2 q7 S1 q4 y2 q9 C) S7 i5 O2 A

那么这些DP点在哪里看到定义呢,是在 protocol.h 文件中有定义,这也是和我们当时自己设置的产品功能一一对应的:


; B4 v+ e6 O5 @3 J7 i! P8 X

微信图片_20230611185555.png


1 u) g$ G7 h3 n7 J1 E3.7 完善下发操作

完成每个下发DP点自己需要的操作,在 protocol.c 文件中,每个可下发的 DP 点,都有一个单独下发数据处理函数。格式为 dp_download_xxx_handle(),比如我们进行开关控制继电器动作:

. z8 p7 q0 X6 ^5 X! {1 G9 Z

微信图片_20230611185601.png

2 y5 U( `" K1 `: T$ E

3.8 其他细节处理

人感的状态上报我是放在主函数中判断:


) N, o) a) j5 G! B

微信图片_20230611185610.png


2 O! f* P  C/ a9 b4 \4 ^' x" O

在官方文档中,进行到这一步,还需要配网指示灯的添加,我这里没有用到,因为我选择的是 wifi模块自动处理按键和LED指示,这是在当时选择wifi模块的时候的一个可选择的功能,我选择的是wifi模块自动控制,使用的是官方推荐的参考电路,参考电路如下:

. ?0 Y: R! t5 `) K% d" b

微信图片_20230611185613.png

" k% C/ F% N2 F) @6 |

但是记住,模块自动控制的话,需要在 protocol.h 中定义WIFI_CONTROL_SELF_MODE,默认是注销的:

, w. n2 j# J+ a3 Y8 E

微信图片_20230611185616.png

+ |0 N# L2 {" T+ Q6 @# G" E

完成以上步骤,基本移植完成,但是还是有些地方需要修改,但是这些修改都是可以根据编译后的错误,找到错误位置进行修改,每个错误的地方基本都有注释说明,很简单的。最后直到编译完全通过,wifi模块的驱动就已经完成了。

5 D" I# q* h0 H; G8 d  K* {2 Q' o: B

四、配网操作测试

样品使用的配网方式是  wifi模块自动处理 方式,默认是长按按键 5 S,切换配网方式(AP模式 和 Smart模式相互切换)

Smart 模式(快闪):操作简便,通常以指示灯快闪做指示。
. [) }; w1 o# I& {5 sAP 模式(慢闪):配网可靠,通常以指示灯慢闪做指示。

配网需要使用到涂鸦app,我们这里使用Smart模式延时一下具体步骤:


; i; E2 c( Y1 K. P

1、 在app中点击右上角加号,选择你所需要的添加的设备,我这里选择的是下图中的第一个,wifi类型的传感器:

微信图片_20230611185619.png

2、 选好设备以后,在弹出的页面选择你所需要连接的wifi名字和密码:

微信图片_20230611185622.png

3、 到下一步,注意文字提示,需要保证wifi模块处于对应的配网状态下:

微信图片_20230611185625.png

4、 等待设备自动配网,需要一点时间,我这边每次设置大概在30S左右就能连接上:

微信图片_20230611185628.png

5、 添加成功提示:

微信图片_20230611185644.png

6、 最后就可以测试,根据自己定义的几个功能,有人无人,状态变化,然后通过界面上的按钮,可以操作继电器通断,实际测试下来功能完全OK,整体来说还是达到的基本的效果:

0 }6 M6 r. N) i& u# m' D

微信图片_20230611185741.png


' f. f' ]1 \/ ]

整个过程基本上没有遇到疑难杂症之类的问题,不得不说,涂鸦的生态还是做得挺好的!!

- l& B/ k7 ?3 I

五、硬件原理图

因为许多小伙伴找我要原理图和,所以干脆这里就把重要部分原理图贴上。

硬件部分主要有几个重要点:

1、供电部分,220V 转 5V/3.3V;

2、控制电源开关部分,使用继电器控制;

3、WiFi模块部分;

4、STM32部分;

本部分不上原理图,因为最小系统都一样,可参考:

STM32 非接触测温测温传感器 项目记录(ModbusRTU协议)中的STM32部分原理图。

5、人体感应部分。(本部分不上原理图,方案很多,比如最简单的BISS001)


) ?$ b- V) K  h/ n! R; M

5.1 涂鸦模块部分

涂鸦模块的型号是根据上文提到的如何选择涂鸦模块操作,最后涂鸦官方给出的:

" h- S: z, R, w& c: j
) g6 V8 Y, Z8 H  n* a
微信图片_20230611185745.png
7 {7 [2 J2 `7 V3 p$ n, }/ F
% k7 j) l7 _" y9 p6 K9 ?" x

1 w! r& f  ^2 u1 T/ L: |7 N% ^$ u. n/ w6 h1 L0 M, ^/ U
5.2 供电部分

供电部分用了电源模块:

1 g- ^: i0 {4 a" q+ a& x2 v( S

5 P: W# j7 c& {) L! T* a
微信图片_20230611185751.png
% G# G. a% ?! U7 Y( `; D8 X1 y5 s
+ T% l( K6 u8 K9 O( r1 P% L# r

8 m" \& E: u7 A+ G6 \; `& l0 n1 }
5.3 控制部分

控制部分使用继电器,欧姆龙的G5Q-14:

: B$ o1 Q0 x8 [
微信图片_20230611185754.png

% Z0 L( q, l0 }; l  E4 x$ I% b3 \$ F8 M! J' u! b+ @; g
如有侵权请联系删除0 s& x- p) Q& l% F
转载自:矜辰所致
8 N, P- J: k6 n+ F, u2 {8 ?  ~+ N7 N) D& _0 m  G+ o

9 b, }4 G5 g; E! [" f
" N4 s, O  I0 D" T2 t

6 X8 F) }5 R8 l2 F
4 A2 x4 J1 t# l# M3 u, Y% k- I5 v8 ~; P) x# y' y+ B! N0 o/ Q
/ R! v+ Y- }% C% a8 n7 K
收藏 评论0 发布时间:2023-6-11 19:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版