Want to create interactive content? It’s easy in Genially!

Get started free

25-26 5UD3. Projecte Magatzem robotitzat

Make and Learn

Created on August 12, 2025

Start designing with a free template

Discover more than 1500 professional designs like these:

Project Roadmap Timeline

Step-by-Step Timeline: How to Develop an Idea

Artificial Intelligence History Timeline

Practical Timeline

History Timeline

Education Timeline

Timeline video mobile

Transcript

Projecte: Magatzem robotitzat

Comencem!

Presentació del projecte

Requisits tècnics

Projecte: Magatzem robotitzat

Desenvolupa la maqueta d’un magatzem robotitzat a partir de l'encàrrec presentat, seguint les fases que se't plantegen, les eines i materials que se't proporcionin, i fixante amb el resultat esperat.

FASES DEL PROJECTE

Eines i materials

resultat esperat

Projecte: Magatzem robotitzat

Segueix les diferents fases per desenvolupar la maqueta del magatzem robotitzat:

Integració del sistema

CONNEXIONS I MUNTATGE DE L'ESTRUCTURA

OPCIONAL: COMUNICACIÓ BLUETOOTH

Desenvolupament d’una aplicació per a controlar el robot mòbil

PROGRAMACIÓ DELS MOVIMENTS DEL ROBOT MÒBIL

PRESENTACIÓ DEL PROJECTE

Connexions i muntatge de l'estructura

Esquema de connexions dels motors DC (rodes) al controlador L298N

Esquema de connexions del sensor final de cursa a la placa

Esquema de connexions del motor DC (elevador) i controlador L298N

Esquema de connexions general

Programació dels moviments del robot mòbil

A partir dels següents reptes podràs aprendre a programar els moviments del teu robot mòbil utilitzant la placa ESP32 STEAMakers i els diferents components electrònics que ja has connectat.

Control del sistema d’elevació per port sèrie

Control del desplaçament del robot

Inicialització del robot mòbil

Repte 1. Inicialització del robot mòbil

Analitza el diagrama de flux i el programa proporcionat, i explica la funcionalitat de cada línia o bloc de codi dins del programa. Afegeix comentaris detallats al codi proporcionat per explicar la funcionalitat de les instruccions, com interactuen amb els sensors i actuadors, i el seu paper en el flux general del programa. Relaciona les instruccions de codi amb els components físics del robot, com ara els pins de control, els motors de les rodes i els sensors de final de cursa. Realitza proves independents per a cada funció implementada, ajustant el codi com sigui necessari per a assegurar el correcte funcionament de cada component.

Diagrama de flux

Descarrega el programa

Repte 2. Control del sistema d’elevació per port sèrie

Amplia el programa del primer repte introduint un control del sistema d'elevació del teu robot mòbil mitjançant el port sèrie. Per ajudar-te en aquesta tasca, disposes del següent fragment de codi: Recorda que per configurar la comunicació sèrie has d'afegir la següent instrucció dins de "setup()": Primerament, cal que analitzis i interpretis el fragment de codi que se t'ha proporcionat. Per provar-lo, has de substituir la funció “loop()” del teu programa original amb aquest nou fragment, ja que inclou la funció esmentada. A continuació, cal que ampliïs el programa perquè l'elevador també pugui baixar, a més d'afegir una funcionalitat que aturi l'elevador automàticament quan toqui el sensor final de cursa que marca el límit de moviment inferior.

Fragment de codi

Serial.begin(115200);

Repte 3. Control del desplaçament del robot

De nou, amplia el programa del primer repte, per desenvolupar un programa que controli els moviments simples de desplaçament del teu robot mòbil. En aquesta tasca, cal que creïs quatre funcions noves perquè el robot faci uns moviments concrets: Una vegada hagis creat les quatre funcions bàsiques, cal que les apliquis per fer que el robot segueixi una trajectòria en forma de “L”. Això implica que el robot avanci endavant uns 50 cm, després giri 90 graus a la dreta i continuï avançant uns 25 cm més, per finalment aturar-se un segon. Després, fes que el robot realitzi la mateixa trajectòria però marxa enrere. Abans de començar a desenvolupar el programa, és important que elaboris un diagrama de flux que representi les diferents instruccions necessàries per executar aquesta trajectòria, és a dir, de l’algorisme que aniria dins de la funció “loop()”.

