Kdo má největší odstředivou sílu? Vytvoř si IoT káču a změř to

Obsah
Kdo má největší odstředivou sílu? Vytvoř si IoT káču a změř to

Úvod

Pamatuješ si ještě káču? Asi jsi měl dřevěnou nebo plastovou, ale vsadíme se, že nebyla chytrá. Teď si ji konečně vyrobíš – zaznamená tvou odstředivou sílu. Poměř pak s kámoši, kdo z vás je odstředivě nejsilnější! 💪

V tomhle projektu se naučíš vytvořit změřit rychlé točení krabičky. 👈

Budeš potřebovat jen krabičku s tlačítkem a USB dongle. Proto si vystačíš se základní HARDWARIO sadou – Starter Kitem.

Stáhni si nový firmware

  1. Pokud to ještě nemáš, Starter Kit sestav.
  2. Na Core Module nahraj nový firmware, a to bcf radio spinning game (najdeš ho mezi ostatním firmwarem v Playgroundu). Díky tomuhle firmwaru bude krabička citlivě vnímat rotace. 👌

Náš tip: Nevíš, jak si firmware stáhnout nebo co to je? Zjistíš to tady.

  1. Core Module spáruj s USB Donglem. Hned po spárování uvidíš, že tvůj Core Module změnil Alias na rotation-g-meter.
HARDWARIO devices list

Stavěj v Node-RED

  1. V Playgroundu klikni na záložku Functions, kde je programovací plocha Node-RED. 🤖
  2. Začni jako vždycky: na plochu nejdřív umísti MQTT node ze sekce Input.

Dvakrát na něj klikni a do řádku zkopíruj Topic, se kterým krabička změří odstředivou sílu:

node/rotation-g-meter:0/rotation-g
MQTT topic

Potvrď tlačítkem Done.

  1. Překvápko. 😲 Pod první MQTT nod umísti ještě druhý MQTT node ze sekce Input. Tentokrát do jeho nastavení ulož jiný Topic, se kterým krabička změří čas rotace:
node/rotation-g-meter:0/rotation-time
MQTT input node
  1. K oběma nodům umísti po jednom nodu pro javascript. Najdeš je v sekci Function pod jménem Function (originální 🤡).
javascript fuction node
  1. Na horní node Function dvakrát klikni a do velkého políčka vlož tenhle kód, který bude zapisovat rekordní odstředivou sílu. 💪
var record = flow.get("record") || flow.set("record", 0.0);
var lastSpin = parseFloat(msg.payload);

if(lastSpin > flow.get("record"))
{
    flow.set("record", lastSpin);
    return msg;
}

V řádku Name nod pojmenuj jako Uložení rekordu.

javascript function Node-RED

Potvrď tlačítkem Done.

  1. Do spodního nodu Function vlož kód, který bude zapisovat rekordní čas točení. ⏰
var record = flow.get("timeRecord") || flow.set("timeRecord", 0.0);
var lastSpinTime = parseFloat(msg.payload);

if(lastSpinTime > flow.get("timeRecord"))
{
    flow.set("timeRecord", lastSpinTime);
    return msg;
}

V řádku Name nod pojmenuj jako Uložení rekordu.

Javascript Funciton HARDWARIO Kit

Potvrď tlačítkem Done.

  1. Pod horní Function nod vlož textový node ze sekce Dashboard. Můžeš ho vložit i jinam, ale pro přehlednost bude lepší, když budou pod sebou.
Text Node

V nastavení ho pojmenuj jako Poslední točení. Takhle se ti bude zobrazovat hodnota, kterou krabička právě naměřila.

Edit text Node
  1. Pod tenhle nod polož ještě jeden, díky kterému se budou hodnoty zapisovat do grafu. 📈 Najdeš ho jako node Chart v sekci Dashboard.
Chart node

Pojmenuj ho v řádku Label jako Historie. Do řádku X-asis Label nastav automatic, to znamená, že se jednotka přidá automaticky.

settings of chart node in Node-RED
  1. Pod druhý javascript vlož textový node Text ze sekce Dashboard.
Dashboard text node

V něm pojmenuješ, jak se bude zobrazovat délka nejnovější rotace: Doba posledního točení.

Set text node in dashboard
  1. Za obě úrovně umísti po jednom textovém nodu Text ze sekce Dashboard. Ty ovlivní, jak v grafu uvidíš zapsaný rekordní čas. Nastav v nich proto postupně Label Rekord a Rekordní čas.
HARDWARIO playground text nodes
  1. A pak to všechno propoj podle obrázku. Na ploše ti tak vyjdou dvě samostatné flow. Nezapomeň nakonec zmáčknout tlačítko Deploy, kterým to celé zprovozníš. 🚨
Deploy Node-RED flow

Roztoč to!

  1. Sezvi všechny kámoše a pořádně je vyhecuj. Dejte si třeba kolu. 😄
  2. Změřte svou odstředivou sílu! Jeden po druhém točte. Náš tip: Nejlíp se ti bude točit, když krabičku postavíš na tlačítko.
  3. Výsledky sleduj na záložce Dashboard. Tak hodně štěstí a… Roztoč to jak roztoč!
settings of chart node in Node-RED