Historien om en koreansk skoledreng, der modtog en pris fra ministeriet for et køovervågningssystem

Da jeg gik i mit ungdomsår på gymnasiet (fra marts til december 2016), var jeg meget irriteret over den situation, der udviklede sig i vores skoles cafeteria.

Problem XNUMX: at stå i kø for længe

Hvilket problem observerede jeg? Sådan her:

Historien om en koreansk skoledreng, der modtog en pris fra ministeriet for et køovervågningssystem

En masse elever samledes ved fordelingsområdet, og de skulle stå i lang tid (fem til ti minutter). Dette er naturligvis et almindeligt problem og en fair serviceordning: Jo senere du ankommer, jo senere bliver du betjent. Så du kunne forstå, hvorfor du skulle vente.

Problem to: ulige vilkår for dem, der venter

Men det er selvfølgelig ikke alt, jeg var også nødt til at observere et andet, mere alvorligt problem. Så alvorligt, at jeg endelig besluttede at prøve at finde en vej ud af situationen. Gymnasieelever (det vil sige alle, der læser mindst en klasse højere) og lærere gik til uddelingen uden at stå i kø. Ja, ja, og du kunne som folkeskoleelev ikke fortælle dem noget. Vores skole havde en ret streng politik med hensyn til forholdet mellem klasserne.

Derfor kom mine venner og jeg, mens vi var nybegyndere, til cafeteriet allerførst, var ved at få mad - og så dukkede gymnasieelever eller lærere op og skubbede os simpelthen til side (nogle, som var venligere, gav os lov til at blive i vores plads i køen). Vi måtte vente femten til tyve minutter ekstra, selvom vi ankom tidligere end alle andre.

Vi havde en særlig dårlig tid ved frokosttid. I løbet af dagen skyndte absolut alle sig til cafeteriet (lærere, elever, personale), så for os, som folkeskolebørn, var frokosten aldrig en glæde.

Fælles løsninger på problemet

Men da de nytilkomne ikke havde noget valg, fandt vi på to måder at mindske risikoen for at blive smidt bagerst i rækken. Den første er at komme til spisestuen meget tidligt (det vil sige bogstaveligt talt før maden overhovedet begynder at blive serveret). Den anden er bevidst at dræbe tiden med at spille ping-pong eller basketball og ankomme meget sent (ca. tyve minutter efter starten af ​​frokosten).

Til en vis grad virkede det. Men for at være ærlig, var der ingen, der var ivrige efter at skynde sig så hurtigt, de kunne til spisestuen, bare for at kunne spise, eller for at afslutte de kolde rester efter de andre, for de var blandt de sidste. Vi havde brug for en løsning, der ville fortælle os, når cafeteriet ikke var overfyldt.

Det ville være fantastisk, hvis en eller anden spåkone forudsagde fremtiden for os og fortalte os præcis, hvornår vi skulle gå i spisestuen, så vi ikke skulle vente længe. Problemet var, at hver dag gik alt anderledes. Vi kunne ikke bare analysere mønstre og identificere det søde sted. Vi havde kun én måde at finde ud af, hvordan det stod til i spisestuen – at komme dertil til fods, og stien kunne være flere hundrede meter, alt efter hvor man var. Så hvis du kommer, se på linjen, kom tilbage og fortsæt i samme ånd, indtil den bliver kort, vil du spilde en masse tid. Generelt var livet ulækkert for folkeskolen, og der kunne ikke gøres noget ved det.

Eureka – ideen om at skabe et kantineovervågningssystem

Og pludselig, allerede i det næste akademiske år (2017), sagde jeg til mig selv: "Hvad nu hvis vi laver et system, der viser længden af ​​køen i realtid (det vil sige opdage en trafikprop)?" Hvis det var lykkedes mig, ville billedet have været dette: Folkeskoleelever ville simpelthen kigge på deres telefoner for at få opdaterede data om det aktuelle niveau af arbejdsbyrde og ville drage konklusioner om, hvorvidt det giver mening for dem at gå nu .

I det væsentlige udjævnede denne ordning ulighed gennem adgang til information. Med dens hjælp kunne folkeskolebørn selv vælge, hvad der var bedst for dem at gøre - gå hen og stå i kø (hvis det ikke var for lang tid) eller bruge tiden mere nyttigt og senere vælge et mere passende tidspunkt. Jeg var meget begejstret over denne tanke.

Design af et kantineovervågningssystem

I september 2017 skulle jeg aflevere et projekt til et objektorienteret programmeringsforløb, og dette system indleverede jeg som mit projekt.

