Egy koreai iskolás története, aki díjat kapott a minisztériumtól egy sorfigyelő rendszerért

Középiskolás koromban (2016 márciusától decemberig) nagyon bosszantott az iskolai étkezdénkben kialakult helyzet.

Az első probléma: túl sokáig várni a sorban

Milyen problémát figyeltem meg? Mint ez:

Egy koreai iskolás története, aki díjat kapott a minisztériumtól egy sorfigyelő rendszerért

Nagyon sok diák gyűlt össze az elosztóhelyen, és sokáig (öt-tíz percig) állniuk kellett. Természetesen ez általános probléma és korrekt kiszolgálási séma: minél később érkezik, annál később szolgálják ki. Így megérthette, miért kellett várnia.

Második probléma: egyenlőtlen feltételek a várakozók számára

De persze ez nem minden, egy másik, komolyabb problémát is megfigyelnem kellett. Olyan komoly, hogy végül úgy döntöttem, megpróbálok kiutat találni a helyzetből. A középiskolások (vagyis mindenki, aki legalább egy osztállyal feljebb tanul) és a tanárok sorra sem várva mentek a osztásra. Igen, igen, és te általános iskolásként nem mondhattál nekik semmit. Iskolánkban meglehetősen szigorú szabályzat volt az osztályok közötti kapcsolatokat illetően.

Ezért a barátaimmal, amíg még újoncok voltunk, először jöttünk be a büfébe, enni készültünk – aztán megjelentek a gimnazisták vagy a tanárok és egyszerűen félrelöktek minket (néhány kedvesebb volt, megengedte, hogy bent maradjunk. helyünk a sorban). További tizenöt-húsz percet kellett várnunk, bár mindenkinél korábban érkeztünk.

Különösen rosszul éreztük magunkat ebédidőben. Napközben abszolút mindenki a büfébe rohant (tanárok, diákok, dolgozók), így nekünk, általános iskolásoknak sosem volt öröm az ebéd.

A probléma közös megoldásai

De mivel az újoncoknak nem volt más választásuk, két módszert találtunk ki, hogy csökkentsük a sor végére dobás kockázatát. Az első az, hogy nagyon korán jöjjön az ebédlőbe (vagyis szó szerint az étel felszolgálása előtt). A második az, hogy szándékosan el kell ütni az időt pingpongozni vagy kosárlabdázni, és nagyon későn (kb. húsz perccel az ebéd kezdete után) érkezni.

Bizonyos mértékig működött. De, hogy őszinte legyek, senki sem vágyott arra, hogy olyan gyorsan rohanjon az ebédlőbe, hogy enni tudjon, vagy hogy a többiek után végezze el a hideg maradékot, mert ők az utolsók között voltak. Olyan megoldásra volt szükségünk, amely tudatja velünk, ha a büfé nem zsúfolt.

Jó lenne, ha valami jós megjósolná nekünk a jövőt, és megmondaná, hogy pontosan mikor menjünk az ebédlőbe, hogy ne kelljen sokáig várnunk. Az volt a baj, hogy minden nap minden másképp alakult. Nem tudtuk egyszerűen elemezni a mintákat és azonosítani az édes pontot. Egyetlen lehetőségünk volt, hogy megtudjuk, hogy állnak a dolgok az ebédlőben – gyalog eljuthatunk oda, és az út több száz méter is lehetett, attól függően, hogy hol tartózkodik. Tehát ha jössz, nézd meg a sort, gyere vissza, és ugyanabban a szellemben folytatod, amíg rövid lesz, akkor sok időt veszítesz. Általánosságban elmondható, hogy az általános osztály élete undorító volt, és ez ellen nem lehetett mit tenni.

Eureka – egy menzafigyelő rendszer létrehozásának ötlete

És hirtelen, már a következő tanévben (2017) azt mondtam magamban: "Mi lenne, ha olyan rendszert készítenénk, amely valós időben mutatja a sor hosszát (vagyis érzékeli a forgalmi dugót)?" Ha sikerült volna, a kép a következő lett volna: az általános iskolások egyszerűen a telefonjukra pillantanak, hogy naprakész adatokat kapjanak az aktuális terhelésről, és levonják a következtetéseket, hogy van-e értelme most menniük. .

