Conexión a Alibaba Cloud basada en STM32+FreeRtos+ESP8266+MQTT

1. Información general

Realice la lectura de los datos del sensor de temperatura y humedad dht12 a través del sistema operativo stm32f103c8t6 + (freertos), use ESP8266 para conectarse a la red y conéctese a Alibaba Cloud IOT a través del protocolo MQTT para la transmisión de datos, y el servidor envía datos para controlar el El encendido y apagado del LED, incluida la liberación de mensajes y Suscripción y otras operaciones completan la comunicación entre la nube y el dispositivo.

2. Pasos de implementación

2.1.El simulador MQTT.fx se comunica con Alibaba Cloud

Primero, utilizamos el simulador MQTT.fx para comunicarnos con la plataforma Alibaba Cloud mediante simulación. Este paso es para verificar si hemos completado la construcción de la plataforma Alibaba Cloud. El segundo es obtener información de registro relevante.

2.2.STM32 se comunica con Alibaba Cloud

En segundo lugar, utilizamos STM32F103C8T6 para conectarnos a la red a través de ESP8266 para comunicarnos con la plataforma Alibaba Cloud para lograr la solución final de este diseño. Este diseño utiliza un sensor de temperatura y humedad dht12 para leer la temperatura y publicarla a través de la plataforma Alibaba Cloud para controlar el encendido y apagado de nuestras luces LED.

3. Construya una plataforma en la nube

3.1 Inicie sesión en la plataforma Alibaba Cloud

1. Inicie sesión en la URL: https://www.aliyun.com/
2. Encuentre la plataforma IoT
3. Cree un producto de acuerdo con la documentación de Alibaba Cloud, cree un dispositivo para este producto y agregue una función personalizada
Insertar descripción de la imagen aquí
4. Vamos créelo primero Para un producto, el proceso de creación es el siguiente:
Insertar descripción de la imagen aquí
Luego haga clic en Confirmar.

5. Una vez que el producto esté listo, es necesario colgar el dispositivo debajo del producto.
Insertar descripción de la imagen aquí
6. El nombre del dispositivo se agregó en la configuración.
Insertar descripción de la imagen aquí

7. Verifique la información del dispositivo agregado
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
. Tenga en cuenta que se necesita la siguiente información al conectarse a la plataforma Alibaba Cloud.
Insertar descripción de la imagen aquí
Consejo: Más adelante usaremos los siguientes tres parámetros (triples) para combinar el parámetro MQTT
"ProductKey": "a1 Q",
"DeviceName": "dht12",
"DeviceSecret": "7G
******** * *********VsU”

4. Conéctese a la plataforma en la nube de Alibaba (MQTT.fx)

1. Aquí se necesitan dos software
1.1 Configuración de la plataforma Alibaba Cloud IoT_32
1.2.MQTT.fx
2. Abra el software MQTT.fx

2.1.打开软件

Insertar descripción de la imagen aquí

2.2.配置相关信息

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

3. Depuración de conexión
3.1. Verifique la lista de temas. Necesitará usar
Insertar descripción de la imagen aquí
3.2. Suelte el interruptor LED y las funciones de temperatura y humedad más adelante.
Insertar descripción de la imagen aquí
3.3. Agregar funciones personalizadas,
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
3.4. Finalmente, recuerda publicar.
Insertar descripción de la imagen aquí

3.5. Conéctese al servidor
Insertar descripción de la imagen aquí
3.6. Se debe hacer clic en el contenido push en la plataforma Alibaba Cloud
Insertar descripción de la imagen aquí
3.7. Envíe los datos de temperatura y humedad al servidor de la plataforma Alibaba Cloud
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
3.8. En este punto, la depuración del simulador MQTT.fx ha finalizado.

5. Conéctese a la plataforma en la nube de Alibaba (STM32)

5.1 Información de depuración

Insertar descripción de la imagen aquí

5.2 Análisis del código fuente

5.2.1 Iniciar una conexión con el servidor (CONNECT)

