声明:本文为学习感悟,野火的esp8266学习感悟与心得,所有引用,均为学习参考,免费提供,如有侵权,联系删除,谢谢。(本人已购买正版板子F429挑战者)
第一次接触esp8266,最初的目的就是为了无线控制,这不比按键操作牛。
根据野火产品资料下载的esp8266教程,如下图(本人是F429挑战者V1板子)
根据参考资料里面的连接方式连接各个开发板
(不是野火开发板子的,可以根据GPIO口的闲置,进行调解,可以在工程中进行修改)
打开配套代码中的工程手机app控制例程(地址为:........\ESP8266模块\配套代码\F429_挑战者开发板_V1\1-手机app控制例程\Project\RVMDK(uv5)),注意只是打开。
注:这里我用的是版本keil 5.13,内核5.05,因为之前有一个WiFi模块emw1062,不用5.05的内核就报错,就很无语。
1 修改IO口
注:用原版源代码,连接方式也没更改,可以不改
esp8266的引脚连接定义在"./ESP8266/bsp_esp8266.h",72行左右
可以对esp8266的各个引脚进行修改,注意时钟与GPIO口的搭配,串口看数据手册进行调换。
2 修改热点
在test.h中,可修改热点参数
3 官方连接
在官网下载秉火物联app,安装到手机,打开串口(默认 115200 8-N-1注意波特率等配置),编译下载,后会看见串口打印信息,如果没修改源代码里面的热点参数,应该会提示IP192.168.1.1端口 8080,用手机连接WiFi Yehuolink,打开秉火物联app,输入,连接,就可以控制灯和蜂鸣器,还有温度传输。
4 自己改 **
上面是实现了功能,但是,我不一定要控制它的板子,我从新做个板子,难道就不能用咯吗?
当然不是,这里我们来看看如何修改,根据什么改?
改,不是盲目瞎改,这里我是先看代码,现在对代码进行个解析。可以对比其他代码,这个工程主要加了四个文件,"./ESP8266/bsp_esp8266**.h" "./ESP8266/bsp_esp8266.c" "test.h" "test.c"前两个是对8266本身资源配置,而后两个才是数据传输配置。
"./ESP8266/bsp_esp8266.c" 中就一个 ESP8266_StaTcpClient_UnvarnishTest函数,所以所有的修改将在这里进行。
uint8_t ucId, ucLen; //定义变量ID 长度
uint8_t ucLed1Status = 0, ucLed2Status = 0, ucLed3Status = 0, ucBuzzerStatus = 0;
//定义变量 LED1 2 3 指示是否开启
char cStr [ 100 ] = { 0 }, cCh; //定义字符串cStr用于存放发送数据,定义字符变量 cCh
char * pCh, * pCh1;//定义字符指针 * pCh, * pCh1
DHT11_Data_TypeDef DHT11_Data; //DHT11结构体命名
printf ( "\r\n正在配置 ESP8266 ......\r\n" );
macESP8266_CH_ENABLE(); //8266初始化配置
ESP8266_AT_Test ();
ESP8266_Net_Mode_Choose ( AP );
while ( ! ESP8266_CIPAP ( macUser_ESP8266_TcpServer_IP ) );
while ( ! ESP8266_BuildAP ( macUser_ESP8266_BulitApSsid, macUser_ESP8266_BulitApPwd, macUser_ESP8266_BulitApEcn ) );
ESP8266_Enable_MultipleId ( ENABLE );
while ( ! ESP8266_StartOrShutServer ( ENABLE, macUser_ESP8266_TcpServer_Port, macUser_ESP8266_TcpServer_OverTime ) );
ESP8266_Inquire_ApIp ( cStr, 20 );//把IP存放
printf ( "\r\n本模块WIFI为%s,密码开放\r\nAP IP 为:%s,开启的端口为:%s\r\n手机网络助手连接该 IP 和端口,最多可连接5个客户端\r\n",
macUser_ESP8266_BulitApSsid, cStr, macUser_ESP8266_TcpServer_Port );
//串口打印提示信息
strEsp8266_Fram_Record .InfBit .FramLength = 0;
strEsp8266_Fram_Record .InfBit .FramFinishFlag = 0;
while ( 1 )
{
if ( strEsp8266_Fram_Record .InfBit .FramFinishFlag )
{
USART_ITConfig ( macESP8266_USARTx, USART_IT_RXNE, DISABLE );
//½ûÓô®¿Ú½ÓÊÕÖжÏ
strEsp8266_Fram_Record .Data_RX_BUF [ strEsp8266_Fram_Record .InfBit .FramLength ] = '\0';
// printf ( "\r\n%s\r\n", strEsp8266_Fram_Record .Data_RX_BUF );//
if ( ( pCh = strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "CMD_LED_" ) ) != 0 )
{
cCh = * ( pCh + 8 );
switch ( cCh )
{
case '1':
cCh = * ( pCh + 10 );
switch ( cCh )
{
case '0':
LED1_OFF;
ucLed1Status = 0;
break;
case '1':
LED1_ON;
ucLed1Status = 1;
break;
default :
break;
}
break;
case '2':
cCh = * ( pCh + 10 );
switch ( cCh )
{
case '0':
LED2_OFF;
ucLed2Status = 0;
break;
case '1':
LED2_ON;
ucLed2Status = 1;
break;
default :
break;
}
break;
case '3':
cCh = * ( pCh + 10 );
switch ( cCh )
{
case '0':
LED3_OFF;
ucLed3Status = 0;
break;
case '1':
LED3_ON;
ucLed3Status = 1;
break;
default :
break;
}
break;
default :
break;
}
sprintf ( cStr, "CMD_LED_%d_%d_%d_ENDLED_END", ucLed1Status, ucLed2Status, ucLed3Status );
}
else if ( ( pCh = strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "CMD_BUZZER_" ) ) != 0 )
{
cCh = * ( pCh + 11 );
switch ( cCh )
{
case '0':
BEEP_OFF;
ucBuzzerStatus = 0;
break;
case '1':
BEEP_ON;
ucBuzzerStatus = 1;
break;
default:
break;
}
sprintf ( cStr, "CMD_BUZZER_%d_ENDBUZZER_END", ucBuzzerStatus );
}
else if ( ( ( pCh = strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "CMD_UART_" ) ) != 0 ) &&
( ( pCh1 = strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "_ENDUART_END" ) ) != 0 ) )
{
if ( pCh < pCh1)
{
ucLen = pCh1 - pCh + 12;
memcpy ( cStr, pCh, ucLen );
cStr [ ucLen ] = '\0';
}
}
else if ( strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "CMD_READ_ALL_END" ) != 0 )
{
Read_DHT11 ( & DHT11_Data );
sprintf ( cStr, "CMD_LED_%d_%d_%d_ENDLED_DHT11_%d.%d_%d.%d_ENDDHT11_BUZZER_%d_ENDBUZZER_END",
ucLed1Status, ucLed2Status, ucLed3Status, DHT11_Data .temp_int,
DHT11_Data .temp_deci, DHT11_Data .humi_int, DHT11_Data .humi_deci,
ucBuzzerStatus );
}
if ( ( pCh = strstr ( strEsp8266_Fram_Record .Data_RX_BUF, "+IPD," ) ) != 0 )
{
ucId = * ( pCh + strlen ( "+IPD," ) ) - '0';
ESP8266_SendString ( DISABLE, cStr, strlen ( cStr ), ( ENUM_ID_NO_TypeDef ) ucId );
}
strEsp8266_Fram_Record .InfBit .FramLength = 0;
strEsp8266_Fram_Record .InfBit .FramFinishFlag = 0;
USART_ITConfig ( macESP8266_USARTx, USART_IT_RXNE, ENABLE ); //使能串口接收中断
}
}