Ez a séma lényegében az információhoz való hozzáférés révén elsimította az egyenlőtlenségeket. Segítségével az általános iskolások maguk választhatták ki, mi a legmegfelelőbb számukra - menjenek sorba állni (ha nem volt túl hosszú), vagy hasznosabban tölthetik az idejüket, majd később kiválaszthatták a megfelelőbb pillanatot. Nagyon felizgatott ez a gondolat.

Menzafigyelő rendszer tervezése

2017 szeptemberében kellett beadnom egy projektet egy objektum-orientált programozási tanfolyamra, és ezt a rendszert adtam be projektként.

Egy koreai iskolás története, aki díjat kapott a minisztériumtól egy sorfigyelő rendszerért

Kezdeti rendszerterv (2017. szeptember)

Berendezés kiválasztása (2017. október)

Egy koreai iskolás története, aki díjat kapott a minisztériumtól egy sorfigyelő rendszerért

Egyszerű tapintható kapcsoló felhúzó ellenállással. Három sorban öt pajzsot tartalmazó séma a sor három vonal mentén történő felismeréséhez

Csak ötven membránkapcsolót rendeltem, egy ESP1 alapú Wemos D8266 mini kártyát és néhány gyűrűs bilincset, amire a zománcozott vezetékeket terveztem rögzíteni.

Prototípus készítés és fejlesztés (2017. október)

Egy kenyérsütővel kezdtem - összeállítottam rá egy áramkört és teszteltem. Korlátozott volt az anyagok száma, ezért egy öt láblécű rendszerre szorítkoztam.

A C++ nyelven írt szoftverhez a következő célokat tűztem ki:

  1. Folyamatosan dolgozzon, és csak az ételek felszolgálásának időszakában küldjön adatokat (reggeli, ebéd, vacsora, délutáni uzsonna).
  2. Olyan frekvenciákon ismerje fel a sorban állást/forgalmi helyzetet a kávézóban, hogy az adatokat ezután gépi tanulási modellekben (mondjuk 10 Hz-en) lehessen használni.
  3. Hatékony módon (a csomagméretnek kicsinek kell lennie) és rövid időközönként küldjön adatokat a szervernek.

Ezek eléréséhez a következőket kellett tennem:

  1. Az RTC (Real Time Clock) modul segítségével folyamatosan figyelheti az időt, és meghatározhatja, mikor szolgálnak fel ételt a kávézóban.
  2. Használjon adattömörítési módszert az árnyékolás állapotának egy karakterben történő rögzítéséhez. Az adatokat ötbites bináris kódként kezelve a különböző értékeket ASCII karakterekre képeztem le úgy, hogy azok az adatelemeket reprezentálják.
  3. Használja a ThingSpeak-et (egy IoT-eszköz elemzéshez és online diagramkészítéshez) HTTP-kérések POST-módszerrel történő küldésével.

Természetesen voltak hibák. Például nem tudtam, hogy a sizeof() operátor 4 értéket ad vissza egy char * objektumhoz, nem pedig a string hosszát (mert ez nem egy tömb, ezért a fordító nem számítja ki a hosszát), és nagyon meglepődtem, hogy a HTTP kéréseim miért csak négy karaktert tartalmaztak az összes URL-ből!

A #define lépésben sem tettem bele zárójeleket, ami váratlan eredményhez vezetett. Hát mondjuk:

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

Itt azt várnánk, hogy A egyenlő 3-mal (10 / 3 = 3), de valójában másképpen számították ki: 2 (2 * 5/ 3 = 2).

Végül egy másik figyelemreméltó hiba, amellyel foglalkoztam, a Watchdog időzítőn lévő Reset volt. Nagyon sokáig küzdöttem ezzel a problémával. Mint később kiderült, rossz úton próbáltam hozzáférni az ESP8266 chip alacsony szintű registryjához (tévedésből NULL értéket adtam meg egy struktúra mutatójának).