Historien om en koreansk skoledreng, der modtog en pris fra ministeriet for et køovervågningssystem

Indledende systemplan (september 2017)

Udvalg af udstyr (oktober 2017)

Historien om en koreansk skoledreng, der modtog en pris fra ministeriet for et køovervågningssystem

En enkel taktil kontakt med en pull-up modstand. Skema med fem skjolde i tre rækker for at genkende køen langs tre linjer

Jeg bestilte kun halvtreds membranafbrydere, et Wemos D1 minikort baseret på ESP8266 og nogle ringklemmer, som jeg planlagde at fastgøre de emaljerede ledninger til.

Prototyping og udvikling (oktober 2017)

Jeg startede med et brødbræt – samlede et kredsløb på det og testede det. Jeg var begrænset i antallet af materialer, så jeg begrænsede mig til et system med fem fodplader.

For den software, jeg skrev i C++, satte jeg følgende mål:

  1. Arbejd kontinuerligt og send kun data i perioder, hvor der serveres mad (morgenmad, frokost, aftensmad, eftermiddagssnack).
  2. Genkend kø-/trafiksituationen i cafeteriet ved sådanne frekvenser, at dataene derefter kan bruges i maskinlæringsmodeller (f.eks. 10 Hz).
  3. Send data til serveren på en effektiv måde (pakkestørrelsen skal være lille) og med korte intervaller.

For at opnå dem var jeg nødt til at gøre følgende:

  1. Brug RTC-modulet (Real Time Clock) til løbende at overvåge tiden og bestemme, hvornår der serveres mad i cafeteriet.
  2. Brug en datakomprimeringsmetode til at registrere skjoldtilstanden i ét tegn. Ved at behandle dataene som en fem-bit binær kode, kortlagde jeg de forskellige værdier til ASCII-tegn, så de repræsenterede dataelementerne.
  3. Brug ThingSpeak (et IoT-værktøj til analyse og online kortlægning) ved at sende HTTP-anmodninger ved hjælp af POST-metoden.

Selvfølgelig var der nogle fejl. For eksempel vidste jeg ikke, at sizeof( )-operatoren returnerer værdien 4 for et char *-objekt og ikke længden af ​​strengen (fordi det ikke er et array, og derfor beregner compileren ikke længden) og var meget overrasket over, hvorfor mine HTTP-anmodninger kun indeholdt fire tegn fra alle URL'er!

Jeg inkluderede heller ikke parenteser i #define-trinnet, hvilket førte til uventede resultater. Nå lad os sige:

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

Her ville man forvente, at A ville være lig med 3 (10 / 3 = 3), men faktisk blev det udregnet anderledes: 2 (2 * 5/ 3 = 2).

Endelig var en anden bemærkelsesværdig fejl, som jeg behandlede, nulstillingen på vagthundtimeren. Jeg kæmpede med dette problem i meget lang tid. Som det viste sig senere, forsøgte jeg at få adgang til lavniveau-registret på ESP8266-chippen på den forkerte måde (ved en fejl indtastede jeg en NULL-værdi for en pegepind til en struktur).

Historien om en koreansk skoledreng, der modtog en pris fra ministeriet for et køovervågningssystem

Et fodskjold, som jeg har designet og bygget. Da billedet blev taget, havde han allerede overlevet fem ugers tramp

Hardware (fodplader)

For at sikre, at skjoldene var i stand til at overleve de barske forhold i kantinen, stillede jeg følgende krav til dem:

  • Skjolde skal til enhver tid være stærke nok til at bære menneskelig vægt.
  • Skjoldene skal være tynde for ikke at forstyrre folk i kø.
  • Kontakten skal aktiveres, når den trædes på.
  • Skjoldene skal være vandtætte. Spisestuen er altid fugtig.

For at opfylde disse krav valgte jeg et to-lags design - laserskåret akryl til bund- og topdækslet og kork som et beskyttende lag.

Jeg lavede skjoldlayoutet i AutoCAD; dimensioner – 400 x 400 millimeter.

Historien om en koreansk skoledreng, der modtog en pris fra ministeriet for et køovervågningssystem

Til venstre ses det design, der gik i produktion. Til højre er en mulighed med en Lego-type forbindelse

Forresten opgav jeg til sidst det højre design, fordi det med sådan et fikseringssystem viste sig, at der skulle være 40 centimeter mellem skjoldene, hvilket betyder, at jeg ikke kunne dække den nødvendige afstand (mere end ti meter).

Historien om en koreansk skoledreng, der modtog en pris fra ministeriet for et køovervågningssystem

Historien om en koreansk skoledreng, der modtog en pris fra ministeriet for et køovervågningssystem

