Diferència entre revisions de la pàgina «DAM 2022-2023»

De binefa.com
Salta a la navegació Salta a la cerca
Línia 13: Línia 13:
  
 
[[Recull de pràctiques de 2n de DAM. Curs 2022-2023]]
 
[[Recull de pràctiques de 2n de DAM. Curs 2022-2023]]
 +
 +
[[Vídeos QML]]
  
 
== 20221117 (1h) ==
 
== 20221117 (1h) ==

Revisió del 15:04, 21 nov 2022

Quan tingueu les credencials d'accés a la NET heu de compartir una carpeta amb aquest nom: 2223-DAM-1rCognom2nCognomNom (Per exemple, si el vostre nom és Xavier López Pujol --> 2223-DAM-LopezPujolXavier). Heu de compartir-la amb el professor transversal dels projectes globals i amb mi. A aquest enllaç podreu veure si ja hi sou a la llista:

Carpetes compartides de 2n de DAM. Curs 2022-2023

Algunes classes

Llista de 2n de DAM

Teleconferència provisional per a compartir pantalla i confinats

Recull de pràctiques de 2n de DAM. Curs 2022-2023

20221121 (3h)

Recull d'avui usuari: dam | contrasenya: dam2223

Recull de pràctiques de 2n de DAM. Curs 2022-2023

Vídeos QML

20221117 (1h)

Recull d'avui usuari: dam | contrasenya: dam2223

Recull de pràctiques de 2n de DAM. Curs 2022-2023

20221114 (3h) A08 - QML, connexió a rerefons Qt i PureQML

Recull d'avui usuari: dam | contrasenya: dam2223

L'exercici A06.03 passa a ser l'A12.01

L'exercici fr-mw-2 d'A09.01 i A09.02 passa a ser A15.01 i A15.02

PureQML

Introducció al QML. Curs 2022-2023

PureQML

Pàgina oficial de PureQML

Posada en marxa del PureQML

  • Instal·lació de l'eina python-future:
pip3 install future

A Windows:

pip install future
  • Primera aplicació
mkdir prjFolder
cd prjFolder
git clone https://github.com/pureqml/qmlcore.git
./qmlcore/build --boilerplate
./qmlcore/build

A Windows, les dues darreres passes:

python qmlcore/build --boilerplate
python qmlcore/build

Obriu amb un navegador l'arxiu prjFolder/build.web/index.html

  • Modificació de prjFolder/src/app.qml:
Text {
       anchors.fill: context;
        
       text: 'Primer exemple de pureQML';
       color: 'red';
       font.pixelSize: 32;
       verticalAlignment: Text.AlignVCenter;
       horizontalAlignment: Text.AlignHCenter;
}

Reconstruïu-ho:

./qmlcore/build 

A Windows:

python qmlcore/build


Torneu a obrir amb un navegador l'arxiu prjFolder/build.web/index.html per a observar els canvis

20221111 (2h)

Recull d'avui usuari: dam | contrasenya: dam2223

Revisem projectes pujats a la carpeta compartida i acabem els que tenim pendents.

20221110 (1h)

Recull d'avui usuari: dam | contrasenya: dam2223

A9.01: fent servir Microworkers emprant MicroPython

A9.02: fent servir FreeRTOS emprant l'IDE d'Arduino

Més informació sobre la pràctica A09

20221107 (3h)

Recull d'avui usuari: dam | contrasenya: dam2223

20221104 (2h)

Recull d'avui usuari: dam | contrasenya: dam2223

Ens posem al dia amb les pràctiques pendents.

20221103 (1h) QDialog

Recull d'avui usuari: dam | contrasenya: dam2223

Al recull d'avui hi ha un exemple de codi emprant la classe QDialog.

Exemples de diàlegs en Qt6

20221028 (2h) A9

Recull d'avui usuari: dam | contrasenya: dam2223


A9.01: fent servir Microworkers emprant MicroPython

A9.02: fent servir FreeRTOS emprant l'IDE d'Arduino

FreeRTOS i MicroWorkers

fr-mw-1) Presa de contacte amb FreeRTOS

Fent servir la placa IoT-02 feu un programa amb dues tasques. Una tasca farà que el led groc faci pampallugues (500ms encés i 500ms apagat). Una altra tasca llegirà el botó I35, fent que quan estigui premut el cicle del led groc sigui de 100ms encés i 100ms apagat.

fr-mw-2) Connexió a WiFi i un broker MQTT

Afegiu una tasca per a fer connexió a WiFi i MQTT.

  • Emprant MicroWorkers

