Die Geschichte eines koreanischen Studenten, der vom Ministerium einen Preis für ein Warteschlangenüberwachungssystem erhalten hat

Als ich in der Grundschule in der High School war (von März bis Dezember 2016), war ich sehr verärgert über die Situation, die sich in unserer Schulcafeteria entwickelte.

Problem eins: Warten auf Warteschlange zu lang

Welches Problem habe ich beobachtet? Hier ist einer:



Viele Studenten sammelten sich bei der Verteilung und mussten lange stehen (fünf bis zehn Minuten). Natürlich ist dies ein häufiges Problem und ein faires Service-Schema: Je später Sie ankommen, desto später werden Sie bedient. So können Sie verstehen, warum Sie warten müssen.

Problem zwei: Ungleiche Bedingungen für das Warten

Aber das war natürlich nicht alles, ich musste ein weiteres ernstes Problem beobachten. So ernst, dass ich mich letztendlich entschlossen habe, einen Ausweg aus der Situation zu finden. Schüler (dh jeder, der mindestens eine Klasse höher studiert) und Lehrer gingen zur Verteilung, ohne Schlange zu stehen. Ja, ja, und Sie als Grundschüler konnten ihnen nichts sagen. Unsere Schule hatte eine ziemlich strenge Politik bezüglich der Beziehungen zwischen den Klassen.

Deshalb kamen meine Freunde und ich als Neuankömmlinge gleich ins Esszimmer, um etwas zu essen zu holen - und dann erschienen Schüler oder Lehrer und stießen uns einfach weg (einige, die freundlicher waren, erlaubten uns, an unserem Platz in der Warteschlange zu bleiben). Wir mussten noch fünfzehn bis zwanzig Minuten warten, obwohl wir früher ankamen als alle anderen.

Wir hatten besonders schlechte Mittagspause. Während des Tages stürmten absolut alle (Lehrer, Schüler, Mitarbeiter) in den Speisesaal, so dass wir als Schüler der Mittelstufe nie eine Freude hatten.

Gemeinsame Lösungen

Da die Neuankömmlinge jedoch keine andere Wahl hatten, hatten wir zwei Möglichkeiten, um das Risiko zu verringern, dass wir ans Ende der Reihe geworfen werden. Das erste ist, sehr früh in den Speisesaal zu kommen (das heißt, bevor das Essen überhaupt serviert wird). Die zweite Möglichkeit besteht darin, die Zeit gezielt bei einem Tischtennis oder Basketball zu töten und mit großer Verspätung zu kommen (zwanzig Minuten nach Beginn des Abendessens).

Bis zu einem gewissen Grad hat dies funktioniert. Aber ehrlich gesagt war niemand bestrebt, mit all seinen Beinen in den Speisesaal zu eilen, nur um essen zu können oder die Reste aufzuessen, die übrig blieben, weil er zu den letzteren gehörte. Wir brauchten eine Lösung, die uns wissen lässt, wenn nur wenige Personen im Speisesaal sind.

Es wäre großartig, wenn ein Wahrsager uns die Zukunft vorhersagen und genau sagen würde, wann wir ins Esszimmer gehen sollen, damit wir nicht lange warten müssen. Das Problem war, dass sich jeden Tag alles anders entwickelte. Wir konnten die Muster nicht einfach analysieren und den besten Moment identifizieren. Wir hatten nur einen Weg, um herauszufinden, wie die Dinge im Speisesaal laufen - zu Fuß dorthin zu gelangen. Je nachdem, wo Sie sich befinden, kann der Weg mehrere hundert Meter lang sein. Wenn du also kommst, sieh dir die Linie an, komm zurück und mache so lange weiter, bis sie kurz wird, wirst du viel Zeit verlieren. Im Allgemeinen lebte die Grundschulklasse widerlich, und nichts konnte dagegen unternommen werden.

Eureka - die Idee, ein Kantinenüberwachungssystem zu schaffen

