A historia dun escolar coreano que recibiu un premio do ministerio por un sistema de vixilancia de filas

Cando estaba en 2016º de bacharelato (de marzo a decembro de XNUMX), molestábame moito a situación que se desenvolveu no comedor do noso colexio.

Problema primeiro: esperar demasiado tempo na cola

Que problema observei? Como isto:

A historia dun escolar coreano que recibiu un premio do ministerio por un sistema de vixilancia de filas

Moitos alumnos reuníronse na zona de distribución e tiveron que estar de pé durante moito tempo (de cinco a dez minutos). Por suposto, este é un problema común e un esquema de servizo xusto: canto máis tarde chegue, máis tarde será atendido. Así poderías entender por que tiñas que esperar.

Segundo problema: condicións desiguais para os que esperan

Pero, claro, iso non é todo; tamén tiven que observar outro problema máis grave. Tan grave que finalmente decidín buscar unha saída á situación. O alumnado de bacharelato (é dicir, todos os que cursan polo menos un grao superior) e profesores acudiron ao reparto sen facer cola. Si, si, e ti, como estudante de primaria, non lles podías dicir nada. O noso colexio tiña unha política bastante estrita en canto ás relacións entre as clases.

Por iso, os meus amigos e eu, cando eramos novatos, viñemos primeiro á cafetería, estabamos a piques de conseguir comida, e entón apareceron estudantes de secundaria ou profesores e simplemente nos apartaron (algúns, que eran máis amables, permitíronnos quedar o noso lugar na fila). Tivemos que esperar entre quince e vinte minutos máis, aínda que chegamos antes que todos.

Pasámolo especialmente mal á hora do xantar. Durante o día, absolutamente todos corrían á cafetería (profesores, alumnos, persoal), polo que para nós, como escolares de primaria, o xantar nunca foi unha alegría.

Solucións comúns ao problema

Pero como os recén chegados non tiñan máis remedio, ideamos dúas formas de reducir o risco de ser lanzados ao fondo da liña. O primeiro é chegar moi cedo ao comedor (é dicir, literalmente antes de que comece a servir a comida). O segundo é matar o tempo deliberadamente xogando ao ping-pong ou ao baloncesto e chegar moi tarde (uns vinte minutos despois do comezo do xantar).

Ata certo punto funcionou. Pero, para ser sincero, ninguén tiña ganas de correr o máis rápido que podía ao comedor só para poder comer, ou para rematar cos restos fríos despois dos demais, porque eran dos últimos. Necesitabamos unha solución que nos avisase cando a cafetería non estaba ateigada.

Sería xenial que algún adiviño nos predixese o futuro e nos dixese exactamente cando ir ao comedor, para non ter que esperar moito. O problema era que cada día todo saía doutro xeito. Non podíamos simplemente analizar patróns e identificar o punto doce. Só tiñamos unha forma de saber como estaban as cousas no comedor: chegar a pé, e o camiño podía ser de varios centos de metros, dependendo de onde estiveses. Así que se chegas, mira a liña, volve e continúa co mesmo ánimo ata que se faga curta, perderás moito tempo. En xeral, a vida era noxenta para a clase de primaria, e nada se podía facer ao respecto.

Eureka: a idea de crear un sistema de vixilancia de comedores

E de súpeto, xa no próximo curso (2017), dixen para min mesmo: “E se facemos un sistema que mostre a lonxitude da cola en tempo real (é dicir, detectar un atasco)?”. Se tivese éxito, a imaxe sería esta: os estudantes de primaria simplemente botarían unha ollada aos seus teléfonos para obter datos actualizados sobre o nivel actual de carga de traballo e sacarían conclusións sobre se ten sentido que vaian agora. .

Esencialmente, este esquema suavizou a desigualdade mediante o acceso á información. Coa súa axuda, os escolares de primaria podían elixir por si mesmos o que lles convén facer: ir e facer fila (se non era demasiado longa) ou pasar o tempo de forma máis útil e, posteriormente, escoller un momento máis axeitado. Estaba moi emocionado con este pensamento.

Deseño dun Sistema de Seguimento de Comedores

En setembro de 2017, tiven que presentar un proxecto para un curso de programación orientada a obxectos, e presentei este sistema como o meu proxecto.

