Историята на корейски ученик, който получи награда от министерството за система за наблюдение на опашки

Когато бях в прогимназията си (от март до декември 2016 г.), бях много раздразнен от ситуацията, която се разви в столовата на нашето училище.

Проблем първи: чакане на опашка твърде дълго

Какъв проблем забелязах? Като този:

Историята на корейски ученик, който получи награда от министерството за система за наблюдение на опашки

На мястото за раздаване се събраха много ученици, които трябваше да стоят дълго (пет-десет минути). Разбира се, това е често срещан проблем и справедлива схема на обслужване: колкото по-късно пристигнете, толкова по-късно ще ви обслужат. Така че можете да разберете защо трябва да чакате.

Проблем втори: неравни условия за чакащите

Но, разбира се, това не е всичко; трябваше да наблюдавам и друг, по-сериозен проблем. Толкова сериозно, че най-накрая реших да опитам да намеря изход от ситуацията. Гимназисти (тоест всички, които учат поне клас по-високо) и учители отидоха на разпределението без да чакат на опашка. Да, да, и ти като ученик в начален етап не можа да им кажеш нищо. Нашето училище имаше доста строга политика по отношение на взаимоотношенията между класовете.

Затова аз и приятелите ми, докато бяхме новаци, идвахме първо в кафенето, щяхме да вземем храна - и тогава се появяваха гимназисти или учители и просто ни избутваха настрана (някои, които бяха по-любезни, ни позволяваха да останем нашето място на опашката). Трябваше да чакаме допълнително петнадесет до двадесет минути, въпреки че пристигнахме по-рано от всички останали.

Особено зле си прекарахме на обяд. През деня абсолютно всички се втурнаха към кафенето (учители, студенти, персонал), така че за нас, като ученици от началното училище, обядът никога не беше радост.

Общи решения на проблема

Но тъй като новодошлите нямаха избор, ние измислихме два начина да намалим риска от изхвърляне в задната част на линията. Първият е да дойдете в трапезарията много рано (тоест буквално преди храната да започне да се сервира). Второто е да убиете умишлено време в игра на пинг-понг или баскетбол и да пристигнете много късно (около двадесет минути след началото на обяда).

До известна степен се получи. Но, честно казано, никой не беше нетърпелив да се втурне колкото може по-бързо към трапезарията, само за да може да се нахрани или да дояде студените остатъци след другите, защото те бяха от последните. Имахме нужда от решение, което да ни уведоми, когато кафенето не е претъпкано.

Би било чудесно някоя гадателка да ни предскаже бъдещето и да ни каже точно кога да отидем в трапезарията, за да не чакаме дълго. Проблемът беше, че всеки ден всичко се оказваше различно. Не можехме просто да анализираме моделите и да идентифицираме доброто място. Имахме само един начин да разберем как стоят нещата в трапезарията - да стигнем пеша, като пътеката можеше да бъде няколкостотин метра, в зависимост от това къде се намирате. Така че, ако дойдете, погледнете линията, върнете се и продължете в същия дух, докато стане кратка, ще загубите много време. Като цяло животът беше отвратителен за началния клас и нищо не можеше да се направи по въпроса.

Еврика – идеята за създаване на система за мониторинг на столовата

И изведнъж, още през следващата учебна година (2017 г.), си казах: „Ами ако направим система, която ще показва дължината на опашката в реално време (тоест да открие задръстване)?“ Ако бях успял, картината щеше да е следната: учениците от началното училище просто щяха да поглеждат към телефоните си, за да получат актуална информация за текущото ниво на натовареност, и щяха да направят изводи дали има смисъл да ходят сега .

По същество тази схема изглади неравенството чрез достъп до информация. С негова помощ учениците от началното училище можеха сами да изберат какво е най-добре за тях - да отидат и да застанат на опашка (ако не е много дълга) или да прекарат времето си по-полезно, а по-късно да изберат по-подходящ момент. Бях много развълнуван от тази мисъл.

Проектиране на система за мониторинг на столовата

