前言
既然能成功控制空调了,巧的是我的手机没有红外功能,那就尝试加一个ESP8266实现手机远程控制空调,这里用的ESP8266在之前的文章里有介绍过怎么使用,感兴趣的可以参考以下文章 使用串口调试助手配置ESP8266模块. STM32+ESP8266实现远程控制LED.
手机APP也是通过之前的TCP调试助手改的,感兴趣的可以参考 Android TCP客户端调试助手.
一、电路连接
ESP8266 | STM32 |
---|
3V3 | 3.3 | GND | GND | RX | PB10 | TX | PB11 |
红外发射管的电路和上次一样
二、主要代码如下
int main(void)
{
u8 status=0;
u8 tmp=28;
u8 mode = COLD;
int tmperture;
u8 update=0;
char a[15];
char *b;
USART_Config();
TIM3_PB5_PWM_Init(377,4);
delay_init();
LED_Init();
usart3_init(115200);
esp8266_start_trans();
printf("初始化完成\n");
USART3_RX_STA=0;
while(1)
{
if(USART3_RX_STA&0x8000)
{
strcpy(a,(const char*)USART3_RX_BUF);
b = strtok((char *)a,":");
b = strtok(NULL,":");
tmperture = atoi((const char*)b);
if(tmperture>=24 && tmperture<=32)
{
update = 1;
}
if(strstr((const char*)USART3_RX_BUF,"mode"))
{
LED_TOGGLE;
if(mode == HOT)
{
mode = COLD;
}
else
{
mode = HOT;
}
}
if(mode == COLD)
{
if(strstr((const char*)USART3_RX_BUF,"on"))
{
LED_TOGGLE;
if(status == 0)
{
Power_cold_1();
status = 1;
}
else if(status == 1)
{
Power_cold_2();
status = 0;
}
if(tmp!=28)tmp = 28;
}
if(status == 0)
{
if(update == 1)
{
LED_TOGGLE;
set_cold_tmp1((u8)tmperture);
update = 0;
}
}
else if(status == 1)
{
if(update == 1)
{
LED_TOGGLE;
set_cold_tmp2((u8)tmperture);
update = 0;
}
}
}
else
{
if(strstr((const char*)USART3_RX_BUF,"on"))
{
LED_TOGGLE;
if(status == 0)
{
set_hot_tmp1(18);
status = 1;
}
else if(status == 1)
{
set_hot_tmp2(18);
status = 0;
}
if(tmp!=18)tmp = 18;
}
}
memset(USART3_RX_BUF,0,599);
USART3_RX_STA=0;
}
}
}
三、手机APP界面
APP的这几个按钮就是向ESP8266发送"on"、"mode"及温度信息的,收到了这些信息后,我们的设备就会发送红外信号,实现对调的远程控制。
对源码感兴趣的可以从这下载https://download.csdn.net/download/qq_50527635/20243042 也可以留下邮箱。
|