Update P4FollowLine with WiFi reminder authored by Francisco Miguel's avatar Francisco Miguel
...@@ -16,10 +16,10 @@ La práctica se realizará por grupos de 2 estudiantes. Puedes consultar los gru ...@@ -16,10 +16,10 @@ La práctica se realizará por grupos de 2 estudiantes. Puedes consultar los gru
La evaluación y objetivos de esta práctica son: La evaluación y objetivos de esta práctica son:
- Sigue la línea lo más rápido posible sin salirse. - Sigue la línea lo más rápido posible sin salirse.
- Comunicación IoT a través de MQTT - Comunicación IoT a través de MQTT.
- Comunicación serie entre ESP32 y Arduino UNO - Comunicación serie entre ESP32 y Arduino UNO.
- Si el robot pierde la línea se permite realizar una búsqueda de la línea de nuevo. - Si el robot pierde la línea se permite realizar una búsqueda de la línea de nuevo.
- Detección de obstáculos - Detección de obstáculos.
## 2. Esquema ## 2. Esquema
...@@ -45,7 +45,7 @@ El robot incorpora un Ardunio UNO que actúa de cerebro del sistema controlando ...@@ -45,7 +45,7 @@ El robot incorpora un Ardunio UNO que actúa de cerebro del sistema controlando
### 4.2 Sensor Infra-rojo ### 4.2 Sensor Infra-rojo
Los sensores infra-rojos, son sensores analógicos. Usa toda su potencia y rango continuo de valores. **¡No los utilices como sensores digitales!** Los sensores infra-rojos son sensores analógicos. Usa toda su potencia y rango continuo de valores. **¡No los utilices como sensores digitales!**
``` ```
#define PIN_ITR20001-LEFT A2 #define PIN_ITR20001-LEFT A2
#define PIN_ITR20001-MIDDLE A1 #define PIN_ITR20001-MIDDLE A1
...@@ -103,23 +103,23 @@ El robot incluye un modelo ESP32 CAM, que nos permite comunicarnos a través de ...@@ -103,23 +103,23 @@ El robot incluye un modelo ESP32 CAM, que nos permite comunicarnos a través de
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
``` ```
- Asegurate que tienes instalado el paquete ESP32 dentro de "Boards Manager" en tu arduino IDE ![image](uploads/d96dbb4ddbe73efd127df2add7a55a52/image.png) - Asegúrate de que tienes instalado el paquete ESP32 dentro de "Boards Manager" en tu arduino IDE ![image](uploads/d96dbb4ddbe73efd127df2add7a55a52/image.png)
- Asegurate de configurar correctamente el modelo de placa "AI Thinker ESP32-CAM" ![image](uploads/19fd243e2699fd69fc3e81c0a1ae8950/image.png) - Asegúrate de configurar correctamente el modelo de placa "AI Thinker ESP32-CAM" ![image](uploads/19fd243e2699fd69fc3e81c0a1ae8950/image.png)
Por último asegurate que en los laboratorios, te aparecen 2 puertos detectados (ttyS4 y ttyUSB0). Utiliza éste último para realizar la programación del ESP32. Por último, asegúrate de que en los laboratorios te aparecen 2 puertos detectados (ttyS4 y ttyUSB0). Utiliza éste último para realizar la programación del ESP32.
### 5.2 Comprobar la conexión WiFi ### 5.2 Comprobar la conexión WiFi
- Puedes comprobar la conexión WiFi (ESP) y la IP asignada. Para ello utilizaremos la red wifi eduroam. Puedes utilizar de base el código de ejemplo de **[eduroam](https://gitlab.etsit.urjc.es/roberto.calvo/setr/-/tree/main/practicas/P4-FollowLineIoT/ESP32/eduroam)** del repositorio. - Puedes comprobar la conexión WiFi (ESP) y la IP asignada. Para ello utilizaremos la red wifi eduroam. Puedes utilizar de base el código de ejemplo de **[eduroam](https://gitlab.etsit.urjc.es/roberto.calvo/setr/-/tree/main/practicas/P4-FollowLineIoT/ESP32/eduroam)** del repositorio. **IMPORTANTE: Recuerda que no debes publicar ni entregar tus credenciales de eduroam.**
Si ves que la wifi no te da IP, puedes realizar pruebas con la wifi que levantes en tu smartphone (Hotspot) o con cualquier otra wifi (incluso la de tu casa, si haces pruebas allí). Si ves que la WiFi no te da IP, puedes realizar pruebas con la WiFi que levantes en tu smartphone (Hotspot) o con cualquier otra WiFi (incluso la de tu casa, si haces pruebas allí).
## 6. Comunicación Serie ## 6. Comunicación Serie
Revisa el código de ejemplo que encontrarás en [SerialCommunication](https://gitlab.etsit.urjc.es/roberto.calvo/setr/-/tree/main/practicas/P4-FollowLineIoT/SerialComArduinoESP32) para entender como es posible comunicar los puertos serie del ESP y de Arduino. Este ejemplo muestra comunicación en ambos sentidos y hace uso de LedFast. Revisa el código de ejemplo que encontrarás en [SerialCommunication](https://gitlab.etsit.urjc.es/roberto.calvo/setr/-/tree/main/practicas/P4-FollowLineIoT/SerialComArduinoESP32) para entender como es posible comunicar los puertos serie del ESP y de Arduino. Este ejemplo muestra comunicación en ambos sentidos y hace uso de LedFast.
La comunicación serie puede ser bidireccional, es decir, podemos mandar mensajes del ESP al arduino y viceversa. El comportamiento sigue línea NUNCA puede comenzar hasta que el ESP confirme que tiene WiFi y está conectado el servidor MQTT. La comunicación serie puede ser bidireccional, es decir, podemos mandar mensajes del ESP al arduino y viceversa. El comportamiento sigue línea NUNCA puede comenzar hasta que el ESP confirme que tiene WiFi y que está conectado al servidor MQTT.
**IMPORTANTE:** Para que la comunicación serie entre el ESP y Arduino funcione correctamente, el switch S1 de la placa de expansión debe estar en la posición "CAM". Recuerda que ese switch debe estar en la posición "UPLOAD" para cargar el programa en la placa Arduino. **IMPORTANTE:** Para que la comunicación serie entre el ESP y Arduino funcione correctamente, el switch S1 de la placa de expansión debe estar en la posición "CAM". Recuerda que ese switch debe estar en la posición "UPLOAD" para cargar el programa en la placa Arduino.
...@@ -129,7 +129,7 @@ La comunicación serie puede ser bidireccional, es decir, podemos mandar mensaje ...@@ -129,7 +129,7 @@ La comunicación serie puede ser bidireccional, es decir, podemos mandar mensaje
### 7.1 MQTT ### 7.1 MQTT
Desde el ESP32 tendrás que conectarte y mantener la conexión abierta para mandar mensajes al servidor según vayas completando el circuito. Para ello necesitarás instalar la librería **[Adafruit-MQTT](https://github.com/adafruit/Adafruit_MQTT_Library)** Desde el ESP32 tendrás que conectarte y mantener la conexión abierta para mandar mensajes al servidor según vayas completando el circuito. Para ello, necesitarás instalar la librería **[Adafruit-MQTT](https://github.com/adafruit/Adafruit_MQTT_Library)**
![image](uploads/b5c7a2e793073040027586f74d06d004/image.png) ![image](uploads/b5c7a2e793073040027586f74d06d004/image.png)
...@@ -141,7 +141,7 @@ Nota: Este servidor es público, lo que quiere decir que puedes conectarte a él ...@@ -141,7 +141,7 @@ Nota: Este servidor es público, lo que quiere decir que puedes conectarte a él
### 7.2 Mensajes ### 7.2 Mensajes
Tu robot debe mandar los siguientes mensajes siempre conectando al servidor MQTT y utilizando obligatoriamente el siguiente TOPIC Tu robot debe mandar los siguientes mensajes siempre conectando al servidor MQTT y utilizando obligatoriamente el siguiente TOPIC:
```bash ```bash
/SETR/2024/$ID_EQUIPO/ /SETR/2024/$ID_EQUIPO/
...@@ -160,7 +160,7 @@ mosquitto_pub -h 193.147.79.118 -p 21883 -t /SETR/2024/$ID_EQUIPO/ -m "hello wor ...@@ -160,7 +160,7 @@ mosquitto_pub -h 193.147.79.118 -p 21883 -t /SETR/2024/$ID_EQUIPO/ -m "hello wor
#### Mensaje de inicio de vuelta #### Mensaje de inicio de vuelta
* Descripción: Este mensaje debe enviarse siempre justo antes de empezar la vuelta al circuito. Por tanto debe realizarse sólo 1 vez. **IMPORTANTE: La vuelta nunca podrá comenzar si no hay conexión a la red WiFi ni a MQTT.** * Descripción: Este mensaje debe enviarse siempre justo antes de empezar la vuelta al circuito. Por tanto, debe realizarse sólo 1 vez. **IMPORTANTE: La vuelta nunca podrá comenzar si no hay conexión a la red WiFi ni a MQTT.**
* Payload JSON: * Payload JSON:
...@@ -235,7 +235,7 @@ mosquitto_pub -h 193.147.79.118 -p 21883 -t /SETR/2024/$ID_EQUIPO/ -m "hello wor ...@@ -235,7 +235,7 @@ mosquitto_pub -h 193.147.79.118 -p 21883 -t /SETR/2024/$ID_EQUIPO/ -m "hello wor
#### Mensaje Inicio Búsqueda de Linea (OPCIONAL) #### Mensaje Inicio Búsqueda de Linea (OPCIONAL)
* Descripción: Opcionalmente tienes la posibilidad de implementar un comportamiento "encuentra línea" una vez que te hayas salido del camino (esto te permitirá reducir la penalización). * Descripción: Opcionalmente, tienes la posibilidad de implementar un comportamiento "encuentra línea" una vez que te hayas salido del camino (esto te permitirá reducir la penalización).
* Payload JSON: * Payload JSON:
```json ```json
...@@ -292,9 +292,9 @@ mosquitto_pub -h 193.147.79.118 -p 21883 -t /SETR/2024/$ID_EQUIPO/ -m "hello wor ...@@ -292,9 +292,9 @@ mosquitto_pub -h 193.147.79.118 -p 21883 -t /SETR/2024/$ID_EQUIPO/ -m "hello wor
### 8.1 Día de Test y Día de Examen ### 8.1 Día de Test y Día de Examen
El **Martes 17 de Diciembre** en horario de clase cada equipo dispondrá de al menos 5 minutos para probar su solución en el circuito real y con la parte de comunicaciones realizada. Podrá comprobar así que los mensajes MQTT están bien formados y son correctos. El **Martes 17 de Diciembre** en horario de clase, cada equipo dispondrá de al menos 5 minutos para probar su solución en el circuito real y con la parte de comunicaciones realizada. Podrá comprobar así que los mensajes MQTT están bien formados y son correctos.
El **Jueves 19 de Diciembre** en horario de clase cada equipo dispondrá de máximo de **2 rondas/tests** para realizar el circuito. Entre ronda y ronda está permitido modificar el código del programa. El **Jueves 19 de Diciembre** en horario de clase, cada equipo dispondrá de máximo de **2 rondas/tests** para realizar el circuito. Entre ronda y ronda está permitido modificar el código del programa.
El circuito será idéntico para ambos días. El circuito será idéntico para ambos días.
... ...
......