Insertar descripción de la imagen aquí

5.2.2 El servidor responde al recibo de conexión (CONNACK)

Insertar descripción de la imagen aquí

5.2.3 Iniciar una suscripción al servidor (SUSCRIBIRSE)

Insertar descripción de la imagen aquí

5.2.4 Recibo de suscripción de respuesta del servidor (SUBACK)

Insertar descripción de la imagen aquí

5.2.5 Iniciar una solicitud de paquete de latidos (PINREQ) al servidor

Insertar descripción de la imagen aquí

5.2.6 El servidor responde al recibo de latido (PINGRESP)

Insertar descripción de la imagen aquí

5.2.7 El servidor publica mensajes

Insertar descripción de la imagen aquí
Cuando el servidor publica un mensaje, ingresará esta función para analizar los datos. El formato de los datos es formato json, como se muestra en el código.

u8 MQTT_Publish(unsigned char* data,int len)
{
    
    
	int buflen = sizeof(buf);
	int rc = 0;
	unsigned char dup;
	int qos;
	unsigned char retained = 0;
	unsigned short msgid = 1;
	int payloadlen_in;
	unsigned char* payload_in;
	MQTTString receivedTopic;
		
	cJSON *json , *json_params, *json_id, *json_led, *json_display;
	
	memcpy(buf,data,len);
	
	rc = MQTTDeserialize_publish(&dup, &qos, &retained, &msgid, &receivedTopic,&payload_in, &payloadlen_in, (unsigned char*)buf, buflen);	//服务器有推送信息
	printf("message arrived : %s\r\n", payload_in);
	
	json = cJSON_Parse((char *)payload_in);			//解析数据包
	if (!json)  
	{
    
      
		printf("Error before: [%s]\r\n",cJSON_GetErrorPtr());  
	} 
	else
	{
    
    
		json_id = cJSON_GetObjectItem(json , "id"); 
		if(json_id->type == cJSON_String)
		{
    
    
			printf("id:%s\r\n", json_id->valuestring);  
		}
		json_params = cJSON_GetObjectItem(json , "params");  
		if(json_params)  
		{
    
      
			if(cJSON_GetObjectItem(json_params, "LED0"))
			{
    
    
				json_led  = cJSON_GetObjectItem(json_params, "LED0");
				if(json_led->type == cJSON_Number)
				{
    
    
					printf("LED:%d\r\n", json_led->valueint);  
					if(json_led->valueint == 1)
					{
    
    
						LED0 = 0;
					}
					else
					{
    
    
						LED0 = 1;
					}			
				}
			}
			if(cJSON_GetObjectItem(json_params, "display"))
			{
    
    
				json_display = cJSON_GetObjectItem(json_params, "display");
				if (json_display->type == cJSON_String)  
				{
    
      
					//暂不处理
				}  
			}
		} 
	}
	cJSON_Delete(json);
	
	return TRUE;
}

5.2.8 Sondeo, lectura del tipo de datos de retorno MQTT

Insertar descripción de la imagen aquí

5.2.9 Enviar los datos del sensor de temperatura y humedad dht12 al servidor

Insertar descripción de la imagen aquí

Nota: Dado que este diseño utiliza ESP8266 para la red, la parte del código de red ESP8266 no se explicará demasiado. Puede consultar los ejemplos relevantes.

6. Información de conexión

Insertar descripción de la imagen aquí
Nota: La comunicación del puerto serie utiliza el método DMA del puerto serie, activa el método de transmisión y recepción de interrupción DMA del puerto serie y utiliza el sistema operativo freertos.

7. Mapa físico

Insertar descripción de la imagen aquí

Siguiente capítulo: Obtenga tiempo de red conectándose a Alibaba Cloud basado en STM32 + MQTT
Enlace: enlace (https://blog.csdn.net/qq_39721016/article/details/123090137?spm=1001.2014.3001.5501)

Supongo que te gusta

Origin blog.csdn.net/qq_39721016/article/details/123028865
Recomendado
Clasificación