|
經(jīng)過多次努力,用STM32F103ZET6開發(fā)板+ESP8266+0.96OLED顯示屏(獲取NTP網(wǎng)絡(luò)時(shí)間)做的物聯(lián)網(wǎng)實(shí)驗(yàn)終于調(diào)試成功,效果如圖所示,程序見附件。
制作出來(lái)的實(shí)物圖:
單片機(jī)源程序如下:
#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; //上傳所有機(jī)智云平臺(tái)上設(shè)置的數(shù)據(jù)
char string_date[50]={0}; //獲取網(wǎng)絡(luò)上的日期,如2020-2-5
char string_time[50]={0}; //獲取網(wǎng)絡(luò)上的事件,如21:31:56
void key_scan() //按鍵用來(lái)配網(wǎng)
{
if(KEY_UP==1)
{
delay_ms(10);
if(KEY_UP==1)
{
gizwitsSetMode(WIFI_AIRLINK_MODE); //配網(wǎng)
printf("WIFI_AIRLINK_MODE is OK\r\n"); //配網(wǎng)完成打印出來(lái)
}
while(KEY_UP);
}
}
void Hardware_Init() //所有的硬件初始化
{
SysTick_Init(72); //系統(tǒng)時(shí)鐘72M
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中斷優(yōu)先級(jí)分組 分2組
LED_Init(); //led初始化
KEY_Init(); //按鍵初始化
WWDG_Init(); //窗口看門狗
TIM3_CH1_PWM_Init(500,72-1); //定時(shí)器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() //機(jī)智云初始化
{
TIM4_Init(9,7199); //定時(shí)器4->1ms
USART3_Init(9600); //串口3波特率9600(必須)
memset((uint8_t*)¤tDataPoint, 0, sizeof(dataPoint_t)); //清除數(shù)據(jù)
gizwitsInit(); //機(jī)智云初始化
}
/*******************************************************************************
* 函 數(shù) 名 : main
* 函數(shù)功能 : 主函數(shù)
* 輸 入 : 無(wú)
* 輸 出 : 無(wú)
*******************************************************************************/
int main()
{
u8 ii=0;
Hardware_Init();
Gizwits_Init();
TIM5_Init(9999,7199);
printf("初始化完成。!\r\n");
while(1)
{
ii++;
userHandle(); //用戶數(shù)據(jù),這里就是adc電壓值
key_scan(); //按鍵配網(wǎng)
gizwitsHandle((dataPoint_t *)¤tDataPoint);//協(xié)議處理,數(shù)據(jù)上傳
if(ii>=4)
{
ii=0;
OLED_ShowStr(32,0,string_date,2); //顯示屏顯示日期
OLED_ShowStr(0,4,string_time,3); //顯示事件
}
}
}
……由于實(shí)驗(yàn)代碼太多,這里只展示main.c里面的函數(shù),具體程序見附件。
|
|