A historia dun escolar coreano que recibiu un premio do ministerio por un sistema de vixilancia de filas

Plan inicial do sistema (setembro de 2017)

Selección de equipos (outubro de 2017)

A historia dun escolar coreano que recibiu un premio do ministerio por un sistema de vixilancia de filas

Un simple interruptor táctil cunha resistencia pull-up. Esquema con cinco escudos en tres filas para recoñecer a cola ao longo de tres liñas

Só pedín cincuenta interruptores de membrana, unha mini placa Wemos D1 baseada en ESP8266 e unhas abrazadeiras de anel ás que pensaba enganchar os cables esmaltados.

Prototipado e desenvolvemento (outubro de 2017)

Comecei cunha placa: montei un circuíto e probeino. Eu estaba limitado no número de materiais, polo que me limitei a un sistema con cinco pedazos.

Para o software que escribín en C++, establecín os seguintes obxectivos:

  1. Traballar de forma continuada e enviar datos só durante os períodos nos que se serve comida (almorzo, xantar, cea, merenda da tarde).
  2. Recoñece a situación da cola/tráfico na cafetería a frecuencias tales que os datos poden ser utilizados en modelos de aprendizaxe automática (por exemplo, 10 Hz).
  3. Enviar datos ao servidor de forma eficiente (o tamaño do paquete debe ser pequeno) e a intervalos curtos.

Para logralos necesitaba facer o seguinte:

  1. Use o módulo RTC (Reloxo en tempo real) para controlar continuamente a hora e determinar cando se serve a comida na cafetería.
  2. Use un método de compresión de datos para rexistrar o estado do escudo nun carácter. Tratando os datos como un código binario de cinco bits, mapeei os distintos valores a caracteres ASCII para que representasen os elementos de datos.
  3. Use ThingSpeak (unha ferramenta de IoT para análises e gráficos en liña) enviando solicitudes HTTP mediante o método POST.

Por suposto, houbo algúns erros. Por exemplo, non sabía que o operador sizeof() devolve o valor 4 para un obxecto char * e non a lonxitude da cadea (porque non é unha matriz e, polo tanto, o compilador non calcula a lonxitude) e sorprendeume moito porque as miñas solicitudes HTTP contiñan só catro caracteres de todos os URL!

Tampouco incluín parénteses no paso #define, o que provocou resultados inesperados. Pois digamos:

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

Aquí cabería esperar que A fose igual a 3 (10 / 3 = 3), pero en realidade calculouse de forma diferente: 2 (2 * 5/ 3 = 2).

Finalmente, outro erro notable que tratei foi o Restablecer no temporizador de vixilancia. Loitei con este problema durante moito tempo. Como resultou máis tarde, estaba tentando acceder ao rexistro de baixo nivel do chip ESP8266 dun xeito incorrecto (por erro introducín un valor NULL para un punteiro a unha estrutura).

A historia dun escolar coreano que recibiu un premio do ministerio por un sistema de vixilancia de filas

Un protector de pé que deseñaba e construín. No momento en que se fixo a foto xa sobrevivira cinco semanas de pisoteo

Hardware (pedes)

Para garantir que os escudos puidesen sobrevivir ás duras condicións da cantina, establecínlles os seguintes requisitos:

  • Os escudos deben ser o suficientemente fortes como para soportar o peso humano en todo momento.
  • Os escudos deben ser delgados para non molestar á xente na fila.
  • O interruptor debe estar activado cando se pisa.
  • Os escudos deben ser impermeables. O comedor está sempre húmido.

Para cumprir estes requisitos, optei por un deseño de dúas capas: acrílico cortado con láser para a base e a tapa superior e cortiza como capa protectora.

Fixen o deseño do escudo en AutoCAD; dimensións - 400 por 400 milímetros.

A historia dun escolar coreano que recibiu un premio do ministerio por un sistema de vixilancia de filas

Á esquerda está o deseño que entrou en produción. Á dereita hai unha opción cunha conexión tipo Lego

Por certo, finalmente abandonei o deseño da dereita porque con tal sistema de fixación resultou que debería haber 40 centímetros entre os escudos, o que significa que non podía cubrir a distancia requirida (máis de dez metros).

A historia dun escolar coreano que recibiu un premio do ministerio por un sistema de vixilancia de filas

