Príbeh kórejského školáka, ktorý dostal od ministerstva cenu za systém monitorovania radov

Keď som bol v prvom ročníku na strednej škole (od marca do decembra 2016), veľmi ma rozčuľovala situácia, ktorá vznikla v našej školskej jedálni.

Problém XNUMX: čakanie v rade príliš dlho

Aký problém som pozoroval? Páči sa ti to:

Príbeh kórejského školáka, ktorý dostal od ministerstva cenu za systém monitorovania radov

Veľa študentov sa zhromaždilo na distribučnej ploche a museli dlho stáť (päť až desať minút). Samozrejme, toto je bežný problém a férová schéma služieb: čím neskôr prídete, tým neskôr vás obslúžia. Aby ste pochopili, prečo musíte čakať.

Problém druhý: nerovnaké podmienky pre čakajúcich

Ale to samozrejme nie je všetko, musel som si všimnúť aj iný, vážnejší problém. Tak vážne, že som sa nakoniec rozhodol, že sa pokúsim nájsť východisko zo situácie. Stredoškoláci (teda všetci, ktorí študujú aspoň o ročník vyššie) a učitelia išli do distribúcie bez čakania v rade. Áno, áno a vy ste im ako žiak základnej školy nemohli nič povedať. Naša škola mala dosť prísnu politiku týkajúcu sa vzťahov medzi triedami.

Preto sme s kamarátmi, keď sme boli nováčikovia, prišli do jedálne úplne prví, chystali sme sa zohnať jedlo – a potom sa objavili stredoškoláci alebo učitelia a jednoducho nás odstrčili (niektorí, ktorí boli milší, nám dovolili zostať v naše miesto v rade). Museli sme čakať ďalších pätnásť až dvadsať minút, hoci sme prišli skôr ako všetci ostatní.

Počas obeda sme mali obzvlášť zlý čas. Cez deň sa do jedálne ponáhľali úplne všetci (učitelia, žiaci, zamestnanci), takže pre nás ako pre žiakov prvého stupňa základných škôl obed nikdy nebol radosťou.

Spoločné riešenia problému

No keďže nováčikovia nemali na výber, vymysleli sme dva spôsoby, ako znížiť riziko odhodenia do úzadia. Prvým je prísť do jedálne veľmi skoro (teda doslova ešte predtým, ako sa jedlo vôbec začne podávať). Druhým je zámerne zabiť čas hraním ping-pongu alebo basketbalu a prísť veľmi neskoro (asi dvadsať minút po začiatku obeda).

Do istej miery to fungovalo. Ale pravdu povediac, nikto sa nechcel čo najrýchlejšie ponáhľať do jedálne, len aby sa stihol najesť, či dojesť studené zvyšky po ostatných, pretože boli medzi poslednými. Potrebovali sme riešenie, ktoré by nám dalo vedieť, keď bufet nebude preplnený.

Bolo by skvelé, keby nám nejaká veštkyňa predpovedala budúcnosť a presne povedala, kedy máme ísť do jedálne, aby sme dlho nečakali. Problém bol v tom, že každý deň sa všetko vyvíjalo inak. Nemohli sme jednoducho analyzovať vzory a identifikovať sladké miesto. Mali sme len jeden spôsob, ako zistiť, ako je to v jedálni – dostať sa tam pešo a cesta mohla mať niekoľko stoviek metrov, podľa toho, kde ste boli. Ak teda prídete, pozriete sa na rad, vrátite sa a budete pokračovať v rovnakom duchu, kým sa neskráti, stratíte veľa času. Vo všeobecnosti bol život na základnej triede ohavný a nedalo sa s tým nič robiť.

Eureka – myšlienka vytvorenia monitorovacieho systému jedálne

A zrazu, už v budúcom akademickom roku (2017) som si povedal: „Čo keby sme urobili systém, ktorý bude v reálnom čase ukazovať dĺžku frontu (teda odhaliť dopravnú zápchu)?“ Ak by sa mi to podarilo, obraz by bol takýto: žiaci základných škôl by sa jednoducho pozreli na svoje telefóny, aby získali aktuálne údaje o aktuálnej úrovni pracovného vyťaženia, a vyvodili by závery, či má zmysel ísť hneď. .

