提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
通过程序显示心知天气数据,
一、效果展示?
set_1_LCD ID:9488
AT+CWMODE=1
AT+CWJAP="CMCC-6w7C","5xwjiw2g"CLOSEDWSCONNECTWIFI CONNECTEDWIFI GOT IP
AT+CIPSTART="TCP","api.seniverse.com",80CONNECTOK
AT+CIPMODE=1
AT+CIPSEND
{"results":[{"location":{"id":"WM6N2PM3WY2K","name":"Chengdu","country":"CN","path":"Chengdu,Chengdu,Sichuan,China","timezone":"Asia/Shanghai","timezone_offset":"+08:00"},"daily":[{"date":"2022-07-25","text_day":"Foggy","code_day":"30","text_night":"Clear","code_night":"1","high":"36","low":"23","rainfall":"0.00","precip":"0.00","wind_direction":"N","wind_direction_degree":"0","wind_speed":"8.4","wind_scale":"2","humidity":"90"},{"date":"2022-07-26","text_day":"Cloudy","code_day":"4","text_night":"Moderate rain","code_night":"14","high":"35","low":"24","rainfall":"5.47","precip":"0.54","wind_direction":"CLM","wind_direction_degree":"","wind_speed":"8.4","wind_scale":"2","humidity":"91"},{"date":"2022-07-27","text_day":"Moderate rain","code_day":"14","text_night":"Thundershower","code_night":"11","high":"33","low":"23","rainfall":"11.86","precip":"0.84","wind_direction":"CLM","wind_direction_degree":"","wind_speed":"3.0","wind_scale":"1","humidity":"97"}],"last_update":"2022-07-25T08:00:00+08:00"}]}
{"results":[{"location":{"id":"WM6N2PM3WY2K","name":"Chengdu","country":"CN","path":"Chengdu,Chengdu,Sichuan,China","timezone":"Asia/Shanghai","timezone_offset":"+08:00"},"daily":[{"date":"2022-07-25","text_day":"Foggy","code_day":"30","text_night":"Clear","code_night":"1","high":"36","low":"23","rainfall":"0.00","precip":"0.00","wind_direction":"N","wind_direction_degree":"0","wind_speed":"8.4","wind_scale":"2","humidity":"90"},{"date":"2022-07-26","text_day":"Cloudy","code_day":"4","text_night":"Moderate rain","code_night":"14","high":"35","low":"24","rainfall":"5.47","precip":"0.54","wind_direction":"CLM","wind_direction_degree":"","wind_speed":"8.4","wind_scale":"2","humidity":"91"},{"date":"2022-07-27","text_day":"Moderate rain","code_day":"14","text_night":"Thundershower","code_night":"11","high":"33","low":"23","rainfall":"11.86","precip":"0.84","wind_direction":"CLM","wind_direction_degree":"","wind_speed":"3.0","wind_scale":"1","humidity":"97"}],"last_update":"2022-07-25T08:00:00+08:00"}]}
二、代码
1.编写代码
首先我是自己写的一个esp8266库文件还没完善但是能用,注意转义字符,每个指令后面+\r\n。
WIFI.h
#ifndef __WIFI_H
#define __WIFI_H
#include "main.h"
#include "usart2.h"
#include "Delay.h"
#define STA "AT+CWMODE=1\r\n"
#define AP "AT+CWMODE=2\r\n"
#define STA_AP "AT+CWMODE=3\r\n"
#define PT "AT+CIPMODE=1\r\n"
#define ON_PT "AT+CIPMODE=0\r\n"
#define AT "AT\r\n"
#define AT_REST "AT+RESTORE\r\n"
#define ssid "CMCC-6w7C"
#define pass "5xwjiw2g"
#define SET_TIME "AT+CIPSNTPCFG=1,8\r\n"
#define GET_TIME "AT+CIPSNTPTIME?\r\n"
#define TCP_IP "AT+CIPSTART=\"TCP\",\"api.seniverse.com\",80\r\n"
#define TCP_SEND "AT+CIPSEND\r\n"
#define TCP_BACK "+++"
#define TCP_SEND_M "GET https://api.seniverse.com/v3/weather/now.json?key=密钥&location=chengdu&language=en&unit=c\r\n" //获取未来一天天气。这里是GET请求,前面要加GET
#define TCP_Three_Day "GET https://api.seniverse.com/v3/weather/daily.json?key=密钥&location=chengdu&language=en&unit=c&start=-1&days=5\r\n" //获取未来三天的天气
//**********************************下面是函数部分
int AT_Test(char* MODE);
void AT_WIFIMODE(char* MODE); //设置WiFi模式
void AT_CONNECT_WIFI(char* SSID,char* PASS); //连接WiFi
void AT_SET_TIME(void ); //设置时区
void AT_GET_TIME(void); //获取时间
void AT_Connect_TCP(void); //连接心知天气
void AT_SET_TCPMODE(char* MODE); //设置tcp透传模式
void AT_SEND_TCP(void); //发送tcp指令
void AT_BAKE_SEND(void); //退出tcp发送
void AT_SEND_MES(void); //发送get请求
#endif
WIFI.c(这里没什么好说的)
#include "WIFI.h"
int AT_Test(char* AT_TEXT){
uint8_t AT_T[128];
sprintf(AT_T,"%s",AT_TEXT);
HAL_UART_Transmit(&huart2,(uint8_t*)&AT_T,strlen(AT_T) * sizeof(char),HAL_MAX_DELAY);
Delay_ms(2000);
}
void AT_WIFIMODE(char* MODE){
uint8_t WIFI_Mode[128];
sprintf(WIFI_Mode,"%s",MODE);
HAL_UART_Transmit(&huart2, (uint8_t *)WIFI_Mode,strlen(WIFI_Mode) * sizeof(char), HAL_MAX_DELAY);
Delay_ms(1000);
}
void AT_CONNECT_WIFI(char* SSID,char* PASS){
uint8_t WIFI_Connect[128];
sprintf(WIFI_Connect,"AT+CWJAP=\"%s\",\"%s\"\r\n",SSID,PASS);
HAL_UART_Transmit(&huart2, (uint8_t *)WIFI_Connect,strlen(WIFI_Connect) * sizeof(char), HAL_MAX_DELAY);
Delay_ms(2000);
}
void AT_SET_TIME(void ){
uint8_t WIFI_TIME[128];
sprintf(WIFI_TIME,"%s",SET_TIME);
HAL_UART_Transmit(&huart2, (uint8_t *)WIFI_TIME,strlen(WIFI_TIME) * sizeof(char), HAL_MAX_DELAY);
Delay_ms(1000);
}
void AT_GET_TIME(void){
uint8_t WIFI_GET_TIME[128];
sprintf(WIFI_GET_TIME,"%s",GET_TIME);
HAL_UART_Transmit(&huart2, (uint8_t *)WIFI_GET_TIME,strlen(WIFI_GET_TIME) * sizeof(char), HAL_MAX_DELAY);
Delay_ms(1000);
}
void AT_Connect_TCP(void){
uint8_t WIFI_Connect_TCP[128];
sprintf(WIFI_Connect_TCP,"%s",TCP_IP);
HAL_UART_Transmit(&huart2, (uint8_t *)WIFI_Connect_TCP,strlen(WIFI_Connect_TCP) * sizeof(char), HAL_MAX_DELAY);
Delay_ms(1000);
}
void AT_SET_TCPMODE(char* MODE){
uint8_t TCP_Mode[128];
sprintf(TCP_Mode,"%s",MODE);
HAL_UART_Transmit(&huart2, (uint8_t *)TCP_Mode,strlen(TCP_Mode) * sizeof(char), HAL_MAX_DELAY);
Delay_ms(1000);
}
void AT_SEND_TCP(void){
uint8_t TCP_SEND_MS[128];
sprintf(TCP_SEND_MS,"%s",TCP_SEND);
HAL_UART_Transmit(&huart2, (uint8_t *)TCP_SEND_MS,strlen(TCP_SEND_MS) * sizeof(char), HAL_MAX_DELAY);
Delay_ms(2000);
}
void AT_BAKE_SEND(void){
uint8_t TCP_BACK_TCP[128];
sprintf(TCP_BACK_TCP,"%s",TCP_BACK);
HAL_UART_Transmit(&huart2, (uint8_t *)TCP_BACK_TCP,strlen(TCP_BACK_TCP) * sizeof(char), HAL_MAX_DELAY);
Delay_ms(2000);
}
void AT_SEND_MES(void){
uint8_t TCP_MES[256];
sprintf(TCP_MES,"%s",TCP_Three_Day);
HAL_UART_Transmit(&huart2, (uint8_t *)TCP_MES,strlen(TCP_MES) * sizeof(char), HAL_MAX_DELAY);
Delay_ms(1000);
//HAL_UART_Receive(&huart2,(uint8_t *)buff,strlen(buff) * sizeof(char), HAL_MAX_DELAY);
//HAL_UART_Transmit(&UART1_Handler,(uint8_t*)&buff,strlen(buff) * sizeof(char),HAL_MAX_DELAY);
//HAL_UART_Receive(&huart2,(uint8_t *)&DateBuff,1);
//Delay_ms(5000);
}
main.c
#include "main.h"
#include "gpio.h"
#include "USART.h"
#include "Delay.h"
#include "i2c.h"
#include "AHT10_S.h"
#include "lcd.h"
#include "stdio.h"
#include "touch.h"
#include "tim.h"
#include "lvgl.h"
#include "lv_port_disp.h"
#include "lv_port_indev.h"
#include "ADC.h"
#include "WIFI.h"
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
Delay_init(180);
ADC_Config();
uart_init(115200);
USART_config();
MX_TIM8_Init();
LCD_Init(); //初始化LCD FSMC接口
//tp_dev.init(); //触摸屏初始化
//lv_init();
//lv_port_disp_init();
//lv_port_indev_init();
//uint8_t AT_T[10];
//sprintf(AT_T,"%s",AT);
//HAL_UART_Transmit(&huart2,(uint8_t*)&AT_T,strlen(AT_T) * sizeof(char),HAL_MAX_DELAY);
//HAL_UART_Transmit(&UART1_Handler,(uint8_t*)&AT_T,strlen(AT_T) * sizeof(char),HAL_MAX_DELAY);
//AT_Test();
//Delay_ms(1000);
//AT_Test(AT_REST);
//AT_WIFIMODE(STA);
//printf("\r\n%s\r\n",BackcallBuff);
AT_WIFIMODE(STA);
printf("\n");
AT_CONNECT_WIFI(ssid,pass);
printf("\n");
AT_Connect_TCP();
printf("\n");
AT_SET_TCPMODE(PT);
printf("\n");
AT_SEND_TCP();
//printf("\n");
AT_SEND_MES();
AT_BAKE_SEND();
//AT_SET_TIME();
//AT_GET_TIME();
while (1)
{
Delay_ms(3000);
printf("\r\n%s\r\n",Rxbuff);
//tp_dev.scan(0);
//lv_task_handler();
}
}
总结
当前时间是2022/7/25的23:30分,我还在努力着,为了未来,因为我只是一个普通专科。只有比别人努力才会发光,要怪只能怪自己当前高考时太不努力。加油,年轻人