През септември 2017 г. трябваше да изпратя проект за курс по обектно-ориентирано програмиране и подадох тази система като мой проект.

Историята на корейски ученик, който получи награда от министерството за система за наблюдение на опашки

Първоначален системен план (септември 2017 г.)

Избор на оборудване (октомври 2017 г.)

Историята на корейски ученик, който получи награда от министерството за система за наблюдение на опашки

Прост тактилен превключвател с издърпващ резистор. Схема с пет щита в три реда за разпознаване на опашката по три линии

Поръчах само петдесет мембранни превключвателя, мини платка Wemos D1, базирана на ESP8266, и няколко пръстеновидни скоби, към които планирах да прикрепя емайлираните проводници.

Прототипиране и разработка (октомври 2017 г.)

Започнах с макет - сглобих схема на него и го тествах. Бях ограничен в броя на материалите, така че се ограничих до система с пет стъпала.

За софтуера, който написах на C++, си поставих следните цели:

  1. Работете непрекъснато и изпращайте данни само в периодите, когато се сервира храна (закуска, обяд, вечеря, следобедна закуска).
  2. Разпознайте ситуацията на опашката/трафика в кафенето при такива честоти, че данните след това да могат да се използват в модели за машинно обучение (да речем 10 Hz).
  3. Изпращайте данни към сървъра по ефективен начин (размерът на пакета трябва да е малък) и на кратки интервали.

За да ги постигна трябваше да направя следното:

  1. Използвайте модула RTC (часовник в реално време), за да следите непрекъснато времето и да определяте кога се сервира храна в кафенето.
  2. Използвайте метод за компресиране на данни, за да запишете състоянието на екрана с един знак. Третирайки данните като петбитов двоичен код, картографирах различните стойности към ASCII знаци, така че те да представляват елементите на данните.
  3. Използвайте ThingSpeak (инструмент за интернет на нещата за анализи и онлайн диаграми), като изпращате HTTP заявки чрез метода POST.

Разбира се, имаше някои грешки. Например, не знаех, че операторът sizeof() връща стойността 4 за обект char *, а не дължината на низа (защото не е масив и следователно компилаторът не изчислява дължината) и бях много изненадан защо моите HTTP заявки съдържаха само четири знака от всички URL адреси!

Също така не включих скоби в стъпката #define, което доведе до неочаквани резултати. Ами да кажем:

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

Тук може да се очаква, че A ще бъде равно на 3 (10 / 3 = 3), но всъщност е изчислено по различен начин: 2 (2 * 5/ 3 = 2).

И накрая, друга забележителна грешка, с която се занимавах, беше Нулирането на таймера за наблюдение. Борих се с този проблем много дълго време. Както се оказа по-късно, опитвах се да осъществя достъп до регистъра на ниско ниво на чипа ESP8266 по грешен начин (по погрешка въведох NULL стойност за указател към структура).

Историята на корейски ученик, който получи награда от министерството за система за наблюдение на опашки

Щит за крака, който проектирах и създадох. По времето, когато е направена снимката, той вече е преживял пет седмици тъпкане

Хардуер (дъски за крака)

За да гарантирам, че щитовете успяха да оцелеят в суровите условия на столовата, поставих следните изисквания за тях:

  • Щитовете трябва да са достатъчно здрави, за да поддържат човешкото тегло по всяко време.
  • Щитовете трябва да са тънки, за да не пречат на хората в опашката.
  • Превключвателят трябва да се активира, когато се стъпи върху него.
  • Щитовете трябва да са водоустойчиви. Трапезарията винаги е влажна.

За да отговоря на тези изисквания, се спрях на двуслоен дизайн - лазерно изрязан акрил за основата и горния капак и корк като защитен слой.

Направих оформлението на щита в AutoCAD; размери – 400 на 400 милиметра.

Историята на корейски ученик, който получи награда от министерството за система за наблюдение на опашки

Отляво е дизайнът, който влезе в производство. Вдясно има опция с връзка тип Лего