A historia dun escolar coreano que recibiu un premio do ministerio por un sistema de vixilancia de filas

Para conectar todos os interruptores usei fíos de esmalte: en total tardaron máis de 70 metros! Coloquei un interruptor de membrana no centro de cada escudo. Dous clips sobresaían das ranuras laterais: á esquerda e á dereita do interruptor.

Pois para impermeabilizar usei cinta eléctrica. Moita cinta eléctrica.

E todo funcionou!

Período dende o cinco de novembro ata o doce de decembro

A historia dun escolar coreano que recibiu un premio do ministerio por un sistema de vixilancia de filas

Foto do sistema: os cinco escudos son visibles aquí. Á esquerda está a electrónica (D1-mini / Bluetooth / RTC)

O día XNUMX de novembro ás oito da mañá (hora do almorzo), o sistema comezou a recoller os datos actuais sobre a situación do comedor. Non podía crer os meus ollos. Hai apenas dous meses estiven esbozando o esquema xeral, sentado na casa co pixama, e aquí estamos, todo o sistema funcionando sen problemas... ou non.

Erros de software durante as probas

Por suposto, había moitos erros no sistema. Aquí están os que recordo.

O programa non comprobou os puntos Wi-Fi dispoñibles ao tentar conectar o cliente á API de ThingSpeak. Para corrixir o erro, engadín un paso adicional para comprobar a dispoñibilidade da wifi.

Na función de configuración, chamei repetidamente "WiFi.begin" ata que apareceu unha conexión. Máis tarde descubrín que a conexión está establecida polo firmware ESP8266 e que a función de inicio só se usa ao configurar a Wi-Fi. Corrixín a situación chamando á función só unha vez, durante a configuración.

Descubrín que a interface de liña de comandos que creei (pretendía establecer a hora, cambiar a configuración da rede) non funciona en repouso (é dicir, fóra do almorzo, xantar, cea e té da tarde). Tamén vin que, cando non se produce ningún rexistro, o bucle interno acelerase excesivamente e os datos en serie lense demasiado rápido. Polo tanto, configurei un atraso para que o sistema agarde a que cheguen comandos adicionais cando se esperan.

Oda ao can vixiante

Ah, e unha cousa máis sobre ese problema co temporizador de vixilancia: resolveino precisamente na fase de proba en condicións de "campo". Sen esaxeración, isto foi todo o que pensei durante catro días. Cada descanso (de dez minutos de duración) corríame á cafetería só para probar a nova versión do código. E cando se abriu a distribución, sentei no chan durante unha hora, intentando atrapar o bicho. Nin sequera pensei na comida! Grazas por todas as cousas boas, ESP8266 Watchdog!

Como descubrín WDT

A historia dun escolar coreano que recibiu un premio do ministerio por un sistema de vixilancia de filas

Fragmento de código co que estaba loitando

Atopei un programa, ou mellor dito unha extensión para Arduino, que analiza a estrutura de datos do software cando se produce un Wdt-reset, accedendo ao ficheiro ELF do código compilado (correlacións entre funcións e punteiros). Cando se fixo isto, descubriuse que o erro pódese eliminar do seguinte xeito:

A historia dun escolar coreano que recibiu un premio do ministerio por un sistema de vixilancia de filas

Carallo! Ben, quen sabía que corrixir erros nun sistema en tempo real era tan difícil! Non obstante, eliminei o erro e resultou ser un erro estúpido. Debido á miña inexperiencia, escribín un bucle while no que a matriz ía máis aló dos límites. Uf! (index++ e ++index son dúas grandes diferenzas).

A historia dun escolar coreano que recibiu un premio do ministerio por un sistema de vixilancia de filas

Problemas co hardware durante a proba

Por suposto, o equipamento, é dicir, os protectores dos pés, distaba de ser o ideal. Como podería esperar, un dos interruptores está atascado.

A historia dun escolar coreano que recibiu un premio do ministerio por un sistema de vixilancia de filas

O XNUMX de novembro, durante o xantar, o interruptor do terceiro panel pegouse

