Recull de pràctiques de 2n de DAM. Curs 2025-2026
Contingut
- 1 A06 - POO amb C++ i Qt
- 2 A07 - Introducció a la placa IoT-02, Wokwi i protocols de comunicació
- 3 A08 - QML, connexió a rerefons Qt i PureQML
- 4 A12 - Qt
- 5 A13 - QML a l'escriptori, Android i WebAssembly
- 6 A14 - Scada NodeRed + InfluxDB + Grafana + UserLand + Snap! + Telegram + Mastodon API
- 6.1 A14.1 - Autenticació d'accés a NodeRED
- 6.2 A14.2 - Bot de Telegram
- 6.3 A14.3 - Bot de Telegram
- 6.4 A14.8 - MariaDB
- 6.5 A14.9 - Xat de Telegram accedint a Gemini
- 6.6 A14.10 - Desenvolupament d'una API en NodeRed per a trametre dades
- 6.7 A14.11 - Desenvolupament d'una API en NodeRed per a rebre dades
A06 - POO amb C++ i Qt
A06.00
Instal·lació de la versió educativa del QtCreator
A06.01 - Ginys encastats
- a0601a. Feu una interfície gràfica (GUI) amb dos botons (+ i -) i una etiqueta numèrica.
- a0601b. Feu una interfície gràfica (GUI) amb una barra lliscant (slider) i un giny LCD de dos números. La barra lliscant controla l'LCD.
- a0601c. Feu una interfície gràfica (GUI) que integri els dos projectes anteriors. La botonera també controla la barra lliscant i l'LCD. La barra lliscant també controla el valor de l'etiqueta numèrica.
Exercici A06.01. (Heu de desar a la carpeta A06 un document 2526-DAM-A06.01-1rCognom2nCognomNom.pdf amb les solucions explicades i un arxiu 2526-DAM-A06.01-1rCognom2nCognomNom.zip amb els codis comprimits, sense el .pro.user).
A06.02 - Interfícies gràfiques
Exercici A06.02. (Heu de desar a la carpeta un document 2526-DAM-A06.02-1rCognom2nCognomNom.pdf amb les solucions explicades i un arxiu 2526-DAM-A06.02-1rCognom2nCognomNom.zip amb els codis comprimits, sense el .pro.user si ho feu amb qmake o el .txt.user si ho feu amb CMake).
A06.03
Exercici A06.03. (Heu de desar a la carpeta un document 2526-DAM-A06.02-1rCognom2nCognomNom.pdf amb les solucions explicades i un arxiu 2526-DAM-A06.02-1rCognom2nCognomNom.zip amb els codis comprimits, sense el .txt.user).
A07 - Introducció a la placa IoT-02, Wokwi i protocols de comunicació
A07.01 - Introducció al control de la placa Iot-02 mitjançant NodeRed
Exercici A07.01 (Heu de desar a la carpeta A07 un document 2526-DAM-A07.01-1rCognom2nCognomNom.pdf amb l'explicació del procés de resolució de la pràctica, incloent-hi captures de pantalla i fotografies.
A07.01.0
Explicació de com connectar la placa IoT-02, mitjançant MQTT, a Node-RED i a Snap!
A07.01.1
Feu un codi emprant el panell de control (Dashboard) de NodeRed que surtin quatre interruptors que controlin els quatre leds de la placa IoT-02, mitjançant comunicació MQTT.
A07.01.2
Feu un codi emprant el panell de control (Dashboard) de NodeRed que mostri l'estat dels tres botons de la placa IoT-02, mitjançant comunicació MQTT.
A07.01.3
Agrupeu a una sola pestanya A07.01.1 i A07.01.2.
A07.02 - Punt multicolor al NodeRED i variables de flux
Feu una visualització d'un punt que representa un led multicolor. A la placa IoT-02:
- Quan el botó IO0 sigui premut incorpora el color vermell al punt multicolor representat al panell de control del NodeRED
- Quan el botó IO0 no sigui premut traieu el color vermell al punt multicolor representat al panell de control del NodeRED
- Quan el botó I34 sigui premut incorpora el color verd al punt multicolor representat al panell de control del NodeRED
- Quan el botó I34 no sigui premut traieu el color verd al punt multicolor representat al panell de control del NodeRED
- Quan el botó I35 sigui premut incorpora el color blau al punt multicolor representat al panell de control del NodeRED
- Quan el botó I35 no sigui premut traieu el color blau al punt multicolor representat al panell de control del NodeRED
A07.03 - Visualització amb un giny rellotge del nivell de llum
Feu una visualització d'un giny rellotge que indiqui el nivell de llum a la LDR de la placa IoT-02.
A08 - QML, connexió a rerefons Qt i PureQML
A08.00
Feu un document explicant com fer un projecte emprant PureQML i llur migració a QML.
A08.01
Feu un programa en QML que al principi hi surti un quadrat vermell centrat. Al prémer la tecla B hi sortirà de color blau, al prémer la tecla G hi sortirà de color verd i al prémer la tecla R torna a ser vermell.
A08.02
Feu un programa en QML a on hi aparegui centrat, horitzontalment i vertical, ben gros i en negreta el nom Escola del Clot. Al prémer la tecla + la lletra es farà més grossa. I al prémer la tecla - la lletra es farà més petita.
A08.03
Feu un programa que hi surti el text, centrat a la finestra, "Comptador: 0" de color vermell. Al prémer el botó + incrementarà el valor del comptador, i al prémer el botó '-' es decrementarà. Al prémer la tecla N el text serà de color negre i al prémer V tornarà a ser de color vermell.
A08.04
Desenvolupeu un joc de pedra, paper, tisora.
A08.04.1
Feu servir lletres. Proposta de solució A08.04.1
A08.04.2
Feu servir imatges. (Una idea del joc). Proposta de solució A08.04.2
A08.04.3
Afegiu un botó de configuració que porti a una altra pantalla (feu servir SwipeView i PageIndicator) que:
- Permeti seleccionar mode dia o mode nit.
- Digui quantes partides ha guanyat l'usuari i quants l'aplicació (feus servir QSettings per a la persistència de dades).
- Un botó que torni a zero el nombre de partides guanyades i perdudes.
- Un botó per tornar al joc
A12 - Qt
A12.01 - ginyMqtt amb CMake
L'objectiu d'aquest exercici és fer una aplicació en Qt capaç de comunicar-se bidireccionalment amb la Placa IoT-02. El funcionament és exactament igual que a l'exercici anterior que heu fet emprant qmake, en aquest heu de fer servir CMake.
Suggeriment d'arxiu de projecte emprant CMake:
Afegiu Network i Mqtt a find_package():
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets Network Mqtt)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets Network Mqtt)
Afegiu Qt${QT_VERSION_MAJOR}::Network i Qt${QT_VERSION_MAJOR}::Mqtt a target_link_libraries():
target_link_libraries(ginyMqtt04_cmake PUBLIC Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Network Qt${QT_VERSION_MAJOR}::Mqtt)
Exercici A12.01 (Heu de desar al Drive el document 2526-DAM-A12.01-1rCognom2nCognomNom.pdf amb les solucions explicades i un arxiu 2526-DAM-A12.01-1rCognom2nCognomNom.zip amb els codis comprimits, sense el CMakeLists.txt.user).
A12.02 Mqtt_IoT02
Desenvolupeu un projecte en Qt, capaç d'interaccionar amb la Placa IoT-02, amb aquest aspecte:
- A12.02-1)
Prenent com a base els arxius 00_botonsToggle05.zip i 00_botonsToggle06.zip del recull, desenvolupeu el projecte 02_indicadorLed_00 per a que tingui aquest comportament:
- A12.02-2)
Basant-vos en 02_indicadorLed_00 i 01_json_00.zip del recull, desenvolupeu el projecte 03_indicadorLed_01 per a que tingui aquest aspecte (els valors dels led R, G i B donen valors 0 i 1. Els valors del led W són true i false):
- A12.02-3)
Basant-vos en 04_indicadorBotons00.zip del recull, desenvolupeu el projecte 05_indicadorBotons_01 per a que tingui aquest aspecte:
- A12.02-4)
Basant-vos en 03_indicadorLed_01, desenvolupeu 03_indicadorLed_01_mqtt que controli els quatre leds de la placa IoT-02.
Mqtt_IoT02::Mqtt_IoT02(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Mqtt_IoT02)
{
ui->setupUi(this);
mqttBasic = new MqttBasic;
indicadorLed = new IndicadorLed;
indicadorBotons = new IndicadorGrupBotonsEt;
ui->hlAmunt->addWidget(mqttBasic);
ui->hlCentre->addWidget(indicadorLed);
ui->hlAvall->addWidget(indicadorBotons);
connect(mqttBasic,SIGNAL(vSignalMqttConnected()),this,SLOT(vMqttConnectat()));
connect(mqttBasic,SIGNAL(vSignalMqttDisconnected()),this,SLOT(vMqttDesconnectat()));
connect(indicadorLed,SIGNAL(vTrametJsonLeds(QString)),this,SLOT(vTrametJsonLeds(QString)));
indicadorBotons->vSetJsonText("");
//showMaximized();
}
- A12.02-5)
Basant-vos en 05_indicadorBotons_01, desenvolupeu 05_indicadorBotons_01_mqtt que llegeixi els tres botons de la placa IoT-02.
- A12.02-6)
Feu l'integració per a que l'aspecte sigui semblant a la captura d'inici de l'activitat A12.02. Haureu d'afegir un QTimer per anar demanant periòdicament el JSON que conté el valor de l'LDR.
A13 - QML a l'escriptori, Android i WebAssembly
A13.05
A13.05.1 - Explicació teòrica
Premeu com a base aquest bessó digital de la placa IoT-02 (Codi font) (dt14.apk) controlable mitjançant aquest codi d'Snap! per controlar plaques IoT-02.
Feu una documentació explicant el funcionament del bessó digital. Podeu fer servir IA generativa per a ajudar-vos. Podeu fer servir aquest convertidor d'arxius markdown (.md) amb aquest convertidor de markdown a html. Matiseu allò que cregueu convenient. L'objectiu és entendre el codi.
A13.05.2 - SET i RESET del relé
A13.05.2.1 - Incorporació dels estats SET i RESET al bessó digital
Feu una nova versió del bessó digital que permeti controlar, també, el SET i RESET de relé. Podeu afegir text sobreimprès al relé amb els mots SET i RESET
A13.05.2.2 - Lectura dels estats SET i RESET al bessó digital
Feu una nova versió del bessó digital que permeti llegir, també, els estats SET o RESET de relé mitjançant MQTT
A13.05.3 - Controlador de la placa IoT-02
Basant-vos en codi d'Snap! per controlar plaques IoT-02 desenvolupeu la vostra versió en QML (afegint la lectura dels estats SET o RESET del relé). Ha de funcionar sobre escriptori, Android i WebAssembly.
A14 - Scada NodeRed + InfluxDB + Grafana + UserLand + Snap! + Telegram + Mastodon API
A14.1 - Autenticació d'accés a NodeRED
Personalitzeu l'autenticació d'accés al vostre NodeRed (Autenticació d'accés a NodeRED).
A14.2 - Bot de Telegram
Desenvolupeu un bot de Telegram que interactui amb la vostra placa IoT-02. Les ordres, des del mateix bot, són:
/W : Encén el led blanc
/w : Apaga el led blanc
/botons : Estat dels botons a la placa
A14.3 - Bot de Telegram
Desenvolupeu un bot de Telegram que interactui amb la vostra placa IoT-02. Les ordres, des d'un grup al qual pertany i és administrador, són:
/W : Encén el led blanc
/w : Apaga el led blanc
/botons : Estat dels botons a la placa
I de manera asíncrona avisa quan s'ha premut el botó I35, trametent un missatge al grup al qual pertany. El codi MQTT en format json
A14.8 - MariaDB
A14.8.1 - Introducció a MariaDB
Feu un document amb totes les passes necessàries per a que funcioni al vostre ordinador un NodeRed amb nodes MariaDB. Repliqueu al vostre ordinador:
- Ús de MariaDB per emmagatzemar dades de la Internet de les Coses
- Ús de la base de dades MariaDB des de NodeRED
A14.8.2 - Inserció de dades IoT a MariaDB
Emmagatzemeu les dades trameses per la Placa IoT-02 emprant MQTT, de temperatura, humitat relativa, pressió atmosfèrica i de nivell de llum a una base de dades. Gestioneu les dades amb NodeRED emmagatzemant-les a una base de dades MariaDB.
A14.9 - Xat de Telegram accedint a Gemini
Implementeu un xat de Telegram que dialogui amb l'API de Gemini mitjançant NodeRED.
- Connexió amb Gemini Cal una clau d'API (API key) (Guia ràpida d'ús a l'API de Gemini)
- Reconeixement de veu amb Snap! (Accés directe al projecte amb Snap!)
A14.10 - Desenvolupament d'una API en NodeRed per a trametre dades
Implementeu un flux per a canviar l'estat dels leds i el relé biestable de la placa IoT-02. Feu la prova de validació des del terminal. Baseu-vos en Desenvolupament d'una API en NodeRed. Pasarel·la HTTP a MQTT
A14.11 - Desenvolupament d'una API en NodeRed per a rebre dades
A14.11.01 - Desenvolupament d'una API en NodeRed per a rebre una dada
Implementeu un flux per a rebre el valor de l'LDR de la placa IoT-02. Feu la prova de validació des del terminal.
A14.11.02 - Desenvolupament d'una API en NodeRed per a rebre un conjunt de dades emprant JSON
Implementeu un flux per a rebre un JSON dels valors dels sensors i els botons de la placa IoT-02 (aprofiteu el tema jsonIn). Feu la prova de validació des del terminal.








