初中有幸与蜜蜂结缘,但是由于要读书,或者平时没在家,而蜜蜂对生成环境计较苛刻,喜欢安静,干燥,并且在黑暗的环境中,如果管理不好就会造成蜜蜂逃的逃,跑的跑,不仅没有产量反而蜜蜂都跑完了,目前就在想有没有可以远程监控蜂箱的方法。
7 B1 [1 }6 }9 q1 ?; t( _; k. @0 i. J w4 L) h
) U0 o/ u/ p' H' ~我的方案使采用STM32F103C8T6作为主控,然后用涂鸦的三明治开发板VWXR2接入涂鸦云。0 h" G. M% E+ u0 B' [& X
C:\Users\dell\Desktop\涂鸦0 `1 d1 a! m1 U2 H0 B
8 l# Y6 r: j1 N8 g
% R# }# g7 x$ b7 y
如果是新用户先注册一个账号
( M. D0 j3 N8 P& V6 v' ^" Z7 P/ w- q" A' A" t
y9 ^2 R8 k9 \) F; R; a! c, WC:\Users\dell\Desktop\涂鸦\涂鸦新建文件夹
- f7 P8 W* m$ L i) M5 t2 k( V; b
4 ^- @- e; X, X' b. ^1 s! G# Q$ z Y- p- j5 B" z9 {/ y& u4 d U) U
注册成功后登陆,然后点击创建产品,流程我上传来,产品创建成功后,下载全部文件,但我发现我做的蜂箱智能养殖系统,系统的功能和我的不符合,这时需要进入自定功能3 {6 [: L, o( t2 P
' _$ Q3 p$ W4 K* P# l$ D3 X" K
C:\Users\dell\Desktop\涂鸦\新建功能点
: ?% k; p8 l6 R& a" X% |$ B' N: w% ^# b) E6 R
还有就是设备面板,如果不符合自己的要求,可以自定义
4 k, a/ O5 V& Y6 M) k* E) T x在开发途中,如果又不懂的,可以点击右上角的文档,进入涂鸦开发者,里面有特别详细的讲解,并且b站上也有视屏讲解,可谓是非常的仔细,非常适合初学者
6 E5 M1 D+ @: T接下就是移植sdk
. \5 [3 N" f$ d7 Y在原有的工程文件添加 sdk文件,并且把.c和.h文件加入 M) R3 u8 k( _6 T; L
' _. {% O; V: x' U' A' ?
% n; R) r, P+ G% EC:\Users\dell\Desktop\涂鸦\sdk1 d) @" ]( z: r& C8 a# X8 S6 v
# r3 H9 w7 @( ]8 M
% f4 ?, W. j% S4 G8 v9 K点击编译,并按照工程报错进行相应的更改,涂鸦在这里也是做的非常详细,只要双击错误,就会跳到错误那里,然后涂鸦在报错那里有中文提示
$ Z) S, r V7 f) G6 \4 j. o( ~4 }! t
: P2 F D# S" y" ]
C:\Users\dell\Desktop\涂鸦\错误9 [% Q) i: I' d" i- e
+ n# R: l+ f5 h
! N- b8 g1 ?/ A4 L5 B- ~7 G后面的就接着操作,值得注意的是,改完过后会遇到
3 \( ?5 r+ Y9 _! t Z: n2 t! m9 o' r N; A! U
V+ T0 Y' H( b/ j& {..\USER\stm32f10x.h(522): error: #40: expected an identifier ^' N( |7 M/ q0 ]8 u2 P9 f% h
typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;
- e& K6 I9 {' x# ]3 q: ?..\USER\stm32f10x.h(522): error: #40: expected an identifier" X1 \! p9 a: a9 E
typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;$ K8 c. \ P1 K" W X
..\USER\stm32f10x.h(525): error: #40: expected an identifier
3 h/ p- o4 W3 ^: T+ z7 f3 W typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus;+ ~* W( X; H0 S" Q' V5 X/ E
..\USER\stm32f10x.h(525): error: #40: expected an identifier
1 _, t! W, l; Q# o9 X* E0 u% V这时只需在WiFi.h中添加头文件 #include "stm32f1xx.h" 来解决
; B6 W$ C; W7 L$ [
/ b& a- N' j8 J5 V' Q o. U
2 \ A0 W f+ S- G; D0 V! ]C:\Users\dell\Desktop\涂鸦\错误一. w& N2 [. h+ u* f! ]/ R2 E
添加完成后,只需打开自己所需的功能点- w$ @+ B" k1 y! d7 p% R
C2 d8 ?1 F0 \% z
# u8 t. A, ]7 ]2 `/ `2 t1 ?* `C:\Users\dell\Desktop\涂鸦\功能点. N n) D+ u# g2 i
) ?9 N! I# ]7 B: r
- [3 u: ?5 m, k! ?7 Y& r a然后在主函数中调用wifi_uart_service();并且初始化wifi_protocol_init();,然后就是配网操作,这里可以用按键,首先调用重置函数,然后调用配网模式选择,根据自己的需求选择模式,下载程序,利用涂鸦小助手进行配网,小助手在下载的文件中有,配网成功后,只需把刚才调用的两个函数屏蔽就可以,这样不用按键也行,不过大家尽量使用按键,方便。0 s: d# x& a* `* R
9 T# R( }) L5 H, s: m2 y' m
2 v! X8 i/ x/ ^% W8 C1 H% H! n
C:\Users\dell\Desktop\涂鸦\配网
4 C2 P9 r, ], D! f/ x2 o
0 L* i1 E$ e0 P4 ~* o0 ?6 H/ D( _
. l, y8 }+ t2 L2 ^接下来就是写自己所需功能的函数了,采用超声波检测蜂箱是否有巢虫,具体思想是,蜂箱的长度固定,我只需检测蜂箱底部的长度即可,只要检测的蜂箱长度小于蜂箱的实际长度,便可认为蜂箱有巢虫。当检测蜂箱有巢虫时,并用LED灯进行报警。" Z4 s9 U* H, X- f" M5 C
a; k; N; v e* D' ~; {4 a# Y. \6 Z% Q
然后蜂箱盖检测,检测蜜蜂是否处于黑暗的环境,采用光明电阻检测,当光敏电阻的值低于2600时,并用ledC13作为警报,可认为蜂箱的环境不是黑暗密闭的。
7 I8 f4 O% r1 |+ Z- ^6 u接下来就是蜂箱内的温室度,这是一个很重要的组成部分,我采用的dht11,通过mcu读取,将温湿度实时上传客户端。: P# z+ @3 k5 k6 u9 p9 m* Q
) a- |& x9 F! g! D8 i
7 b; W! s# V! x- F" t% SC:\Users\dell\Desktop\涂鸦\全图4 x+ p/ `, }: Q0 m) D
0 p/ y, h9 u" w. [4 r+ Y; W- #include "dect.h"
7 z! e: a$ m- k2 j9 S' t; d0 o3 S$ k - #include "adc.h"* W1 K( S& s( s' Z" K B* |- M/ B/ t
- #include "dht11.h"6 Y: w! e4 n' u& e5 c; B8 N
- #include "wifi.h"
6 k+ Z: W: X( i; S4 | - #include "led.h"5 d. D0 e- z( y: I" I' k
- #include "UltrasonicWave.h"1 o: |) A/ I: F0 ?8 d5 w
7 g0 R' X" \+ ^) j) w* Z) j# X- void Detect_Read(void)& l y. F9 P* ^+ m2 A2 `
- {
7 U/ T1 c; R" z; L8 P7 O" c - * n* y/ ~9 h; a' A) }
- Dht11_read();# k# S( f9 C) P: y
- get_voit_d();; p+ h5 C. E" w/ E! k' ^
- get_voit_g();; m" N! V' Q/ I& j
- UltrasonicWave_StartMeasure();
8 N0 _& p/ n) X' Y% J7 A a3 z' S - chaoshengbo();, M/ Z- G$ r; _" O( ?- M
- $ ?7 |) k' j+ M X1 F( ]/ Z
- - p, A9 g- y0 P0 Z3 V
- }* S" T3 g( Z' p# G8 k; }8 |
- //采集光敏电阻转换为亮度值 A1引脚) p/ }, l5 |2 w$ O8 c7 N
- void get_voit_d(void) H/ M& z1 X# H* z
- {
3 c8 ^$ B) q: z. ?; w - float light;
6 k5 j6 g* q8 P( r$ ` - $ c: x5 M! p l! h* F& e
- light =Get_Adc(1) ;- ?( f7 _6 \5 a1 b7 v) y
- if(light<2600)
* a2 b6 p Y5 ?+ W. t - {( B$ {6 r6 r8 h+ h) ]) j
- mcu_dp_enum_update(DPID_COVER_STATE,0); //当前蜂箱盖状态枚举型数据上报;- j r! e G0 b7 i2 d" ?) B: R
- GPIOC ->BRR =GPIO_Pin_13; & C4 c/ N" K4 o7 L J
- }
' O: w, G) C4 C+ ?9 C - else
! t8 d( ^, m5 k+ y1 N/ Z - {
4 l3 T& @7 l' A1 C% [ - mcu_dp_enum_update(DPID_COVER_STATE,1); //当前蜂箱盖状态枚举型数据上报;* v v. ?. g% ]
- GPIOC ->BSRR =GPIO_Pin_13;2 w8 x0 \: O9 S; v: B- b/ `( T
- }
& V# _$ {6 F$ H0 h# [, e! x e- D% c - // printf ("%f\r\n",light);
5 P! g. ?6 K- V6 o) W* a - } e! B6 ?- l+ D
- & a# f8 D6 o m/ Z! o9 L3 ^
- / ` b* Z8 X; k
- 1 D; _- v" A, S% T/ ]" M* ~0 Q, n
- //采集电源电压 A0引脚
* j/ z, u( X# U - void get_voit_g(void ); X( d9 @4 ?' P; m$ ^% |
- {
2 {8 b# F" r* R- L -
' r& m; @$ z6 A7 ~& K; n& C - float voit;4 p, ]: }: Q6 t0 p; t7 M8 X+ b
- voit=Get_Adc(0) /4096.0*3.3;
9 J: @! E5 n! ~" R* M2 d2 I2 r7 B - voit=voit/3.3*100;4 W" A9 s2 B1 w+ b
- mcu_dp_value_update(DPID_BATTERY_PERCENTAGE,voit); //当前电池电量VALUE型数据上报;
5 C- t6 N. [0 I7 n0 `/ B - // printf ("%f\r\n",voit);. \% I5 W8 B) |* x( W( z
- } r) ?5 r" q: Z0 ~4 |) J
# U' j9 h- e' }. n. m% l5 F( E- /**********************超声波距离计算***************************/
3 @+ D$ N W/ n' Q* J0 z - void chaoshengbo(void)
# j% }4 o, [) W- ], I% l4 u - {
+ _3 R' M% M% ~$ h1 t1 X/ M; E3 q - float juli;
' M' h( z3 ]% w6 }" J' |) W2 K - juli=TIM_GetCounter(TIM1)*5*34/200.0;
. N; l: V8 g; b# U% J - if(juli<8&&juli!=0)
; ~0 w& \9 o9 y. [+ t - {9 L: } J+ M6 p; e. Q7 e
- mcu_dp_bool_update(DPID_CHECK,1); // 当前巢虫检测 BOOL型数据上报;4 X8 D- k+ E- S% D
- GPIOB ->BRR =GPIO_Pin_4; - N' x& R3 `2 c t, f" M9 W
- }
$ M. p5 Y& `' y - else
1 S9 w5 ~( W. s4 L& n4 ]2 n% H) D) N) Y - {
5 O* E7 Q9 @- G/ D1 I - mcu_dp_bool_update(DPID_CHECK,0); // 当前巢虫检测 BOOL型数据上报;1 v( r' R/ k8 \4 m& A
- GPIOB ->BSRR =GPIO_Pin_4;
) o, s- E G" I - }
1 W" m3 ?- s4 O$ S! H% T - }
/ g! _1 c* _# x& [# n9 I1 q - void Dht11_read(void): S2 ^3 @) L: G1 n
- {2 X& U2 a9 }$ ^$ m% Y
- u8 temperature;
; T3 j# @! W7 Z# x3 U' K - u8 humidity;$ ?9 r0 \+ k9 o. a: G ]8 {
- DHT11_Read_Data(&temperature,&humidity);
$ V) A0 v! D# A, V0 [' s1 k - mcu_dp_value_update(DPID_NOW_TEMP,temperature ); //当前温度检测VALUE型数据上报;' n3 T3 }* e4 ]
- mcu_dp_value_update(DPID_HUM,humidity); //当前湿度检测VALUE型数据上报; " Y1 E/ {7 E; g1 u5 O% g9 W+ z
- // printf("temperature=%d\r\n",temperature);
& u; ^1 S4 a2 P8 i, k - // printf("humidity=%d\r\n",humidity);
) u1 ^" k4 o6 E% O$ u - }
复制代码- #include "sys.h"
+ l0 ]3 \: c+ r3 |/ v9 H - #include "usart.h"
% |+ { o ^. A! { - #include "usart2.h"
2 G9 _( G" c* n3 Z+ } - #include "led.h"
, Z* q; L7 e# ?% Z* [& u - #include "delay.h"
( F/ U! t" r2 O0 {, U - #include "wifi.h"
! [" b1 h [) s2 s3 O - #include "adc.h"' u, k8 L2 H5 H: f: e0 Y) t
- #include "dht11.h"
3 a3 I5 ]) w) c. w% \- l: h6 G - #include "dect.h"
8 I/ R! A1 `7 ]0 C3 C - #include "timer.h"$ @/ L$ Z/ S# q O$ d k3 g% S) m
- #include "UltrasonicWave.h". ^3 |$ ]: S) Q+ p6 ]
- int main(void)8 t# n/ P4 b3 N1 O. r
- {
1 E/ z; P* U9 x) a* ] -
. W2 S. t7 C) s3 ]6 z% _: s - delay_init(); //延时函数初始化 b7 C0 `& ]) ^' f& \4 X
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2) o4 v" ~6 C/ \% H7 G) w
- DHT11_Init();
9 K( T' j* q+ F6 ~ v - uart_init(9600);//用于WiFi模块通信
# A0 s8 r/ h" i# z' k1 b! L4 u3 } - uart2_init(115200);//用于串口通信+ F8 n/ _7 w$ e' U
- LED_Init();//用于报警模拟
9 w8 s7 x& `) e( Q% e - Adc_Init();. k. t: f |# ]2 C& G' t8 }. J0 k
- Timerx_Init(5000,7199);
3 {: u# J( [, q - wifi_protocol_init();! H4 ?4 |- j' [! z
- UltrasonicWave_Configuration();2 p) P9 n, q' f3 b% h( ]
- // mcu_reset_wifi(); U* v) v" T& d0 O; z4 x
- // delay_ms (10);- ]# o3 X5 M" \. h. U6 K
- // mcu_set_wifi_mode(SMART_CONFIG );3 Z$ d* A) g% q4 d+ z: X
-
f4 e+ ?' |9 e1 |% t - while(1)$ p- R, Z, E/ i& }
- {+ x. V# b* A3 }9 G5 _0 R
- wifi_uart_service();3 ~- D8 i! Q3 B9 L
- Detect_Read();6 x' \- f, u4 I/ r6 q) y
- } 5 H, d. f9 }# j6 A" g
- }' T9 [; j- h; ?6 u2 u3 [
复制代码 源码连接gihub* c4 y9 j8 T' J5 u
github.com/18785275440/tuya-mcu-sdk.git$ A$ T. Z' I ~, F% F
$ Q8 X; v6 o3 ?# [1 H6 C/ h/ L& l2 J2 f% P
* ]; M" J! H% u4 E
5 _+ m% S# g% y) A% }
|