For at forbinde alle kontakter brugte jeg emalje ledninger - i alt tog de mere end 70 meter! Jeg placerede en membrankontakt i midten af ​​hvert skjold. To clips stak ud fra sideslidserne - til venstre og til højre for kontakten.

Nå, til vandtætning brugte jeg elektrisk tape. En masse elektrisk tape.

Og alt fungerede!

Periode fra den femte november til den tolvte december

Historien om en koreansk skoledreng, der modtog en pris fra ministeriet for et køovervågningssystem

Foto af systemet - alle fem skjolde er synlige her. Til venstre ses elektronikken (D1-mini / Bluetooth / RTC)

Den XNUMX. november klokken otte om morgenen (morgenmadstid) begyndte systemet at indsamle aktuelle data om situationen i spisestuen. Jeg kunne ikke tro mine egne øjne. For bare to måneder siden var jeg ved at skitsere den generelle ordning, sad derhjemme i min pyjamas, og her er vi, hele systemet fungerer uden problemer... eller ej.

Softwarefejl under test

Selvfølgelig var der masser af fejl i systemet. Her er dem, jeg husker.

Programmet tjekkede ikke for tilgængelige Wi-Fi-punkter, da det forsøgte at forbinde klienten til ThingSpeak API. For at rette fejlen tilføjede jeg et ekstra trin for at kontrollere tilgængeligheden af ​​Wi-Fi.

I opsætningsfunktionen kaldte jeg gentagne gange "WiFi.begin", indtil en forbindelse dukkede op. Senere fandt jeg ud af, at forbindelsen er etableret af ESP8266 firmwaren, og startfunktionen bruges kun ved opsætning af Wi-Fi. Jeg korrigerede situationen ved kun at kalde funktionen én gang under opsætningen.

Jeg opdagede, at den kommandolinjegrænseflade, jeg oprettede (det var beregnet til at indstille klokkeslættet, ændre netværksindstillinger) ikke fungerer i hvile (det vil sige uden for morgenmad, frokost, middag og eftermiddagste). Jeg så også, at når der ikke sker nogen logning, accelererer den interne sløjfe for meget, og de serielle data læses for hurtigt. Derfor indstiller jeg en forsinkelse, så systemet venter på, at der kommer yderligere kommandoer, når de forventes.

Ode til vagthunden

Åh, og en ting mere om det problem med vagthund-timeren - jeg løste det præcist på teststadiet i "mark"-forhold. Uden overdrivelse var det alt, jeg tænkte på i fire dage. Hver pause (varig ti minutter) skyndte jeg mig til cafeteriet bare for at prøve den nye version af koden. Og da distributionen åbnede, sad jeg på gulvet i en time og prøvede at fange fejlen. Jeg tænkte ikke engang på mad! Tak for alle de gode ting, ESP8266 Watchdog!

Hvordan jeg fandt ud af WDT

Historien om en koreansk skoledreng, der modtog en pris fra ministeriet for et køovervågningssystem

Kodestykke jeg kæmpede med

Jeg fandt et program, eller rettere sagt en udvidelse til Arduino, der analyserer softwarens datastruktur, når der sker en Wdt-nulstilling, og får adgang til ELF-filen for den kompilerede kode (korrelationer mellem funktioner og pointere). Da dette var gjort, viste det sig, at fejlen kan elimineres som følger:

Historien om en koreansk skoledreng, der modtog en pris fra ministeriet for et køovervågningssystem

For pokker! Nå, hvem vidste, at det var så svært at rette fejl i et realtidssystem! Jeg fjernede dog fejlen, og det viste sig at være en dum fejl. På grund af min uerfarenhed skrev jeg en while-løkke, hvor arrayet gik ud over grænserne. Åh! (indeks++ og ++indeks er to store forskelle).

Historien om en koreansk skoledreng, der modtog en pris fra ministeriet for et køovervågningssystem

Problemer med hardware under test

Selvfølgelig var udstyret, det vil sige fodskjoldene, langt fra ideelt. Som du kunne forvente, sidder en af ​​kontakterne fast.

Historien om en koreansk skoledreng, der modtog en pris fra ministeriet for et køovervågningssystem

Den XNUMX. november, under frokosten, sad kontakten på det tredje panel fast

Ovenfor har jeg givet et skærmbillede af et online-diagram fra ThingSpeak-webstedet. Som du kan se skete der noget omkring klokken 12:25, hvorefter skjold nummer tre svigtede. Som et resultat blev kølængden bestemt til at være 3 (værdien er 3 * 100), selv når den faktisk ikke nåede det tredje skjold. Rettelsen var, at jeg tilføjede mere polstring (ja, gaffatape) for at give kontakten mere plads.