Us podeu basar en el codi present a prj_mqtt_json. Feu servir també una variable booleana bSocConnectat (que serà certa quan hi hagi connexió i falsa quan no s'hagi establert la connexió o s'hagi perdut -quan es perd la IP que s'autollegeix és 0.0.0.0-).

  • Emprant FreeRTOS

Us podeu basar en el codi present a IoT-02_mqtts_freeRTOS_json_12. Afegiu-hi també un #define USING_WIFI per saber si cal que funcionin totes aquelles funcions que tenen relació amb la wifi. Feu servir també una variable booleana bSocConnectat (que serà certa quan hi hagi connexió i falsa quan no s'hagi establert la connexió o s'hagi perdut -quan es perd la IP que s'autollegeix és 0.0.0.0-).

Recull de pràctiques de 2n de DAM. Curs 2022-2023

fr-mw-2.2) Publicació

Si bSocConnectat és certa, publica el canvi d'estat del botó quan es prem I35.

fr-mw-2.3) Subscripció

Quan feu la connexió a MQTT, afegiu una subscripció al tema /MAC/led (essent MAC la MAC de la vostra placa). Si rebeu per aquest tema un '1', 'On','on' o 'ON' s'ha d'encendre el led blanc. Si rebeu '0', 'Off', 'off' o 'OFF' s'apaga el led blanc.

20221027 (1h) MicroPython

Recull d'avui usuari: dam | contrasenya: dam2223

Seguim amb MicroPython

Pistes per a la instal·lació de MicroPython a les pàgines 49 a 52

MicroWorkers

20221024 (3h)

Recull d'avui usuari: dam | contrasenya: dam2223

  • Exercici A06.03 (Heu de desar a la carpeta A06 un document 2223-DAM-A06.03-1rCognom2nCognomNom.pdf amb les solucions explicades i un arxiu 2223-DAM-A06.02-1rCognom2nCognomNom.zip amb els codis comprimits, sense el .pro.user).

20221021 (2h)

Recull d'avui usuari: dam | contrasenya: dam2223

20221020 (1h) Menús a QMainWindow

Recull d'avui usuari: dam | contrasenya: dam2223

20221017 (3h)

  • Dubtes
  • Finalització de les subactivitats pendents

20221014 (2h) A06.02, A06.03, A07.01 i A07.02

Recull d'avui usuari: dam | contrasenya: dam2223

  • Dubtes
  • Acabem les subactivitats pendents (A06.02, A06.03, A07.01 i/o A07.02).

20221013 (1h) A07.02

Recull d'avui usuari: dam | contrasenya: dam2223

  • Feu-vos un usuari a Wokwi. Us podeu autenticar fent servir el vostre usuari a l'Escola o el vostre usuari personal a GMail.