Arriba proporcionei unha captura de pantalla dun gráfico en liña do sitio web de ThingSpeak. Como podedes ver, algo ocorreu ao redor das 12:25, despois de que fallou o escudo número tres. Como resultado, determinouse que a lonxitude da cola era 3 (o valor é 3 * 100), aínda que en realidade non chegou ao terceiro escudo. A solución foi que engadín máis recheo (si, cinta adhesiva) para darlle máis espazo ao interruptor.

Ás veces, o meu sistema estaba literalmente arrincado cando o fío quedaba atrapado na porta. Por esta porta levábanse carros e paquetes ata o comedor, de xeito que levaba o fío xunto con el, pechándoo e sacándoo da toma. Nestes casos, notei un fallo inesperado no fluxo de datos e supuxín que o sistema estaba desconectado da fonte de enerxía.

Difusión da información sobre o sistema por toda a escola

Como xa mencionei, usei a API ThingSpeak, que visualiza os datos do sitio en forma de gráficos, o que é moi cómodo. En xeral, basicamente acabo de publicar unha ligazón á miña axenda no grupo de Facebook da escola (busquei esta publicación durante media hora e non puiden atopala - moi estraño). Pero atopei unha publicación na miña banda, unha comunidade escolar, do 2017 de novembro de XNUMX:

A historia dun escolar coreano que recibiu un premio do ministerio por un sistema de vixilancia de filas

A historia dun escolar coreano que recibiu un premio do ministerio por un sistema de vixilancia de filas

A reacción foi salvaxe!

Publiquei estas publicacións para espertar o interese polo meu proxecto. Non obstante, incluso só miralos é bastante entretido en si. Digamos que aquí podes ver claramente que o número de persoas saltou bruscamente ás 6:02 e practicamente caeu a cero ás 6:10.

A historia dun escolar coreano que recibiu un premio do ministerio por un sistema de vixilancia de filas A historia dun escolar coreano que recibiu un premio do ministerio por un sistema de vixilancia de filas

Arriba adxunto un par de gráficos que se relacionan co xantar e o té da tarde. É interesante notar que o pico de carga de traballo á hora do xantar producíase case sempre ás 12:25 (a cola chegaba ao quinto escudo). E para unha merenda da tarde é xeralmente pouco común ter unha gran multitude de xente (a cola é como máximo dun taboleiro).

