Conexión a Alibaba Cloud basada en STM32+FreeRtos+DHT12+ESP8266+MQTT
- 1. Información general
- 2. Pasos de implementación
- 3. Construya una plataforma en la nube
- 4. Conéctese a la plataforma en la nube de Alibaba (MQTT.fx)
- 5. Conéctese a la plataforma en la nube de Alibaba (STM32)
-
- 5.1 Información de depuración
- 5.2 Análisis del código fuente
-
- 5.2.1 Iniciar una conexión con el servidor (CONNECT)
- 5.2.2 El servidor responde al recibo de conexión (CONNACK)
- 5.2.3 Iniciar una suscripción al servidor (SUSCRIBIRSE)
- 5.2.4 Recibo de suscripción de respuesta del servidor (SUBACK)
- 5.2.5 Iniciar una solicitud de paquete de latidos (PINREQ) al servidor
- 5.2.6 El servidor responde al recibo de latido (PINGRESP)
- 5.2.7 El servidor publica mensajes
- 5.2.8 Sondeo, lectura del tipo de datos de retorno MQTT
- 5.2.9 Enviar los datos del sensor de temperatura y humedad dht12 al servidor
- 6. Información de conexión
- 7. Mapa físico
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
4. Vamos créelo primero Para un producto, el proceso de creación es el siguiente:
Luego haga clic en Confirmar.
5. Una vez que el producto esté listo, es necesario colgar el dispositivo debajo del producto.
6. El nombre del dispositivo se agregó en la configuración.
7. Verifique la información del dispositivo agregado
. Tenga en cuenta que se necesita la siguiente información al conectarse a la plataforma Alibaba Cloud.
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.打开软件
2.2.配置相关信息
3. Depuración de conexión
3.1. Verifique la lista de temas. Necesitará usar
3.2. Suelte el interruptor LED y las funciones de temperatura y humedad más adelante.
3.3. Agregar funciones personalizadas,
3.4. Finalmente, recuerda publicar.
3.5. Conéctese al servidor
3.6. Se debe hacer clic en el contenido push en la plataforma Alibaba Cloud
3.7. Envíe los datos de temperatura y humedad al servidor de la plataforma Alibaba Cloud
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
5.2 Análisis del código fuente
5.2.1 Iniciar una conexión con el servidor (CONNECT)
5.2.2 El servidor responde al recibo de conexión (CONNACK)
5.2.3 Iniciar una suscripción al servidor (SUSCRIBIRSE)
5.2.4 Recibo de suscripción de respuesta del servidor (SUBACK)
5.2.5 Iniciar una solicitud de paquete de latidos (PINREQ) al servidor
5.2.6 El servidor responde al recibo de latido (PINGRESP)
5.2.7 El servidor publica mensajes
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
5.2.9 Enviar los datos del sensor de temperatura y humedad dht12 al servidor
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
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
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)