初步实现项目【7天物联网 DAY6笔记】

学习笔记:百问网 7天物联网智能家居实战训练营

TCP连接流程

1.复位 AT+RST

2.模式设置 AT+CWMODE_DEF=1

3.WIFI连接 AT+CWJAP_DEF=“ssid”, “password”

4.查看IP AT+CIFSR

5.创建TCP连接 AT+CIPMUX=1AT+CIPSERVER=1,9999

6.发送数据 AT+CIPSEND=0,32 {“data”:“doorbell” ,“status”:“1”}

7.接收数据 IPD,0,26:{“dev”:“Ied”,“status”:“0”}

调试

升级St-link

根据学习手册上将STM32F103_MINI开发板升级为ST-Link,之后我们可以直接用ST-Link下载程序。

开发板连上ST-Link后,就可以直接用keil软件Download下载程序。

配置CubeMX

直接用CubeMX生成代码时,开发板的调试引脚会被CubeMX默认设置为GPIO,需要修改;而如果直接用keil编写代码,上电后就默认为调试引脚。

image-20220512210117398

代码实现

  1. 验证AT指令是否发送成功,成功后继续发送下一个指令。发送正确指令,WIFI模块的回复是OK,错误指令则回复是ERROR。

  2. attend:有些指令要等一段时间才会回复OK,因此在发送函数中要定义一个超时时间。

  3. WIFI模块接收的AT指令,需要通过换行符来区分每条指令,所以我们必须在每个指令的后面添加\r\n。

  4. 综上所述,需要编写一个合适的发送函数来发送数据,包括但不限于验证否发送成功、超时控制、检测换行符。

  5. 为了用手机上的小程序进行通信,我们必须打印出WIFI模块的IP地址,因此需要编写一个用于获取IP地址的函数。

  6. 同时还需要一个函数用于发送UDP数据,发送的数据是JSON格式的,与AT指令不同。

  7. 最后还要一个函数用于接收数据,点亮或者点灭开发板上的LED灯。

对应下面的代码

// 1.启动串口2接收(中断方式)
  USART2_StartRx();
  
  // 2.串口2发送AT指令,启动TCP服务
  //USART2_Transmit(tx_data, sizeof(tx_data), 500);
  ESP8266_SendCommand("AT+RST", "OK", 500);
  HAL_Delay(1000);
  ESP8266_SendCommand("AT+CWMODE=1", "OK", 500);
  ESP8266_SendCommand("AT+CWJAP=\"100ask\",\"100ask100ask\"", "OK", 5000);
  ESP8266_SendCommand("AT+CIPMUX=1", "OK", 500);
  ESP8266_SendCommand("AT+CIPSERVER=1,9999", "OK", 500);
  ESP8266_SendCommand("AT+CIFSR", "OK", 500);
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
	// 3.1 按键按下,发送门铃信号
	if (Key_GetFlag() == 1)
	{
		ESP8266_Send_TCP("{\"data\":\"doorbell\",\"status\":\"1\"}");
	}
	
	
	// 3.2 收到数据,控制灯
	if (USART2_Receive(rx_data)) //接收到数据
	{
		if (strstr((char *)rx_data, "\"dev\":\"led\",\"status\":\"0\""))
		{
			printf("led off\n\r");
			HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);
			USART2_ClearBuf();
			memset(rx_data, 0, 200);
		}
		else if (strstr((char *)rx_data, "\"dev\":\"led\",\"status\":\"1\""))
		{
			printf("led on\n\r");
			HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
			USART2_ClearBuf();
			memset(rx_data, 0, 200);
		}
	}
  }

程序框架

image-20220512210643353


笔记参考:百问网 物联网智能家居 DAY6的学习

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值