Táto schéma v podstate vyrovnala nerovnosť prostredníctvom prístupu k informáciám. S jeho pomocou si žiaci základných škôl mohli sami vybrať, čo je pre nich najlepšie – ísť sa postaviť do radu (ak to nebolo príliš dlhé) alebo stráviť čas užitočnejšie a neskôr si vybrať vhodnejšiu chvíľu. Táto myšlienka ma veľmi vzrušila.

Návrh monitorovacieho systému jedálne

V septembri 2017 som mal podať projekt na kurz objektovo orientovaného programovania a tento systém som predložil ako svoj projekt.

Príbeh kórejského školáka, ktorý dostal od ministerstva cenu za systém monitorovania radov

Počiatočný systémový plán (september 2017)

Výber vybavenia (október 2017)

Príbeh kórejského školáka, ktorý dostal od ministerstva cenu za systém monitorovania radov

Jednoduchý dotykový spínač s pull-up odporom. Schéma s piatimi štítmi v troch radoch na rozpoznanie frontu pozdĺž troch línií

Objednal som si iba päťdesiat membránových spínačov, mini dosku Wemos D1 založenú na ESP8266 a niekoľko kruhových svoriek, ku ktorým som plánoval pripevniť smaltované vodiče.

Prototypovanie a vývoj (október 2017)

Začal som s doskou - zostavil som na nej obvod a otestoval som ho. Bol som obmedzený v počte materiálov, tak som sa obmedzil na systém s piatimi stupačkami.

Pre softvér, ktorý som napísal v C++, som si stanovil nasledujúce ciele:

  1. Pracujte nepretržite a odosielajte údaje len v obdobiach, keď sa podáva jedlo (raňajky, obed, večera, olovrant).
  2. Rozpoznajte situáciu v rade/premávke v kaviarni na takých frekvenciách, že údaje potom možno použiť v modeloch strojového učenia (povedzme 10 Hz).
  3. Posielajte dáta na server efektívnym spôsobom (veľkosť paketu by mala byť malá) a v krátkych intervaloch.

Aby som ich dosiahol, musel som urobiť nasledovné:

  1. Pomocou modulu RTC (Real Time Clock) môžete nepretržite sledovať čas a určiť, kedy sa v jedálni podáva jedlo.
  2. Na zaznamenanie stavu štítu v jednom znaku použite metódu kompresie údajov. S údajmi ako s päťbitovým binárnym kódom som namapoval rôzne hodnoty na znaky ASCII tak, aby predstavovali dátové prvky.
  3. Použite ThingSpeak (nástroj internetu vecí na analýzu a online vytváranie grafov) odosielaním požiadaviek HTTP pomocou metódy POST.

Samozrejme, vyskytli sa nejaké chyby. Napríklad som nevedel, že operátor sizeof() vracia hodnotu 4 pre char * objekt a nie dĺžku reťazca (pretože to nie je pole, a preto kompilátor nevypočítava dĺžku) a bol som veľmi prekvapený, prečo moje požiadavky HTTP obsahovali iba štyri znaky zo všetkých adries URL!

Do kroku #define som tiež nezahrnul zátvorky, čo viedlo k neočakávaným výsledkom. No povedzme:

#define _A    2 * 5 
int a = _A / 3;

Tu by sa dalo očakávať, že A sa bude rovnať 3 (10 / 3 = 3), ale v skutočnosti to bolo vypočítané inak: 2 (2 * 5 / 3 = 2).

Nakoniec ďalšou pozoruhodnou chybou, s ktorou som sa zaoberal, bol reset na časovači strážneho psa. S týmto problémom som bojoval veľmi dlho. Ako sa neskôr ukázalo, pokúšal som sa pristupovať do nízkoúrovňového registra na čipe ESP8266 nesprávnym spôsobom (omylom som zadal hodnotu NULL pre ukazovateľ na štruktúru).

