Přeskočit na hlavní obsah

Experiment

Experiment 1 - Monitor kvality vnitřního klimatu​

Časová dotace: 15 min.

Popis experimentu​

Ze stavebnice HARDWARIO TOWER si postavíme monitor kvality vnitřního klimatu. Bude měřit koncentraci oxidu uhličitého (CO2) a těkavých organických látek (VOC), teplotu a relativní vlhkost. S počítačem bude komunikovat bezdrátově přes Radio Dongle zasunutý do USB portu. Naměřená data zobrazíme v aplikaci HARDWARIO Playground, přesněji na dashboardu prostředí Node-RED, které je v ní vestavěné.

V rámci experimentu pochopíme:

  • že teplý vzduch stoupá a proč
  • co je relativní vlhkost, rosný bod a TH index
  • že běžná koncentrace CO2 venku je 400 ppm, tedy 0,04 %, že v nevětrané místnosti stoupá a že vyšší koncentrace snižuje naši výkonnost
  • že CO2 je těžší než vzduch
  • že VOC jsou těkavé organické látky, jejich koncentrace se měří v ppb a přijatelná koncentrace TVOC (celkových VOC) je 500 ppb (0,00005 %)

Kroky experimentu​

  1. Postavení monitorovací jednotky
  2. Instalace aplikace Playground
  3. Připojení jednotky k Playgroundu
  4. Nastavení funkcí monitoringu a zobrazení dat
  5. Měření teploty, vlhkosti, CO2 a VOC

Postavení monitorovací jednotky

Sestavená monitorovací jednotka v černém držáku, LCD Module zobrazuje naměřenou teplotu a vlhkost

Moduly v sestavě:

  • Core Module
  • Battery Module
  • CO2 Module
  • LCD Module
  • Barometer Tag
  • Humidity Tag
  • VOC-LP Tag

Postavte si jednotku podle videonávodu

Instalace aplikace Playground

Stáhněte si aplikaci HARDWARIO Playground a nainstalujte ji do počítače.

Připojení jednotky do Playgroundu​

  • Na záložce Firmware nahrajte do modulu Core Module firmware twr-radio-air-quality-monitor (návod)
  • Zasuňte Radio Dongle do USB portu počítače
  • Otevřete aplikaci Playground a přejděte na záložku Devices
  • Vyberte svůj Radio Dongle v nabídce USB zařízení a klikněte na Connect
  • Klikněte na Start pairing
  • Vložte do jednotky baterie. Po spárování se jednotka zobrazí jako air-quality-monitor:0.

Nastavení funkcí monitoringu a zobrazení dat

  • Přepněte se na záložku Functions
  • Importujte tento flow:
[{"id":"2c41a2bd.aa36ae","type":"tab","label":"IAQ Monitor","disabled":false,"info":""},{"id":"8203aaee.220c58","type":"mqtt in","z":"2c41a2bd.aa36ae","name":"","topic":"node/air-quality-monitor:0/battery/-/voltage","qos":"2","datatype":"auto","broker":"67fc6ccd.e460d4","nl":false,"rap":false,"inputs":0,"x":330,"y":80,"wires":[["c2882634.6eba68"]]},{"id":"302aef24.2e89a","type":"mqtt in","z":"2c41a2bd.aa36ae","name":"","topic":"node/air-quality-monitor:0/co2-meter/-/concentration","qos":"2","datatype":"auto","broker":"67fc6ccd.e460d4","nl":false,"rap":false,"inputs":0,"x":390,"y":180,"wires":[["4d2b292b.1832b8"]]},{"id":"c20126e0.8e7338","type":"mqtt in","z":"2c41a2bd.aa36ae","name":"","topic":"node/air-quality-monitor:0/thermometer/0:1/temperature","qos":"2","datatype":"auto","broker":"67fc6ccd.e460d4","nl":false,"rap":false,"inputs":0,"x":410,"y":280,"wires":[["38569570.b364ca"]]},{"id":"1a91cdd2.5a6892","type":"mqtt in","z":"2c41a2bd.aa36ae","name":"","topic":"node/air-quality-monitor:0/hygrometer/0:4/relative-humidity","qos":"2","datatype":"auto","broker":"67fc6ccd.e460d4","nl":false,"rap":false,"inputs":0,"x":320,"y":360,"wires":[["52201a4f.691954"]]},{"id":"c2882634.6eba68","type":"ui_gauge","z":"2c41a2bd.aa36ae","name":"","group":"57ff470b.93fdf8","order":6,"width":"3","height":"3","gtype":"gage","title":"Voltage","label":"V","format":"{{value}}","min":0,"max":10,"colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":710,"y":80,"wires":[]},{"id":"4d2b292b.1832b8","type":"ui_gauge","z":"2c41a2bd.aa36ae","name":"","group":"57ff470b.93fdf8","order":1,"width":"3","height":"3","gtype":"gage","title":"CO2 concentration","label":"ppm","format":"{{value}}","min":0,"max":"3000","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":710,"y":180,"wires":[]},{"id":"38569570.b364ca","type":"ui_gauge","z":"2c41a2bd.aa36ae","name":"","group":"57ff470b.93fdf8","order":2,"width":"3","height":"3","gtype":"gage","title":"Temperature","label":"°C","format":"{{value}}","min":0,"max":"40","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":710,"y":280,"wires":[]},{"id":"52201a4f.691954","type":"ui_gauge","z":"2c41a2bd.aa36ae","name":"","group":"57ff470b.93fdf8","order":3,"width":"3","height":"3","gtype":"gage","title":"Humidity","label":"%","format":"{{value}}","min":0,"max":"100","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":720,"y":360,"wires":[]},{"id":"9d36bbee.e2cd08","type":"mqtt in","z":"2c41a2bd.aa36ae","name":"","topic":"node/air-quality-monitor:0/voc-lp-sensor/0:0/tvoc","qos":"2","datatype":"auto","broker":"46ddad92.b27704","nl":false,"rap":false,"inputs":0,"x":360,"y":480,"wires":[["58b50f2f.eedd3"]]},{"id":"58b50f2f.eedd3","type":"ui_gauge","z":"2c41a2bd.aa36ae","name":"","group":"57ff470b.93fdf8","order":0,"width":0,"height":0,"gtype":"gage","title":"TVOC","label":"units","format":"{{value}} ppb","min":0,"max":"200","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":710,"y":480,"wires":[]},{"id":"67fc6ccd.e460d4","type":"mqtt-broker","broker":"127.0.0.1","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"57ff470b.93fdf8","type":"ui_group","name":"Default","tab":"11207769.c31889","order":1,"disp":true,"width":"6","collapse":false},{"id":"46ddad92.b27704","type":"mqtt-broker","name":"","broker":"127.0.0.1","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"11207769.c31889","type":"ui_tab","name":"Home","icon":"dashboard"}]
  • Změny potvrďte tlačítkem Deploy
  • Přepněte se na záložku Messages. Pokud vše proběhlo správně, uvidíte příchozí zprávy z jednotky.
  • Přepněte se na záložku Dashboard. Pokud vše proběhlo správně, uvidíte budíky s aktuálně naměřenou teplotou, vlhkostí, CO2 a VOC.

Pozn.:

  1. Chcete-li odeslání dat urychlit, dýchněte na jednotku.
  2. Jednotka měří teplotu a vlhkost každé 2 sekundy, VOC každých 5 sekund a CO2 každou minutu.
  3. Jednotka odesílá data každých 15 minut.
  4. Pokud se od posledního odeslání změní teplota alespoň o 0,2 °C, relativní vlhkost alespoň o 5 %, CO2 alespoň o 50 ppm nebo TVOC alespoň o 5 ppb, jednotka odešle data ihned.