Egy koreai iskolás története, aki díjat kapott a minisztériumtól egy sorfigyelő rendszerért

Egy lábvédő, amit én terveztem és építettem. A fénykép készítésekor már túlélte az öthetes taposást

Hardver (lábdeszka)

Annak érdekében, hogy a pajzsok túlélhessék a kantin zord körülményeit, a következő követelményeket támasztottam velük szemben:

  • A pajzsoknak elég erősnek kell lenniük ahhoz, hogy mindenkor elbírják az emberi súlyt.
  • A pajzsoknak vékonynak kell lenniük, hogy ne zavarják a sorban álló embereket.
  • A kapcsolót be kell kapcsolni, amikor rálépnek.
  • A pajzsoknak vízállónak kell lenniük. Az étkező mindig nedves.

Ezen követelmények teljesítése érdekében kétrétegű kialakítást választottam - lézerrel vágott akril az alap- és felső burkolathoz, valamint parafa védőrétegként.

A pajzs elrendezést AutoCAD-ben készítettem; méretek – 400 x 400 mm.

Egy koreai iskolás története, aki díjat kapott a minisztériumtól egy sorfigyelő rendszerért

A bal oldalon a gyártásba került terv látható. A jobb oldalon van egy lehetőség Lego típusú csatlakozással

A jobb oldali kialakítást egyébként végül elhagytam, mert egy ilyen rögzítési rendszernél kiderült, hogy a pajzsok között 40 centiméternek kell lennie, vagyis nem tudtam megtenni a szükséges távolságot (tíz méternél többet).

Egy koreai iskolás története, aki díjat kapott a minisztériumtól egy sorfigyelő rendszerért

Egy koreai iskolás története, aki díjat kapott a minisztériumtól egy sorfigyelő rendszerért

Az összes kapcsoló csatlakoztatásához zománchuzalokat használtam - összesen több mint 70 métert vettek igénybe! Mindegyik pajzs közepén egy membránkapcsolót helyeztem el. Két kapocs állt ki az oldalsó nyílásokból - a kapcsoló bal és jobb oldalán.

Nos, a vízszigeteléshez elektromos szalagot használtam. Sok elektromos szalag.

És minden működött!

November ötödikétől december tizenkettedikéig tartó időszak

Egy koreai iskolás története, aki díjat kapott a minisztériumtól egy sorfigyelő rendszerért

Fotó a rendszerről - itt mind az öt pajzs látható. A bal oldalon az elektronika (D1-mini / Bluetooth / RTC)

November XNUMX-én reggel nyolckor (reggeli idő) a rendszer megkezdte az aktuális adatok gyűjtését az ebédlőben kialakult helyzetről. Nem hittem a szememnek. Éppen két hónapja vázoltam fel az általános sémát, otthon ültem pizsamában, és itt vagyunk, az egész rendszer gond nélkül működik... vagy nem.

Szoftverhibák a tesztelés során

Természetesen rengeteg hiba volt a rendszerben. Itt vannak, akikre emlékszem.

A program nem ellenőrizte az elérhető Wi-Fi-pontokat, amikor megpróbálta csatlakoztatni az ügyfelet a ThingSpeak API-hoz. A hiba kijavításához hozzáadtam egy további lépést a Wi-Fi elérhetőségének ellenőrzéséhez.

A beállítási funkcióban többször hívtam a „WiFi.begin”-t, amíg meg nem jött a kapcsolat. Később rájöttem, hogy a kapcsolatot az ESP8266 firmware hozza létre, és a start funkciót csak a Wi-Fi beállításakor használjuk. A helyzetet úgy javítottam, hogy a funkciót csak egyszer hívtam meg, a beállítás során.

Rájöttem, hogy az általam létrehozott parancssori felület (az idő beállítására, a hálózati beállítások módosítására volt hivatott) nem működik nyugalmi állapotban (vagyis reggelin, ebéden, vacsorán és délutáni teán kívül). Azt is láttam, hogy ha nem történik naplózás, a belső hurok túlságosan felgyorsul, és a soros adatok túl gyorsan kerülnek beolvasásra. Ezért késleltetést állítottam be, hogy a rendszer megvárja a további parancsok érkezését, amikor azok várhatóak.