Príbeh kórejského školáka, ktorý dostal od ministerstva cenu za systém monitorovania radov

Štít na nohy, ktorý som navrhol a postavil. V čase, keď fotografia vznikla, už prežil päť týždňov prešľapovania

Hardware (dosky na nohy)

Aby som zabezpečil, že štíty budú schopné prežiť drsné podmienky jedálne, stanovil som na ne tieto požiadavky:

  • Štíty musia byť dostatočne pevné, aby vždy uniesli ľudskú váhu.
  • Štíty by mali byť tenké, aby nerušili ľudí v rade.
  • Spínač musí byť aktivovaný pri zošliapnutí.
  • Štíty musia byť vodotesné. V jedálni je vždy vlhko.

Aby som splnil tieto požiadavky, rozhodol som sa pre dvojvrstvové prevedenie - laserom vyrezaný akryl na základný a vrchný kryt a korok ako ochranná vrstva.

Rozloženie štítu som urobil v AutoCADe; rozmery – 400 x 400 milimetrov.

Príbeh kórejského školáka, ktorý dostal od ministerstva cenu za systém monitorovania radov

Vľavo je dizajn, ktorý sa dostal do výroby. Na pravej strane je možnosť s pripojením typu Lego

Mimochodom, nakoniec som upustil od pravostranného prevedenia, pretože pri takomto fixačnom systéme sa ukázalo, že medzi štítmi by malo byť 40 centimetrov, čo znamená, že som nemohol prejsť potrebnú vzdialenosť (viac ako desať metrov).

Príbeh kórejského školáka, ktorý dostal od ministerstva cenu za systém monitorovania radov

Príbeh kórejského školáka, ktorý dostal od ministerstva cenu za systém monitorovania radov

Na pripojenie všetkých spínačov som použil smaltované drôty - celkovo to trvalo viac ako 70 metrov! Do stredu každého štítu som umiestnil membránový spínač. Z bočných štrbín vyčnievali dve spony – naľavo a napravo od vypínača.

Na hydroizoláciu som použil elektrickú pásku. Veľa elektrickej pásky.

A všetko fungovalo!

Obdobie od piateho novembra do dvanásteho decembra

Príbeh kórejského školáka, ktorý dostal od ministerstva cenu za systém monitorovania radov

Fotografia systému - tu je viditeľných všetkých päť štítov. Vľavo je elektronika (D1-mini / Bluetooth / RTC)

XNUMX. novembra o ôsmej ráno (čas raňajok) začal systém zbierať aktuálne dáta o situácii v jedálni. Neverila som vlastným očiam. Len pred dvoma mesiacmi som si načrtol všeobecnú schému, sedel som doma v pyžame, a sme tu, celý systém funguje bez problémov... alebo nie.

Softvérové ​​chyby počas testovania

Samozrejme, v systéme bolo veľa chýb. Tu sú tie, ktoré si pamätám.

Program pri pokuse o pripojenie klienta k ThingSpeak API nekontroloval dostupné Wi-Fi body. Na opravu chyby som pridal ďalší krok na kontrolu dostupnosti Wi-Fi.

Vo funkcii nastavenia som opakovane volal „WiFi.begin“, kým sa neobjavilo pripojenie. Neskôr som zistil, že spojenie nadväzuje firmvér ESP8266 a funkcia begin sa používa len pri nastavovaní Wi-Fi. Situáciu som opravil tak, že som funkciu zavolal iba raz, počas nastavovania.

Zistil som, že rozhranie príkazového riadku, ktoré som vytvoril (bolo určené na nastavenie času, zmenu sieťových nastavení), nefunguje v pokoji (teda mimo raňajok, obeda, večere a popoludňajšieho čaju). Všimol som si tiež, že keď nedôjde k protokolovaniu, interná slučka sa nadmerne zrýchli a sériové dáta sa čítajú príliš rýchlo. Preto som nastavil oneskorenie, aby systém čakal na príchod ďalších príkazov, keď sú očakávané.

