{"id":5463,"date":"2024-01-07T11:46:02","date_gmt":"2024-01-07T10:46:02","guid":{"rendered":"https:\/\/bitacora.eniac2000.com\/?p=5463"},"modified":"2024-01-07T11:46:02","modified_gmt":"2024-01-07T10:46:02","slug":"sistema-de-telemetria-2-0-basado-en-esp32","status":"publish","type":"post","link":"https:\/\/bitacora.eniac2000.com\/?p=5463","title":{"rendered":"Sistema de telemetr\u00eda 2.0, basado en ESP32"},"content":{"rendered":"<p>Hace ya algunos a\u00f1os, cuando a\u00fan viv\u00edamos en Irlanda, desarroll\u00e9 un <a href=\"https:\/\/bitacora.eniac2000.com\/?p=4077\" title=\"Sistema de telemetr\u00eda y geoposicionamiento para veh\u00edculos\" target=\"_blank\">sistema de telemetr\u00eda<\/a> casero para el Mercedes C180 Sportcoupe que ten\u00edamos all\u00ed, basado en una Raspberry Pi y un receptor GPS, junto con un conector OBD-II por Bluetooth para leer datos de la centralita del coche. Fue un sistema que estuvo funcionando estupendamente bien, pero que dej\u00e9 de utilizar, por razones que no vienen al caso.<\/p>\n<p>En fechas recientes me he decidido a revivirlo (tambi\u00e9n por razones que no vienen al caso), pero quer\u00eda darle una vuelta de tuerca al sistema, para cambiar algunas caracter\u00edsticas que -estando bien- no se amoldaban del todo a mis necesidades. La principal de ella es que el sistema original depend\u00eda de una conexi\u00f3n Bluetooth con un tel\u00e9fono m\u00f3vil que hiciera de m\u00f3dem sobre este medio, a fin de proporcionar conectividad al exterior. Buscaba que la nueva versi\u00f3n del entorno tuviera conectividad independiente, a fin de poder hacer seguimiento del coche de manera m\u00e1s sencilla. Mi primera idea fue conectar un modem USB a la Raspberry Pi, pero se trata de un modelo 2 de la RPi, que s\u00f3lo dispone de 2 conexiones USB, y ambas estaban en uso: una para el receptor GPS, y otra para el dongle Bluetooth que se necesita para conectar con la centralita del coche. Pens\u00e9 en portar todo a una RPi m\u00e1s moderna, pero fue aqu\u00ed cuando entr\u00f3 en danza el siguiente artilugio:<\/p>\n<figure id=\"attachment_5465\" aria-describedby=\"caption-attachment-5465\" style=\"width: 640px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2024\/01\/lilygo-ttgo-T-A7670G.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2024\/01\/lilygo-ttgo-T-A7670G.jpg\" alt=\"LilyGO TTGO T-A7670G\" title=\"LilyGO TTGO T-A7670G\" width=\"640\" height=\"640\" class=\"size-full wp-image-5465\" \/><\/a><figcaption id=\"caption-attachment-5465\" class=\"wp-caption-text\">LilyGO TTGO T-A7670G<\/figcaption><\/figure>\n<p>Se trata de un dispositivo LilyGO TTGO T-A7670G. Se trata de un ESP-32 que proporciona, de manera simult\u00e1nea, conectividad Bluetooth, z\u00f3calo para tarjetas de telefon\u00eda 4G, receptor GPS, e incluso un z\u00f3calo para conectar una bater\u00eda 18650, todo ello en una sola placa. Ya ten\u00eda experiencia trabajando con ESP-32 en Arduino, lo cual era una gran ventaja para m\u00ed, adem\u00e1s de trabajar con estos componentes por separado, pero nunca lo hab\u00eda hecho con una placa de fabricante que proporcionara todos estos elementos de manera integrada. Mucho mejor que tener que ir montando componentes por separado.<\/p>\n<p>El fabricante, adem\u00e1s, proporciona un <a href=\"https:\/\/github.com\/Xinyuan-LilyGO\/LilyGO-T-A76XX\" target=\"_blank\">repositorio en GitHub<\/a> donde acceder a librer\u00edas, ejemplos de c\u00f3digo, documentaci\u00f3n, e incluso esquem\u00e1ticos de carcasas, lo que ha hecho que haya podido imprimir una caja para el dispositivo:<\/p>\n<figure id=\"attachment_5464\" aria-describedby=\"caption-attachment-5464\" style=\"width: 400px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2024\/01\/IMG_20240107_111112550_HDR.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2024\/01\/IMG_20240107_111112550_HDR-400x276.jpg\" alt=\"TTGO con carcasa 3D y receptor GPS\" title=\"TTGO con carcasa 3D y receptor GPS\" width=\"400\" height=\"276\" class=\"size-medium wp-image-5464\" \/><\/a><figcaption id=\"caption-attachment-5464\" class=\"wp-caption-text\">TTGO con carcasa 3D y receptor GPS<\/figcaption><\/figure>\n<p>Con todo esto, he podido realizar una nueva versi\u00f3n del sistema de telemetr\u00eda, con las siguientes caracter\u00edsticas:<\/p>\n<ul>\n<li>Hago uso de una tarjeta de datos 4G espa\u00f1ola, de tipo MicroSIM, con un funcionamiento excelente. El sistema apenas consume sobre 2-3 MB de datos, haciendo env\u00edo de informaci\u00f3n cada 10 segundos a la plataforma.<\/li>\n<li>La conectividad, como en el caso original, est\u00e1 basada en el env\u00edo de datos en formato JSON a un servidor MQTT. Posteriormente esa informaci\u00f3n es consumida de diversas maneras, tanto para proporcionar ubicaci\u00f3n en tiempo real, como para realizar anal\u00edtica de datos sobre el viaje. A diferencia del caso original, el env\u00edo de informaci\u00f3n se hace directamente al MQTT remoto, en vez de componer un MQTT local que se sincroniza con el remoto, cosa que se hac\u00eda para preservar el env\u00edo de informaci\u00f3n en caso de p\u00e9rdida de conectividad. En este caso, he podido comprobar que no se producen p\u00e9rdidas de datos significativas, por lo que he preferido simplificar.<\/li>\n<li>El sistema hace uso del GPS integrado para recibir informaci\u00f3n GPS. Este es un punto importante en el caso de esta placa. Existen diversas variantes de la misma, con cobertura GPS regional, global, o sin cobertura GPS. En mi caso, hago uso de la placa \u00abA7670G R2 With GPS\u00bb, que es el que proporciona cobertura GPS global, y m\u00e1s compatibilidad con sistemas de telefon\u00eda, pero tiene el detalle de que el m\u00f3dulo GPS no est\u00e1 integrado en la placa, sino como m\u00f3dulo anexo, en la trasera de la misma, junto al z\u00f3calo de la bater\u00eda 18650. Esto implica que el modo de uso del GPS es distinto, <a href=\"https:\/\/github.com\/Xinyuan-LilyGO\/LilyGO-T-A76XX\/tree\/main\/examples\/GPSShield\" target=\"_blank\">haciendo uso de la librer\u00eda GPSShield<\/a>, en vez del ejemplo convencional que indica el fabricante. Esto me tuvo un tiempo dando vueltas, hasta que me di cuenta de ello.\n<p><a href=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2024\/01\/comprarativa-a7670.jpg\"><img decoding=\"async\" src=\"https:\/\/bitacora.eniac2000.com\/wp-content\/uploads\/2024\/01\/comprarativa-a7670.jpg\" alt=\"Tabla comprarativa de versiones A7670X\" title=\"Tabla comprarativa de versiones A7670X\" class=\"aligncenter size-full wp-image-5466\" \/><\/a><\/p>\n<p>Adem\u00e1s, la placa viene con una antena GPS pasiva. Esto est\u00e1 bien si el dispositivo se encuentra directamente al aire libre, pero era problem\u00e1tico si estaba dentro de una casa o de un coche, ya que apenas ten\u00eda cobertura. Para solucionar este inconveniente tuve que hacer uso de una <a href=\"https:\/\/es.aliexpress.com\/item\/32995287807.html?spm=a2g0o.order_list.order_list_main.23.14b3194dI61qrb&#038;gatewayAdapt=glo2esp\" target=\"_blank\">antena GPS activa con conector SMA<\/a>, y hacer uso de un <a href=\"https:\/\/es.aliexpress.com\/item\/1005005697399884.html?spm=a2g0o.productlist.main.3.144b6451iNrFfC&#038;algo_pvid=f90bae92-5b54-481a-badf-8633765f9b5a&#038;algo_exp_id=f90bae92-5b54-481a-badf-8633765f9b5a-1&#038;pdp_npi=4%40dis%21EUR%210.64%210.48%21%21%210.68%21%21%402103956b17046239062745039e00e5%2112000034043165460%21sea%21ES%21167900195%21&#038;curPageLogUid=XF010sbyB6A0&#038;utparam-url=scene%3Asearch%7Cquery_from%3A\" target=\"_blank\">pigtail UFL\/U.FL\/IPX a RP-SMA\/SMA<\/a>. Nada grave, pero s\u00ed un poco molesto. Ahora bien, en cuanto dispuse de esta antena activa el sistema pas\u00f3 a ser capaz de detectar se\u00f1al GPS incluso en interiores. Todo una diferencia, y sin necesidad de reprogramar.<\/li>\n<li>La telemetr\u00eda OBD-II es algo que no he conseguido hacer funcionar a\u00fan del todo. Si bien la placa es capaz de conectar correctamente con mi conector OBD-II por Bluetooth, no es capaz de extraer correctamente los datos de la centralita. Hago uso para ello de la <a href=\"https:\/\/github.com\/PowerBroker2\/ELMduino\" target=\"_blank\">librer\u00eda ELMduino<\/a>, que conoc\u00eda desde hace algunos a\u00f1os, pero con la que no he tenido resultados muy buenos hasta ahora. Antes hac\u00eda uso de un ESP-32 convencional, y esperaba que con esta placa funcionara mejor, pero no ha sido el caso. Puede ser tema del dongle Bluetooth, que es de los baratillos. He encargado otro, para probar, as\u00ed que espero mejoras al respecto.<\/li>\n<\/ul>\n<p>En estos d\u00edas he estado haciendo algunas pruebas, y al margen de la captura de datos de la centralita, el resultado es bastante bueno. Espero poder seguir haciendo mejor al respecto en las pr\u00f3ximas semanas.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hace ya algunos a\u00f1os, cuando a\u00fan viv\u00edamos en Irlanda, desarroll\u00e9<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[13],"tags":[42,133,234,619,745,839,983,1134,1184,1606],"series":[],"class_list":["post-5463","post","type-post","status-publish","format-standard","hentry","category-informatica","tag-a7670","tag-arduino","tag-bluetooth","tag-esp32","tag-gps","tag-impresora-3d","tag-lilygo","tag-mqtt","tag-obd-ii","tag-telemetria"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts\/5463","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5463"}],"version-history":[{"count":0,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=\/wp\/v2\/posts\/5463\/revisions"}],"wp:attachment":[{"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5463"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5463"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5463"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/bitacora.eniac2000.com\/index.php?rest_route=%2Fwp%2Fv2%2Fseries&post=5463"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}