Měření teploty, vlhkosti, CO2 a VOC​

  • Zasoutěžte si v týmech, kdo dechem vyhřeje senzor na nejvyšší teplotu
    Otázka pro tým s nejnižší teplotou
    Proč teplý vzduch stoupá?

  • Porovnejte mezi týmy naměřenou vlhkost
    Otázka pro všechny týmy
    Naměřená vlhkost je relativní. Vysvětlete pojmy relativní vlhkost a rosný bod.

  • Porovnejte mezi týmy naměřené koncentrace CO2 a VOC
    Otázka pro všechny týmy
    Čím vysvětlíte rozdíly v naměřených hodnotách?

Experiment 2 - Integrace monitoru kvality ovzduší s Tabulkami Google​

Časová dotace: 15 min.

Popis experimentu​

Na experiment 1 může navázat propojení s Tabulkami Google. Naměřená data z monitoru kvality vnitřního ovzduší se budou ukládat do tabulky, ze které pak vytvoříme přehledné grafy.

V rámci experimentu pochopíme:

  • jak propojit Tabulky Google s aplikací Playground
  • jak vytvořit přehledné grafy zobrazující závislost naměřených hodnot na rozvrhu hodin a počtu žáků ve třídě

Kroky experimentu​

  • Založte si účet Google
  • Vytvořte novou tabulku Google, např. přes sheets.new
  • Přejmenujte aktuální list z List1 na Data: na tento název budeme v kódu odkazovat
  • Do prvního řádku můžete také napsat názvy sloupců. Data budou přicházet v tomto pořadí: CO₂, Teplota, Vlhkost, TVOC
  • V nabídce Rozšíření vyberte Apps Script
  • Vložte tento skript a uložte ho klávesami Ctrl + S
function doPost(e) {
var sheet;
var rawData = e.parameter.val; // Data arrives in format "CO2;temp;hum;TVOC"
sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data");

var cuttedData = rawData.split(";"); //This cuts arrived data into separated values
sheet.appendRow([cuttedData[0], cuttedData[1], cuttedData[2], cuttedData[3], new Date()]); //Data arrives in this order: "CO2, Temperature, Humidity, TVOC"
}
  • Pojmenujte projekt podle svého týmu
  • Vpravo nahoře klikněte na tlačítko pro nasazení a vytvořte nové nasazení. Jako typ nasazení zvolte webovou aplikaci.
  • Aplikaci nechte spouštět pod svým účtem a přístup k ní povolte komukoli, i bez přihlášení. Pak nasazení potvrďte.
  • Udělte projektu přístup ke svému účtu Google. Pokud se zobrazí upozornění, že aplikace není ověřená, otevřete rozšířené možnosti, pokračujte na svůj projekt (označený jako nebezpečný) a přístup povolte.
  • Zkopírujte si zobrazenou URL adresu webové aplikace (Ctrl + C), budete ji ještě potřebovat. Pak dialog zavřete.
  • V aplikaci Playground přejděte na záložku Functions a importujte tento flow.
