FC41D es un módulo independiente de WI-Fi 802.11b/g/n y Bluetooth 5.2 con recursos integrados para aplicaciones de WI-Fi y Bluetooth. Soporta modos de WI-Fi AP y STA junto con Bluetooth de bajo consumo.
Este tutorial mostrará los pasos y la lista de comandos AT necesarios para enviar datos a Ubidots utilizando módulos WI-Fi FC41D.
Nota: Esta guía utiliza una placa de evaluación basada en FC41D, sin embargo, estos pasos de configuración también funcionan en el chip independiente, solo necesitas asegurarte de conectar todo correctamente.
Requisitos
Un dispositivo basado en FC41D.
WI-Fi con acceso a internet así como sus credenciales (SSID de la red y contraseña).
Entender cómo enviar datos a través de nuestra API de datos HTTP(S).
Cualquier terminal serial. Esta guía utilizó la utilidad de terminal serial de Arduino, sin embargo, puedes elegir cualquier que te resulte cómoda.
1. Configurar conexión serial
Comienza conectando la placa de evaluación a la PC usando un cable USB. Esto permitirá la comunicación serial con el módulo, luego, abre tu utilidad de terminal serial. En caso de que estés usando el terminal serial de Arduino, comienza seleccionando el dispositivo serial con el que vas a comunicarte: dirígete a "Herramientas" ---> "Puerto" y selecciona tu dispositivo.
Debería estar etiquetado como "/dev/ttyUSB0" si estás usando Linux.
Después de seleccionar el puerto serial que vas a usar, procede a abrir el "Monitor Serial" desde "Herramientas". Todo lo que se dijo aquí está representado en la siguiente imagen:
Después de hacer clic en "Monitor Serial" se mostrará la siguiente GUI, asegúrate de establecer la velocidad de baudios en 115200 así como configurar la opción "Ambos NL & CR" desde la parte inferior de la ventana como se muestra a continuación:
Ahora deberías verificar si hay comunicación entre la PC y el módulo FC41D. Para hacerlo, escribe en el campo de texto el siguiente comando y presiona el botón "Enviar":
AT+QVERSION
Entonces el dispositivo debería responder con algo como:
FC41D_VERSION:FC41DAAR03A03.bin_202202211819OK
Ahora que la comunicación con el módulo FC41D está establecida, configuremos los ajustes de WI-Fi para enviar datos.
2. Configurar conexión WI-Fi
Antes de que se pueda realizar una solicitud HTTPS, el módulo debe estar conectado a una red WI-Fi. El siguiente comando AT logra eso y guarda las credenciales para que el dispositivo se conecte automáticamente en el próximo inicio.
AT+QSTAAPINFODEF=ssid,password
Así como hiciste en la sección anterior, envía el comando anterior escribiéndolo en el campo de texto y luego presiona el botón "Enviar". Además, reemplaza ssid y password con tus credenciales de red. Después de hacerlo, el dispositivo debería responder con un mensaje "OK".
3. Configurar parámetros HTTP(S)
Para mantener tus datos seguros y privados, se utilizará HTTPS para enviar datos a Ubidots y ser un poco más seguro; el dispositivo verificará que efectivamente se está conectando a Ubidots. Para lograr eso, el certificado raíz PEM de Ubidots se guardará en el almacenamiento volátil del dispositivo.
Envía el siguiente comando para poner el dispositivo en un modo para cargar el certificado raíz PEM de Ubidots en su medio de almacenamiento:
AT+QSSLCERT="CA",2,3139
El dispositivo responderá con un mensaje "CONNECT", espera por ello y luego copia y pega el siguiente texto como si fuera cualquiera de los comandos que has enviado antes:
-----BEGIN CERTIFICATE----- MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4 WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+ 0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ 3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5 ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq 4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc= -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/ MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw 7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69 ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5 JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ -----END CERTIFICATE-----
Las siguientes dos imágenes representan el proceso:
Si la transferencia tuvo éxito, deberías recibir una respuesta como:
OK
Luego, envía los siguientes comandos AT para configurar la conexión HTTPS al servidor de Ubidots, teniendo en cuenta que después de enviar cada comando, deberías esperar su respuesta "OK" antes de enviar el siguiente:
AT+QSSLCFG="version",0,3AT+QSSLCFG="ciphersuite",0,0xFFFFAT+QSSLCFG="verify",0,0AT+QHTTPCFG="sslctxid",0
4. Enviar datos
Supongamos que tienes un sensor de temperatura basado en FC41D para el cual deseas ingerir datos, entonces de acuerdo con nuestra documentación de API, puedes hacerlo realizando una solicitud HTTP(S) de la siguiente manera:
https://industrial.api.ubidots.com/api/v1.6/devices/<device_label>/
Ten en cuenta cambiar "<device_label>" por la etiqueta de tu dispositivo. Ten en cuenta que si no hay un dispositivo con la etiqueta proporcionada, Ubidots creará uno para ti con esa etiqueta.
Vamos a enviar datos a un dispositivo etiquetado como "fc41d-temperature-sensor", escribe el siguiente comando junto con la URL de acuerdo con nuestra API, esto configurará la URL para enviar futuras solicitudes:
AT+QHTTPCFG="url","https://industrial.api.ubidots.com/api/v1.6/devices/fc41d-temperature-sensor/"
Agrega encabezados de solicitud enviando los siguientes comandos AT, reemplazando <Ubidots token> con tu token.
AT+QHTTPCFG="header","Content-Type","application/json"AT+QHTTPCFG="header","X-Auth-Token","<Ubidots token>"
Consulta este enlace si olvidaste dónde encontrar tu Token.
De acuerdo con el formato compatible con JSON de Ubidots, para enviar datos a una variable llamada "temperatura", el cuerpo JSON debe ser el siguiente:
{"temperature":198}
Para enviar este mensaje a través del comando AT correspondiente, se necesita establecer la longitud del mensaje, por lo que siempre debes contar el número de caracteres que deseas enviar. En el caso anterior, la longitud del mensaje es de 19 caracteres.
Para comenzar la transmisión de datos, envía el siguiente comando AT, reemplazando <data_length> con la longitud del mensaje que deseas enviar.
AT+QHTTPPOST=<data_length>,60,60
Dado que en el ejemplo de esta guía, se utilizó la cadena {"temperature":198}, entonces <data_length> se reemplaza por 19.
Después de enviar el comando anterior, espera la respuesta CONNECT
y luego envía los datos de la solicitud como un mensaje en bruto, tal como lo hiciste al enviar el certificado raíz PEM.
Después de recibir OK
, puedes leer la respuesta del servidor con:
AT+QHTTPREAD=60
Ejemplo:
AT+QHTTPPOST=19,60,60CONNECT{"temperature":198}OK+QHTTPPOST: 0,200AT+QHTTPREAD=60CONNECT{"temperature":[{"status_code":201}]}OK+QHTTPREAD: 0