|
經過多次努力,用STM32F103ZET6開發板+ESP8266+0.96OLED顯示屏(獲取NTP網絡時間)做的物聯網實驗終于調試成功,效果如圖所示,程序見附件。
制作出來的實物圖:
IMG_20200205_215820.jpg (6.41 MB, 下載次數: 61)
下載附件
2020-2-17 21:58 上傳
IMG_20200205_212023.jpg (5.6 MB, 下載次數: 69)
下載附件
2020-2-17 21:58 上傳
TIM圖片20200217215957.png (20.97 KB, 下載次數: 54)
下載附件
2020-2-17 22:00 上傳
單片機源程序如下:
#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里面的函數,具體程序見附件。
|
|