Óda na strážneho psa

Jo, a ešte jedna vec k tomu problému s časovačom strážneho psa - vyriešil som to presne vo fáze testovania v „poľných“ podmienkach. Bez preháňania, to bolo všetko, na čo som štyri dni myslel. Každú prestávku (trvajúcu desať minút) som sa ponáhľal do kaviarne, len aby som vyskúšal novú verziu kódu. A keď sa otvorila distribúcia, sedel som hodinu na zemi a snažil som sa chytiť plošticu. Na jedlo som ani nepomyslela! Vďaka za všetky dobré veci, ESP8266 Watchdog!

Ako som prišiel na WDT

Príbeh kórejského školáka, ktorý dostal od ministerstva cenu za systém monitorovania radov

Útržok kódu, s ktorým som mal problémy

Našiel som program, alebo skôr rozšírenie pre Arduino, ktoré analyzuje dátovú štruktúru softvéru, keď dôjde k Wdt-resetu, pričom pristupuje k súboru ELF skompilovaného kódu (korelácie medzi funkciami a ukazovateľmi). Keď sa to stalo, ukázalo sa, že chybu možno odstrániť takto:

Príbeh kórejského školáka, ktorý dostal od ministerstva cenu za systém monitorovania radov

Dočerta! No, kto vedel, že oprava chýb v systéme v reálnom čase je taká náročná! Chybu som však odstránil a ukázalo sa, že je to hlúpa chyba. Kvôli mojej neskúsenosti som napísal while cyklus, v ktorom pole prekročilo hranice. Uf! (index ++ a ++ index sú dva veľké rozdiely).

Príbeh kórejského školáka, ktorý dostal od ministerstva cenu za systém monitorovania radov

Problémy s hardvérom počas testovania

Samozrejme, vybavenie, teda štíty na nohy, malo od ideálu ďaleko. Ako sa dalo očakávať, jeden z prepínačov je zaseknutý.

Príbeh kórejského školáka, ktorý dostal od ministerstva cenu za systém monitorovania radov

XNUMX. novembra cez obed sa zasekol vypínač na treťom paneli

Vyššie som poskytol snímku obrazovky online grafu z webovej stránky ThingSpeak. Ako vidíte, okolo 12:25 sa stalo niečo, po čom zlyhal štít číslo tri. V dôsledku toho bola dĺžka frontu určená na 3 (hodnota je 3 * 100), aj keď v skutočnosti nedosiahla tretí štít. Oprava spočívala v tom, že som pridal viac výplne (áno, lepiacu pásku), aby mal prepínač viac miesta.

Niekedy bol môj systém doslova vyvrátený, keď sa drôt zachytil vo dverách. Vozíky a balíky sa nosili cez tieto dvere do jedálne, takže drôt niesol so sebou, zatváral sa a vyťahoval zo zásuvky. V takýchto prípadoch som si všimol neočakávané zlyhanie toku dát a uhádol som, že systém je odpojený od zdroja napájania.

Šírenie informácií o systéme po celej škole

Ako už bolo spomenuté, použil som ThingSpeak API, ktoré vizualizuje dáta na stránke vo forme grafov, čo je veľmi pohodlné. Vo všeobecnosti som v podstate len zverejnil odkaz na svoj rozvrh v školskej skupine na Facebooku (tento príspevok som hľadal pol hodiny a nenašiel som ho - veľmi zvláštne). Ale našiel som príspevok na mojej kapele, školskej komunite, z 2017. novembra XNUMX:

Príbeh kórejského školáka, ktorý dostal od ministerstva cenu za systém monitorovania radov

Príbeh kórejského školáka, ktorý dostal od ministerstva cenu za systém monitorovania radov

Reakcia bola divoká!

Tieto príspevky som zverejnil, aby som vzbudil záujem o môj projekt. Už len pohľad na ne je však sám o sebe celkom zábavný. Povedzme, že tu jasne vidíte, že počet ľudí prudko vyskočil o 6:02 a prakticky klesol na nulu o 6:10.

