Přeskočit na hlavní obsah

Nejvyšší odstředivá síla

Ú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 – Start Set.

Stáhni si nový firmware

  1. Pokud to ještě nemáš, Start Set 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. 👌

  3. 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.

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

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
  1. K oběma nodům umísti po jednom nodu pro javascript. Najdeš je v sekci Function pod jménem Function (originální 🤡).
  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.

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.

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.

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

  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. Pojmenuj ho v řádku Label jako Historie. Do řádku X-asis Label nastav automatic, to znamená, že se jednotka přidá automaticky.
  1. Pod druhý javascript vlož textový node Text ze sekce Dashboard. V něm pojmenuješ, jak se bude zobrazovat délka nejnovější rotace: Doba posledního točení.
  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.
  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íš. 🚨

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č!