项目地址
Maskbugzero/ESP8266-Weather-2021
一个关于STM32+ESP8266+DHT11的家庭气象站。
硬件资源
- 战舰V3\精英STM32F103开发板
- ALIENTEK 2.8/3.5/4.3/7寸TFTLCD模块(通过FSMC驱动.FSMC_NE4接LCD片选/A10接RS)
- 按键KEY0(PE4)/KEY1(PE3)/KEY_UP(PA0.也称之为WK_UP)
- ESP8266-12S WIFI模块1个
- DHT11模块1个
实现功能
- 微信小程序配网
- 室内温湿度测量及显示
- 室外天气数据获取及显示
- 时间显示及网络校准
连接方式
- 模块与带有无线网卡的电脑或其他wifi设备连接:采用wifi连接
- 模块与开发板连接:TTL串口方式
ATK-ESP8266 WIFI模块与精英板连接方式
TXD<------------>PB11
RXD<------------>PB10
GND<------------>GND
VCC<------------>3.3V\5V
DHT11模块与精英板连接方式
Data<------------>PE11
主要代码
外设初始化
初始化外设时,若DHT11工作不正常则显示屏无法正常显示。
LED_Init(); //初始化与LED连接的硬件接口
KEY_Init(); //初始化按键
LCD_Init(); //初始化LCD
RTC_Init();
while(DHT11_Init()) //DHT11初始化
{
printf("DHT11 出错!\r\n");
delay_ms(200);
}
W25QXX_Init(); //初始化W25Q128
tp_dev.init(); //初始化触摸屏
usart3_init(115200); //初始化串口3
my_mem_init(SRAMIN); //初始化内部内存池
exfuns_init(); //为fatfs相关变量申请内存
f_mount(fs[0],"0:",1); //挂载SD卡
f_mount(fs[1],"1:",1); //挂载FLASH.
微信小程序配网
源码:
//一键配网设置
u8 atk_8266_wifi_config(void)
{
int i;
while(atk_8266_send_cmd("AT","OK",20))//检查WIFI模块是否在线
{
atk_8266_quit_trans();//退出透传
atk_8266_send_cmd("AT+CIPMODE=0","OK",200); //关闭透传模式
printf("未检测到模块!!!");
delay_ms(800);
printf("尝试连接模块...");
}
u3_printf("AT+RESTORE"); //恢复出厂设置
delay_ms(1000); //延时3S等待恢复成功
delay_ms(1000);
delay_ms(1000);
printf("恢复出厂设置完成");
atk_8266_send_cmd("AT+RST","OK",20); //软重启
delay_ms(1000); //延时3S等待重启成功
delay_ms(1000);
delay_ms(1000);
delay_ms(1000);
printf("软重启完成");
while(atk_8266_send_cmd("ATE0","OK",20));//关闭回显
atk_8266_send_cmd("AT+CWMODE=1","OK",50); //设置WIFI STA模式
atk_8266_send_cmd("AT+CWAUTOCONN=1","OK",20); //使能上电自动连接AP
delay_ms(300);
atk_8266_send_cmd("AT+CWSTARTSMART=3","OK",