Funcions

Opcional: Comunicació Bluetooth

Per tal d'intercanviar dades entre l'aplicació mòbil capaç de classificar imatges que estarà integrada a la maqueta del nostre projecte i la placa electrònica que la controla, és imprescindible per aquest projecte aprendre a establir una comunicació entre aquests dos dispositius via Bluetooth. Per això, a mode d'aprenentatge, desenvolupa una nova aplicació i un programa per l'ESP32 STEAMakers que es connectin i transmetin dades entre els dos dispositius. Recupera la "Guia d'ús ESP32" per recordar com configurar l'Arduino IDE per programar la placa ESP32 STEAMakers. Un cop programat el codi per l'ESP32 per establir una comunicació bidireccional via Bluetooth amb l'app mòbil, cal desenvolupar aquesta aplicació per provar la transmissió de dades i aplicar aquest sistema de comunicació després a la nostra maqueta.

Esquema de l'aplicació

Consideracions

Programacióde l'App

Programacióplaca ESP32

Desenvolupament d’una aplicació per a controlar el robot mòbil

Aquesta fase està dividida en dues parts. La primera es basa en l’adaptació del codi del teu robot mòbil per a poder-se comunicar amb Bluetooth. I la segona consisteix a crear i integrar una aplicació de mòbil amb App Inventor per poder controlar els moviments del robot. Recupera els programes dels reptes 2 i 3 de la fase 2 i realiza les següents adaptacions a partir de l'après a la fase 3:

  1. Afegir la llibreria per a poder utilitzar el Bluetooth de la placa ESP32 STEAMakers.
  2. Crear l’objecte Bluetooth.
  3. Configurar i inicialitzar el punt d’accés Bluetooth.
  4. Fer que les ordres arribin al robot per la comunicació Bluetooth.
A partir d'aquí, desenvolupa l’aplicació de control amb App Inventor, tenint en compte els següents apartats:

Exemple programació botons

Programa vinculació Bluetooth

Esquema de l'aplicació

Configuració contenidors i botons

Integració del sistema

En aquesta fase final del desenvolupament del projecte, amplia el programa i l'aplicació desenvolupada en la fase anterior afegint diferents automatitzacions per facilitar el control del robot de magatzem. Primer, organitza l'espai de treball on realitzaràs les proves de funcionament. Aquesta organització inclou col·locar el robots mòbil, el palet a recollir i l’estanteria de 2x2 que cal muntar perquè formi el magatzem. A partir d'aquí, aplica aquestes dues millores al teu programa i a la teva aplicació: Valida el funcionament del programa per etapes per tal d'evitar l'acumulació d'errors. A més, documenta el programa mitjançant comentaris per tal de demostrar la teva comprensió total del codi i perquè sigui entenedor per altres persones. Mira aquest vídeo per veure el possible resultat final.

Exemple d'organització

Millores a l'aplicació

Millores al programa Arduino

Presentació del projecte

Per concloure amb el projecte, grava i edita un vídeo on reflexionis sobre aquestes quatre preguntes:

  1. Què he après?
  2. Com ho he après?
  3. Què m'ha resultat més fàcil, difícil o novedós?
  4. Per a què m'ha servit?
Per preparar el vídeo, comença amb una reflexió de forma personal, tot contestat en veu alta les preguntes proposades. Seguidament, com a grup elaboreu un guió detallat. En ell, pots incloure exemples específics del treball i de les experiències d'aprenentatge, així com reflexions sobre com aquestes experiències han ajudat al teu creixement personal i acadèmic. Finalment, considera com presentar aquesta informació de manera creativa i engrescadora en format vídeo. Utilitza recursos visuals i auditius per enfortir el teu missatge i captar l'atenció de l'audiència.