Und plötzlich, bereits im nächsten Studienjahr (2017), sagte ich mir: „Was ist, wenn wir ein System erstellen, das die Länge der Warteschlange in Echtzeit anzeigt (dh einen Stau identifiziert)?“ Wenn es mir gelingen würde, würde das Bild so aussehen: Grundschüler sehen sich nur das Telefon an, um die neuesten Daten zur aktuellen Arbeitsbelastung zu erhalten, und ziehen Schlussfolgerungen, ob es jetzt Sinn macht, fortzufahren.

Im Wesentlichen hat dieses Schema die Ungleichheit durch den Zugang zu Informationen geglättet. Mit ihrer Hilfe könnten die jungen Schüler entscheiden, was sie am besten können - sie könnten sich anstellen (wenn es nicht zu lang ist) oder Zeit mit größerem Nutzen verbringen und später einen geeigneteren Moment wählen. Ich war sehr aufgeregt über diesen Gedanken.

Entwerfen eines Esszimmerüberwachungssystems


Im September 2017 musste ich ein Projekt für einen objektorientierten Programmierkurs einreichen, und ich erklärte dieses System als mein Projekt.



Erster Systemplan (September 2017)

Hardware-Auswahl (Oktober 2017)



Einfacher Tastschalter mit Pull-Up-Widerstand. Ein Stromkreis mit fünf Abschirmungen in drei Reihen, um eine Leitung in drei Reihen zu erkennen

Ich bestellte nur fünfzig Membranschalter, eine Wemos D1-Minikarte auf Basis des ESP8266 sowie mehrere Ringklemmen, an denen ich Lackdrähte anbringen wollte.

Prototyping und Entwicklung (Oktober 2017)

Ich habe mit dem Steckbrett angefangen - eine Schaltung darauf aufgebaut und getestet. Ich war in der Menge der Materialien begrenzt, also beschränkte ich mich auf ein System mit fünf Trittbrettern.

Für die Software, die ich in C ++ geschrieben habe, habe ich folgende Ziele festgelegt:

  1. Arbeiten Sie ununterbrochen und senden Sie Daten nur in den Zeiträumen, in denen das Essen serviert wird (Frühstück, Mittagessen, Abendessen, Nachmittagssnack).
  2. Erkennen Sie die Situation mit den Warteschlangen- / Verkehrsstaus im Speisesaal bei solchen Frequenzen, damit die Daten dann in maschinellen Lernmodellen (z. B. 10 Hz) verwendet werden können.
  3. Senden Sie Daten auf effiziente Weise (die Paketgröße sollte klein sein) und in kurzen Intervallen an den Server.

Um sie zu erreichen, musste ich Folgendes tun:

  1. Verwenden Sie das RTC-Modul (Real Time Clock), um die Uhrzeit kontinuierlich zu überwachen und die Uhrzeit zu bestimmen, zu der die Mahlzeiten im Speisesaal serviert werden.
  2. Verwenden Sie die Datenkomprimierungsmethode, um den Status des Schilds in einem Zeichen zu registrieren. Ich behandelte die Daten als binären fünfstelligen Code und band verschiedene Werte an ASCII-Zeichen, so dass sie Datenelemente darstellten.
  3. Verwenden Sie ThingSpeak (IoT-Tool für Analysen und Online-Grafiken), und senden Sie HTTP-Anforderungen mithilfe der POST-Methode.

Natürlich gab es einige Fehler. Ich wusste beispielsweise nicht, dass der Operator sizeof () den Wert 4 für das Objekt char * und nicht die Länge der Zeichenfolge zurückgibt (da es sich nicht um ein Array handelt und der Compiler die Länge dementsprechend nicht berechnet), und war sehr überrascht, warum meine HTTP-Anforderungen nur vier Zeichen enthalten von der ganzen url!

Außerdem habe ich die Klammern nicht in das Stadium #define gesetzt, was zu unerwarteten Ergebnissen führte. Sagen wir mal:

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

Hier wäre zu erwarten, dass A gleich 3 ist (10/3 = 3), aber tatsächlich wurde es anders berechnet: 2 (2 * 5/3 = 2).

Ein weiterer bemerkenswerter Fehler, den ich behoben habe, ist das Zurücksetzen auf einen Watchdog. Mit diesem Problem habe ich sehr lange gelitten. Wie sich später herausstellte, habe ich versucht, falsch auf die Registrierung auf niedriger Ebene des ESP8266-Chips zuzugreifen (ich habe versehentlich einen NULL-Wert für einen Zeiger auf eine Struktur registriert).



