Diferència entre revisions de la pàgina «DAM 2021-2022»
m (→20220211) |
|||
Línia 7: | Línia 7: | ||
[https://meet.google.com/wwr-knez-ukp Teleconferència provisional per a compartir pantalla i confinats] | [https://meet.google.com/wwr-knez-ukp Teleconferència provisional per a compartir pantalla i confinats] | ||
+ | |||
+ | == 20220214 == | ||
+ | [https://recull.binefa.cat/files/20220214/ Recull de codis comentats avui] | ||
+ | |||
+ | * Downlink LoRaWAN OTAA | ||
+ | |||
+ | * [https://www.binefa.com/index.php/DAM_2021-2022#LoRaWAN_ABP LoRaWAN ABP] | ||
+ | |||
+ | * Seguim fent els exercicis del [[Recull de pràctiques de 2n de DAM. Curs 2021-2022]] | ||
+ | |||
== 20220211 == | == 20220211 == |
Revisió del 14:28, 14 feb 2022
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
- 1 Algunes classes
- 1.1 20220214
- 1.2 20220211
- 1.3 20220207
- 1.4 20220204
- 1.5 20220131
- 1.6 20220128
- 1.7 20220124
- 1.8 20220121 (Baixa professor)
- 1.9 20220117
- 1.10 20220114 (Baixa professor)
- 1.11 20220110 (Baixa professor)
- 1.12 20211217
- 1.13 20211213
- 1.14 20211210
- 1.15 20211203
- 1.16 20211129
- 1.17 20211126
- 1.18 20211122
- 1.19 20211119
- 1.20 20211115
- 1.21 20211112
- 1.22 20211108
- 1.23 20211105
- 1.24 20211029
- 1.25 20211025
- 1.26 20211021
- 1.27 20211018
- 1.28 20211015
- 1.29 20211011
- 1.30 20211008
- 1.31 20211004
- 1.32 20211001
- 1.33 20210927
- 2 Repositori de codis fet a classe durant el curs
- 3 Documentació
Algunes classes
Teleconferència provisional per a compartir pantalla i confinats
20220214
Recull de codis comentats avui
- Downlink LoRaWAN OTAA
- Seguim fent els exercicis del Recull de pràctiques de 2n de DAM. Curs 2021-2022
20220211
Recull de codis comentats avui
- Codi d'ajuda per a fer la pràctica 5 de QML del Recull de pràctiques de 2n de DAM. Curs 2021-2022
- Downlink LoRaWAN OTAA
- Seguim fent els exercicis del Recull de pràctiques de 2n de DAM. Curs 2021-2022
20220207
Recull de codis comentats avui
Tramesa de nombres reals emprant LoRa
Ajuda a l'exercici Lora-3 del Recull de pràctiques de 2n de DAM. Curs 2021-2022:
Missatges downlink LoRaWAN
Nous exercicis del Recull de pràctiques de 2n de DAM. Curs 2021-2022: Lora-4, Qt-9 i QML-8.
LoRaWAN ABP
Per a fer les pràctiques amb LoRa ABP haurem de desactivar el comptador de trames (cada cop que es reprograma la placa IoT-02 el comptador torna a zero. TTSv3 verifica que el comptatge de trames sigui correcta. Si no es desactiva el comptador de trames semblarà que no es rep la trama). Fera fer-ho, aneu al dispositiu, seleccioneu la pestanya General Settings, premeu el botó EXPAND a la secció Network layer, desplegueu l'enllaç Advanced MAC settings i seleccioneu Enabled a Resets frame counters. Al final deseu els canvis prement el botó Save changes.
Exemple de microprogramari emprant ABP
// TTN uses SF9 for its RX2 window. LMIC.dn2Dr = DR_SF9;
// Set data rate and transmit power for uplink (note: txpow seems to be ignored by the library) LMIC_setDrTxpow(DR_SF7, 14);
Nou exercici del Recull de pràctiques de 2n de DAM. Curs 2021-2022: Lora-5.
20220204
Recull de codis comentats avui
Fem els exercicis Lora-2 i Lora-3 del Recull de pràctiques de 2n de DAM. Curs 2021-2022
20220131
Al recull del 31 de gener de 2022 teniu un exemple de conversió bidireccional de float a cadena unsigned char fent servir union.
Acabem la pràctica 1 de LoRaWAN i comencem la 2 i la 3.
20220128
LoRaWAN
LoRaWAN OTAA
1r exercici de LoRa al Recull de pràctiques de 2n de DAM. Curs 2021-2022
20220124
Recull d'avui Captura del conjunt final de control
MqttBasic::~MqttBasic(){ if (m_client->state() == QMqttClient::Connected) m_client->disconnectFromHost(); delete ui; }
void IndicadorLed::on_cbR_clicked(bool checked){ vSetLabelColor(ui->lbR,(checked)?Qt::red:Qt::darkRed,Qt::darkRed); (*qjoJson)["ledR"] = (checked)?1:0; vActualitzaJson(*qjoJson); }
void IndicadorLed::vActualitzaJson(QJsonObject qjsObj){ QString strFromObj = QJsonDocument(qjsObj).toJson(QJsonDocument::Compact).toStdString().c_str(); ui->etJson->setText(strFromObj); emit vTrametJsonLeds(strFromObj); }
20220121 (Baixa professor)
Recull de codis pujats el 17 de gener. Avui s'han afegit un parell d'exercicis.
Dades JSON
Qt
How To Manipulate JSON With C++ and Qt
Exemple d'us del format JSON a les Qt: 01_json_00.zip del recull
NodeRed
json00.nodered.txt al recull
ESP32 / placa IoT-02
Biblioteca Arduino_JSON al recull
Codi d'exemple emprant JSON a la placa IoT-02: Codi de microprogramari IoT-02_mqtt_10_dam.zip al recull
Visualització de formes i colors a etiquetes QLabel
Visualització de led de color: 00_botonsToggle05.zip (Vídeo explicatiu del codi 00_botonsToggle05) i 00_botonsToggle06.zip (Vídeo explicatiu del codi 00_botonsToggle06)
Visualització d'un botó físic: 04_indicadorBotons00.zip del recull
Exercicis
Resoldre els exercicis Qt-3, Qt-4, Qt-5, Qt-6 i Qt-7
20220117
Recull de codis comentats avui
Dades JSON
Qt
How To Manipulate JSON With C++ and Qt
Exemple d'us del format JSON a les Qt: 01_json_00.zip del recull
NodeRed
json00.nodered.txt al recull
ESP32 / placa IoT-02
Biblioteca Arduino_JSON al recull
Codi d'exemple emprant JSON a la placa IoT-02: Codi de microprogramari IoT-02_mqtt_10_dam.zip al recull
Visualització de formes i colors a etiquetes QLabel
Visualització de led de color: 00_botonsToggle05.zip (Vídeo explicatiu del codi 00_botonsToggle05) i 00_botonsToggle06.zip (Vídeo explicatiu del codi 00_botonsToggle06)
Visualització d'un botó físic: 04_indicadorBotons00.zip del recull
Exercicis
Resoldre els exercicis Qt-3, Qt-4 i Qt-5
20220114 (Baixa professor)
Al recull provisional de notes podeu consultar l'avaluació de les pràctiques que m'heu fet arribar. En cas de no estar al dia, feu l'esforç de posar-vos-hi avui (un cop finalitzeu les tasques encomanades per cada bloc de dues hores, que són prioritàries).
IoT (1r bloc)
Pugeu la pràctica a la carpeta compartida. Tant el document amb pdf com els codis comprimits en format .zip o .tar.gz (ni .rar ni .7z). Un cop ho trameteu, feu-me arribar un correu electrònic indicant que ja heu pujat la pràctica.
Per a fer aquesta pràctica, el professor posarà en marxa el punt d'accés que fem servir per a les pràctiques IoT. Altrament, podeu emprar com a punt d'accés un telèfon mòbil capaç de servir una xarxa sense fils de 2,4GHz (tot sovint, a Android es pot seleccionar la banda de punt d'accés: 2,4GHz o 5GHz). La connectivitat de l'ESP32 de la placa IoT-02 a la xarxa sense fils tan sols pot ser a 2,4GHz i no a 5GHz. Una eina Android que us pot ajudar és WiFiAnalyzer.
A la placa IoT-02 implementeu l'exercici Servint pàgina web per a canviar contrasenya (hi ha 4 apartats).
Qt / QML (2n bloc)
Pugeu la pràctica a la carpeta compartida. Tant el document amb pdf com els codis comprimits en format .zip o .tar.gz (ni .rar ni .7z). Un cop ho trameteu, feu-me arribar un correu electrònic indicant que ja heu pujat la pràctica.
A la carpeta d'exàmens antics del recull hi teniu material_20210225ex_M07UF1.zip amb material per a fer un examen del curs passat (en .pdf i en .odt per a que pugueu fer el vostre document. I arxius .zip que us ajudaran a resoldre-ho).
20220110 (Baixa professor)
IoT
Per a fer aquesta pràctica, podeu demanar al professor que posi en marxa el punt d'accés que fem servir per a les pràctiques IoT. Altrament, podeu emprar com a punt d'accés un telèfon mòbil capaç de servir una xarxa sense fils de 2,4GHz (tot sovint, a Android es pot seleccionar la banda de punt d'accés: 2,4GHz o 5GHz). La connectivitat de l'ESP32 de la placa IoT-02 a la xarxa sense fils tan sols pot ser a 2,4GHz i no a 5GHz. Una eina Android que us pot ajudar és WiFiAnalyzer.
A la placa IoT-02 implementeu l'exercici Servint pàgina web per a canviar contrasenya
20211217
Recull de codis del dia d'avui usuari: dam / contrasenya: dam2122
- 1a hora
- Hem plantejat l'exercici 5 del Recull de pràctiques de 2n de DAM. Curs 2021-2022
- Hem repassat codis introductoris de QML
- Seguim acabant el Recull de pràctiques de 2n de DAM. Curs 2021-2022
- Per a l'exercici Qt-2c del Recull de pràctiques de 2n de DAM. Curs 2021-2022 hem vist que per a maximitzar el giny en execució es pot posar al constructor:
showMaximized();
- Anul·lat l'exercici Qt-2d (degut que a les noves versions els ginys dels contenidors no són seleccionables)
- 2a hora
- Seguim acabant el Recull de pràctiques de 2n de DAM. Curs 2021-2022
20211213
Recull de codis del dia d'avui usuari: dam / contrasenya: dam2122
- Integreu les Qt amb l'SDK i l'NDK de l'Android Studio que teniu instal·lat. Feu una prova de funcionament amb el vostre mòbil, real o emulat. Exercici Qt-2 del Recull de pràctiques de 2n de DAM. Curs 2021-2022
- Fem revisió del contingut a les carpetes compartides.
- Anem acabant els exercicis pendents del Recull de pràctiques de 2n de DAM. Curs 2021-2022
20211210
Recull de codis del dia d'avui usuari: dam / contrasenya: dam2122
Fem revisió del contingut a les carpetes compartides.
Anem acabant els exercicis pendents del Recull de pràctiques de 2n de DAM. Curs 2021-2022
20211203
Recull de codis del dia d'avui usuari: dam / contrasenya: dam2122
IoT
Wokwi
Aneu a aquest projecte de wokwi i canvieu el codi sketch.ino pel que hi ha al recull de codis d'avui. Canvieu el text de ClientID per a que sigui únic.
Obriu minimMqttSnap.xml, que hi ha al recull de codis d'avui, a un Snap! sense SSL (recordeu activar les extensions per a JavaScript)
UserLAnd
Instal·leu-vos l'aplicació UserLAnd al vostre telèfon mòbil (present a Google Play i aviat a App Store). Si no teniu mòbil disponible, feu servir un emulador d'Android.
Connecteu el vostre mòbil, real o emulat, a la xarxa sense fils per a IoT i poseu en marxa l'aplicació. Un cop a dins, instal·leu-vos un Debian (80MB). Us demanarà un nom d'usuari i contrasenya. Feu una instal·lació que permeti veure al navegador del vostre ordinador un NodeRED executant-se des del mòbil.
Per a fer-ho:
sudo apt update sudo apt upgrade sudo apt install aptitude openssh-server net-tools curl software-properties-common wget unzip screen
A partir d'ara us podeu connectar remotament per SSH fent servir el port 2022 ( ssh usuari@ipMobil -p 2022 o ssh -o ServerAliveInterval=30 usuari@ipMobil -p 2022 per a que hi hagi persistència en la comunicació)
mkdir bin cd bin curl -sL https://deb.nodesource.com/setup_14.x | sudo bash - sudo apt-get install -y nodejs node -v npm -v mkdir nodered-ui cd nodered-ui wget --no-check-certificate https://www.binefa.cat/IoT/nodeRed/node_red_ui.zip unzip node_red_ui.zip screen 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
Premeu Ctrl A + D. I per a tornar a screen funcionant des del rerefons:
screen -r
Qt i QML
Seguim desenvolupant la pràctica 1 de Qt i l'exercici 4 de QML del Recull de pràctiques de 2n de DAM. Curs 2021-2022.
20211129
Recull de codis del dia d'avui usuari: dam / contrasenya: dam2122
Qt
Seguim desenvolupant la pràctica 1 del Recull de pràctiques de 2n de DAM. Curs 2021-2022.
Connectant Qt i QML
Exercici 4 de QML del Recull de pràctiques de 2n de DAM. Curs 2021-2022.
A qmlLliscant_02.zip, traieu les cometes dobles de:
font.bold: "true"
per a deixar-ho així:
font.bold: true
- Modificacions (arxiu 01_qmlLliscant_10.zip actualitzat al recull d'avui):
A Lliscant01Form.ui.qml:
Item { id: element width: 400 height: 400 property alias text1: text1 property alias progressBar: progressBar ProgressBar { id: progressBar y: 189 value: 0.5 //maximumValue: 100 anchors.right: parent.right anchors.rightMargin: 20 anchors.left: parent.left anchors.leftMargin: 20 }
A main.qml:
ApplicationWindow { visible: true width: 640 height: 480 title: qsTr("Exemple Lliscant") RereFons{ id: rf onCmptChanged: { console.log(nCmpt); swipeView.actualitzaBarraDeProgres(nCmpt); } } SwipeView{ id: swipeView anchors.fill: parent currentIndex: tabBar.currentIndex function actualitzaBarraDeProgres(n){ l01.progressBar.value = n/100; l01.text1.text = n; // canvieu element1 per text1 a l'editor QML } Lliscant00Form{ botoTramet.onClicked: { console.log(textInputTE.text) rf.szCadena = textInputTE.text; } } Lliscant01Form{ id: l01 } }
20211126
Recull de codis del dia d'avui usuari: dam / contrasenya: dam2122
Qt
Seguim desenvolupant la pràctica 1 del Recull de pràctiques de 2n de DAM. Curs 2021-2022.
Connectant Qt i QML
Exercici 4 de QML del Recull de pràctiques de 2n de DAM. Curs 2021-2022.
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
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
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
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ó 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
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
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, M09UF2, M09UF3, M15UF1 i M13 al curs 2021-2022 de 2n de DAM
Recull de pràctiques de 2n de DAM. Curs 2021-2022
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
SCADA fent servir Python QML i Arduino
LoRaWAN
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