esp8266学习感悟

声明:本文为学习感悟,野火的esp8266学习感悟与心得,所有引用,均为学习参考,免费提供,如有侵权,联系删除,谢谢。(本人已购买正版板子F429挑战者)
第一次接触esp8266,最初的目的就是为了无线控制,这不比按键操作牛。
根据野火产品资料下载的esp8266教程,如下图(本人是F429挑战者V1板子)
esp8266学习感悟_第1张图片
根据参考资料里面的连接方式连接各个开发板
连接方式
(不是野火开发板子的,可以根据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学习感悟_第2张图片
可以对esp8266的各个引脚进行修改,注意时钟与GPIO口的搭配,串口看数据手册进行调换。
2 修改热点
在test.h中,可修改热点参数esp8266学习感悟_第3张图片

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 );  //使能串口接收中断
			
		}
		
	}
	

你可能感兴趣的:(#,esp8266,#,stm32,stm32)