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

De binefa.com
Salta a la navegació Salta a la cerca
Línia 77: Línia 77:
  
 
[https://binefa.cat/training/qml/01_qmlLliscant_10_qt6.zip '''Codi actualitzat per a Qt6: 01_qmlLliscant_10_qt6''']
 
[https://binefa.cat/training/qml/01_qmlLliscant_10_qt6.zip '''Codi actualitzat per a Qt6: 01_qmlLliscant_10_qt6''']
 +
 +
A l'arxiu '''main.cpp''' també he afegit un ''#if / #endif'' per a verificar si el codi és previ a les Qt6.0.0:
 +
'''#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)'''
 +
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
 +
'''#endif'''
  
 
== 20210125 (QML, 1h presencial) ==
 
== 20210125 (QML, 1h presencial) ==

Revisió del 15:46, 26 gen 2021

Contingut

Horari a partir del 18 de gener

2n de DAM

Teleconferència del curs 2020-2021

Adreça de la teleconferència

Llista 2n de DAM 2020-2021

Alguns vídeos d'ajuda

QML

Introduction to Qt / QML - all videos so far by KDAB (Codis QML de la sèrie de vídeos)

Vídeos QML de connexió entre el rerefons en C++ i el frontal en QML.

Pseudoservidor UDP

Pseudoservidor UDP emprant Qt5 (1/2)

Pseudoservidor UDP emprant Qt5 (2/2)

Algunes classes

20210128 (QML, 3h síncrona)

Avui, abans de començar la classe, s'han d'haver tramès per correu electrònic els exercicis ex01, ex02, ex03, ex04 i ex05 dels Exercicis de QML, seguint les indicacions a la capçalera de la pàgina.

Acabem l'exercici 6 de la col·lecció dels Exercicis de QML

Millores de codi

Aquest codi:

   Connections {
       target: appCore // Specify the target to connect
       onSendToQml: {
           p1.etiqueta.text = count // Set the counter to the text label
           // count <-- Mateix nom que al senyal void sendToQml(int count);
       }
   }

Provoca aquest avís (warning):

qrc:/main.qml:13:5: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }

I aquesta és la solució que s'aconsella actualment:

   Connections {
       target: appCore // Specify the target to connect
       function onSendToQml(count){
           p1.etiqueta.text = count // Set the counter to the text label
           // count <-- Mateix nom que al senyal void sendToQml(int count);
       }
   }

ProgressBar a QML per a Qt6

La propietat de valor màxim ha desaparegut a les Qt6

   ProgressBar {
       id: progressBar
       y: 189
       value: 50
       //maximumValue: 100
       anchors.right: parent.right
       anchors.rightMargin: 20
       anchors.left: parent.left
       anchors.leftMargin: 20
   }

A Qt 6 el valor màxim està a 1.0, per tant:

   ProgressBar {
       id: progressBar
       y: 189
       value: 0.5
       anchors.right: parent.right
       anchors.rightMargin: 20
       anchors.left: parent.left
       anchors.leftMargin: 20
   }

i al main.qml de 01_qmlLliscant_10:

       function actualitzaBarraDeProgres(n){
           l01.progressBar.value = n/100; // Originàriament hi havia n
           l01.text1.text = n; // canvieu element1 per text1 a l'editor QML
       }

Codi actualitzat per a Qt6: 01_qmlLliscant_10_qt6

A l'arxiu main.cpp també he afegit un #if / #endif per a verificar si el codi és previ a les Qt6.0.0:

#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
   QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif

20210125 (QML, 1h presencial)

Connexió entre el frontal QML i el rerefons en C++

Exemple de connexió entre el frontal QML i el rerefons en C++ (El codi de connexió és basat en QML - Tutorial 036. Working with Signals and Slots in QML).

Aquí teniu alguns Vídeos QML que guien pas a pas la connexió entre el frontal i el rerefons.

Comenceu l'exercici 6 de la col·lecció Exercicis de QML

20210122 (QML, 2h síncrona)

   MqttClient {
       id: client
       hostname: hostnameField.text
       port: portField.text
       username: userField.text
       password: pwdField.text
   }

Modifiqueu el broker per un que faci servir usuari i contrasenya:

       TextField {
           id: hostnameField
           Layout.fillWidth: true
           text: "rubi.xoic.coop"
           placeholderText: "<Enter host running MQTT broker>"
           enabled: client.state === MqttClient.Disconnected
       }

Afegiu l'etiqueta d'usuari:

       Label {
           text: "Usuari:"
           enabled: client.state === MqttClient.Disconnected
       }

Al camp de text d'usuari, poseu el nom d'usuari per defecte:

       TextField {
           id: userField
           Layout.fillWidth: true
           text: "rubi"
           placeholderText: "<Usuari>"
           enabled: client.state === MqttClient.Disconnected
       }

Afegiu l'etiqueta de contrasenya:

       Label {
           text: "Contrasenya:"
           enabled: client.state === MqttClient.Disconnected
       }

Al camp de text de la contrasenya, poseu la contrasenya per defecte:

       TextField {
           id: pwdField
           echoMode: TextInput.Password
           Layout.fillWidth: true
           text: "iotRubi"
           placeholderText: "<Contrasenya>"
           passwordCharacter: "x"
           enabled: client.state === MqttClient.Disconnected
       }

Proveu les dues aplicacions a l'escriptori i al dispositiu Android.

Proveu un altre broker que també faci servir usuari i contrasenya.

Proveu si funciona a un broker que no faci servir usuari i contrasenya

20210121 (QML, 3h presencial)

Un tutorial curt de QML

Un tutorial amb tres exemples de codi QML (Els tres codis del tutorial curt).

Seguint amb el tema dels estats, baixeu-vos i executeu l'exemple qmlState01 d'estats en QML i l'exemple qmlState02 d'estats en QML (Basats en la documentació sobre estats de les Qt).

Bucles de vinculació

Què són els bucles de vinculació (binding loops)?

Connexió entre el frontal QML i el rerefons en C++

Exemple de connexió entre el frontal QML i el rerefons en C++ (El codi de connexió és basat en QML - Tutorial 036. Working with Signals and Slots in QML).

Aquí teniu alguns Vídeos QML que guien pas a pas la connexió entre el frontal i el rerefons.

Comenceu l'exercici 6 de la col·lecció Exercicis de QML

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:

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

Aneu a la carpeta que ens retorna l'ordre anterior:

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

I feu el procés d'instal·lació:

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/

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

Torneu al terminal d'abans i feu:

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

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.

En cas de no poder actualitzar l'editor de QML

Si us surt el missatge Qt Quick emulator layer crash i no s'actualitza el visor QML, però podeu editar l'arxiu en mode text, haureu d'anar al menú:

Tools / Options... / Qt Quick / Qt Quick Designer

i canvieu la selecció Use fallback QML emulation layer per Use QML emulation layer that is built with the selected Qt, deixant buit el Top level build path:. Quan torneu a editar des de l'editor QML es farà una recompilació del visor (sigueu pacients i deixeu acabar tot el procés).

20210118 (QML, 1h presencial)

Seguim amb QML

El darrer dia es va recomanar veure els tres primers capítols dels vídeos de KDAB sobre QML.

Exercicis de QML

Alguns codis explicats avui

Codis QML dels vídeos de KDAB

qml_02_kdab

Ancoratge

anchors.qml:

anchors.qml

anchors2.qml:

anchors2.qml

anchors-centerin-parent-keyword.qml:

anchors-centerin-parent-keyword.qml

anchors-expanding.qml:

anchors-expanding.qml

anchors-fill.qml:

anchors-fill.qml

Bucles de vinculació

Bucles de vinculació (binding loop)

Exemple de bucle de vinculació:

import QtQuick 2.0

Rectangle {
   color: "black"
   width: child.width
   height: child.width

   Image {
       id: child
       source : "../images/vertical-gradient.png"
       anchors.fill: parent
       anchors.margins: 5
   }
}

Una solució per a evitar bucles de vinculació:

import QtQuick 2.0

Rectangle {
   color: "black"
   implicitWidth: child.implicitWidth
   implicitHeight: child.implicitWidth

   Image {
       id: child
       source : "../images/vertical-gradient.png"
       anchors.fill: parent
       anchors.margins: 5
   }
}

20210115 (QML, 1h síncrona)

Connectem Qt/QML a Android

  • Obriu l'Android Studio i virtualitzeu un telèfon mòbil d'arquitectura x86 (molt més ràpid que virtualitzar un ARM):
jordi@ecat-XPS13:/opt/android-studio/bin$ ./studio.sh
  • Feu un nou projecte Application (Qt Quick) / Qt Quick Application - Swipe.
  • Anomeneu i deseu el projecte. Per exemple amb el nom prMobil00
  • Seleccioneu els kits d'Android i d'escriptori, seleccionant l'opció release. Per exemple: Android Qt 6.0.0 Clang x86 i Desktop Qt 6.0.0 GCC 64bit
  • Proveu que us funciona amb la versió d'escriptori
  • Proveu que us funciona amb la versió d'Android virtualitzat. Quan ho executeu heu de seleccionar a quin dispositiu virtual ho voleu fer córrer.

Seguim amb QML

Es recomana veure els tres primers capítols dels vídeos de KDAB sobre QML.

Exercicis de QML

Alguns codis explicats avui

Codis QML dels vídeos de KDAB

20210112 (QML, 3h presencial)

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

Exemples treballats avui

Exercicis QML:

  • ex1) Feu un programa en QML que al principi hi surti un quadrat vermell centrat. Al prémer la tecla B hi sortirà de color blau, al prémer la tecla G hi sortirà de color verd i al prémer la tecla R torna a ser vermell.
  • ex2) Feu un programa en QML a on hi aparegui centrat, horitzontalment i vertical, ben gros i en negreta el nom Escola del Clot. Al prémer la tecla + la lletra es farà més grossa. I al prémer la tecla - la lletra es farà més petita.
  • ex3) Feu un programa que hi surti el text, centrat a la finestra, "Comptador: 0" de color vermell. Al prémer el botó + incrementarà el valor del comptador, i al prémer el botó '-' es decrementarà. Al prémer la tecla N el text serà de color negre i al prémer V tornarà a ser de color vermell.