Между другото, в крайна сметка се отказах от десния дизайн, защото при такава система за фиксиране се оказа, че трябва да има 40 сантиметра между щитовете, което означава, че не мога да покрия необходимото разстояние (повече от десет метра).

Историята на корейски ученик, който получи награда от министерството за система за наблюдение на опашки

Историята на корейски ученик, който получи награда от министерството за система за наблюдение на опашки

За свързване на всички превключватели използвах емайлирани проводници - общо те отнеха повече от 70 метра! Поставих мембранен превключвател в центъра на всеки щит. От страничните процепи стърчаха две щипки - отляво и отдясно на превключвателя.

Е, за хидроизолация използвах електрическа лента. Много електрическа лента.

И всичко проработи!

Период от пети ноември до дванадесети декември

Историята на корейски ученик, който получи награда от министерството за система за наблюдение на опашки

Снимка на системата - всичките пет щита се виждат тук. Отляво е електрониката (D1-mini / Bluetooth / RTC)

На XNUMX ноември в осем сутринта (време за закуска) системата започна да събира актуални данни за ситуацията в трапезарията. Не можех да повярвам на очите си. Само преди два месеца скицирах общата схема, седя си вкъщи по пижама и ето ни, цялата система работи безпроблемно... или не.

Софтуерни грешки по време на тестване

Разбира се, имаше много грешки в системата. Ето ги помня.

Програмата не провери за налични Wi-Fi точки, когато се опита да свърже клиента към ThingSpeak API. За да коригирам грешката, добавих допълнителна стъпка за проверка на наличността на Wi-Fi.

Във функцията за настройка многократно извиквах „WiFi.begin“, докато се появи връзка. По-късно разбрах, че връзката се установява от фърмуера ESP8266 и функцията за начало се използва само при настройване на Wi-Fi. Поправих ситуацията, като извиках функцията само веднъж, по време на настройката.

Открих, че интерфейсът на командния ред, който създадох (предназначен е да зададе часа, да промени мрежовите настройки) не работи в покой (т.е. извън закуска, обяд, вечеря и следобеден чай). Видях също, че когато не се регистрира, вътрешният цикъл се ускорява прекомерно и серийните данни се четат твърде бързо. Затова задавам забавяне, така че системата да чака допълнителни команди да пристигнат, когато се очакват.

Ода за кучето пазач

О, и още нещо за този проблем с таймера за наблюдение - реших го точно на етапа на тестване в "полеви" условия. Без преувеличение, това беше всичко, за което си мислех четири дни. Всяка почивка (с продължителност десет минути) се втурвах към кафенето само за да изпробвам новата версия на кода. И когато разпределението се отвори, седях на пода за един час, опитвайки се да хвана грешката. За храна дори не се сетих! Благодаря за всички хубави неща, ESP8266 Watchdog!

Как разбрах WDT

Историята на корейски ученик, който получи награда от министерството за система за наблюдение на опашки

Кодов фрагмент, с който се затрудних

Намерих програма или по-скоро разширение за Arduino, която анализира структурата на данните на софтуера, когато възникне Wdt-нулиране, като има достъп до ELF файла на компилирания код (корелации между функции и указатели). Когато това беше направено, се оказа, че грешката може да бъде отстранена, както следва:

Историята на корейски ученик, който получи награда от министерството за система за наблюдение на опашки

Мамка му! Е, кой знае, че коригирането на грешки в система в реално време е толкова трудно! Въпреки това премахнах грешката и се оказа глупава грешка. Поради моята неопитност написах цикъл while, в който масивът излезе извън границите. Уф! (index++ и ++index са две големи разлики).

Историята на корейски ученик, който получи награда от министерството за система за наблюдение на опашки

Проблеми с хардуера по време на тестване

Разбира се, оборудването, тоест щитовете за краката, далеч не беше идеално. Както може да очаквате, един от превключвателите е блокирал.

Историята на корейски ученик, който получи награда от министерството за система за наблюдение на опашки

На XNUMX ноември по време на обяд заседна превключвателят на третото табло

