Nejvyšší odstředivá síla
Úvod
Pamatujete si ještě na káču? Možná jste měli dřevěnou nebo plastovou, ale vsadíme se, že chytrá nebyla. Teď si konečně vyrobíte takovou, která zaznamená vaši odstředivou sílu. Pak se změřte s kamarády a zjistěte, kdo z vás je odstředivě nejsilnější! 💪
V tomto projektu se naučíte měřit rychlé otáčení krabičky. 👈
Budete potřebovat jen krabičku s tlačítkem a USB dongle. Vystačíte si tedy se základní Sadou Start od HARDWARIO.
Stáhněte si nový firmware
-
Pokud jste to ještě neudělali, sestavte Sadu Start.
-
Do modulu Core Module nahrajte nový firmware bcf radio spinning game (najdete ho v Playgroundu mezi ostatními firmwary). Díky němu bude krabička reagovat na otáčení. 👌
-
Modul Core Module spárujte s USB donglem. Hned po spárování uvidíte, že se jeho Alias změnil na rotation-g-meter.

Postavte to v Node-RED
- V Playgroundu klikněte na záložku Functions, kde je programovací plocha Node-RED. 🤖
- Začněte jako vždycky: na plochu nejdřív umístěte uzel mqtt in ze sekce network.
Dvakrát na něj klikněte a do pole Topic zkopírujte tento řádek, díky kterému krabička změří odstředivou sílu:
node/rotation-g-meter:0/rotation-g

Potvrďte tlačítkem Done.
- Překvapení! 😲 Pod první uzel MQTT umístěte druhý uzel mqtt in ze sekce network. Tentokrát do jeho nastavení zadejte jiný Topic, díky kterému krabička změří dobu otáčení:
node/rotation-g-meter:0/rotation-time

- Ke každému z nich přidejte jeden uzel pro JavaScript. Najdete ho v sekci function pod názvem function (originální, že? 🤡).

- Dvakrát klikněte na horní uzel function a do velkého pole na záložce On Message vložte tento kód. Bude zaznamenávat 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 uzel pojmenujte Uložení rekordu.

Potvrďte tlačítkem Done.
- Do spodního uzlu function (opět na záložku On Message) vložte kód, který bude zaznamenávat rekordní dobu otáč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 uzel pojmenujte Uložení rekordu.

Potvrďte tlačítkem Done.
- Pod horní uzel function vložte uzel text ze sekce dashboard. Můžete ho umístit i jinam, ale pro přehlednost bude lepší, když budou uzly pod sebou.

V nastavení ho pojmenujte Poslední točení. Bude ukazovat hodnotu, kterou krabička právě naměřila.

- Pod tento uzel umístěte ještě jeden, díky kterému se hodnoty budou zapisovat do grafu. 📈 Najdete ho jako uzel chart v sekci dashboard. V řádku Label ho pojmenujte Historie. V řádku X-axis Label nastavte automatic, takže se jednotka doplní automaticky.

- Pod druhý uzel s JavaScriptem vložte uzel text ze sekce dashboard. Nastavte v něm popisek pro dobu posledního otáčení: Doba posledního točení.

- Za obě větve umístěte po jednom uzlu text ze sekce dashboard. Určují, jak uvidíte zaznamenané rekordy. Nastavte v nich postupně Label Rekord a Rekordní čas.

- A pak všechno propojte podle obrázku. Na ploše tak vzniknou dva samostatné flow. Nakonec nezapomeňte stisknout tlačítko Deploy, kterým celé zapojení spustíte. 🚨

Roztočte to!
- Pozvěte všechny kamarády a pořádně je vyhecujte. Dejte si třeba kolu. 😄
- Změřte svou odstředivou sílu! Točte jeden po druhém. Náš tip: Nejlépe se krabička točí, když ji postavíte na tlačítko.
- Výsledky sledujte na záložce Dashboard. Hodně štěstí a… roztočte to, co to dá!