[{"id":"1fa190de.6bf34f","type":"mqtt in","z":"2c41a2bd.aa36ae","name":"","topic":"node/air-quality-monitor:0/co2-meter/-/concentration","qos":"2","datatype":"auto","broker":"d0869e74.d39d3","x":230,"y":380,"wires":[["1058eb8d.695774"]]},{"id":"fdb48a87.f1bde8","type":"mqtt in","z":"2c41a2bd.aa36ae","name":"","topic":"node/air-quality-monitor:0/thermometer/0:1/temperature","qos":"2","datatype":"auto","broker":"d0869e74.d39d3","x":240,"y":420,"wires":[["d2a76868.4a1a88"]]},{"id":"ad8c529f.84e79","type":"mqtt in","z":"2c41a2bd.aa36ae","name":"","topic":"node/air-quality-monitor:0/hygrometer/0:4/relative-humidity","qos":"2","broker":"d0869e74.d39d3","x":250,"y":460,"wires":[["92c2dca0.e7b93"]]},{"id":"f011b140.62712","type":"mqtt in","z":"2c41a2bd.aa36ae","name":"","topic":"node/air-quality-monitor:0/voc-lp-sensor/0:0/tvoc","qos":"2","datatype":"auto","broker":"a1e2fc41.c77ce","x":210,"y":500,"wires":[["5d4d663a.f49858"]]},{"id":"f6f1904c.f411e","type":"function","z":"2c41a2bd.aa36ae","name":"Data Parser","func":"msg.payload = flow.get(\"co2\") + \";\" + flow.get(\"temp\") + \";\" +\n flow.get(\"humidity\") + \";\" + flow.get(\"tvoc\");\nmsg.payload = { val: msg.payload,\n type: 'rawData'};\n msg.headers = {'content-type':'application/x-www-form-urlencoded'};\nreturn msg;","outputs":1,"noerr":0,"x":790,"y":440,"wires":[["992d7e0f.3141e"]]},{"id":"1058eb8d.695774","type":"change","z":"2c41a2bd.aa36ae","name":"","rules":[{"t":"set","p":"co2","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":530,"y":380,"wires":[["f6f1904c.f411e"]]},{"id":"d2a76868.4a1a88","type":"change","z":"2c41a2bd.aa36ae","name":"","rules":[{"t":"set","p":"temp","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":530,"y":420,"wires":[["f6f1904c.f411e"]]},{"id":"92c2dca0.e7b93","type":"change","z":"2c41a2bd.aa36ae","name":"","rules":[{"t":"set","p":"humidity","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":540,"y":460,"wires":[["f6f1904c.f411e"]]},{"id":"5d4d663a.f49858","type":"change","z":"2c41a2bd.aa36ae","name":"","rules":[{"t":"set","p":"tvoc","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":530,"y":500,"wires":[["f6f1904c.f411e"]]},{"id":"2e286fc4.213ca","type":"inject","z":"2c41a2bd.aa36ae","name":"","topic":"","payload":"-1","payloadType":"num","repeat":"","crontab":"","once":true,"onceDelay":0.1,"x":130,"y":300,"wires":[["980aadd7.47307","2e69ab31.67fa74","a6a27021.dbb98","7dd059ea.b9bd08"]]},{"id":"980aadd7.47307","type":"change","z":"2c41a2bd.aa36ae","name":"","rules":[{"t":"set","p":"co2","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":390,"y":200,"wires":[[]]},{"id":"2e69ab31.67fa74","type":"change","z":"2c41a2bd.aa36ae","name":"","rules":[{"t":"set","p":"temp","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":390,"y":240,"wires":[[]]},{"id":"a6a27021.dbb98","type":"change","z":"2c41a2bd.aa36ae","name":"","rules":[{"t":"set","p":"humidity","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":400,"y":280,"wires":[[]]},{"id":"7dd059ea.b9bd08","type":"change","z":"2c41a2bd.aa36ae","name":"","rules":[{"t":"set","p":"tvoc","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":390,"y":320,"wires":[[]]},{"id":"992d7e0f.3141e","type":"http request","z":"2c41a2bd.aa36ae","name":"","method":"POST","ret":"txt","paytoqs":false,"url":"","tls":"","persist":false,"proxy":"","authType":"","x":910,"y":280,"wires":[[]]},{"id":"d0869e74.d39d3","type":"mqtt-broker","z":"","broker":"127.0.0.1","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"a1e2fc41.c77ce","type":"mqtt-broker","z":"","name":"","broker":"127.0.0.1","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]
  • Ve flow dvakrát klikněte na uzel http request, do pole URL vložte adresu svého projektu, připojte k ní následující úryvek kódu a klikněte na Done
  • Horní část flow s uzlem -1 jen nastavuje výchozí hodnoty pro případ, že některé senzory ještě neposlaly žádná data.
?val={{{payload}}}
  • Změny potvrďte tlačítkem Deploy
  • Otevřete svou tabulku Google: do jednotlivých sloupců by se měly zapisovat naměřené hodnoty.
  • Pokud v některém sloupci vidíte hodnotu -1, znamená to, že daný senzor ještě neodeslal žádná data.
  • Na konci měření doplňte do tabulky rozvrh hodin a počet žáků a výsledky pak představte ostatním.