Diferència entre revisions de la pàgina «DAM 2021-2022»
m (→qtMqtt) |
m (→20211105) |
||
Línia 9: | Línia 9: | ||
== 20211105 == | == 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- | + | 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 19,0 GB) al directori ''maquinesVirtuals/Android_i_Qt'' |
=== Màquina virtual amb emulador per a Android === | === Màquina virtual amb emulador per a Android === |
Revisió del 14:07, 5 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
Contingut
Algunes classes
Teleconferència provisional per a compartir pantalla i confinats
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 19,0 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
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
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ó 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
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.
Microprogramari que implementa el protocol UDP per a la placa IoT-02.
unsigned int udpPortRx = 3334; unsigned int udpPortTx = 3333;
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
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
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
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