Preparació del guió

Consells

Eines i materials

Per començar a construir la teva maqueta de magatzem robotitzat, és important tenir a punt les eines i els materials que utilitzarem durant tot el projecte:

Materials

Eines

Kit Electrònica Magatzem Robotitzat:

  • Plaques ESP32 STEAMakers
  • Cables USB A-B
  • Packs Motors DC + roda
  • Controladors de motors L298N
  • Sensors final de cursa
  • Cables jumper mascle-mascle 20 cm
  • Portapiles 9 V sense connector jack
  • Peces de DM estructura magatzem robotitzat
  • Pack de caixes de cartró 50x50 mm
  • Mini-palets de fusta

Kit Estructura Elevador Magatzem Robotitzat:

  • Peces de DM estructura elevador
  • Cremalleres de metacrilat elevador
  • Coixinets Ø8 mm
  • Eixos Ø8 x 224 mm
  • Separadors hexagonal M3 x 35 mm
  • Brides 2,5 x 100 mm
  • Rodes boges metàl·liques
  • Cercles velcro adhesiu
  • Separadors de nylon Ø3 x 3 mm
  • Separadors de nylon Ø3 x 6 mm
  • Pack cargols M3 x 8 mm
  • Pack cargols M3 x 12 mm
  • Pack cargols M3 x 16 mm
  • Pack femelles M3

  • Tornavisos plans petits
  • Tornavisos Philips o d’estrella
  • Alicates de subjecció
  • Claus fixes o claus angleses
  • Cola blanca per a fusta

Resultat esperat

1. Anar endavant: Perquè el robot avanci, cal activar els dos motors en el sentit de gir que permeti el moviment endavant. Com que els motors estan en posicions invertides, perquè el robot avanci, el motor de la roda dreta hauria de girar en sentit horari i el de l'esquerra en sentit antihorari. 2. Anar endarrere: Per fer que el robot retrocedeixi, s'han d'activar els dos motors en el sentit contrari al que s’utilitza per avançar. Així, el motor de la roda dreta girarà en sentit antihorari i el de la roda esquerra en sentit horari. 3. Gir de 90 graus a la dreta: Per fer que el robot giri a la dreta sobre ell mateix 90 graus, cal utilitzar la funció “robotGirDreta()” durant un temps específic, que s’haurà de determinar mitjançant prova i error. Aquest temps pot variar depenent del nivell de bateria del robot. Un cop complet el temps necessari, utilitzem la funció “robotStop()” per aturar el robot. 4. Gir de 90 graus a l’esquerra: Perquè el robot giri a l'esquerra 90 graus sobre ell mateix, s’utilitza la funció “robotGirEsquerra()”. Com amb el gir a la dreta, cal determinar el temps necessari mitjançant prova i error, tenint en compte que aquest temps podria diferir del necessari per al gir a la dreta. Finalment, s’ha d'utilitzar de nou la funció “robotStop()” perquè el robot s’aturi.

Funcions
Esquema de l'aplicació
Exemple d'organització
Configuració contenidors i botons
Programa vinculació Bluetooth

La primera part de la programació de l'aplicació es basa en la vinculació per Bluetooth. El programa d’App Inventor per fer aquesta part és:

Preparació del guió
  • Brainstorming en grup: Sessió inicial per compartir idees sobre el contingut del vídeo, incloent temes, exemples, i elements visuals.
  • Escriptura col·laborativa del guió: Utilitza un document en línia perquè tot el grup col·labori en el guió, amb assignació de seccions per assegurar una feina equitativa.
  • Assaigs col·laboratius: Practica amb tot el grup per a millorar el guió, la pronunciació i la comoditat davant la càmera.
  • Feedback mutu: Espai per a comentaris constructius post-assaig, millorant la qualitat del vídeo i garantint la inclusió de totes les veus.
  • Divisió de la postproducció: Distribució equitativa de la feina d'edició del vídeo i altres tasques de postproducció entre els i les membres del grup.
  • Revisió final en grup: Repàs conjunt abans de la presentació per a realitzar els ajustos finals i assegurar la satisfacció de tot l'equip.