20210111 (QML, 1h síncrona)

A partir dels exemples en QML d'en Jan Bodnar fem servir el Qt Creator per a executar-los.

Exemples treballats avui

20201221 (IoT, 1h síncrona)

S'acaba el termini de lliurament de pràctiques desenvolupades fins les festes de Nadal.

Les dues darreres:

  • Control de la placa IoT-02 mitjançant Telegram
  • Publicació de dades del sensor BM280 de la placa IoT-02 a Mastodon

20201218 (IoT, 1h síncrona)

Codis d'avui i material d'ajuda per a fer l'exercici

  • Mastodon, una alternativa lliure a Twitter

No totes les instàncies de Mastodon faciliten la instal·lació de bots. Per a fer els primers passos us recomano aquesta instància pensada per a hostatjar bots de Mastodon (tal i com es va demanar el dia anterior, heu d'haver demanat les credencials a la instància de Mastodon botsin.space amb molta antelació. Si ho sol·liciteu avui mateix no podreu seguir la classe).


Exemple de bot de Mastodon per a fer lectures de sensors cada hora.

Getting credentials for the Mastodon API with Mastodon.py, step by step

  • Exercici:

Publiqueu la temperatura, humitat relativa i pressió atmosfèrica llegides per la vostra placa IoT-02 i les publiqueu a Mastodon mitjançant NodeRED.

Feu un informe de com ho heu programat i captures de llur funcionament.

20201215 (IoT, 3h presencial)

Alguns codis d'avui

Autenticació d'accés a NodeRED

Securing NodeRED

Generació de la contrasenya d'accés en mode hash des de la carpeta d'execució del NodeRED:

node node_modules/node-red/red.js admin hash-pw

En aquest exemple fem servir aquesta contrasenya en mode hash:

$2a$08$PbYFpiQSnoVaOfD1daCelU2Kvcg19KElO1DbVtE8GAJXacD6ABq

Edició de settings.js:

toni@vps-10d8edcd:~/bin/nodered$ nano ./node_modules/node-red/settings.js
   // Securing Node-RED
   // -----------------
   // To password protect the Node-RED editor and admin API, the following
   // property can be used. See http://nodered.org/docs/security.html for details.
   adminAuth: {
       type: "credentials",
       users: [{
           username: "toni",
           password: "$2a$08$PbYFpiQSnoVaOfD1daCelU2Kvcg19KElO1DbVtE8GAJXacD6ABq",
           permissions: "*"
       }]
   },

Un cop fets el canvis cal reiniciar el NodeRED.

Telegram

Bot de Telegram

  • Creació de bots amb BotFather
  • Instal·lació de nodes de Telegram a NodeRED (afegiu els nodes node-red-contrib-telegrambot)
  • Interacció amb un usuari de Telegram
  • Interacció amb un grup de Telegram

Material per a fer el bot


Flux de prova per al bot de Telegram

Deures pel proper dia

Feu-vos membres d'aquesta instància de Mastodon: botsin.space

Feu-ho amb prou antelació, és possible que trigui més de tres hores a donar-vos accés.

20201211 (Qt i IoT, 1h síncrona)

Notes del 1r trimestre

Comentarem dubtes de la darrera pràctica.

Es demana de dur instal·lat Telegram al telèfon mòbil per a la propera classe del 14 de desembre de 2020.

20201204 (Qt i IoT, 1h síncrona)

Notes provisionals del 1r trimestre

Desenvolupem com a pràctica puntuable la resolució dels exercicis 5, 6 i 7 (Trameteu per separat P5, P6 i P7)

20201201 Examen 1r trimestre

Enunciat de l'examen del 1r trimestre

Notes provisionals de les pràctiques a 1 de desembre de 2020

20201130 (dubtes i Qt, 1h síncrona)

Codis d'avui (Senyals, osques, agrupacions i connexions)

20201127 (Qt i IoT, 1h síncrona)

Revisem l'exercici proposat el darrer dia.

20201124 (IoT i Qt) (3h, presencial)

Control de la placa IoT-02 mitjançant MQTT emprant Qt i missatges JSON

Codis d'interacció amb la placa IoT-02 emprant C++ per a Qt, fent servir JSON i MQTT.

Codi de flux de NodeRED per a controlar els leds de la placa IoT-02 mitjançant un JSON

Flux de NodeRED emprant MQTT i JSON bidireccional

Exercici amb la placa IoT-02 emprant C++ per a Qt, fent servir JSON i MQTT

Desenvolupeu el projecte 15_mqtt_IoT02_03, basant-vos en el darrer codi de control de la placa IoT-02 en C++ per a Qt, que visualitzi en una barra de progrés el nivell de llum rebut per la LDR.

20201123 (Qt i IoT, 1h síncrona)

Control de la placa IoT-02 mitjançant MQTT emprant Qt i missatges JSON

Codis d'interacció amb la placa IoT-02 emprant C++ per a Qt, fent servir JSON i MQTT.

20201120 (Qt i IoT, 1h síncrona)

Al dia d'avui us he posat el codi per a poder visualitzar el color dels leds.

Fent servir MQTT, feu una aplicació emprant Qt que ensenyi l'estat dels botons i dels leds de la placa IoT-02

Codis d'avui

20201117 (Qt i IoT, 3h presencial)

Biblioteca Arduino_JSON per l'IDE d'Arduino

Codis d'avui

Dades encapsulades en JSON al NodeRED i a la placa IoT-02.

Exercici

Desenvolupeu una aplicació GUI feta amb Qt que mitjançant el protocol MQTT:

  • Controli els quatre leds mitjançant botons seleccionadors (check box)
  • Indiqui l'estat dels tres botons mitjançant etiqueta (premut / no premut)
  • Indiqui l'estat dels tres botons mitjançant etiqueta gràfica (color viu / color fosc)
  • Una barra de progrés indiqui el nivell de llum
  • Trameti missatges a la pantalla OLED (tres botons seleccionadors de mida del text)

20201116 (Qt, 1h síncrona)

Codis d'avui

Exercici

Modifiqueu el codi de MQTT's simpleclient per a admetre usuari i contrasenya (podeu fer servir el broker formacio.things.cat amb usuari ecat i contrasenya clotClot).

Captura del GUI que es demana

Al mètode void MainWindow::on_buttonConnect_clicked() haureu d'afegir les crides als mètodes setUsername i setPassword de la classe QtMqtt (aquestes crides s'hauran de fer quan els camps d'usuari i contrasenya no estiguin buits):

       ui->lineEditUsuari->setEnabled(false);
       ui->lineEditContrasenya->setEnabled(false);
       m_client->setUsername(ui->lineEditUsuari->text());
       m_client->setPassword(ui->lineEditContrasenya->text());
       m_client->connectToHost();

Màquina virtual per a VMware amb QtMqtt instal·lat

Màquina virtual GNU/Linux Debian 9 amb el paquet QtMqtt instal·lat per a VMware Workstation Player. Usuari / contrasenya: iot / iot

20201113 (dubtes i Qt, 1h síncrona)

Codis d'avui

qtmqtt

Per a instal·lar qtmqtt

git clone git://code.qt.io/qt/qtmqtt.git
cd qtmqtt
git checkout 5.14
mkdir build
cd build
qmake -r ..
make
sudo make install

(Abans de fer el qmake, feu un git checkout 5.14 -canvieu el 5.14 per la vostra versió de Qt instal·lada al vostre sistema-)


Heu de cercar la ruta de qmake en cas de que no hi sigui al vostre PATH

/home/jordi/bin/Qt/5.14.1/gcc_64/bin/qmake -r ..

Canvieu jordi pel vostre usuari i 5.14.1 per la vostra versió de Qt.

A Finestrots

Segons ens informa el Sr. Adrià Vega, les eines make i make install a Windows amb MinGW són:

MinGW32-make 
MinGW32-make install

20201110 (IoT i Qt) (3h presencials)

Microprogramari de prova MQTT per a la placa IoT-02. Pugeu-la fent servir l'IDE d'Arduino.

Eina per saber la MAC remotament (Codi font d'aquesta pàgina web)

Codis d'avui

Teoria sobre TCP i UDP

20201109 (IoT i Qt) (1h en línia)

Snap! (També el podeu executar des de la vostra pròpia màquina. És important fer servir HTTP i no HTTPS)

Baixeu-vos localment aquesta biblioteca MQTT

Broker de prova de test.mosquitto.org

Flux de prova del NodeRED amb el broker test.mosquitto.org

Flux de NodeRED amb el broker formacio.things.cat i codi d'Snap! de prova del broker formacio.things.cat

20201106 (IoT i Qt) (2h)

Codis d'avui

20201105 (IoT i Qt) (3h)

Codis d'avui

Node executat per terminal per un port diferent a l'estàndard

Versió recomanada de Node per fer córrer NodeRED

Instal·lació de node v12 a Debian 10

NodeRED autònom

20201102 (IoT i Qt) (1h)

Codis d'avui

20201030 (IoT i Qt) (2h)

Codis d'avui

20201029 (IoT i Qt) (3h)

A proposta dels estudiants, que han començat a fer una prova PCR a 2/4 de 2, excepcionalment avui es començarà a 3/4 de 4 (15.45).

Exercici 0) Provar les Qt comunicant-se amb la placa IoT-02 amb UDP, unidireccionalment des de l'ordinador a la placa.

1r exercici) A partir del codi del darrer dia, canvieu el port del pseudoservidor UDP de manera dinàmica. Heu d'afegir una línia d'edició (lineEdit) i que faci la connexió (bind) automàtica. Si es pot fer sortirà un text (label) de color verd indicant-ho, en cas contrari sortirà el text de color vermell. (No cal que ho feu a casa. Ho farem el dia 29 d'octubre).

2n exercici) Trameteu per correu electrònic la pràctica de les Qt connectant-se a la placa IoT-02 mitjançant UDP, bidireccionalment (No cal que ho feu a casa. Ho farem el dia 29 d'octubre).

Alguns enllaços útils

Ports ben coneguts (fins al port 1023 un usuari normal no hi té accés per defecte. A partir del 1024 qualsevol usuari el pot utilitzar).

Codis d'avui

20201026 (IoT i Qt) (1h)

Codis d'avui de Qt

20201023 (IoT i Qt) (2h)

Codis d'avui de Qt

20201022 (IoT i Qt) (3h)

Codis d'avui de Qt

QT5 TUTORIAL QUDPSOCKET - 2020

Codis d'avui d'IoT

20201019 (lliurament Ex01 v2)

Codis d'avui

  • Aquesta segona versió de la pràctica ha de fer la pregunta després de rebre la resposta. Exemple:

Pregunto cada segon L -> espero a rebre la resposta d'L.

Un cop rebo la resposta d'L, trameto la pregunta i.

Un cop rebo la resposta d'i, trameto la pregunta i34.

Un cop rebo la resposta d'i34, trameto la pregunta i35.

  • Documenteu com configureu MQTT Dash (o similar) per a connectar-ho a NodeRED fent servir un broker MQTT públic.

202010116 Qt (2h)

Codis d'avui

202010115 (IoT i Qt) (3h)

20201012 (lliurament Ex01)

Finalització del termini de lliurament de l' Exercici 01. Recordeu les condicions del planteig i lliurament de l'Exercici 1

20201009 Qt/QML (1h)

Acabar l'explicació del dia anterior. 1) Revisió de conceptes bàsics de programació orientada a objectes en C++ 2) Distribució de ginys emprant Qt (editor XML gràfic) 3) Paradigma senyal-osca

20201009 IoT (1h)

Acabar l'explicació de tot el necessari per a fer l' Exercici 01.

20201008 Qt/QML (1,5h)

Conceptes bàsics sobre classes i objectes

Codis de terminal. Classes: Constructors, destructors, atributs i mètodes (públics, protegits i privats).

Distribució de ginys

Redimensió de la distribució i pistes (tips)

Canvi de la forma del cursor en funció de la zona a la distribució

Paradigma senyal / osca

Explicació del paradigma senyal / osca (signal / slot)

Interfície gràfica d'usuari emprants senyals i osques

20201008 IoT (1,5h)

UDP a la placa IoT-02

Connexió wifi a la placa IoT-02 (Codi que mostra el canal de la SSID detectada).

Microprogramari (firmware) per visualitzar les xarxes wifi visibles des de la placa IoT-02. Aprofitem aquest codi per a explicar la introducció d'arxius .cpp i .h al mateix directori que l'arxiu .ino

Microprogramari per treballar amb UDP a la placa IoT-02

Planteig de l'Exercici 01

Visualització de ginys al tauler de control (dashboard) al NodeRED. Connexió UDP entre la placa IoT-02 i el NodeRED.

Enllaç a l'enunciat de l' Exercici 01.

L'exercici s'ha de fer a classe de manera individual (es proposa com a data de lliurament per correu electrònic el dia 12 d'octubre de 2020). Heu de fer el report en pdf amb el títol dam_iot_pr01_cognom_nom.pdf (essent cognom el vostre cognom i nom el vostre nom. En cas de compartir nom i cognom amb un company canvieu cognom per cognom1_cognom2, essent cognom1 el primer cognom i cognom2 el segon cognom) i el tema del correu ha de ser dam_iot_pr01_cognom_nom. És molt important respectar el format dels caràcters, majúscules i minúscules per a poder automatitzar correctament la recepció dels vostres reports.

20201005 IoT (1h)

Executeu a la carpeta a on heu descomprimit el NodeRed autònom

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

Què és TCP i UDP?

Codis de NodeRED (UDP in i UDP out)

Introducció a UDP fent servir NodeRED i la placa IoT-02

20201002 IoT (2h)

La placa IoT-02 al GitHub

20201001 IoT (3h)

A aquest classe cal dur un cable microusb B i un cable miniusb o un cable miniusb i una font d'alimentació amb microusb B

Enllaç a un cable miniusb i microusb B (els dos)

Enllaça a una font d'alimentació de %V / 3A amb connector microusb

Presa de contacte amb la placa IoT-02.

20200928 IoT (1h)

NodeRed autònom i d'altres codis

20200425 Qt/QML (2h)

Codis de presa de contacte amb el Qt Creator

20200922 Qt/QML (2h)

Instal·lador de Qt

Codis de l'11 de maig de 2020

Documentació

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

Planificació

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