概要
本文利用STM32F103接入机智云(控制LED、获取温湿度简单例程)
ESP8266-01S波特率为9600,初始波特率一般为115200
例程链接:https://pan.baidu.com/s/1WtHkS7tvOUMsgr4DmYfG4w
提取码:zk9i
固件更新教程:ESP8266_01S机智云烧录esp8266固件步骤_fieldsag的博客-优快云博客
机智云创建产品生成MCU代码包
开发者中心:机智云 开发者中心
创建一个新的项目
点击编辑新建数据点
新建一个布尔型按键(可写),和两个数值型温湿度
新建完成后生成代码包
1、选择MUC开发界面,选择独立方案
2、选择硬件平台(STM32F103C8x)
3、输入自己的PS,生成代码包后
下载MCU代码包移植到库版本例程
需要自己准备一个库函数的代码,要有两个串口和一个定时,如果没有准备可以到文章后面下载移植好的示例
生成代码包后下载
下载代码包,解压后,压缩包内包含以下文件,我们只使用Gizwits和Utils两个文件夹,并复制
粘贴到我们准备好了库函数版本,后面我会上传自己成功的版本大家可以下载参考
打开程序,添加两个函数文件
添加函数包含路径
修改移植后的代码错误问题
因为机智云下载的代码包使用的是HAL库版本,我们使用的是库版本,下面我将一步步演示修改步骤
第一个错误是找不到hal_kay.h函数我们屏蔽就行
第二个问题
修改后重新编译看到还是有很多错误,还需要屏蔽掉一写库函数
下面都是要修改或者屏蔽的函数!!!!!
修改!!!!
从215行开始屏蔽到最后一个函数的开头
屏蔽尾部
修改成我们库版本串口函数
根据自己的WiFi连接串口修改,我自己用的是串口3
**************************************************************************************************************
自此代码修改完成,编译后 0 错误,如果使用自己的程序还需要修改串口3和定时器中断函数
**************************************************************************************************************
使用自己库函数的需要修改这两个地方,记得添加头文件
编写初始化程序
编写main程序
//协议初始化
void Gizwits_Init(void)
{
TIM3_Int_Init(9,7199);//1MS系统定时
usart3_init(9600);//WIFI初始化
memset((uint8_t*)¤tDataPoint, 0, sizeof(dataPoint_t));//设备状态结构体初始化
gizwitsInit();//缓冲区初始化
printf("Gizwits_Init\r\n");
}
int main(void)
{
int key;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(115200); //串口初始化为115200
LED_Init(); //LED端口初始化
KEY_Init(); //LED端口初始化
Gizwits_Init(); //协议初始化
while(1)
{
key = KEY_Scan(0);
if(key==KEY1_PRES)//KEY1按键
{
printf("WIFI进入AirLink连接模式\r\n");
gizwitsSetMode(WIFI_AIRLINK_MODE);//Air-link模式接入
}
if(key==WKUP_PRES)//KEY_UP按键
{
printf("WIFI复位,请重新配置连接\r\n");
gizwitsSetMode(WIFI_RESET_MODE);//WIFI复位
}
userHandle();//数据上行
gizwitsHandle((dataPoint_t *)¤tDataPoint);
// LED0=!LED0;
delay_ms(200);
}
}
下面是温湿度数据上传函数
void userHandle(void)
{
u8 buffer[5]; //获取值
double hum=0; //湿度值
double temp=0; //温度值
/*
currentDataPoint.valuetemp = ;//Add Sensor Data Collection
currentDataPoint.valuehum = ;//Add Sensor Data Collection
*/
if (dht11_read_data(buffer) == 0)
{
//获取温度和湿度
hum = buffer[0] + buffer[1] / 10.0;
temp = buffer[2] + buffer[3] / 10.0;
currentDataPoint.valuetemp =temp ;//Add Sensor Data Collection
currentDataPoint.valuehum =hum ;//Add Sensor Data Collection
}
}
云端数据接受处理控制LED
自此程序部分全部完成,下载程序到开发板上
硬件连接
精英板 | ATK-ESP8266模块 |
3.3V | VCC |
3.3v | EN |
PB10 | RXD |
PB11 | TXD |
GND | GND |
精英板 | DHT11温湿度模块 |
3.3V | VCC |
GND | GND |
PB9 | OUT |
如果不是用正点原子精英版,LED、按键可自行设计
机智云APP连接
下载机智云APP链接:Gizwits
打开APP,点击一键配置
连接WiFi
到此界面后,我们实物按键按下进入AirLink连接模式 后点击我已完成上述操作等待连接
连接成功后我们就可以看见温湿度上传的实时数据,按键也可以控制LED的亮灭
小结
自此STM32接入机智云教程全部完成
例程链接:https://pan.baidu.com/s/1WtHkS7tvOUMsgr4DmYfG4w
提取码:zk9i