Óda az őrkutyához

Ja, és még egy dolog a watchdog időzítővel kapcsolatos problémával kapcsolatban - pontosan a tesztelési szakaszban, „terepi” körülmények között oldottam meg. Túlzás nélkül négy napig csak ezen gondolkodtam. Minden szünetben (tíz percig) rohantam a kávézóba, hogy kipróbáljam a kód új verzióját. És amikor megnyílt a terjesztés, egy órát ültem a földön, és próbáltam elkapni a hibát. Nem is gondoltam az ételre! Köszönöm a jó dolgokat, ESP8266 Watchdog!

Hogyan találtam ki a WDT-t

Egy koreai iskolás története, aki díjat kapott a minisztériumtól egy sorfigyelő rendszerért

Kódrészlet, amivel küszködtem

Találtam egy programot, vagy inkább egy kiterjesztést az Arduinohoz, ami Wdt-reset esetén elemzi a szoftver adatszerkezetét, hozzáférve a lefordított kód ELF fájljához (függvények és mutatók közötti összefüggések). Amikor ez megtörtént, kiderült, hogy a hiba az alábbiak szerint hárítható el:

Egy koreai iskolás története, aki díjat kapott a minisztériumtól egy sorfigyelő rendszerért

A fenébe is! Nos, ki tudta, hogy a hibák kijavítása egy valós idejű rendszerben olyan nehéz! A hibát azonban eltávolítottam, és kiderült, hogy hülye hiba. Tapasztalatlanságom miatt írtam egy while ciklust, amiben a tömb túllépett a határokon. Ugh! (az index++ és a ++index két nagy különbség).

Egy koreai iskolás története, aki díjat kapott a minisztériumtól egy sorfigyelő rendszerért

Hardverproblémák a tesztelés során

Persze a felszerelés, vagyis a lábvédők messze nem voltak ideálisak. Ahogy az várható volt, az egyik kapcsoló elakadt.

Egy koreai iskolás története, aki díjat kapott a minisztériumtól egy sorfigyelő rendszerért

November XNUMX-én, ebéd közben beragadt a kapcsoló a harmadik panelen

Fentebb egy képernyőképet nyújtottam a ThingSpeak webhelyről származó online diagramról. Mint látható, 12:25 körül történt valami, ami után a harmadik számú pajzs megbukott. Ennek eredményeként a sor hossza 3 volt (az érték 3 * 100), még akkor is, ha valójában nem érte el a harmadik pajzsot. A javítás az volt, hogy több párnázást (igen, ragasztószalagot) tettem hozzá, hogy több hely legyen a kapcsolónak.

Néha a rendszerem szó szerint gyökerestül kiszakadt, amikor a vezeték beakadt az ajtóba. A kocsikat és csomagokat ezen az ajtón keresztül vitték be az ebédlőbe úgy, hogy az vitte magával a vezetéket, zárva és kihúzva a konnektorból. Ilyenkor váratlan meghibásodást észleltem az adatáramlásban, és sejtettem, hogy a rendszer le van választva az áramforrásról.

A rendszerrel kapcsolatos információk terjesztése az egész iskolában

Mint már említettük, a ThingSpeak API-t használtam, amely grafikonok formájában jeleníti meg az oldalon található adatokat, ami nagyon kényelmes. Általánosságban elmondható, hogy csak egy linket tettem közzé az órarendemhez az iskola Facebook-csoportjában (fél óráig kerestem ezt a bejegyzést, de nem találtam - nagyon furcsa). De találtam egy bejegyzést a Bandomon, egy iskolai közösségen, 2017. november XNUMX-én:

Egy koreai iskolás története, aki díjat kapott a minisztériumtól egy sorfigyelő rendszerért

Egy koreai iskolás története, aki díjat kapott a minisztériumtól egy sorfigyelő rendszerért

A reakció vad volt!

Azért tettem közzé ezeket a bejegyzéseket, hogy felkeltsem az érdeklődést a projektem iránt. Azonban már csak ránézésre is elég szórakoztató önmagában. Mondjuk itt jól látszik, hogy 6:02-nél meredeken megugrott a létszám és 6:10-re gyakorlatilag nullára esett.