Nogle gange blev mit system bogstaveligt talt rykket op med rode, når ledningen blev fanget i døren. Vogne og pakker blev båret gennem denne dør ind i spisestuen, så den førte ledningen med sig, lukkede og trak den ud af stikkontakten. I sådanne tilfælde bemærkede jeg en uventet fejl i datastrømmen og gættede på, at systemet var afbrudt fra strømkilden.

Formidling af information om systemet på hele skolen

Som allerede nævnt brugte jeg ThingSpeak API, som visualiserer data på siden i form af grafer, hvilket er meget praktisk. Generelt har jeg stort set lige lagt et link til min tidsplan i skolens Facebook-gruppe (jeg søgte efter dette indlæg i en halv time og kunne ikke finde det - meget mærkeligt). Men jeg fandt et indlæg på mit Band, et skolefællesskab, dateret 2017. november XNUMX:

Historien om en koreansk skoledreng, der modtog en pris fra ministeriet for et køovervågningssystem

Historien om en koreansk skoledreng, der modtog en pris fra ministeriet for et køovervågningssystem

Reaktionen var vild!

Jeg postede disse indlæg for at vække interesse for mit projekt. Men selv bare at se på dem er ret underholdende i sig selv. Lad os sige, at du tydeligt kan se her, at antallet af personer sprang kraftigt kl. 6:02 og praktisk talt faldt til nul med 6:10.

Historien om en koreansk skoledreng, der modtog en pris fra ministeriet for et køovervågningssystem Historien om en koreansk skoledreng, der modtog en pris fra ministeriet for et køovervågningssystem

Ovenfor har jeg vedhæftet et par grafer, der vedrører frokost og eftermiddagste. Det er interessant at bemærke, at toppen af ​​arbejdsbyrden ved frokosttid næsten altid fandt sted kl. 12:25 (køen nåede det femte skjold). Og til en eftermiddagssnack er det generelt ukarakteristisk at have en stor skare af mennesker (køen er højst et bord lang).