Desenvolupar tres noves funcions al programa de la placa ESP32 STEAMakers que desplacin l’elevador vertical del robot a tres alçades diferents, i que s’executin segons el missatge rebut per Bluetooth des de l’aplicació. A continuació, disposes d'un diagrama de flux per a cada funció a desenvolupar. Interpreta'ls, programa aquestes noves funcions i afegeix en al "loop()" les instruccions per executar-les quan es rebin els missatges per Bluetooth, per exemple, “palet”, “nivell1” i “nivell2” des de l’aplicació.

Millores al programa Arduino

Funció recollirPalet()

Funció deixarPaletNivell1()

Funció deixarPaletNivell2()

Afegeix tres botons diferents a l’aplicació mòbil per indicar al robot tres alçades diferents de l’elevador vertical: un per recollir el palet (alçada més baixa), un altre per deixar el palet al primer nivell del magatzem (alçada mitjana) i un altre per deixar el palet al segon nivell del magatzem (alçada més alta). L’aplicació podria quedar amb un aspecte similar al següent:

Millores a l'aplicació

Utilitzem el component "VerticalArrengement" de la categoria "Layout" com a separador per deixar espai entre seccions, tot i que no sigui la funció original d’aquest component. També cal configurar el component “Clock” indicant l’interval de temps determinat que pot fer activar una acció, com si fos un temporitzador. Per fer-ho modifiquem el paràmetre “TimeInterval”, el valor del qual està en mil·lisegons.

Consideracions
Esquema de l'aplicació
Consells

Alguns consells per a l’elaboració del vídeo, més enllà de quines eines digitals utilitzis per la gravació i edició, són:

  • Claredat i Concisió: Assegura't que les respostes a les preguntes siguin clares i directes.
  • Creativitat: Utilitza de forma creativa recursos visuals i sonors per fer el vídeo més atractiu.
  • Estructura: Organitza el vídeo de manera que segueixi una seqüència lògica, facilitant la comprensió del contingut.
  • Col·laboració: Tots els membres del grup han de participar activament en la creació del vídeo.

Esquema de connexions general
Exemple programació botons

Seguidament, programa l’aplicació perquè quan es mantingui premut un dels botons s’enviï un missatge concret per la comunicació establerta i quan es deixi de prémer s’enviï el missatge especifiqui per aturar el robot. Per tant, el programa es basa en dues parts:

  1. Quan es premi un dels botons, el component “BLUETOOTH” executa la funció “Envia text”, és a dir, s’envia un missatge per Bluetooth, un diferent per a cada cas.
  2. Una vegada es deixa de prémer un dels botons, el component “BLUETOOTH” executa la funció “Envia text” amb el text “Stop#”, és a dir, s’envia un missatge per Bluetooth per aturar el robot.
Per exemple, el programa resultant per al botó de girar a la dreta seria el següent:

*Aquesta programació s’ha de replicar per a cada un dels botons.

Diagrama de flux