Das Trittbrett, das ich entworfen und montiert habe. Zum Zeitpunkt der Aufnahme hatte er das Trampeln bereits fünf Wochen überstanden

Hardware (Trittbretter)

Damit die Schilde die harten Essensbedingungen überstehen können, habe ich folgende Anforderungen an sie gestellt:

  • Schilde müssen stark genug sein, um das menschliche Gewicht konstant zu tragen.
  • Die Schilde sollten dünn sein, um die Personen in der Warteschlange nicht zu stören.
  • Der Schalter muss immer in der Offensive funktionieren.
  • Schilde müssen wasserdicht sein. Der Speisesaal ist immer feucht.

Um diesen Anforderungen gerecht zu werden, entschied ich mich für ein zweischichtiges Design - das Laserschneiden von Acrylglas erfolgte auf der Basis und der oberen Abdeckung und ich verwendete Korkmaterial als Schutzschicht.

Das Layout des Schildes habe ich in AutoCAD erstellt; Größen - 400 x 400 Millimeter.



Auf der linken Seite ist das Design, das zur Arbeit ging. Rechts ist die Option mit einer Lego-Verbindung

Übrigens habe ich mich letztendlich gegen das richtige Design gewehrt, weil sich bei einem solchen Befestigungssystem herausgestellt hat, dass zwischen den Schilden 40 Zentimeter sein sollten, was bedeutet, dass ich den erforderlichen Abstand (über zehn Meter) nicht zurücklegen konnte.





Um alle Schalter anzuschließen, habe ich Lackdrähte verwendet - sie haben alle mehr als 70 Meter gedauert! In der Mitte jedes Schildes platzierte ich einen Membranschalter. Zwei Clips ragten aus den seitlichen Schlitzen nach außen, links und rechts vom Schalter.

Aus Gründen der Wasserdichtigkeit habe ich Isolierband verwendet. Viel elektrisches Klebeband.

Und es hat alles geklappt!


Der Zeitraum vom fünften November bis zum zwölften Dezember



Foto des Systems - hier sind alle fünf Schilde sichtbar. Links ist die Elektronik (D1-mini / Bluetooth / RTC)

Am 5. November, um acht Uhr morgens (Frühstückszeit), begann das System, aktuelle Daten zur Situation im Speisesaal zu sammeln. Ich konnte meinen Augen nicht trauen. Vor ungefähr zwei Monaten skizzierte ich das allgemeine Schema, als ich zu Hause im Schlafanzug saß, und jetzt funktioniert das ganze System ohne Probleme ohne Probleme ... oder auch nicht.

Fehler mit der Software während des Testens

Natürlich gab es genug Bugs im System. Hier sind die, an die ich mich erinnere.

Das Programm hat beim Versuch, den Client mit der ThingSpeak-API zu verbinden, nicht nach verfügbaren Wi-Fi-Punkten gesucht. Um den Fehler zu beheben, habe ich als zusätzlichen Schritt eine WLAN-Verfügbarkeitsprüfung hinzugefügt.

In der Setup-Funktion habe ich ständig "WiFi.begin" aufgerufen, bis eine Verbindung hergestellt wurde. Später stellte ich fest, dass die ESP8266-Firmware die Verbindung installiert und die Startfunktion nur beim Einrichten von Wi-Fi verwendet wird. Ich habe die Situation korrigiert, indem ich die Funktion während des Setups nur einmal aufgerufen habe.

Ich habe festgestellt, dass die von mir erstellte Befehlszeilenschnittstelle (zum Festlegen der Uhrzeit und zum Ändern der Netzwerkeinstellungen) im Ruhezustand nicht funktioniert (dh außerhalb von Frühstück, Mittagessen, Abendessen und Nachmittagsimbiss). Ich habe auch gesehen, dass, wenn keine Protokollierung stattfindet, die interne Schleife übermäßig beschleunigt wird und serielle Daten zu schnell gelesen werden. Aus diesem Grund habe ich eine Verzögerung festgelegt, damit das System darauf wartet, dass zusätzliche Befehle eintreffen, wenn sie erwartet werden.

