Diferència entre revisions de la pàgina «DAM 2022-2023»
m (→PureQML) |
|||
Línia 26: | Línia 26: | ||
* Instal·lació de l'eina '''python-future''': | * Instal·lació de l'eina '''python-future''': | ||
pip3 install future | pip3 install future | ||
+ | A Windows: | ||
+ | pip install future | ||
* Primera aplicació | * Primera aplicació | ||
Línia 32: | Línia 34: | ||
git clone https://github.com/pureqml/qmlcore.git | git clone https://github.com/pureqml/qmlcore.git | ||
./qmlcore/build --boilerplate | ./qmlcore/build --boilerplate | ||
− | ./qmlcore/build | + | ./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'' | Obriu amb un navegador l'arxiu ''prjFolder/build.web/index.html'' | ||
Línia 48: | Línia 53: | ||
Reconstruïu-ho: | Reconstruïu-ho: | ||
./qmlcore/build | ./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 | Torneu a obrir amb un navegador l'arxiu ''prjFolder/build.web/index.html'' per a observar els canvis |
Revisió del 17:32, 14 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
Contingut
- 1 Algunes classes
- 1.1 20221114 (3h) A08 - QML, connexió a rerefons Qt i PureQML
- 1.2 20221111 (2h)
- 1.3 20221110 (1h)
- 1.4 20221107 (3h)
- 1.5 20221104 (2h)
- 1.6 20221103 (1h) QDialog
- 1.7 20221028 (2h) A9
- 1.8 20221027 (1h) MicroPython
- 1.9 20221024 (3h)
- 1.10 20221021 (2h)
- 1.11 20221020 (1h) Menús a QMainWindow
- 1.12 20221017 (3h)
- 1.13 20221014 (2h) A06.02, A06.03, A07.01 i A07.02
- 1.14 20221013 (1h) A07.02
- 1.15 20221010 (3h) A06.02, A07.01 i A06.03
- 1.16 20221007 (2h) A06.01
- 1.17 20221006 (1h) A06.01
- 1.18 20221003 (2h) A06.01
- 1.19 20220930 (2h) A00
- 1.20 20220929 (1h)
- 1.21 20220923 (2h) A05
- 1.22 20220922 (1h)
- 1.23 20220919 (3h)
- 1.24 20220916 (2h) A03
- 1.25 20220915 (1h)
- 1.26 20220912 (3h)
- 2 Repositori de codis fet a classe durant el curs
- 3 Documentació
Algunes classes
Teleconferència provisional per a compartir pantalla i confinats
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
Introducció al QML. Curs 2022-2023
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.
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
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.
- Explicació dels codis ginyMqtt00 fins a ginyMqtt04, que fan servir ginys QWidget i QtMqtt.
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
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
- Programació orientada a objectes en C++. Integració a les Qt. (Codis al recull del 19 de setembre)
- 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
- Programació orientada a objectes en C++. Integració a les Qt. (Codis al recull del 19 de setembre)
- 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
- Connexió de la placa IoT-02 a NodeRED mitjançant MQTT
formacio.things.cat:9001 ecat / clotClot
- Programació orientada a objectes en C++. Integració a les Qt
20220916 (2h) A03
- Reviseu si teniu la vostra carpeta compartida enllaçada a carpetes compartides amb el número de la placa IoT-02 cedida fins a final de curs.
- 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)
- Reviseu si teniu la vostra carpeta compartida enllaçada a: Carpetes compartides de 2n de DAM. Curs_2022-2023
- Porteu un cable o alimentador amb connector microUSB de tipus B. Haureu de dur-lo sempre que es facin pràctiques amb la placa IoT-02.
- Dubtes del dia anterior
- Repartiment de la placa IoT-02. El número de placa queda registrat a les carpetes compartides
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).
Paquets que manquen per a fer funcionar les Qt a l'Ubuntu:
sudo apt install libx11-xcb-dev libglu1-mesa-dev
IoT
- NodeRED
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
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
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
Qt5 Cadaques! A Book about Qt5
Qt Quick tutorial de Jan Bodnar
PyQt5 de Jan Bodnar
Qt for WebAssembly
json
How To Manipulate JSON With C++ and Qt
QProcess
Qt5 tutorial FFmpeg converter using QProcess - 2020
IoT
TCP/UDP Capa de transport d'Ethernet
Afegint la targeta ESP8266 a l'IDE d'Arduino (NodeMCU1.0)
Micropython and the Internet of Things
SCADA fent servir Python QML i Arduino
Placa IoT-02
Per a la programació amb l'IDE d'Arduino: https://dl.espressif.com/dl/package_esp32_index.json
LoRaWAN
Consola de The Things Stack (Community Edition) de The Things Network
Presentació LoRaWAN (esborrany v0.4)
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