Obsah:
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
Pro náš projekt v Průmyslu 4.0 jsme se rozhodli vyrobit mixér na cukrovinky. Idea spočívá v tom, že máme uživatelský panel vyrobený v Node-Red, kde si zákazníci mohou objednat své cukrovinky, arduino pak objednávku zpracuje a sladkost zamíchá do misky. Pak máme databázi v SQL, kde uchováváme statistiky o tom, jaké druhy bonbónů se většinou objednávají a objednaný objem.
Prvním návrhem bylo vyrobit mixér pro 8 druhů cukrovinek a nechat motory otevírat a zavírat nádoby na cukrovinky. Měli jsme nějaké konstrukční potíže s kontejnery, cukrovinky se zasekly, a tak jsme se rozhodli jít pryč od motorů a použít nějaké LED k označení běžících motorů.
Krok 1: Design
Náš model je vyroben se 4 nádobami na cukrovinky, kde se pro otevírání a zavírání cukrovinek používá posuvné víko. Pod kontejnery máme žlab až do misky. Miska je pak nahoře na siloměru.
Design v Node-Red je rozdělen na 2 části, Zákazník a Administrace.
V zákaznické sekci máme 5 tlačítek, 4 z nich slouží k objednání cukrovinek a 1 slouží k přijetí nákupu. Pomocí tlačítka nákupu může zákazník vidět hmotnost cukrovinek a očekávanou cenu, poté se po stisknutí tlačítka nákupu váha a cena zobrazí v zakoupeném zboží.
V sekci administrace vidíme, jak jsou naše kontejnery plné a celkové množství nakoupených cukrovinek.
V SQL vidíme statistiky o tom, jaké bonbóny jsou vybrány, a celkovou váhu a příjem z nákupů.
Krok 2: Arduino Curcuit
Na desku arduino jsme připojili 4 tlačítka, 4 dvě barevné LED a 1 snímač zatížení s modulem HX711.
Tlačítka se používají pro obsluhu cukrovinek k tlačení, když jsou nádoby naplněny cukrovinkami.
Dvoubarevná LED používá červenou a zelenou barvu. Červená barva označuje, že je nádoba prázdná a je třeba ji naplnit, a zelená barva ukazuje, jaký druh cukrovinek byl vybrán, a pak můžeme pro tuto nádobu otevřít. Tato část byla zamýšlena jako automatizovaná, ale kvůli problémům s designem jsme se rozhodli ji vyrobit ručně.
Krok 3: Seznam I/O
Z snímače zatížení získáme 4 kabely, které se připojí k modulu HX711
Červená až E+
Bílá na E-
Zelená do A-
Žlutá až A+
HX711 je poté připojen k desce arduino pomocí
GND k zemi
DT na pin 3
SCK na pin 2
VCC až 5V
Naše tlačítka jsou připojena k pinům 44, 46, 48 a 50, zelená LED je připojena k pinům 30, 32, 34 a 36, červená LED je připojena k pinům 31, 33, 35 a 37.
Krok 4: Kód
V kódu arduino začneme definováním našich proměnných a nastavením našich LED a tlačítek na některé piny.
Nastavili jsme také proměnnou pro příjem souboru z Node-Red.
Když jsou stisknuta naše tlačítka na arduinu, odešleme status 5 do Node-red, což znamená, že nádoby byly naplněny a jsme připraveni rozptýlit cukrovinky z této nádoby.
Když stiskneme tlačítko na straně zákazníka Node-Red, pošleme číslo 1-4 na arduino. Arduino poté zkontroluje číslo a otevře kontejner spojený s tímto číslem. To se provádí rozsvícením zelené LED na 5 sekund. Současně odečteme 1 ze stavu kontejneru, abychom naznačili, že z tohoto kontejneru byly vyjmuty nějaké bonbóny.
Když stav kontejneru dosáhne 0, rozsvítí se červená LED dioda indikující, že tento kontejner musí být znovu naplněn.
Když probíhá nákup, číslo 5 se odešle na arduino a poté vypočítá cenu a odešle cenu a váhu zpět do node-red a SQL.
Poslední část kódu arduino odešle stav 'a hmotnost/cenu zpět do poznámky.
Krok 5: Node-Red
Node Red vytvoří všechna spojení mezi arduino a databází SQL.
Data přicházející z obrazovky Zákazník v Node-red jdou do arduina, kde jsou zpracovávána. Zpracovaná data se poté vrátí zpět do Node Red a na obrazovku Administration.
Pokud vezmeme tlačítko 1 jako excampel, spojíme ho s linkami jak do arudina skrz com4, tak na SQL server. Když pak otevřete tlačítko, můžeme vidět, že informace odeslané do arduina jsou Payload a téma je odesláno do SQL.
K odeslání informací z arduina na SQL používáme funkci v Node-Red. V této funkci potřebujeme nějaký kód Java, abychom Node-red řekli, co s kódem dělat.
Kód funkce:
var data = msg.payload.split (","); var Vægt = data [13];
var Kroner = data [14];
var out = "UPDATE blanding SET Vægt = '"+Vægt+"', Kroner = '"+Kroner+"' WHERE id = 1";
msg.topic = out;
vrátit zprávu;
V kódu zde získáme řetězec dat z arduina a ten je rozdělen mezi "," mezi čísla.
Pro tuto funkci potřebujeme čísla přicházející na 13. a 14. místě a vložili jsme je do proměnných „Vægt a Kroner“. Potom vezmeme kód, který musí být spuštěn v SQL a vložen do proměnné „out“, a odešle se jako téma do SQL.
Krok 6: SQL
V databázi SQL uchováváme statistiky o tom, kolikrát každý den byly objednány jednotlivé druhy cukrovinek, a hmotnost a cenu cukrovinek.
Statestik tlačítek pochází z čítače připojeného ke každému tlačítku v Node-Red a hmotnost a cena pochází z arduina prostřednictvím funkce v Node-Red.
Krok 7: Video
Ve videu ukazujeme, že na panelu Správce se naplní kontejner a poté se kliknutím na tlačítka na panelu zákazníků objednají nějaké bonbóny. Současně je na zákaznickém panelu zobrazena hmotnost a odhadované náklady na cukrovinky.
Když je zákazník se svou sladkostí spokojen, stiskne tlačítko nákupu a pod tlačítkem se zobrazí skutečná hmotnost a cena. Tím se pak dokončí zákaznická část a poté se váha a náklady přenesou do administračního panelu a naší databáze v sql.
V databázi pak sledujeme, kolikrát byl objednaný kus cukroví objednán a kolik bonbónů mělo hmotnost a náklady na ně.
Krok 8: Hodnocení
Byl to dobrý projekt, ve kterém jsme začali pracovat se 3 programy a přiměli je vzájemně komunikovat. Nejprve jsme nechali některé funkce vyloučit v Node-Red a některé v Arduinu, ale abychom si udrželi přehled, rozhodli jsme se všechny funkce vložit do arduina a poté mít Node-Red zkratku pro veškerý vizuál.
Krok 9: Rozšíření projektu
Naší myšlenkou bylo mít jeden z kontejnerů otevřený motorem, takže dalším krokem by bylo vytvořit design, kde by se cukrovinky nezasekly.