Ode an den Wachhund

Und, und danach über das Problem mit dem Watchdog-Timer - ich habe es in der Testphase unter "Feldbedingungen" entschieden. Ohne zu übertreiben habe ich nur vier Tage darüber nachgedacht. Jede Pause (zehn Minuten) eilte ich ins Esszimmer, um die neue Version des Codes auszuprobieren. Und als sich die Distribution öffnete, saß ich eine Stunde lang auf dem Boden und versuchte, einen Käfer zu fangen. Ich habe nicht an Essen gedacht! Vielen Dank für den guten Watchdog-Timer ESP8266!

Wie ich mit WDT umgegangen bin



Ein Codeausschnitt, über den ich gestritten habe

Ich fand ein Programm oder vielmehr eine Erweiterung für Arduino, die die Datenstruktur von Software analysiert, wenn ein Wdt-Reset auftritt, und sich dabei auf die ELF-Datei des kompilierten Codes bezieht (Korrelation zwischen Funktionen und Zeigern). Dabei stellte sich heraus, dass der Fehler wie folgt behoben werden kann:



Was zur Hölle! Nun, wer wusste, dass das Beheben von Fehlern in einem Echtzeitsystem so schwierig ist! Trotzdem habe ich den Bug entfernt und es stellte sich heraus, dass es ein dummer Bug war. Aus Unerfahrenheit schrieb ich eine while-Schleife, in der das Array die Grenzen überschritt. Puh! (index ++ und ++ index sind zwei große Unterschiede).



Hardwareprobleme im Test

Natürlich war die Ausstattung, das heißt die Trittbretter, alles andere als ideal. Wie erwartet steckte einer der Schalter fest.



Am 7. November, während des Mittagessens, blieb der Schalter am dritten Schild hängen

Oben habe ich einen Screenshot eines Online-Diagramms von der ThingSpeak-Website gegeben. Wie Sie sehen können, passierte etwas um 12:25 Uhr, woraufhin Schild Nummer drei außer Betrieb ging. Infolgedessen wurde die Warteschlangenlänge als 3 definiert (der Wert ist 3 * 100), auch wenn sie tatsächlich den dritten Schild nicht erreicht hat. Das Problem wurde behoben, indem ich mehr Futter (ja, Isolierband) hinzufügte, um den Schalter geräumiger zu machen.

Manchmal wurde mein System buchstäblich entwurzelt, wenn ein Draht an einer Tür klebte. Durch diese Tür wurden Trolleys in den Speisesaal transportiert, und Pakete wurden hereingebracht. Sie trug den Draht hinter sich, schloss ihn und zog ihn aus dem Schlitz. In solchen Fällen bemerkte ich einen unerwarteten Fehler beim Empfang von Daten und vermutete, dass das System von der Stromquelle getrennt war.

Verbreitung des Schulsystems

Wie bereits erwähnt, habe ich die ThingSpeak-API verwendet, die die Daten auf der Site in Form von Diagrammen darstellt, was sehr praktisch ist. Im Allgemeinen habe ich gerade den Link zu meinem Stundenplan an die Schulgruppe auf Facebook geworfen (ich habe diesen Beitrag eine halbe Stunde lang gesucht und nicht gefunden - es ist sehr seltsam). Aber dann fand ich einen Beitrag in meiner Band, der Schulgemeinschaft, vom 5. November 2017:





Die Reaktion war stürmisch!

Ich habe diese Posts gepostet, um das Interesse an meinem Projekt zu wecken. Es ist jedoch ziemlich unterhaltsam, sie nur an sich zu betrachten. Angenommen, es ist hier deutlich zu erkennen, dass die Anzahl der Personen um 6:02 Uhr stark sprang und um 6:10 Uhr fast auf Null sank.



Oben habe ich ein paar Zeitpläne angehängt, die sich auf die Mittagspause und den Nachmittagstee beziehen. Es ist interessant festzustellen, dass die maximale Überlastung zur Mittagszeit fast immer um 12:25 Uhr abfiel (die Warteschlange erreichte den fünften Schild). Und für einen Nachmittagssnack ist eine große Ansammlung von Menschen im Allgemeinen untypisch (die Warteschlange ist maximal ein Schild lang).