Feu-vos una còpia a la vostra zona a Wokwi d'aquest bessó digital d'un ESP32, implementat en micropython, comunicant mitjançant MQTT. Canvieu la MAC del bessó digital per la MAC de la vostra placa IoT-02.

  • Exercici A07.02 (Heu de desar a la carpeta A07 un document 2223-DAM-A07.02-1rCognom2nCognomNom.pdf amb l'explicació de com heu modificat la MAC (escrivint-hi la de la vostra placa IoT-02) del bessó digital copiat a la vostra zona de Wokwi. Feu el document fent servir com a controladors l'Snap!, NodeRED, i el codi amb QtMqtt ginyMqtt04. I com a dispositius la vostra còpia modificada del bessó digital i la placa IoT-02 per a provar la bidireccionalitat de la comunicació MQTT amb el botó i el led.

20221010 (3h) A06.02, A07.01 i A06.03

Recull d'avui usuari: dam | contrasenya: dam2223

  • Exercici A06.02 (Heu de desar a la carpeta A06 un document 2223-DAM-A06.02-1rCognom2nCognomNom.pdf amb l'explicació del procés per a instal·lar QtMqtt al vostre sistema. Verifiqueu que us funciona fent servir el codi de la carpeta de l'exercici A06.02

- Si feu servir Windows i no teniu el llenguatge perl instal·lat, instal·leu perl

ecat@iot-ecat:~/Qt/6.2.4/gcc_64/lib$ git clone git://code.qt.io/qt/qtmqtt.git
ecat@iot-ecat:~/Qt/6.2.4/gcc_64/lib$ cd qtmqtt/
ecat@iot-ecat:~/Qt/6.2.4/gcc_64/lib/qtmqtt$ git checkout 6.1 (malgrat tingueu la 6.2.4)
ecat@iot-ecat:~/Qt/6.2.4/gcc_64/lib/qtmqtt$ rm -r examples/

Mitjançant el Qt Creator obriu el projecte /home/ecat/Qt/6.2.4/gcc_64/lib/qtmqtt/qtmqtt.pro. Aneu al menú i seleccioneu Build / Run qmake

ecat@iot-ecat:~/Qt/6.2.4/gcc_64/lib/qtmqtt$ make
ecat@iot-ecat:~/Qt/6.2.4/gcc_64/lib/qtmqtt$ sudo make install

Descàrrega del C++ 17 per Windows.

Compilació i instal·lació des de Windows, un cop instal·lat C++ 17 (i la ruta del PATH havent afegit C:\MinGW\bin).

mingw32-make.exe
mingw32-make.exe install
  • Exercici A07.01 (Heu de desar a la carpeta A07 un document 2223-DAM-A07.01-1rCognom2nCognomNom.pdf amb l'explicació del procés de fer servir la modificació de simpleclient, anomenant-la simpleclientUsrPwd, incorporant usuari i contrasenya. Heu de comunicar la placa IoT-02 de forma bidireccional amb simpleclientUsrPwd.
void MainWindow::on_buttonConnect_clicked()
{
   if (m_client->state() == QMqttClient::Disconnected) {
       ui->lineEditHost->setEnabled(false);
       ui->spinBoxPort->setEnabled(false);
       ui->buttonConnect->setText(tr("Disconnect"));
       ui->leUser->setEnabled(false);
       ui->lePwd->setEnabled(false);
       m_client->setUsername(ui->leUser->text());
       m_client->setPassword(ui->lePwd->text());
       m_client->connectToHost();
   } else {
       ui->lineEditHost->setEnabled(true);
       ui->spinBoxPort->setEnabled(true);
       ui->leUser->setEnabled(true);
       ui->lePwd->setEnabled(true);
       ui->buttonConnect->setText(tr("Connect"));
       m_client->disconnectFromHost();
   }
}
  • Exercici A06.03 (Heu de desar a la carpeta A06 un document 2223-DAM-A06.03-1rCognom2nCognomNom.pdf amb les solucions explicades i un arxiu 2223-DAM-A06.02-1rCognom2nCognomNom.zip amb els codis comprimits, sense el .pro.user).

20221007 (2h) A06.01

Recull d'avui usuari: dam | contrasenya: dam2223

20221006 (1h) A06.01

Recull d'avui usuari: dam | contrasenya: dam2223

Exercici A06.01 (Heu de desar a la carpeta A06 un document 2223-DAM-A06.01-1rCognom2nCognomNom.pdf amb les solucions explicades i un arxiu 2223-DAM-A06.01-1rCognom2nCognomNom.zip amb els codis comprimits, sense el .pro.user).

20221003 (2h) A06.01

Recull d'avui usuari: dam | contrasenya: dam2223

Connexió entre ginys encastats (Evolució de l'exercici del darrer dia)

Exercici A06.01 (Heu de desar a la carpeta A06 un document 2223-DAM-A06.01-1rCognom2nCognomNom.pdf amb les solucions explicades i un arxiu 2223-DAM-A06.01-1rCognom2nCognomNom.zip amb els codis comprimits, sense el .pro.user).

qtMqtt

qtMqtt oficial

Feu un git clone i especifiqueu la versió amb un git checkout 6.0. Després:

git clone https://code.qt.io/cgit/qt/qtmqtt.git
cd qmqtt
git checkout 6.1 (Canvieu 6.1 per la vostra versió de Qt)
mkdir build
cd build
qmake -r ..
make
sudo make install

Instal·lació a Windows

- Si no teniu el llenguatge perl instal·lat, instal·leu perl

- Obriu el CMD amb les variables d'entorn de les Qt6

git clone git://code.qt.io/qt/qtmqtt.git
cd qmqtt
git checkout 6.1
mkdir build
cd build
qmake -r ..
mingw32-make
mingw32-make install

Instal·lació de QtMqtt per Android

Malgrat que ja us funcioni la biblioteca QtMqtt en programes d'escriptori, heu de fer la compilació de la biblioteca QtMqtt per a la versió de Qt/QML que feu servir per a poder executar programes que duguin aquesta biblioteca a Android.

Hi ha diversos suggeriments de com fer-ho. Després de diversos intents, aquest és el sistema que a mi m'ha funcionat:

Cerqueu el directori lib de la vostra distribució Qt per a Android x86:

jordi@ecat-XPS13:~$ /home/jordi/Qt/6.0.0/android_x86/bin/qmake -query QT_INSTALL_LIBS
/home/jordi/Qt/6.0.0/android_x86/lib

o, per al dispositiu físic Android amb tecnologia Android ARM:

ecat@iot-ecat:~$ /home/ecat/Qt/6.0.0/android_armv7/bin/qmake -query QT_INSTALL_LIBS
/home/ecat/Qt/6.0.0/android_armv7/lib

Aneu a la carpeta que ens retorna l'ordre anterior (Android x86):

jordi@ecat-XPS13:~$ cd /home/jordi/Qt/6.0.0/android_x86/lib

o, per al dispositiu físic Android amb tecnologia Android ARM:

ecat@iot-ecat:~$ cd /home/ecat/Qt/6.0.0/android_armv7/lib

I feu el procés d'instal·lació (Android x86):

jordi@ecat-XPS13:~/Qt/6.0.0/android_x86/lib$ git clone git://code.qt.io/qt/qtmqtt.git
jordi@ecat-XPS13:~/Qt/6.0.0/android_x86/lib$ cd qtmqtt/
jordi@ecat-XPS13:~/Qt/6.0.0/android_x86/lib/qtmqtt$ git checkout 6.0
jordi@ecat-XPS13:~/Qt/6.0.0/android_x86/lib/qtmqtt$ rm -r examples/

o, per al dispositiu físic Android amb tecnologia Android ARM:

ecat@iot-ecat:~/Qt/6.0.0/android_armv7/lib$ git clone git://code.qt.io/qt/qtmqtt.git
ecat@iot-ecat:~/Qt/6.0.0/android_armv7/lib$ cd qtmqtt/
ecat@iot-ecat:~/Qt/6.0.0/android_armv7/lib/qtmqtt$ git checkout 6.0
ecat@iot-ecat:~/Qt/6.0.0/android_armv7/lib/qtmqtt$ rm -r examples/

Per a Android x86, mitjançant el Qt Creator obriu el projecte /home/jordi/Qt/6.0.0/android_x86/lib/qtmqtt/qtmqtt.pro. Aneu al menú i seleccioneu Build / Run qmake

Per a Android ARM, mitjançant el Qt Creator obriu el projecte /home/ecat/Qt/6.0.0/android_armv7/lib/qtmqtt/qtmqtt.pro. Aneu al menú i seleccioneu Build / Run qmake

Torneu al terminal d'abans i feu (Android x86):

jordi@ecat-XPS13:~/Qt/6.0.0/android_x86/lib/qtmqtt$ make
jordi@ecat-XPS13:~/Qt/6.0.0/android_x86/lib/qtmqtt$ sudo make install

o, per al dispositiu físic Android amb tecnologia Android ARM:

ecat@iot-ecat:~/Qt/6.0.0/android_armv7/lib/qtmqtt$ make
ecat@iot-ecat:~/Qt/6.0.0/android_armv7/lib/qtmqtt$ sudo make install

Copieu, fora de la ruta de les Qt, els projectes d'exemple quickpublication i quicksubscription. Obriu els dos projectes per a que puguin ser executats des de l'escriptori i des del mòbil (emulat o no). Per a verificar llur funcionament, podeu executar un projecte al dispositiu mòbil i l'altre a l'escriptori.

20220930 (2h) A00

  • Dubtes
  • Canvi de la forma del cursor per frames
  • Una calculadora que suma, emprant Qt
  • A la segona hora es faran activitats relacionades amb el professor transversal del projecte global.

Dins de la carpeta compartida feu una subcarpeta amb el nom activitats. I a dins de la subcarpeta A00. Deseu a la subcarpeta A00 l'activitat feta amb el professor transversal en format .odt i .pdf

20220929 (1h)

  • Dubtes
  • Canvi de la forma del cursor per frames
  • Una aplicació, emprant Qt, amb dos botons ( + i -) i una etiqueta que mostra un número. Amb el botó + s'incrementa el valor del número de l'etiqueta i amb el botó - es decrementa.

20220923 (2h) A05

  • Dubtes
  • Verifiqueu la connectivitat amb el protocol MQTT de la placa IoT-02 emprant Snap! i NodeRED.
  • Programació orientada a objectes en C++. Integració a les Qt.
  • A la segona hora es farà l'activitat 5 relacionada amb el professor transversal del projecte global.

Feu la subcarpeta A05 dins de la subcarpeta activitats de la carpeta compartida. Deseu a la subcarpeta A05 l'activitat feta amb el professor transversal en format .odt i .pdf

20220922 (1h)

Recull d'avui usuari: dam | contrasenya: dam2223

  • Dubtes del darrer dia
  • Seguim amb les Qt

20220919 (3h)

Recull d'avui usuari: dam | contrasenya: dam2223

  • Dubtes de la setmana passada

Canvieu el broker

formacio.things.cat:9001
ecat / clotClot
  • Programació orientada a objectes en C++. Integració a les Qt

20220916 (2h) A03

  • Dubtes del dia anterior
  • Programació orientada a objectes en C++. Integració a les Qt
  • A la segona hora es faran activitats relacionades amb el professor transversal del projecte global.

Dins de la carpeta compartida feu una subcarpeta amb el nom activitats. I a dins de la subcarpeta A03. Deseu a la subcarpeta A03 l'activitat feta amb el professor transversal en format .odt i .pdf

20220915 (1h)

  • Dubtes del dia anterior

20220912 (3h)

Recull del dia 20220912 usuari: dam | contrasenya: dam2223

Distribució de M07UF1 i M13 al curs 2022-2023

Distribució de M07UF1 i M13 al curs 2022-2023 de 2n de DAM

Qt

El Qt Creator serà l'IDE que farem servir per a desenvolupar el disseny d'aplicacions gràfiques d'usuari:

Aneu a la pàgina Qt for Open Source Development i cerqueu Download the Qt Online Installer. Baixeu-vos-ho i instal·leu-ho (us demana registrar-vos per a poder-ho instal·lar).

Activitat 6

Paquets que manquen per a fer funcionar les Qt a l'Ubuntu:

sudo apt install libx11-xcb-dev libglu1-mesa-dev

IoT

  • NodeRED

Exercici d'instal·lació

Instal·lació de Node.js Guia d'instal·lació de node i npm

Verificació:

node --version
npm --version

Instal·lació i funcionament del NodeRed autònom

ecat@iot-ecat:~$ mkdir bin
ecat@iot-ecat:~$ cd bin
ecat@iot-ecat:~/bin$ sudo apt install unzip
ecat@iot-ecat:~/bin$ mkdir nodered-ui
ecat@iot-ecat:~/bin$ cd nodered-ui
ecat@iot-ecat:~/bin/nodered-ui$ wget https://www.binefa.cat/IoT/nodeRed/node_red_ui.zip
ecat@iot-ecat:~/bin/nodered-ui$ unzip node_red_ui.zip
ecat@iot-ecat:~/bin/nodered-ui$ node node_modules/node-red/red.js --userDir node_modules/node-red/data --settings node_modules/node-red/settings.js -v --port 2222 --title elmeuTitol --safe flows_meuTitol.json

Si hi ha problemes de confiança amb el certificat al descarrega l'arxiu .zip, hi podeu afegir l'opció --no-check-certificate:

wget --no-check-certificate https://www.binefa.cat/IoT/nodeRed/node_red_ui.zip

Activitat 7

Repositori de codis fet a classe durant el curs

Codis fets a les classes de 2n de DAM usuari: dam | contrasenya: dam2122

Documentació

Distribució de M07UF1 i M13 al curs 2022-2023 de 2n de DAM

Recull de pràctiques de 2n de DAM. Curs 2022-2023

Projecte global GP1. IoT

Seguiment de tutories

Enquesta del 17 de novembre de 2022

Qt/QML

Paquets que manquen per a fer funcionar les Qt a l'Ubuntu:

sudo apt install libx11-xcb-dev libglu1-mesa-dev

Activació de l'editor QML al QtCreator 6

Qt5 de Jan Bodnar

Vídeos QML

Qt5 Cadaques! A Book about Qt5

Qt Quick tutorial de Jan Bodnar

PyQt5 de Jan Bodnar

Qt for WebAssembly

Qt for WebAssembly

json

How To Manipulate JSON With C++ and Qt

QProcess

QProcess example

Qt5 tutorial FFmpeg converter using QProcess - 2020

IoT

Introducció al Node-RED

TCP/UDP Capa de transport d'Ethernet

Introducció a MQTT

Afegint la targeta ESP8266 a l'IDE d'Arduino (NodeMCU1.0)

Micropython and the Internet of Things

SCADA fent servir Python QML i Arduino

MQTT avec Qt

Placa IoT-02

Placa IoT-02

Introducció a la placa IoT-02

Per a la programació amb l'IDE d'Arduino: https://dl.espressif.com/dl/package_esp32_index.json

Programació en MicroPython

LoRaWAN

LoRa 2022-2023

Consola de The Things Stack (Community Edition) de The Things Network

Presentació LoRaWAN (esborrany v0.4)

Ús pràctic de LoRaWAN TTNv2

Recull introductori per a treballar amb LoRa ( usuari: dam / contrasenya: dam2122)

Recull de pràctiques de 2n de DAM. Curs 2021-2022

Transmissió d'un número real de tipus IEEE-754 (4 bytes) i llur recuperació a NodeRED

Downlink LoRaWAN fent servir TTSv3