Sabes o que é divertido? Este sistema segue vivo (https://thingspeak.com/channels/346781)! Entrei na conta que usei antes e vin isto:

A historia dun escolar coreano que recibiu un premio do ministerio por un sistema de vixilancia de filas

No gráfico anterior, vin que o tres de decembro a afluencia de xente foi significativamente menor. E non me estraña: era domingo. Neste día case todo o mundo vai a algún lado, porque na maioría dos casos só o domingo se pode saír do recinto escolar. Está claro que a fin de semana non verás alma viva na cafetería.

Como recibín o primeiro premio do Ministerio de Educación de Corea polo meu proxecto

Como podes ver por ti mesmo, non traballei neste proxecto porque estaba tentando gañar algún tipo de premio ou recoñecemento. Só quería utilizar as miñas habilidades para resolver un problema crónico que me enfrontaba na escola.

Porén, a nutricionista da nosa escola, a señorita O, coa que me acheguei moito ao planificar e desenvolver o meu proxecto, un día preguntoume se coñecía un concurso de ideas de cafetería. Entón pensei que era unha idea estraña comparar ideas para o comedor. Pero lin o folleto informativo e souben que o proxecto hai que entregalo antes do 24 de novembro! Pois ben. Rápidamente finalicei o concepto, os datos e os gráficos e enviei a aplicación.

Cambios na idea orixinal para o concurso

Por certo, o sistema que propuxen finalmente era lixeiramente diferente ao xa implantado. Esencialmente, adaptei o meu método orixinal (medir a lonxitude da cola en tempo real) para escolas coreanas moito máis grandes. Para comparar: no noso colexio hai trescentos alumnos, e noutros hai tanta xente nunha soa clase! Necesitaba descubrir como escalar o sistema.

Por iso propuxen un concepto máis baseado no control “manual”. Hoxe en día, as escolas coreanas xa introduciron un plan de comidas para todas as clases, que se cumpre estritamente, polo que construí un marco de tipo "resposta sinal" diferente. A idea aquí era que cando o grupo que visitaba a cafetería por diante chegase a un determinado límite na lonxitude da liña (é dicir, a liña fíxose curta), enviaríache un sinal manualmente mediante un botón ou un interruptor da parede. . O sinal transmitirase á pantalla do televisor ou a través de lámpadas LED.

Só quería resolver un problema que xurdiu en todas as escolas do país. Reforzoime aínda máis a miña intención cando escoitei unha historia da señorita O - vouche contar agora. Resulta que nalgúns colexios grandes a liña se prolonga máis alá da cafetería, á rúa entre vinte e trinta metros, mesmo no inverno, porque ninguén pode organizar correctamente o proceso. E ás veces ocorre que durante varios minutos non aparece ninguén no comedor, e isto tamén é malo. Nos colexios con gran número de alumnos, o persoal apenas ten tempo para atender a todos aínda que non se perda nin un minuto da comida. Polo tanto, os que son os últimos en chegar á distribución (normalmente alumnos de primaria) simplemente non teñen tempo suficiente para comer.

Entón, aínda que tiven que enviar a miña solicitude con présa, pensei moi coidadosamente en como podería adaptala para un uso máis amplo.

Mensaxe de que gañei o primeiro premio!

En resumo, invitáronme a vir e presentar o meu proxecto aos funcionarios do goberno. Así que puxen todos os meus talentos de Power Point a traballar e vin a presentar!

A historia dun escolar coreano que recibiu un premio do ministerio por un sistema de vixilancia de filas

Inicio da presentación (extrema esquerda - ministro)

Foi unha experiencia interesante: acabo de inventar algo para o problema da cafetería e, dalgún xeito, acabei entre os gañadores do concurso. Aínda parado no escenario, seguía pensando: "Hmm, que estou facendo aquí?" Pero, en xeral, este proxecto trouxo grandes beneficios: aprendín moito sobre o desenvolvemento de sistemas integrados e a implementación de proxectos na vida real. Ben, recibín un premio, claro.

Conclusión

Hai algo de ironía aquí: por moito que participei en todo tipo de concursos e feiras científicas nas que me apuntei a propósito, non saíu nada bo. E entón a oportunidade só me atopou e deume bos resultados.

Isto fíxome pensar nas razóns que me motivan a asumir proxectos. Por que empezo a traballar - para "gañar" ou para resolver un problema real no mundo que me rodea? Se o segundo motivo funciona no teu caso, recoméndoche encarecidamente que non abandones o proxecto. Con este enfoque dos negocios, podes atopar oportunidades inesperadas ao longo do camiño e non sentirás presión pola necesidade de gañar: o teu principal motivador será a paixón polo teu negocio.

E o máis importante: se logras implementar unha solución decente, podes probala inmediatamente no mundo real. No meu caso, a plataforma era unha escola, pero co paso do tempo, a experiencia acumúlase, e quen sabe, quizais a túa aplicación sexa utilizada por todo o país ou mesmo por todo o mundo.

Cada vez que penso nesta experiencia, estou un pouco orgulloso de min. Non podo explicar por que, pero o proceso de implementación do proxecto simplemente me causou un gran pracer e o premio foi un extra adicional. Ademais, alegríame de poder resolver para os meus compañeiros un problema que lles estragaba a vida todos os días. Un día un dos estudantes achegouse a min e díxome: "O teu sistema é moi cómodo". Estaba no sétimo ceo!
Creo que aínda sen ningún premio sentiríame orgulloso do meu desenvolvemento só por isto. Quizais foi axudar a outros o que me deu tanta satisfacción... en xeral, encántanme os proxectos.

O que esperaba conseguir con este artigo

Espero que ao ler este artigo ata o final, te inspires para facer algo que beneficiará á túa comunidade ou mesmo a ti mesmo. Anímote a que uses as túas habilidades (a programación é certamente unha delas, pero hai outras) para cambiar a realidade que te rodea para mellor. Podo asegurarche que a experiencia que gañarás no proceso non se pode comparar con outra cousa.

Tamén pode abrir camiños que non esperabas, iso é o que me pasou a min. Entón, por favor, fai o que che gusta e deixa marca no mundo! O eco dunha soa voz pode sacudir o mundo enteiro, así que crea en ti mesmo.

Aquí tes algúns enlaces relacionados co proxecto:

Fonte: www.habr.com

Engadir un comentario