Update P4FollowLine authored by Roberto's avatar Roberto
[[_TOC_]]
TODO:
- Como iniciar vuelta (espera a tener WiFi) y comienza.
- Comunicación puerto serie.
......@@ -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.
- Detección de obstáculos
## Diagrama
## 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
El robot incorpora un Ardunio UNO que actúa de cerebro del sistema controlando todos los sensores y actuadores.
### Sensor Infra-rojo
### Servo
### Motores
## ESP32
......@@ -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
![image](uploads/f1b3b5966d7058810d6855c53bc3fb4b/image.png)
- Introduce la siguiente URL en "Additional Board Manager URLs"
```
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 de configurar correctamente el modelo de placa "AI Thinker ESP32-CAM" ![image](uploads/19fd243e2699fd69fc3e81c0a1ae8950/image.png)
### 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:
```c
......@@ -102,6 +107,7 @@ void setup() {
void loop() {
}
```
## Comunicación IoT
### MQTT
......@@ -128,9 +134,10 @@ mosquitto_sub -v -h 193.147.53.2 -p 18830 -t /SETR/2022/$ID_EQUIPO/
```
#### 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:
```json
{
"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/
```
#### 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:
```
{
"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/
```
#### 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:
```json
{
"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/
```
#### 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:
```
{
"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/
```
#### 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:
```json
{
"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/
}
```
#### 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:
```json
{
"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/
```
#### 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:
```json
{
"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/
```
#### Mensajes PING
* Descripción: Mensaje de estado mandado cada 5 segundos.
* Descripción: Mensaje de estado mandado cada 5 segundos.
* Payload JSON:
```json
{
"team_name": "$TU_NOMBRE_DE_EQUIPO ",
......
......