По-горе предоставих екранна снимка на онлайн диаграма от уебсайта ThingSpeak. Както можете да видите, нещо се случи около 12:25, след което щит номер три се провали. В резултат на това дължината на опашката беше определена на 3 (стойността е 3 * 100), дори когато всъщност не достигна третия щит. Поправката беше, че добавих повече подплата (да, тиксо), за да дам на превключвателя повече място.

Понякога системата ми беше буквално изкоренена, когато кабелът се закачи във вратата. Количките и пакетите бяха пренесени през тази врата в трапезарията, така че тя носеше жицата заедно с нея, затваряйки се и я издърпвайки от контакта. В такива случаи забелязах неочаквана повреда в потока от данни и предположих, че системата е изключена от източника на захранване.

Разпространение на информация за системата в цялото училище

Както вече споменах, използвах ThingSpeak API, който визуализира данните в сайта под формата на графики, което е много удобно. Като цяло, просто публикувах връзка към моя график в групата на училището във Facebook (търсих тази публикация половин час и не можах да я намеря - много странно). Но намерих публикация в моята група, училищна общност, от 2017 ноември XNUMX г.:

Историята на корейски ученик, който получи награда от министерството за система за наблюдение на опашки

Историята на корейски ученик, който получи награда от министерството за система за наблюдение на опашки

Реакцията беше дива!

Публикувах тези публикации, за да предизвикам интерес към моя проект. Въпреки това дори самото им гледане е доста забавно само по себе си. Да кажем, че можете ясно да видите тук, че броят на хората рязко скочи в 6:02 и на практика падна до нула до 6:10.

Историята на корейски ученик, който получи награда от министерството за система за наблюдение на опашки Историята на корейски ученик, който получи награда от министерството за система за наблюдение на опашки

По-горе съм приложил няколко графики, които се отнасят до обяд и следобеден чай. Интересно е да се отбележи, че пикът на работното натоварване по време на обяд почти винаги настъпваше в 12:25 (опашката достигаше до петия щит). А за следобедна закуска по принцип не е типично да има голяма тълпа от хора (опашката е най-много една дъска).