Ved du hvad der er sjovt? Dette system er stadig i live (https://thingspeak.com/channels/346781)! Jeg loggede ind på den konto, jeg brugte før, og så dette:

Historien om en koreansk skoledreng, der modtog en pris fra ministeriet for et køovervågningssystem

På grafen ovenfor så jeg, at den tredje december var tilstrømningen af ​​mennesker markant mindre. Og ikke så mærkeligt – det var søndag. På denne dag går næsten alle et sted hen, for i de fleste tilfælde kun om søndagen kan man forlade skolens område. Det er klart, at du ikke vil se en levende sjæl i cafeteriet i weekenden.

Hvordan jeg modtog førstepræmien fra det koreanske undervisningsministerium for mit projekt

Som du selv kan se, arbejdede jeg ikke på dette projekt, fordi jeg prøvede at tjene en form for pris eller anerkendelse. Jeg ville bare bruge mine evner til at løse et kronisk problem, jeg stod over for i skolen.

Men vores skoleernæringsekspert, Miss O, som jeg blev meget tæt på, mens jeg planlagde og udviklede mit projekt, spurgte mig en dag, om jeg kendte til en konkurrence om cafeteriaideer. Så syntes jeg, det var en eller anden mærkelig idé at sammenligne ideer til spisestuen. Men jeg læste informationshæftet og erfarede, at projektet skal indsendes senest den 24. november! Nå nå. Jeg færdiggjorde hurtigt koncept, data og grafik og sendte ansøgningen.

Ændringer til den oprindelige idé til konkurrencen

I øvrigt var det system, som jeg i sidste ende foreslog, lidt anderledes end det, der allerede var implementeret. I det væsentlige tilpassede jeg min originale metode (måling af kølængde i realtid) til meget større koreanske skoler. Til sammenligning: I vores skole er der tre hundrede elever, og i nogle andre er der så mange mennesker i bare én klasse! Jeg havde brug for at finde ud af, hvordan man skalere systemet.

Derfor foreslog jeg et koncept, der var mere baseret på "manuel" kontrol. I dag har koreanske skoler allerede indført en madplan for alle klasser, som er strengt overholdt, så jeg byggede en anden "signal-respons"-type ramme. Ideen her var, at når gruppen, der besøgte cafeteriet foran dig nåede en vis grænse i længden af ​​køen (det vil sige, køen blev kort), ville de manuelt sende et signal til dig ved hjælp af en knap eller tænde på væggen . Signalet vil blive transmitteret til TV-skærmen eller gennem LED-pærer.

Jeg ville bare rigtig gerne løse et problem, der opstod på alle landets skoler. Jeg blev endnu mere styrket i min hensigt, da jeg hørte en historie fra Miss O - det skal jeg fortælle dig nu. Det viser sig, at i nogle store skoler strækker linjen sig ud over cafeteriet, ind på gaden i tyve til tredive meter, selv om vinteren, fordi ingen kan organisere processen ordentligt. Og nogle gange sker det, at der i flere minutter slet ikke dukker nogen op i spisestuen - og det er også slemt. På skoler med mange elever har personalet knap tid til at betjene alle, selvom der ikke er spildt et eneste minuts spisetid. Derfor har de, der er de sidste, der kommer til uddelingen (normalt folkeskoleelever), simpelthen ikke tid nok til at spise.

Så selvom jeg skulle indsende min ansøgning i en fart, tænkte jeg meget grundigt over, hvordan jeg kunne tilpasse den til bredere brug.

Besked om, at jeg vandt førstepræmien!

Lang historie kort, jeg blev inviteret til at komme og præsentere mit projekt for embedsmænd. Så jeg satte alle mine Power Point-talenter på arbejde og kom og præsenterede!

Historien om en koreansk skoledreng, der modtog en pris fra ministeriet for et køovervågningssystem

Begyndelsen af ​​oplægget (yderst til venstre - minister)

Det var en interessant oplevelse – jeg fandt lige på noget til cafeteriaproblemet, og endte på en eller anden måde blandt vinderne af konkurrencen. Selv da jeg stod på scenen, blev jeg ved med at tænke: "Hmm, hvad laver jeg overhovedet her?" Men generelt gav dette projekt mig store fordele - jeg lærte meget om udvikling af indlejrede systemer og implementering af projekter i det virkelige liv. Nå, jeg modtog selvfølgelig en præmie.

Konklusion

Der er noget ironi her: Uanset hvor meget jeg deltog i alle mulige konkurrencer og videnskabsmesser, som jeg målrettet tilmeldte mig, kom der ikke noget godt ud af det. Og så fandt muligheden mig bare og gav mig gode resultater.

Dette fik mig til at tænke over de grunde, der motiverer mig til at påtage mig projekter. Hvorfor begynder jeg at arbejde - for at "vinde" eller for at løse et reelt problem i verden omkring mig? Hvis det andet motiv virker i dit tilfælde, opfordrer jeg dig kraftigt til ikke at opgive projektet. Med denne tilgang til forretning kan du møde uventede muligheder undervejs og vil ikke føle dig presset fra behovet for at vinde – din primære motivator vil være passion for din virksomhed.

Og vigtigst af alt: Hvis du formår at implementere en anstændig løsning, kan du straks prøve den i den virkelige verden. I mit tilfælde var platformen en skole, men med tiden akkumuleres erfaringer, og hvem ved – måske bliver din ansøgning brugt af hele landet eller endda hele verden.

Hver gang jeg tænker på denne oplevelse, er jeg lidt stolt af mig selv. Jeg kan ikke forklare hvorfor, men processen med at implementere projektet gav mig simpelthen stor fornøjelse, og præmien var en ekstra bonus. Derudover var jeg glad for, at jeg var i stand til at løse for mine klassekammerater et problem, der ødelagde deres liv hver dag. En dag kom en af ​​eleverne hen til mig og sagde: "Dit system er meget praktisk." Jeg var i den syvende himmel!
Jeg tror, ​​at selv uden nogen priser ville jeg føle mig stolt af min udvikling alene for dette. Måske var det at hjælpe andre, der gav mig sådan en tilfredsstillelse... generelt elsker jeg projekter.

Hvad jeg håbede at opnå med denne artikel

Jeg håber, at du ved at læse denne artikel til slutningen er blevet inspireret til at gøre noget, der vil gavne dit samfund eller endda bare dig selv. Jeg opfordrer dig til at bruge dine færdigheder (programmering er bestemt en af ​​dem, men der er andre) til at ændre virkeligheden omkring dig til det bedre. Jeg kan forsikre dig om, at den erfaring, du får i processen, ikke kan sammenlignes med noget andet.

Det kan også åbne op for stier, man ikke havde forventet – det var det, der skete for mig. Så vær venlig, gør hvad du elsker og sæt dit præg på verden! Ekkoet af en enkelt stemme kan ryste hele verden, så tro på dig selv.

Her er nogle links relateret til projektet:

Kilde: www.habr.com

Tilføj en kommentar