Weißt du was lustig ist? Dieses System lebt noch (https://thingspeak.com/channels/346781)! Ich habe mich in das Konto eingeloggt, das ich zuvor benutzt habe und sah Folgendes:



In der obigen Grafik habe ich gesehen, dass der Zustrom von Menschen am 3. Dezember deutlich geringer ist. Und kein Wunder - es war Sonntag. An diesem Tag geht fast jeder irgendwohin, denn in den meisten Fällen kann man das Schulgelände nur sonntags verlassen. Es ist klar, dass Sie am Wochenende im Speisesaal keine lebende Seele sehen werden.

Wie ich für mein Projekt den ersten Preis des koreanischen Bildungsministeriums erhielt


Wie Sie selbst sehen konnten, habe ich nicht an diesem Projekt gearbeitet, weil ich versucht habe, eine Auszeichnung oder Anerkennung zu verdienen. Ich wollte nur meine Fähigkeiten einsetzen, um das chronische Problem zu lösen, auf das ich in der Schule gestoßen bin.

Unsere Ernährungsberaterin in der Schule, Miss O, mit der ich bei der Planung und Entwicklung meines Projekts eng zusammen war, fragte mich einmal, ob ich von einem Wettbewerb für Ideen für das Esszimmer wüsste. Dann hielt ich es für eine seltsame Idee - Ideen für das Esszimmer zu messen. Aber ich habe die Informationsbroschüre gelesen und festgestellt, dass das Projekt vor dem 24. November eingereicht werden muss! Na ja Ich erinnerte mich schnell an das Konzept, die Daten und die Grafiken und schickte eine Bewerbung.

Änderungen an der ursprünglichen Idee für den Wettbewerb

Das System, das ich am Ende vorgeschlagen habe, war übrigens etwas anders als das bereits implementierte. Tatsächlich habe ich meine ursprüngliche Methode (Messung der Warteschlangenlänge in Echtzeit) für wesentlich größere koreanische Schulen angepasst. Zum Vergleich: In unserer Schule gibt es dreihundert Schüler, und in einigen anderen lernen so viele Menschen in nur einer Klasse! Ich musste verstehen, wie man das System skaliert.

Daher schlug ich ein Konzept vor, das mehr auf manueller Steuerung basiert. Heutzutage haben koreanische Schulen bereits die Reihenfolge des Essens für alle Klassen eingeführt, die strikt eingehalten wird. Deshalb habe ich ein weiteres Framework vom Typ "Signal-Response" erstellt. Es wurde angenommen, dass die Gruppe, die den Speisesaal vor Ihnen besucht, eine bestimmte Grenze in der Warteschlangenlänge erreicht (dh die Warteschlange wird kurz), Ihnen manuell ein Signal mit der Taste oder dem Schalter an der Wand sendet. Das Signal wird auf den Fernsehbildschirm oder über LED-Lampen übertragen.

Ich wollte nur wirklich das Problem lösen, das in allen Schulen des Landes auftrat. Ich wurde in meiner Absicht noch stärker, als ich von Miss O einer Geschichte hörte - ich erzähle es Ihnen jetzt. Es stellt sich heraus, dass in einigen großen Schulen die Linie über die Cafeteria hinaus auf die Straße geht, auch im Winter 20 bis 30 Meter, weil niemand den Prozess richtig bauen kann. Und manchmal kommt es vor, dass für ein paar Minuten niemand im Esszimmer auftaucht - und das ist auch schlimm. In Schulen mit einer großen Anzahl von Schülern schaffen es die Mitarbeiter kaum, alle zu bedienen, auch wenn nicht eine Minute der für das Essen vorgesehenen Zeit verschwindet. Daher haben diejenigen, die sich der Verteilung durch das allerletzte nähern (normalerweise sind dies Grundschüler), einfach nicht genug Zeit zum Essen.

Obwohl ich meine Bewerbung in Eile einreichen musste, habe ich mir dennoch sehr genau überlegt, wie ich sie für eine breitere Verwendung anpassen kann.

Die Nachricht, dass ich den ersten Preis gewonnen habe!

Kurz gesagt, ich wurde eingeladen, mein Projekt bei Regierungsbeamten einzureichen. Also habe ich alle meine Talente im Bereich Power Point gespannt, kam und präsentierte!



Beginn der Präsentation (ganz links - Minister)

Es war eine interessante Erfahrung - ich habe mir gerade etwas für das Stolov-Problem ausgedacht und bin irgendwie zu den Gewinnern des Wettbewerbs gekommen. Selbst als ich auf der Bühne stand, dachte ich immer wieder: "Hmm, was mache ich hier?" Aber im Allgemeinen hat dieses Projekt mir großen Nutzen gebracht - ich habe viel über die Entwicklung eingebetteter Systeme und die Umsetzung von Projekten im wirklichen Leben gelernt. Nun, ich habe den Preis natürlich bekommen.

Fazit


Hier gibt es eine gewisse Ironie: Egal wie oft ich an Wettbewerben und wissenschaftlichen Messen teilgenommen habe, für die ich mich gezielt angemeldet habe, es ist nichts Gutes dabei herausgekommen. Und hier hat die Gelegenheit mich selbst gefunden und gute Ergebnisse gebracht.

Ich musste über die Gründe nachdenken, aus denen ich Projekte aufnahm. Warum fange ich an zu arbeiten - um zu „gewinnen“ oder um ein Problem zu lösen, das wirklich in der Welt um uns herum existiert? Wenn das zweite Motiv in Ihrem Fall zutrifft, fordere ich Sie auf, das Projekt nicht aufzugeben. Bei dieser Herangehensweise an das Geschäft stoßen Sie möglicherweise auf unerwartete Chancen, und Sie spüren nicht den Druck, gewinnen zu müssen. Ihr Hauptmotivator wird die Hingabe für Ihre Arbeit sein.

Und das Wichtigste: Wenn Sie es schaffen, eine anständige Lösung zu implementieren, können Sie diese sofort in der realen Welt ausprobieren. In meinem Fall wurde die Schule zur Plattform, aber die Erfahrung sammelt sich mit der Zeit und wer weiß - vielleicht wird Ihr ganzes Land oder sogar die ganze Welt Ihre Bewerbung nutzen.

Jedes Mal, wenn ich mich an diese Erfahrung erinnere, scheine ich sogar stolz auf mich zu sein. Ich kann nicht erklären, warum, aber der Projektdurchführungsprozess hat mir einfach große Freude bereitet, und der Preis war ein zusätzlicher Bonus. Außerdem freute ich mich, dass ich für Klassenkameraden ein Problem lösen konnte, das ihr tägliches Leben verdarb. Einmal kam einer der Studenten auf mich zu und sagte: "Es ist sehr praktisch mit Ihrem System." Ich war im siebten Himmel!
Ich denke, dass ich auch ohne Auszeichnungen schon allein auf diese Entwicklung stolz sein würde. Vielleicht hat mir diese Hilfe für andere solche Befriedigung gebracht ... im Allgemeinen liebe ich Projekte.

Was ich mir mit diesem Artikel erhofft habe

Ich hoffe, dass Sie, nachdem Sie meinen Artikel bis zum Ende gelesen haben, inspiriert sind, etwas zu tun, das Ihrer Gemeinde oder sogar nur Ihnen zugute kommt. Ich fordere Sie dringend auf, Ihre Fähigkeiten zu nutzen (Programmierung gilt natürlich auch für sie, aber es gibt auch andere), um die umgebende Realität zum Besseren zu verändern. Ich kann Ihnen versichern, dass die Erfahrung, die Sie dabei machen werden, mit nichts zu vergleichen ist.

Es kann sich auch öffnen, bevor Sie Pfade, die Sie überhaupt nicht erwartet haben - es ist mir passiert. Also frage ich dich, mach was du willst und hinterlasse deine Spuren auf der Welt! Echos von einer einzelnen Stimme können die ganze Welt schockieren, also glaube an dich.

Hier sind einige projektbezogene Links:

Source: https://habr.com/ru/post/de482178/


All Articles