当前位置:   article > 正文

STM32F103通过ESP8266WIFI使用TCP透传协议连接至移动ONENET实现远程控制LED灯_stm32f103使用esp8266模块实现tcp透传

stm32f103使用esp8266模块实现tcp透传

STM32F103通过ESP8266WIFI使用TCP透传协议连接至移动ONENET实现远程控制LED灯

  1. 硬件设备:STM32F103RCT6开发板, ATK-ESP8266wifi模块
  2. 软件开发环境:Keil5

一:ONENET平台配置
1.注册产品及添加设备
注册产品,选择TCP透传协议

2.上传lua脚本
可从onenet平台上下载demo,脚本中最重要的两个函数,根据需要修改,本例子中,只是把上传的数据解析为Distance数据存在onenet平台上,没收到一包数据,就返回给终端一个received字符串。
在这里插入图片描述
在这里插入图片描述
3.创建应用
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
二:STM32代码开发

  1. WIFI 连接至onenet代码
char esp8266_init()
{
	char * ok = "OK";
	char * at = "AT\r\n";
  char * at_cwmode = "AT+CWMODE=1\r\n";
  char * at_rst = "AT+RST\r\n";
  char * at_cifsr = "AT+CIFSR\r\n";
  char * at_cipmux = "AT+CIPMUX=0\r\n";
  char * at_cipmode = "AT+CIPMODE=1\r\n";
  char * at_cipstart = "AT+CIPSTART=\"TCP\",\"183.230.40.40\",1811\r\n";
  char * at_cipsend = "AT+CIPSEND\r\n";
	char at_cwjap[64];
	memset(at_cwjap, 0, sizeof(at_cwjap));
	strcat(at_cwjap,"AT+CWJAP=\"");
	strcat(at_cwjap,WIFI_SSID);
	strcat(at_cwjap,"\",\"");
	strcat(at_cwjap,WIFI_KEY);
	strcat(at_cwjap,"\"\r\n");
	
	
  while(esp8266_send_at(at, ok)){
    delay_ms(1000);
  }
  while(esp8266_send_at(at_cwmode, ok)){
    delay_ms(1000);
  }
  while(esp8266_send_at(at_rst, ok)){
    delay_ms(1000);
  }
  while(esp8266_send_at(at_cwjap, ok)){
    delay_ms(1000);
  }
  while(esp8266_send_at(at_cifsr, ok)){
    delay_ms(1000);
  }
  while(esp8266_send_at(at_cipmux, ok)){
    delay_ms(1000);
  }
  while(esp8266_send_at(at_cipmode, ok)){
    delay_ms(1000);
  }
  while(esp8266_send_at(at_cipstart, ok)){
    delay_ms(1000);
  }
  while(esp8266_send_at(at_cipsend, ok)){
    delay_ms(1000);
  }

	onenet_tcp_regist();
  printf("Connect to onenet success\r\n");
	
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53

2.解析onenet下发命令代码

void keep_connect_onenet()
{
	char temp[12];
	char info = 0;
	memset(temp, 0, sizeof(temp));
	sprintf(temp, "%d", rand()%100);
	USART1_Send_Data(temp, strlen((const char *)temp));
	//处理onenet下发的信息
	delay_ms(500);
	if(URecv_Index){
		if(strstr(URecv, "received")!=NULL){
			printf("upload data to onenet ok\r\n");
			info++;
		}
		if(strstr(URecv, "LED_ON")!=NULL){
			printf("get onenet cmd  LED_ON\r\n");
			led_turn_on();
			info++;
		}
		if(strstr(URecv, "LED_OFF")!=NULL){
			printf("get onenet cmd  LED_OFF\r\n");
			led_turn_off();
			info++;
		}
		if(info){
			URecv_Index = 0;
			memset(URecv, 0, sizeof(URecv));
		}
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

三 源码连接:https://download.csdn.net/download/oofish0519/12510989

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/233346
推荐阅读
相关标签
  

闽ICP备14008679号