初中有幸与蜜蜂结缘,但是由于要读书,或者平时没在家,而蜜蜂对生成环境计较苛刻,喜欢安静,干燥,并且在黑暗的环境中,如果管理不好就会造成蜜蜂逃的逃,跑的跑,不仅没有产量反而蜜蜂都跑完了,目前就在想有没有可以远程监控蜂箱的方法。
我的方案使采用stm32f103c8t6作为主控,然后用涂鸦的三明治开发板VWXR2接入涂鸦云。
C:UsersdellDesktop涂鸦
如果是新用户先注册一个账号
C:UsersdellDesktop涂鸦涂鸦新建文件夹
注册成功后登陆,然后点击创建产品,流程我上传来,产品创建成功后,下载全部文件,但我发现我做的蜂箱智能养殖系统,系统的功能和我的不符合,这时需要进入自定功能
C:UsersdellDesktop涂鸦新建功能点
还有就是设备面板,如果不符合自己的要求,可以自定义
在开发途中,如果又不懂的,可以点击右上角的文档,进入涂鸦开发者,里面有特别详细的讲解,并且b站上也有视屏讲解,可谓是非常的仔细,非常适合初学者
接下就是移植sdk
在原有的工程文件添加 sdk文件,并且把.c和.h文件加入
C:UsersdellDesktop涂鸦sdk
点击编译,并按照工程报错进行相应的更改,涂鸦在这里也是做的非常详细,只要双击错误,就会跳到错误那里,然后涂鸦在报错那里有中文提示
C:UsersdellDesktop涂鸦错误
后面的就接着操作,值得注意的是,改完过后会遇到
。.USERstm32f10x.h(522): error: #40: expected an identifier
typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;
。.USERstm32f10x.h(522): error: #40: expected an identifier
typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;
。.USERstm32f10x.h(525): error: #40: expected an identifier
typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus;
。.USERstm32f10x.h(525): error: #40: expected an identifier
这时只需在WiFi.h中添加头文件 #include “stm32f1xx.h” 来解决
C:UsersdellDesktop涂鸦错误一
添加完成后,只需打开自己所需的功能点
C:UsersdellDesktop涂鸦功能点
然后在主函数中调用wifi_uart_service();并且初始化wifi_protocol_init();,然后就是配网操作,这里可以用按键,首先调用重置函数,然后调用配网模式选择,根据自己的需求选择模式,下载程序,利用涂鸦小助手进行配网,小助手在下载的文件中有,配网成功后,只需把刚才调用的两个函数屏蔽就可以,这样不用按键也行,不过大家尽量使用按键,方便。
C:UsersdellDesktop涂鸦配网
接下来就是写自己所需功能的函数了,采用超声波检测蜂箱是否有巢虫,具体思想是,蜂箱的长度固定,我只需检测蜂箱底部的长度即可,只要检测的蜂箱长度小于蜂箱的实际长度,便可认为蜂箱有巢虫。当检测蜂箱有巢虫时,并用LED灯进行报警。
然后蜂箱盖检测,检测蜜蜂是否处于黑暗的环境,采用光明电阻检测,当光敏电阻的值低于2600时,并用ledC13作为警报,可认为蜂箱的环境不是黑暗密闭的。接下来就是蜂箱内的温室度,这是一个很重要的组成部分,我采用的dht11,通过mcu读取,将温湿度实时上传客户端。
C:UsersdellDesktop涂鸦全图
#include “dect.h”#include “adc.h”#include “dht11.h”#include “wifi.h”#include “led.h”#include “UltrasonicWave.h”
void Detect_Read(void){ Dht11_read(); get_voit_d(); get_voit_g(); UltrasonicWave_StartMeasure(); chaoshengbo(); }//采集光敏电阻转换为亮度值 A1引脚void get_voit_d(void){ float light; light =Get_Adc(1) ; if(light《2600) { mcu_dp_enum_update(DPID_COVER_STATE,0); //当前蜂箱盖状态枚举型数据上报; GPIOC -》BRR =GPIO_Pin_13; } else { mcu_dp_enum_update(DPID_COVER_STATE,1); //当前蜂箱盖状态枚举型数据上报; GPIOC -》BSRR =GPIO_Pin_13; } // printf (“%f
”,light);}
//采集电源电压 A0引脚void get_voit_g(void ){ float voit; voit=Get_Adc(0) /4096.0*3.3; voit=voit/3.3*100; mcu_dp_value_update(DPID_BATTERY_PERCENTAGE,voit); //当前电池电量VALUE型数据上报;// printf (“%f
”,voit);}
/**********************超声波距离计算***************************/void chaoshengbo(void){ float juli; juli=TIM_GetCounter(TIM1)*5*34/200.0; if(juli《8&&juli!=0) { mcu_dp_bool_update(DPID_CHECK,1); // 当前巢虫检测 BOOL型数据上报; GPIOB -》BRR =GPIO_Pin_4; } else { mcu_dp_bool_update(DPID_CHECK,0); // 当前巢虫检测 BOOL型数据上报; GPIOB -》BSRR =GPIO_Pin_4; } }void Dht11_read(void){ u8 temperature; u8 humidity; DHT11_Read_Data(&temperature,&humidity); mcu_dp_value_update(DPID_NOW_TEMP,temperature ); //当前温度检测VALUE型数据上报; mcu_dp_value_update(DPID_HUM,humidity); //当前湿度检测VALUE型数据上报; // printf(“temperature=%d
”,temperature);// printf(“humidity=%d
”,humidity); }
#include “sys.h”#include “usart.h”#include “usart2.h” #include “led.h”#include “delay.h”#include “wifi.h”#include “adc.h”#include “dht11.h”#include “dect.h”#include “timer.h”#include “UltrasonicWave.h”int main(void){ delay_init(); //延时函数初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2 DHT11_Init(); uart_init(9600);//用于WiFi模块通信 uart2_init(115200);//用于串口通信 LED_Init();//用于报警模拟 Adc_Init(); Timerx_Init(5000,7199); wifi_protocol_init(); UltrasonicWave_Configuration();// mcu_reset_wifi();// delay_ms (10);// mcu_set_wifi_mode(SMART_CONFIG ); while(1) { wifi_uart_service(); Detect_Read(); } }
相关文章