Знаете ли кое е смешно? Тази система е все още жива (https://thingspeak.com/channels/346781)! Влязох в акаунта, който използвах преди, и видях това:

Историята на корейски ученик, който получи награда от министерството за система за наблюдение на опашки

На графиката по-горе видях, че на трети декември напливът от хора е значително по-малък. И нищо чудно – беше неделя. На този ден почти всички отиват някъде, защото в повечето случаи само в неделя можете да напуснете територията на училището. Ясно е, че през уикенда няма да видите жива душа в кафенето.

Как получих първата награда от корейското министерство на образованието за моя проект

Както можете да видите сами, аз не работих по този проект, защото се опитвах да спечеля някаква награда или признание. Просто исках да използвам уменията си, за да разреша хроничен проблем, с който се сблъсках в училище.

Въпреки това, нашият училищен диетолог, Мис О, с когото се сближих много, докато планирах и развивах моя проект, един ден ме попита дали знам за конкурс за идеи за кафенета. Тогава си помислих, че е някаква странна идея да сравнявам идеи за трапезарията. Но прочетох информационната книжка и научих, че проектът трябва да бъде подаден до 24 ноември! Добре добре. Бързо финализирах концепцията, данните и графиките и изпратих приложението.

Промени в първоначалната идея на конкурса

Между другото, системата, която в крайна сметка предложих, беше малко по-различна от вече внедрената. По същество адаптирах оригиналния си метод (измерване на дължината на опашката в реално време) за много по-големи корейски училища. За сравнение: в нашето училище има триста ученици, а в други има толкова много хора само в един клас! Трябваше да разбера как да мащабирам системата.

Затова предложих концепция, която се основаваше повече на „ръчно“ управление. В днешно време корейските училища вече са въвели план за хранене за всички класове, който се спазва стриктно, така че изградих различна рамка от типа „сигнал-отговор“. Идеята тук беше, че когато групата, посещаваща кафенето преди вас, достигне определен лимит в дължината на опашката (т.е. опашката стане къса), те ръчно ще ви изпратят сигнал с помощта на бутон или превключвател на стената . Сигналът ще се предава на екрана на телевизора или чрез LED крушки.

Просто много исках да реша един проблем, който възникна във всички училища в страната. Още повече се затвърдих в намерението си, когато чух една история от мис О - сега ще ви я разкажа. Оказва се, че в някои големи училища опашката се простира отвъд кафенето, на улицата за двайсет-тридесет метра, дори през зимата, защото никой не може да организира правилно процеса. И понякога се случва, че в продължение на няколко минути никой изобщо не се появява в трапезарията - и това също е лошо. В училища с голям брой ученици персоналът едва има време да обслужи всички, дори и да не се губи нито минута време за хранене. Следователно тези, които пристигат последни при разпределението (обикновено ученици от началното училище), просто нямат достатъчно време за хранене.

Така че, въпреки че трябваше да изпратя молбата си набързо, обмислих много внимателно как мога да я адаптирам за по-широка употреба.

Съобщение, че спечелих първа награда!

Накратко, бях поканен да дойда и да представя проекта си пред държавни служители. Така че вложих всичките си таланти в Power Point на работа и дойдох и представих!

Историята на корейски ученик, който получи награда от министерството за система за наблюдение на опашки

Начало на презентацията (крайно вляво - министър)

Беше интересно преживяване - просто измислих нещо за проблема с кафенето и някак си се озовах сред победителите в състезанието. Дори да стоя на сцената, продължавах да си мисля: „Хм, какво изобщо правя тук?“ Но като цяло този проект ми донесе голяма полза - научих много за разработването на вградени системи и внедряването на проекти в реалния живот. Е, получих награда, разбира се.

Заключение

Тук има известна ирония: колкото и да участвах във всевъзможни състезания и научни панаири, за които целенасочено се регистрирах, нищо добро не излезе. И тогава възможността просто ме намери и ми даде добри резултати.

Това ме накара да се замисля за причините, които ме мотивират да се заема с проекти. Защо започвам работа - за да "спечеля" или за да реша реален проблем в света около мен? Ако във вашия случай действа вторият мотив, горещо ви препоръчвам да не изоставяте проекта. С този подход към бизнеса можете да срещнете неочаквани възможности по пътя си и няма да изпитвате натиск от нуждата да спечелите - вашият основен мотиватор ще бъде страстта към вашия бизнес.

И най-важното: ако успеете да приложите прилично решение, можете веднага да го изпробвате в реалния свят. В моя случай платформата беше училище, но с времето се натрупва опит и кой знае - може би вашето приложение ще се използва от цялата страна или дори от целия свят.

Всеки път, когато мисля за това преживяване, някак се гордея със себе си. Не мога да обясня защо, но процесът на изпълнение на проекта просто ми донесе голямо удоволствие, а наградата беше допълнителен бонус. Освен това бях доволен, че успях да разреша на моите съученици проблем, който съсипваше живота им всеки ден. Един ден един от студентите дойде при мен и каза: „Вашата система е много удобна.“ Бях на седмото небе!
Мисля, че дори и без никакви награди бих се чувствал горд от развитието си само за това. Може би това да помагам на другите ми е донесло такова удовлетворение... като цяло обичам проекти.

Това, което се надявах да постигна с тази статия

Надявам се, че като прочетете тази статия до края, сте се вдъхновили да направите нещо, което ще бъде от полза за вашата общност или дори само за вас самите. Насърчавам ви да използвате уменията си (програмирането със сигурност е едно от тях, но има и други), за да промените реалността около вас към по-добро. Мога да ви уверя, че опитът, който ще придобиете в процеса, не може да се сравни с нищо друго.

Може също така да отвори пътища, които не сте очаквали - това се случи с мен. Затова, моля, правете това, което обичате и оставете своя отпечатък в света! Ехото на един единствен глас може да разтърси целия свят, така че вярвайте в себе си.

Ето няколко връзки, свързани с проекта:

Източник: www.habr.com

Добавяне на нов коментар