void loop() { // Comprova si hi ha dades disponibles per llegir a través del port sèrie if (Serial.available() > 0) { // Llegeix la cadena enviada a través del port sèrie // Assigna la lectura a la variable “ordre”, a l’hora que la crea String ordre = Serial.readString(); // Envia un missatge a través del port sèrie Serial.print("Instrucció rebuda: "); // Mostra la instrucció rebuda per completar la confirmació Serial.println(ordre); // Compara l'ordre rebuda amb el text "pujar" if (ordre == "pujar") { // Activa el motor de l'elevador perquè comenci a pujar motorElevadorPuja(); // Espera 1000 mil·lisegons (1 segon) abans de continuar delay(1000); // Atura el motor de l'elevador motorElevadorStop(); } } delay(250); // Pausa per no saturar la placa }

Fragment de codi

Programem l’aplicació perquè es pugui connectar per Bluetooth amb un altre dispositiu, en el nostre cas una placa ESP32 STEAMakers, a més d’enviar i rebre missatges mútuament. Segueix el següent vídeo per dur a terme aquesta programació amb App Inventor: Analitza i prova d'entendre cada un de les parts del programa.

Programació de l'App
Esquema de connexions dels motors DC (rodes) al controlador L298N
Esquema de connexions del sensor final de cursa a la placa

Per realitzar el programa de la placa ESP32 STEAMakers amb l'entorn Arduino IDE que permet la comunicació Bluetooth entre aquesta i una app mòbil, el primer pas és importar la llibreria "BluetoothSerial.h", necessària per programar aquest tipus de connexió. Seguidament, es crea un objecte de la classe BluetoothSerial. Aquest objecte permetrà inicialitzar el Bluetooth de la placa ESP32 i gestionar l'enviament i recepció de dades a través d'aquesta connexió. Dins de la funció "setup()" del programa s'inicialitza el Bluetooth fent servir el mètode "begin()" de l'objecte BluetoothSerial. En aquest punt s'indica el nom que volem assignar al dispositiu Bluetooth de la placa ESP32, per exemple "ESP32". És important que cada ESP32 tingui un nom únic, prefixant "ESP32" amb un número o lletra, per poder diferenciar les connexions quan hi ha múltiples placas. Seguidament, al "loop()" del programa s'escriuen les funcions necessàries per enviar i rebre dades a través d'aquesta connexió Bluetooth. Concretament, es llegeixen les dades que arriben pel port sèrie amb la funció "Serial.read()" i s'envien per Bluetooth fent servir la funció "write()" de l'objecte BluetoothSerial. D'altra banda, es llegeixen les dades que arriben per Bluetooth amb la funció "readString()" i es mostren a través del monitor sèrie amb la funció "println()". Utilitzem la funció "available()" combinada amb un condicional per comprovar si hi ha dades disponibles al port sèrie o al Bluetooth abans d'intentar llegir-les. Aquesta funció és clau per aquest programa.

#include "BluetoothSerial.h"

BluetoothSerial BT;

BT.begin("ESP32");

if (Serial.available()) { BT.write(Serial.read()); }

if (BT.available()) { Serial.println(BT.readString()); }

Programació placa ESP32
Esquema de connexions del motor DC (elevador) i controlador L298N
  • Motors de corrent continu per al moviment de les rodes del robot. El robot mòbil ha d'incorporar motors de corrent continu que permetin un moviment suau i controlat dins del magatzem. Aquests motors seran responsables del desplaçament horitzontal del robot.
  • Sistema de pinyó-cremallera per a elevar les càrregues. Per al maneig vertical de les càrregues, el robot cal que utilitzi un sistema de pinyó-cremallera connectat a un motor de corrent continu. Aquest sistema permetrà elevar i baixar els palets de manera precisa, facilitant la seva recollida i dipòsit en els diferents nivells del magatzem.
  • Sistema de control remot mitjançant aplicació mòbil. El robot ha de ser controlat de forma remota mitjançant una aplicació mòbil. Aquesta aplicació permetrà als operaris controlar el moviment manual de la base i l’elevador del robot.
  • Maniobres de recollida i deixada de palets. Seria desitjable que el robot mòbil pogués realitzar maniobres automatitzades per a la recollida i la deixada dels palets, utilitzant les seves forquetes, activades mitjançant l'aplicació mòbil. L’elevador es posicionaria automàticament a alçades específiques segons les necessitats, permetent així la recollida i la col·locació de palets en diferents nivells del magatzem.
Requisits tècnics