Príbeh kórejského školáka, ktorý dostal od ministerstva cenu za systém monitorovania radov Príbeh kórejského školáka, ktorý dostal od ministerstva cenu za systém monitorovania radov

Vyššie som pripojil pár grafov, ktoré sa týkajú obeda a popoludňajšieho čaju. Zaujímavosťou je, že vrchol pracovnej záťaže v čase obeda takmer vždy nastal o 12:25 (porada dosiahla piaty štít). A na popoludňajšie občerstvenie je vo všeobecnosti netypické mať veľký dav ľudí (porada je dlhá maximálne na jednu tabuľu).

Vieš čo je smiešne? Tento systém je stále nažive (https://thingspeak.com/channels/346781)! Prihlásil som sa do účtu, ktorý som predtým používal a videl som toto:

Príbeh kórejského školáka, ktorý dostal od ministerstva cenu za systém monitorovania radov

V grafe vyššie som videl, že tretieho decembra bol prílev ľudí podstatne menší. A niet sa čomu čudovať – bola nedeľa. V tento deň sa takmer každý niekam vyberie, pretože vo väčšine prípadov len v nedeľu môžete opustiť areál školy. Je jasné, že cez víkend v kaviarni neuvidíte ani živú dušu.

Ako som dostal prvú cenu od kórejského ministerstva školstva za svoj projekt

Ako môžete sami vidieť, na tomto projekte som nepracoval, pretože som sa snažil získať nejaké ocenenie alebo uznanie. Chcel som len využiť svoje schopnosti na vyriešenie chronického problému, ktorému som čelil v škole.

Naša školská odborníčka na výživu slečna O, s ktorou som sa veľmi zblížila pri plánovaní a vývoji môjho projektu, sa ma však jedného dňa spýtala, či neviem o súťaži nápadov na bufet. Potom som si myslel, že je to nejaký zvláštny nápad porovnávať nápady na jedáleň. Ale prečítal som si informačnú brožúru a dozvedel som sa, že projekt treba podať do 24. novembra! Dobre dobre. Rýchlo som dokončil koncept, dáta a grafiku a odoslal prihlášku.

Zmeny pôvodného nápadu súťaže

Mimochodom, systém, ktorý som nakoniec navrhol, sa mierne líšil od toho, ktorý už bol implementovaný. V podstate som prispôsobil svoju pôvodnú metódu (meranie dĺžky frontu v reálnom čase) pre oveľa väčšie kórejské školy. Pre porovnanie: v našej škole je tristo žiakov a v niektorých iných je toľko ľudí len v jednej triede! Potreboval som prísť na to, ako škálovať systém.

Preto som navrhol koncept, ktorý bol viac založený na „manuálnom“ ovládaní. V súčasnosti už kórejské školy zaviedli stravovací plán pre všetky triedy, ktorý sa prísne dodržiava, a tak som vytvoril iný rámec typu „signál-reakcia“. Myšlienka tu bola, že keď skupina navštevujúca bufet pred vami dosiahne určitý limit dĺžky radu (to znamená, že sa rad skráti), manuálne vám pošle signál pomocou tlačidla alebo vypínača na stene. . Signál bude prenášaný na TV obrazovku alebo prostredníctvom LED žiaroviek.

Naozaj som chcel vyriešiť problém, ktorý sa objavil na všetkých školách v krajine. Vo svojom úmysle som sa ešte viac posilnil, keď som počul príbeh od slečny O – teraz vám to poviem. Ukazuje sa, že v niektorých veľkých školách sa rad aj v zime pretiahne za bufet, do ulice na dvadsať až tridsať metrov, pretože nikto nevie správne zorganizovať proces. A niekedy sa stane, že niekoľko minút sa v jedálni vôbec nikto neobjaví - a to je tiež zlé. V školách s veľkým počtom študentov majú zamestnanci sotva čas obslúžiť všetkých, aj keď nepremrhajú ani minútu jedla. Preto tí, ktorí prichádzajú do distribúcie poslední (väčšinou žiaci základných škôl), jednoducho nemajú dostatok času na jedenie.

Takže aj keď som musel svoju žiadosť podať narýchlo, veľmi dobre som premýšľal, ako by som ju mohol prispôsobiť širšiemu použitiu.

Správa, že som vyhral prvú cenu!

Skrátka, bol som pozvaný, aby som prišiel a predstavil svoj projekt vládnym úradníkom. Takže som dal do práce všetky svoje talenty v Power Pointe a prišiel som a predstavil som sa!

Príbeh kórejského školáka, ktorý dostal od ministerstva cenu za systém monitorovania radov

Začiatok prezentácie (úplne vľavo - minister)

Bola to zaujímavá skúsenosť - práve som si vymyslel niečo na kaviarenský problém a nejako som sa dostal medzi víťazov súťaže. Aj keď som stál na pódiu, stále som si hovoril: "Hmm, čo tu vlastne robím?" Ale vo všeobecnosti mi tento projekt priniesol veľký prínos – naučil som sa veľa o vývoji vstavaných systémov a implementácii projektov v reálnom živote. No, samozrejme, dostal som cenu.

Záver

Je tu istá irónia: akokoľvek som sa zúčastňoval všemožných súťaží a vedeckých veľtrhov, na ktoré som sa cieľavedome prihlásil, neprišlo z toho nič dobré. A potom si ma práve táto príležitosť našla a dala mi dobré výsledky.

To ma prinútilo zamyslieť sa nad dôvodmi, ktoré ma motivujú k projektom. Prečo začínam pracovať - ​​„vyhrať“ alebo vyriešiť skutočný problém vo svete okolo mňa? Ak vo vašom prípade funguje druhý motív, dôrazne vám odporúčam, aby ste projekt neopustili. S týmto prístupom k podnikaniu môžete na svojej ceste stretnúť nečakané príležitosti a nebudete pociťovať tlak z potreby víťaziť – vaším hlavným motivátorom bude vášeň pre vaše podnikanie.

A hlavne: ak sa vám podarí implementovať slušné riešenie, môžete si ho hneď vyskúšať v reálnom svete. Platformou bola v mojom prípade škola, no skúsenosti sa časom hromadia a ktovie – možno vašu aplikáciu využije celá krajina alebo dokonca celý svet.

Vždy, keď si spomeniem na túto skúsenosť, som na seba hrdý. Neviem vysvetliť prečo, ale proces implementácie projektu mi jednoducho priniesol veľké potešenie a cena bola ďalším bonusom. Navyše ma potešilo, že som mohol za svojich spolužiakov vyriešiť problém, ktorý im každý deň ničil život. Jedného dňa za mnou prišiel jeden zo študentov a povedal: "Váš systém je veľmi pohodlný." Bol som v siedmom nebi!
Myslím si, že aj bez akýchkoľvek ocenení by som bol hrdý na svoj vývoj už len kvôli tomuto. Možno práve pomoc druhým mi priniesla také uspokojenie... vo všeobecnosti milujem projekty.

Čo som chcel dosiahnuť týmto článkom

Dúfam, že prečítaním tohto článku až do konca ste sa inšpirovali k niečomu, čo bude prínosom pre vašu komunitu alebo dokonca len pre vás. Odporúčam vám využiť svoje schopnosti (programovanie je určite jednou z nich, ale sú aj iné), aby ste zmenili realitu okolo seba k lepšiemu. Môžem vás ubezpečiť, že skúsenosti, ktoré v tomto procese získate, sa nedajú porovnávať s ničím iným.

Môže vám tiež otvoriť cesty, ktoré ste nečakali – to sa stalo aj mne. Takže prosím, robte to, čo máte radi, a urobte svoju stopu vo svete! Ozvena jedného jediného hlasu môže otriasť celým svetom, tak si verte.

Tu je niekoľko odkazov súvisiacich s projektom:

Zdroj: hab.com

Pridať komentár