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

De binefa.com
Salta a la navegació Salta a la cerca
Línia 22: Línia 22:
 
* ''Radio buttons'' (Han de ser agrupats en contenidors. Per exemple: ''Group Box'' o ''Frame'')
 
* ''Radio buttons'' (Han de ser agrupats en contenidors. Per exemple: ''Group Box'' o ''Frame'')
  
* ''QTimer'' (Temporitzador que quan es desborda emet un senyal ''timeout'' i s'ha de connectar a una osca)
+
* ''QTimer'' (Temporitzador que quan es desborda emet un senyal ''timeout()'' i s'ha de connectar a una osca)
  
 
== 20211119 ==
 
== 20211119 ==

Revisió del 16:12, 22 nov 2021

Quan tingueu les credencials d'accés a la NET heu de compartir-me una carpeta amb aquest nom: 2122-DAM-1rCognom2nCognomNom (Per exemple, si el teu nom és Xavier López Pujol --> 2122-DAM-LopezPujolXavier). A aquest enllaç podreu veure si ja hi sou a la llista:

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

Algunes classes

Llista de 2n de DAM

Teleconferència provisional per a compartir pantalla i confinats

20211122

Recull de codis del dia d'avui usuari: dam / contrasenya: dam2122

Primer exercici de Qt al Recull de pràctiques de 2n de DAM. Curs 2021-2022.

Conceptes nous:

QLabel* pLabel = new QLabel;
pLabel->setStyleSheet("QLabel { background-color : red; color : blue; }");
  • Radio buttons (Han de ser agrupats en contenidors. Per exemple: Group Box o Frame)
  • QTimer (Temporitzador que quan es desborda emet un senyal timeout() i s'ha de connectar a una osca)

20211119

OpenSSL Windows

MQTTS i Qt

Evolució de la classe GinyMqtt per a gestionar més còmodament el protocol TCP/IP MQTT. Analitzem contenidor_03.zip que permet la connexió MQTTS.

Provem aquest codi que funciona amb MQTTS emprant l'exemple HelloWorld_NoSSL.xml a Snap! (Recordeu activar javaScript extensions). Paràmetres a canviar:

Servidor (Broker): iot.electronics.cat:9001
Usuari: ecat
Contrasenya: clotClot
Tema de subscripció: /ledW
Tema de publicació: /provaDAM

Conceptes nous:

  • Certificats TLS (ca.crt)
  • Arxiu de recursos .qrc (ens permet introduir fitxers dins del projecte per a que hi siguin dins de l'executable, sense haver de llegir-los a una ruta externa. Molt convenient per a projectes emprant Android)

Recull de codis del dia d'avui usuari: dam / contrasenya: dam2122

QML

Qt Quick tutorial

A Book about Qt5

Introducció al QML. Curs 2021-2022

20211115

Desenvolupament de la classe GinyMqtt per a gestionar més còmodament el protocol TCP/IP MQTT

Recull de codis del dia d'avui usuari: dam / contrasenya: dam2122

Introducció al QML. Curs 2021-2022

20211112

Recull de codis del dia d'avui usuari: dam / contrasenya: dam2122

Control de la placa IoT-02 emprant QtMqtt

Amb l'exemple Simple MQTT Client Example provem la connectivitat amb el broker per defecte (amb usuari i contrasenya, que teniu a la màquina virtual) i la connectivitat amb el broker públic de test mosquitto (sense usuari mi contrasenya).

Cal modificar el codi del microprogramari de la placa IoT-02 per a que el broker de test broker.emqx.io d'EMQ X. Modifiqueu també el broker a l'exemple Simple MQTT Client Example i feu subscripcions al vostre botó i35 de la placa IoT-02.

const char* mqtt_server = "broker.emqx.io";
const int mqtt_port = 1883; 
const char* mqtt_user = "";
const char* mqtt_password = "";

Proveu-lo també a aquest codi amb sòcols web MQTT d'Snap!

Amb l'exemple Quick MQTT Example provem també la connectivitat amb un broker públic de test (sense usuari mi contrasenya). Teniu els codis quicksubscription i quickpublication al recull de codis del dia d'avui usuari: dam / contrasenya: dam2122

Introducció al QML

Introducció al QML. Curs 2021-2022

Accés al llibre de Qt/QML en línia

Execució de codis QML des del terminal:

/home/jordi/Qt/5.15.2/gcc_64/bin/qmlscene showcase.qml

Instal·lació de la bibloteca QtMqtt a Linux

cd Qt/6.1.3/gcc_64/lib
git clone git://code.qt.io/qt/qtmqtt.git
cd qtmqtt/
git checkout 6.1
rm -r examples/

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

make
sudo make install

20211108

Recull de codis del dia d'avui usuari: dam / contrasenya: dam2122

Barra d'estat

Al recull del dia d'avui hi ha el codi principal_03.zip que incorpora la gestió de la barra d'estat d'un QMainWindow

Ús de les màquines virtuals

Posem en marxa la màquina virtual amb Debian 11:

  • Posem en marxa el projecte d'exemple MQTT simpleClient
  • Executem sobre Android un projecte Qt

20211105

Al disc dur que us passaré hi ha dues màquines virtuals (andro_8.1-r4-VM-32bit.7z de 543,8 MB i IoT - eCat - Debian 11.x 64-bit_v20210304_00.zip de 23,7 GB) al directori maquinesVirtuals/Android_i_Qt

Màquina virtual amb emulador per a Android

Emulador d'Android a una màquina virtual

Aneu amb cura, malgrat és obsolet quelcom es pot fer servir en part: Using VMWare to replace the slow Android Emulator

És important que aquesta màquina virtual estigui configurada amb:

  • Connexió pont (bridge i no NAT)
  • Memòria mínima de 2GB

Màquina virtual amb Debian 11, Android Studio i Qt6 per a escriptori i Android

Adreça de descàrrega de la màquina virtual amb Debian 11, Android Studio i Qt6 per a escriptori i Android

Avui us passaré, comprimida a 19GB, una màquina virtual basada en Debian 11 (a hores d'ara, Debian 11 és en fase de testing) amb els següents programes ja instal·lats i preparats per a funcionar:

  • Android Studio
  • QtCreator amb la darrera Qt5 LTS i les Qt6
  • Biblioteca qtMqtt preparada per a funcionar a l'escriptori i a Android amb les Qt6

Configuració de la màquina virtual:

  • L'usuari per defecte és ecat (eCat)
  • La contrasenya de l'usuari ecat és clotfje (ecat és membre del grup d'usuaris sudo i dialout). Almenys a l'hora de passar-vos la màquina virtual. És aconsellable que canvieu la vostra contrasenya d'accés.
  • És aconsellable tenir la connexió de xarxa en connexió pont (bridge). Però no cal per a connectar-ho amb l'emulador d'Android amb màquina virtual. Sí que caldria per a tenir accés extern al broker MQTT i al NodeRED (no instal·lats en aquesta primera versió).
  • Memòria mínima de 4GB

Connectant les dues màquines virtuals

  • Trobeu quina IP té la màquina virtual amb l'emulador d'Android (a l'explicació faré servir com a IP de l'emulador 172.20.xy.xyz).
  • Obriu un terminal a la màquina virtual amb Debian 11:
ecat@iot-ecat:~$ cd Android/Sdk/platform-tools/
ecat@iot-ecat:~/Android/Sdk/platform-tools$ ./adb connect 172.20.xy.xyz:5555
* daemon not running; starting now at tcp:5037
* daemon started successfully
connected to 172.20.25.152:5555
ecat@iot-ecat:~/Android/Sdk/platform-tools$ ./adb shell
x86:/ $
  • Obriu el Qt Creator (premeu la supertecla -aquella amb el símbol d'una finestra propietària- i escriviu-hi Qt). Feu un exemple simple de QML (per exemple el del swipe). Seleccioneu les Qt6 per a escriptori i Android x86 (amb l'opció Release i sense Debug ni Profile). Aneu a Tools / Options / Devices i verifiqueu que no hi dóna cap error de configuració (és possible que al principi surtin marques vermelles, però al cap de pocs segons se'n van). Assegureu-vos que compilareu per Android i feu Play al projecte de les Qt. Seleccioneu el dispositiu compatible VMware Virtual Platform. I premeu al botó OK.
  • Al cap de pocs segons hi apareix el programa bàsic swipe a l'emulador sobre màquina virtual. El podeu aturar prement el botó quadrat vermell d'Application Output.

qtMqtt

qtMqtt oficial

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

cd qmqtt
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.

20211029

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

1a) Feu un nou programa anomenat ginyCompost02, a partir de l'anterior codi. Heu de posar un nou giny de botons a la dreta del giny de text. Quedaran tres ginys: Botons - Text - Botons.

1b) Feu que ginyCompost02 tingui també connectades els senyals i les osques del nou giny.

20211025

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

Pràctica amb MQTT (sense la S d'MQTTS). Heu de fer servir el port TCP 1883 i amb sócols web el port 9001 ( formacio.things.cat ) amb usuari ecat i contrasenya clotClot.

Codi en python per a truaduir el text d'un certificat a codi encastable a l'IDE d'Arduino

MQTT-Dash. Control del relé de enclavamiento y lectura de la LDR

  • Pràctica amb MQTTS:

- Microprogramari amb MQTTS a la placa IoT-02

- Connexió mitjançant sòcols web (9001) a un Snap! sense SSL. I vam provar mqttSnap.xml.

- Connexió mitjançant NodeRED. Encenem i apaguem un led. Grafiquem el nivell de llum mitjançant el sensor LDR.

- Aplicació d'Android MQTT Dash

  • Pràctica amb MQTT:

Ha de ser el mateix que la pràctica anterior fent servir MQTT en comptes d'MQTTS.

20211021

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

Al codi mqttSnap.xml heu d'afegir una cancel·lació de subscripció un cop rebeu la vostra MAC.

Recull de codis del dia d'avui usuari: dam / contrasenya: dam2122

IoT

Introducció als protocols TCP MQTT i MQTTS.

¿Qué es MQTT? Su importancia como protocolo IoT

Més informació sobre MQTT i MQTTS

Adreces comentades a classe

El broker gratuït més famós

Ports emprats per mosquitto

mqtt4snap Fet per en Xavier Pi

Broker MQTT que permet fer balanceig de servei de franc

Exemple Hola món amb Snap! amb SSL Cal activar a la rodeta d'engranatge l'opció JavaScript extensions

Snap! sense certificat SSL Cal activar a la rodeta d'engranatge l'opció JavaScript extensions

20211018

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

Pseudoservidor UDP

Pseudoservidor UDP emprant Qt5 (1/2)

Pseudoservidor UDP emprant Qt5 (2/2)

20211015

  • UDP
    • Al NodeRED
    • NodeRED + Placa IoT-02

Avui hem aconseguit controlar des del mòbil (tauler de control del NodeRED amb dos botons) l'estat del led blanc de la placa IoT-02.

IoT

Introducció al protocol UDP.

UDP: Què és el protocol UDP?

Microprogramari que implementa el protocol UDP per a la placa IoT-02.

unsigned int udpPortRx = 3334;
unsigned int udpPortTx = 3333;


04_wifiUdp

Codi per a importar al NodeRED fent servir el protocolo UDP. El port de recepció de l'ordinador (3333) ha de ser el de transmissió a la placa, i el de recepció a la placa (3334) ha de ser el de transmissió de l'ordinador.

Port Rx = 3333
Port Tx = 3334

Qt

  • Concepte senyal / osca (signal / slot)

Recull de codis del dia d'avui usuari: dam / contrasenya: dam2122

20211011

Recull de codis del dia d'avui usuari: dam / contrasenya: dam2122

Qt

Seguim amb la introducció a les Qt.

Exercici 02_mesMenys

Desenvolupeu una aplicació gràfica d'usuari, anomenada 02_mesMenys amb la classe GinyMesMenys filla de QWidget, amb tres ginys encastats:

  • Botó botoMes amb el signe +. Incrementa el valor de l'atribut privat nN
  • Botó botoMenys amb el signe -. Decrementa el valor de l'atribut privat nN
  • Etiqueta etNum que presenta el valor de l'atribut privat nN
GinyMesMenys

20211008

Recull de codis del dia d'avui usuari: dam / contrasenya: dam2122

Introducció a les Qt

20211004

Prova amb les plaques IoT-02

JESUITES_FP - educanet01

20211001

Teleconferència pel dia d'avui

Biblioteques Arduino per a la placa IoT-02 (493M)

Codis i disseny electrònic de la placa IoT-02 a Github o git clone https://github.com/jordibinefa/IoT-02.git

Repartiment de Placa IoT-02. De moment, i fins que no es digui el contari, les tornareu el mateix dia.

Heu de dur a classe una font d'alimentació microUSB, o un cable de connexió microUSB per connectar a l'ordinador. Tingueu en compte que us caldrà una altra boca per a connectar el cable miniUSB que us serà subministrat per a programar la placa IoT-02.

20210927

Teleconferència pel dia d'avui

Distribució de M07UF1, M09UF2, M09UF3, M15UF1 i M13 al curs 2021-2022 de 2n de DAM

Recull del dia 20210927 usuari: dam | contrasenya: dam2122

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).

IoT

Placa IoT-02

Instal·lació de Node.js

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

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, M09UF2, M09UF3, M15UF1 i M13 al curs 2021-2022 de 2n de DAM

Qt/QML

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