Update P4FollowLine authored by Roberto's avatar Roberto
[[_TOC_]] [[_TOC_]]
TODO: TODO:
- Como iniciar vuelta (espera a tener WiFi) y comienza. - Como iniciar vuelta (espera a tener WiFi) y comienza.
- Comunicación puerto serie. - Comunicación puerto serie.
...@@ -13,23 +14,23 @@ La evaluación y objetivos de esta práctica son: ...@@ -13,23 +14,23 @@ La evaluación y objetivos de esta práctica son:
- Si el robot se sale se permite realizar una búsqueda de la línea. - Si el robot se sale se permite realizar una búsqueda de la línea.
- Detección de obstáculos - Detección de obstáculos
## Diagrama ## Diagrama
## Montaje ## Montaje
Consulta el manual que viene con el kit y el siguiente vídeo: Consulta el manual que viene con el kit y el siguiente [vídeo](https://www.youtube.com/watch?v=GQi99xmohdw&ab_channel=ElegooOfficial)
<dl>
<iframe width="560" height="315" src="https://www.youtube.com/embed/GQi99xmohdw" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</dl>
## Arduino ## Arduino
El robot incorpora un Ardunio UNO que actúa de cerebro del sistema controlando todos los sensores y actuadores. El robot incorpora un Ardunio UNO que actúa de cerebro del sistema controlando todos los sensores y actuadores.
### Sensor Infra-rojo ### Sensor Infra-rojo
### Servo ### Servo
### Motores ### Motores
## ESP32 ## ESP32
...@@ -41,14 +42,18 @@ El robot incluye un modelo ESP32 CAM, que nos permite comunicarnos a través de ...@@ -41,14 +42,18 @@ El robot incluye un modelo ESP32 CAM, que nos permite comunicarnos a través de
- Primero, añade el repositorio para ESP32 dentro de tu Arduino IDE - Primero, añade el repositorio para ESP32 dentro de tu Arduino IDE
![image](uploads/f1b3b5966d7058810d6855c53bc3fb4b/image.png) ![image](uploads/f1b3b5966d7058810d6855c53bc3fb4b/image.png)
- Introduce la siguiente URL en "Additional Board Manager URLs" - Introduce la siguiente URL en "Additional Board Manager URLs"
``` ```
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) - Asegurate 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) - Asegurate de configurar correctamente el modelo de placa "AI Thinker ESP32-CAM" ![image](uploads/19fd243e2699fd69fc3e81c0a1ae8950/image.png)
### Obtener la MAC del chipset WiFi ### Obtener la MAC del chipset WiFi
- Es necesario obtener la MAC para daros de alta en la wifi (sensoresurjc) que usaremos para las prácticas. Para obtener la MAC utiliza el siguiente código: - Es necesario obtener la MAC para daros de alta en la wifi (sensoresurjc) que usaremos para las prácticas. Para obtener la MAC utiliza el siguiente código:
```c ```c
...@@ -102,6 +107,7 @@ void setup() { ...@@ -102,6 +107,7 @@ void setup() {
void loop() { void loop() {
} }
``` ```
## Comunicación IoT ## Comunicación IoT
### MQTT ### MQTT
...@@ -128,9 +134,10 @@ mosquitto_sub -v -h 193.147.53.2 -p 18830 -t /SETR/2022/$ID_EQUIPO/ ...@@ -128,9 +134,10 @@ mosquitto_sub -v -h 193.147.53.2 -p 18830 -t /SETR/2022/$ID_EQUIPO/
``` ```
#### 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.
* Descripción: Este mensaje debe enviarse siempre justo antes de empezar la vuelta al circuito. Por tanto debe realizarse sólo 1 vez.
* Payload JSON: * Payload JSON:
```json ```json
{ {
"team_name": "$TU_NOMBRE_DE_EQUIPO ", "team_name": "$TU_NOMBRE_DE_EQUIPO ",
...@@ -140,9 +147,10 @@ mosquitto_sub -v -h 193.147.53.2 -p 18830 -t /SETR/2022/$ID_EQUIPO/ ...@@ -140,9 +147,10 @@ mosquitto_sub -v -h 193.147.53.2 -p 18830 -t /SETR/2022/$ID_EQUIPO/
``` ```
#### Mensaje de Fin de vuelta #### Mensaje de Fin de vuelta
* Descripción: Este mensaje debe enviarse siempre al finalizar una vuelta, que lo sabrás porque tendrás un obstáculo delante. Por tanto debe realizarse sólo 1 vez.
* Descripción: Este mensaje debe enviarse siempre al finalizar una vuelta, que lo sabrás porque tendrás un obstáculo delante. Por tanto debe realizarse sólo 1 vez.
* Payload JSON: * Payload JSON:
``` ```
{ {
"team_name": "$TU_NOMBRE_DE_EQUIPO ", "team_name": "$TU_NOMBRE_DE_EQUIPO ",
...@@ -152,9 +160,10 @@ mosquitto_sub -v -h 193.147.53.2 -p 18830 -t /SETR/2022/$ID_EQUIPO/ ...@@ -152,9 +160,10 @@ mosquitto_sub -v -h 193.147.53.2 -p 18830 -t /SETR/2022/$ID_EQUIPO/
``` ```
#### Mensaje Obstáculo Detectado #### Mensaje Obstáculo Detectado
* Descripción: Este mensaje debe enviarse siempre que detectes un obstáculo en el camino de la línea.
* Descripción: Este mensaje debe enviarse siempre que detectes un obstáculo en el camino de la línea.
* Payload JSON: * Payload JSON:
```json ```json
{ {
"team_name": "$TU_NOMBRE_DE_EQUIPO ", "team_name": "$TU_NOMBRE_DE_EQUIPO ",
...@@ -164,9 +173,10 @@ mosquitto_sub -v -h 193.147.53.2 -p 18830 -t /SETR/2022/$ID_EQUIPO/ ...@@ -164,9 +173,10 @@ mosquitto_sub -v -h 193.147.53.2 -p 18830 -t /SETR/2022/$ID_EQUIPO/
``` ```
#### Mensaje Línea Perdida #### Mensaje Línea Perdida
* Descripción: Este mensaje debe enviarse siempre que tu robot se haya salido de la línea.
* Descripción: Este mensaje debe enviarse siempre que tu robot se haya salido de la línea.
* Payload JSON: * Payload JSON:
``` ```
{ {
"team_name": "$TU_NOMBRE_DE_EQUIPO ", "team_name": "$TU_NOMBRE_DE_EQUIPO ",
...@@ -176,9 +186,10 @@ mosquitto_sub -v -h 193.147.53.2 -p 18830 -t /SETR/2022/$ID_EQUIPO/ ...@@ -176,9 +186,10 @@ mosquitto_sub -v -h 193.147.53.2 -p 18830 -t /SETR/2022/$ID_EQUIPO/
``` ```
#### Mensaje Línea Encontrada #### Mensaje Línea Encontrada
* Descripción: Este mensaje debe enviarse siempre que tu robot haya encontrado la línea. Además este mensaje sólo se debe enviar si anteriormente se ha enviado el mensaje **LINE_LOST**
* Descripción: Este mensaje debe enviarse siempre que tu robot haya encontrado la línea. Además este mensaje sólo se debe enviar si anteriormente se ha enviado el mensaje **LINE_LOST**
* Payload JSON: * Payload JSON:
```json ```json
{ {
"team_name": "$TU_NOMBRE_DE_EQUIPO ", "team_name": "$TU_NOMBRE_DE_EQUIPO ",
...@@ -187,11 +198,11 @@ mosquitto_sub -v -h 193.147.53.2 -p 18830 -t /SETR/2022/$ID_EQUIPO/ ...@@ -187,11 +198,11 @@ mosquitto_sub -v -h 193.147.53.2 -p 18830 -t /SETR/2022/$ID_EQUIPO/
} }
``` ```
#### Mensaje Inicio Búsqueda de Linea #### Mensaje Inicio Búsqueda de Linea
* 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
{ {
"team_name": "$TU_NOMBRE_DE_EQUIPO ", "team_name": "$TU_NOMBRE_DE_EQUIPO ",
...@@ -201,9 +212,10 @@ mosquitto_sub -v -h 193.147.53.2 -p 18830 -t /SETR/2022/$ID_EQUIPO/ ...@@ -201,9 +212,10 @@ mosquitto_sub -v -h 193.147.53.2 -p 18830 -t /SETR/2022/$ID_EQUIPO/
``` ```
#### Mensaje Fin Búsqueda de Linea #### Mensaje Fin Búsqueda de Linea
* Descripción: Si has implementado la búsqueda de línea una vez que la has perdido, deberás mandar este mensaje en el momento que la hayas encontrado y por tanto finalizado el comportamiento "encuentra línea"
* Descripción: Si has implementado la búsqueda de línea una vez que la has perdido, deberás mandar este mensaje en el momento que la hayas encontrado y por tanto finalizado el comportamiento "encuentra línea"
* Payload JSON: * Payload JSON:
```json ```json
{ {
"team_name": "$TU_NOMBRE_DE_EQUIPO ", "team_name": "$TU_NOMBRE_DE_EQUIPO ",
...@@ -213,9 +225,10 @@ mosquitto_sub -v -h 193.147.53.2 -p 18830 -t /SETR/2022/$ID_EQUIPO/ ...@@ -213,9 +225,10 @@ mosquitto_sub -v -h 193.147.53.2 -p 18830 -t /SETR/2022/$ID_EQUIPO/
``` ```
#### Mensajes PING #### Mensajes PING
* Descripción: Mensaje de estado mandado cada 5 segundos.
* Descripción: Mensaje de estado mandado cada 5 segundos.
* Payload JSON: * Payload JSON:
```json ```json
{ {
"team_name": "$TU_NOMBRE_DE_EQUIPO ", "team_name": "$TU_NOMBRE_DE_EQUIPO ",
... ...
......