Egy koreai iskolás története, aki díjat kapott a minisztériumtól egy sorfigyelő rendszerért Egy koreai iskolás története, aki díjat kapott a minisztériumtól egy sorfigyelő rendszerért

Fent csatoltam néhány grafikont, amelyek az ebédre és a délutáni teára vonatkoznak. Érdekesség, hogy az ebédidőben a terhelés csúcsa szinte mindig 12:25-kor következett be (a sor az ötödik pajzsig ért). A délutáni uzsonnára pedig általában nem jellemző a nagy tömeg (legfeljebb egy tábla hosszú a sor).

Tudod mi a vicces? Ez a rendszer még mindig él (https://thingspeak.com/channels/346781)! Beléptem a korábban használt fiókba, és ezt láttam:

Egy koreai iskolás története, aki díjat kapott a minisztériumtól egy sorfigyelő rendszerért

A fenti grafikonon azt láttam, hogy december harmadikán lényegesen kisebb volt a beáramlás. És nem csoda – vasárnap volt. Ezen a napon szinte mindenki elmegy valahova, mert a legtöbb esetben csak vasárnap lehet elhagyni az iskola területét. Egyértelmű, hogy a hétvégén egy élő lelket sem fogsz látni a kávézóban.

Hogyan kaptam meg az első díjat a Koreai Oktatási Minisztériumtól a projektemért

Amint maga is láthatja, nem azért dolgoztam ezen a projekten, mert valamiféle díjat vagy elismerést próbáltam kiérdemelni. Csak arra akartam használni a képességeimet, hogy megoldjak egy krónikus problémámat, amellyel az iskolában szembesültem.

Iskolai táplálkozási szakértőnk, Miss O, akivel a projektem tervezése és fejlesztése közben kerültem nagyon közeli kapcsolatba, egy nap megkérdezte, ismerek-e egy cafeteria ötletpályázatot. Aztán arra gondoltam, hogy valami furcsa ötlet összehasonlítani az étkezővel kapcsolatos ötleteket. De elolvastam a tájékoztatót és megtudtam, hogy november 24-ig kell leadni a projektet! Hát hát. Gyorsan elkészítettem a koncepciót, az adatokat és a grafikát, és elküldtem a pályázatot.

Változások a verseny eredeti ötletében

Egyébként a rendszer, amelyet végül javasoltam, kissé eltér a már megvalósítotttól. Lényegében az eredeti módszeremet (a sorhossz valós idejű mérése) sokkal nagyobb koreai iskolákra adaptáltam. Összehasonlításképpen: a mi iskolánkban háromszáz diák jár, máshol meg ennyi ember csak egy osztályban! Ki kellett találnom, hogyan méretezhetem a rendszert.

Ezért olyan koncepciót javasoltam, amely inkább a „kézi” vezérlésen alapul. Napjainkban a koreai iskolákban már minden osztályra bevezettek egy étkezési tervet, amit szigorúan be is tartanak, ezért egy másik „jel-válasz” típusú keretrendszert építettem fel. Az ötlet az volt, hogy amikor az előtted lévő kávézóba látogató csoport elér egy bizonyos határt a vonal hosszában (vagyis a sor rövid lett), akkor manuálisan jelet küldenek neked egy gomb vagy a fali kapcsoló segítségével. . A jel a TV képernyőjére vagy LED-izzókon keresztül kerül továbbításra.

Csak nagyon szerettem volna egy olyan problémát megoldani, ami az ország összes iskolájában felmerült. Még jobban megerősödött a szándékom, amikor hallottam egy történetet Miss O-tól – most elmondom. Kiderült, hogy néhány nagy iskolában télen is húsz-harminc méterre az utcára húzódik a sor a büfén túl, mert senki sem tudja rendesen megszervezni a folyamatot. És néha előfordul, hogy néhány percig egyáltalán nem jelenik meg senki az étkezőben - és ez is rossz. A nagy tanulólétszámú iskolákban a személyzetnek alig van ideje mindenkit kiszolgálni, még akkor sem, ha az étkezésből egyetlen perc sem vész el. Ezért az utolsóként érkezőknek (általában általános iskolásoknak) egyszerűen nincs ideje enni.

Így bár sietve kellett benyújtanom a jelentkezésemet, nagyon alaposan átgondoltam, hogyan tudnám szélesebb körű felhasználásra adaptálni.

Üzenet, hogy megnyertem az első díjat!

Röviden: meghívtak, hogy jöjjek el, és mutassam be a projektemet a kormányzati tisztviselőknek. Tehát minden Power Point tehetségemet munkába állítottam, és eljöttem és bemutattam!

Egy koreai iskolás története, aki díjat kapott a minisztériumtól egy sorfigyelő rendszerért

Az előadás kezdete (bal szélső – miniszter)

Érdekes élmény volt – csak kitaláltam valamit a cafeteria problémára, és valahogy a verseny győztesei közé kerültem. Még a színpadon állva is az járt a fejemben: „Hmm, mit keresek én itt?” De általában véve ez a projekt nagy hasznot hozott számomra - sokat tanultam a beágyazott rendszerek fejlesztéséről és a projektek valós életben való megvalósításáról. Nos, természetesen díjat kaptam.

Következtetés

Van itt némi irónia: hiába vettem részt mindenféle versenyen, tudományos vásáron, amelyre céltudatosan jelentkeztem, semmi jó nem lett belőle. Aztán a lehetőség rám talált, és jó eredményeket hozott.

Ez arra késztetett, hogy elgondolkodjak, milyen okok motiválnak arra, hogy projekteket vállaljak. Miért kezdjek el dolgozni - hogy „nyerjek”, vagy hogy megoldjak egy valós problémát a körülöttem lévő világban? Ha a második motívum működik az Ön esetében, határozottan arra bátorítom, hogy ne hagyja fel a projektet. Ezzel az üzleti megközelítéssel váratlan lehetőségekkel találkozhat az út során, és nem fog nyomást érezni a győzelem szükségessége miatt – a fő motivációja a vállalkozás iránti szenvedély lesz.

És ami a legfontosabb: ha sikerül egy tisztességes megoldást megvalósítania, azonnal kipróbálhatja a való világban. Az én esetemben a platform egy iskola volt, de idővel gyűlnek a tapasztalatok, és ki tudja - talán az egész ország, vagy akár az egész világ fogja használni az alkalmazását.

Valahányszor erre az élményre gondolok, büszke vagyok magamra. Nem tudom megmagyarázni, hogy miért, de a projekt megvalósításának folyamata egyszerűen nagy örömet okozott számomra, és a nyeremény további bónusz volt. Ezen kívül örültem, hogy osztálytársaimnak sikerült megoldanom egy olyan problémát, ami nap mint nap tönkretette az életüket. Egy nap odajött hozzám az egyik diák, és azt mondta: „Nagyon kényelmes a rendszere.” A hetedik mennyországban voltam!
Azt hiszem, díjak nélkül is büszke lennék a fejlődésemre, egyedül ezért. Talán a másokon való segítés okozott olyan elégedettséget... általában szeretem a projekteket.

Amit reméltem ezzel a cikkel elérni

Remélem, hogy ennek a cikknek a végéig történő elolvasásával ihletet kap arra, hogy valami olyasmit tegyen, ami a közössége vagy akár csak önmaga javára válik. Arra biztatlak, hogy használd készségeidet (a programozás minden bizonnyal ezek közé tartozik, de vannak mások is), hogy jobbá változtasd a körülötted lévő valóságot. Biztosíthatom Önöket, hogy a folyamat során szerzett tapasztalatok semmi máshoz nem hasonlíthatók.

Olyan utakat is nyithat, amelyekre nem számított – ez történt velem. Tehát kérlek, tedd azt, amit szeretsz, és tedd nyomot a világra! Egyetlen hang visszhangja megrázhatja az egész világot, ezért higgy magadban.

Íme néhány link a projekttel kapcsolatban:

Forrás: will.com

Hozzászólás