|
经过多次努力,用STM32F103ZET6开发板+ESP8266+0.96OLED显示屏(获取NTP网络时间)做的物联网实验终于调试成功,效果如图所示,程序见附件。
制作出来的实物图:
单片机源程序如下:
#include "system.h"
#include "SysTick.h"
#include "led.h"
#include "usart.h"
#include "adc.h"
#include "OLED_I2C.h"
#include "pwm.h"
#include "wwdg.h"
#include "time.h"
#include "key.h"
#include "gizwits_protocol.h"
#include "gizwits_product.h"
dataPoint_t currentDataPoint; //上传所有机智云平台上设置的数据
char string_date[50]={0}; //获取网络上的日期,如2020-2-5
char string_time[50]={0}; //获取网络上的事件,如21:31:56
void key_scan() //按键用来配网
{
if(KEY_UP==1)
{
delay_ms(10);
if(KEY_UP==1)
{
gizwitsSetMode(WIFI_AIRLINK_MODE); //配网
printf("WIFI_AIRLINK_MODE is OK\r\n"); //配网完成打印出来
}
while(KEY_UP);
}
}
void Hardware_Init() //所有的硬件初始化
{
SysTick_Init(72); //系统时钟72M
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断优先级分组 分2组
LED_Init(); //led初始化
KEY_Init(); //按键初始化
WWDG_Init(); //窗口看门狗
TIM3_CH1_PWM_Init(500,72-1); //定时器3通道1PWM初始化 2khz的频率
USART1_Init(115200); //串口1波特率115200初始化
ADCx_Init(); //adc初始化
I2C_Configuration(); //I2C配置
OLED_Init(); //oled屏初始化
OLED_CLS();//清屏
delay_ms(500);
}
void Gizwits_Init() //机智云初始化
{
TIM4_Init(9,7199); //定时器4->1ms
USART3_Init(9600); //串口3波特率9600(必须)
memset((uint8_t*)¤tDataPoint, 0, sizeof(dataPoint_t)); //清除数据
gizwitsInit(); //机智云初始化
}
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
int main()
{
u8 ii=0;
Hardware_Init();
Gizwits_Init();
TIM5_Init(9999,7199);
printf("初始化完成!!!\r\n");
while(1)
{
ii++;
userHandle(); //用户数据,这里就是adc电压值
key_scan(); //按键配网
gizwitsHandle((dataPoint_t *)¤tDataPoint);//协议处理,数据上传
if(ii>=4)
{
ii=0;
OLED_ShowStr(32,0,string_date,2); //显示屏显示日期
OLED_ShowStr(0,4,string_time,3); //显示事件
}
}
}
……由于实验代码太多,这里只展示main.c里面的函数,具体程序见附件。
|
|