La historia de un escolar coreano que recibió un premio del ministerio por un sistema de seguimiento de colas

Cuando estaba en mi tercer año de secundaria (de marzo a diciembre de 2016), me molestó mucho la situación que se desarrolló en la cafetería de nuestra escuela.

Problema uno: esperar demasiado tiempo en la cola

¿Qué problema observé? Como esto:

La historia de un escolar coreano que recibió un premio del ministerio por un sistema de seguimiento de colas

Muchos estudiantes se reunieron en el área de distribución y tuvieron que permanecer de pie durante mucho tiempo (de cinco a diez minutos). Por supuesto, este es un problema común y un esquema de servicio justo: cuanto más tarde llegue, más tarde le atenderán. Para que puedas entender por qué tienes que esperar.

Problema dos: condiciones desiguales para quienes esperan

Pero claro, eso no es todo, también tuve que observar otro problema más grave. Tan grave que finalmente decidí intentar encontrar una salida a la situación. Los estudiantes de secundaria (es decir, todos los que estudian al menos un grado superior) y los profesores acudieron al reparto sin hacer cola. Sí, sí, y tú, como alumno de primaria, no pudiste decirles nada. Nuestra escuela tenía una política bastante estricta con respecto a las relaciones entre clases.

Por lo tanto, mis amigos y yo, cuando éramos novatos, fuimos primero a la cafetería, estábamos a punto de conseguir comida, y luego aparecieron estudiantes de secundaria o maestros y simplemente nos hicieron a un lado (algunos, que eran más amables, nos permitieron quedarnos en nuestro lugar en la fila). Tuvimos que esperar quince o veinte minutos más, aunque llegamos antes que los demás.

Lo pasamos especialmente mal a la hora del almuerzo. Durante el día, absolutamente todo el mundo se apresuraba a ir a la cafetería (profesores, alumnos, personal), por lo que para nosotros, como niños de primaria, el almuerzo nunca fue un placer.

Soluciones comunes al problema.

Pero como los recién llegados no tenían otra opción, se nos ocurrieron dos formas de reducir el riesgo de quedar al final de la fila. La primera es llegar al comedor muy temprano (es decir, literalmente antes de que empiecen a servirse la comida). La segunda es matar el tiempo deliberadamente jugando al ping-pong o al baloncesto y llegar muy tarde (unos veinte minutos después del comienzo del almuerzo).

Hasta cierto punto funcionó. Pero la verdad es que nadie tenía ganas de correr lo más rápido que podía al comedor sólo para poder comer, o de terminar las sobras frías después de los demás, porque estaban entre los últimos. Necesitábamos una solución que nos permitiera saber cuándo la cafetería no estaba llena.

Sería fantástico que algún adivino nos predijera el futuro y nos dijera exactamente cuándo ir al comedor, para que no tuviéramos que esperar mucho. El problema era que cada día todo resultaba diferente. No podíamos simplemente analizar patrones e identificar el punto óptimo. Sólo teníamos una manera de saber cómo estaban las cosas en el comedor: llegar a pie, y el camino podía ser de varios cientos de metros, dependiendo de dónde estuviéramos. Así que si vienes, miras la cola, vuelves y continúas con el mismo espíritu hasta que se haga corta, perderás mucho tiempo. En general, la vida era repugnante para la clase primaria y no se podía hacer nada al respecto.

Eureka – la idea de crear un sistema de seguimiento de cantinas

Y de repente, ya en el próximo curso académico (2017), me dije: “¿Y si creamos un sistema que muestre la longitud de la cola en tiempo real (es decir, detecte un atasco)?” Si lo hubiera logrado, la imagen habría sido la siguiente: los estudiantes de primaria simplemente mirarían sus teléfonos para obtener datos actualizados sobre el nivel actual de carga de trabajo y sacarían conclusiones sobre si tiene sentido que se vayan ahora. .

Básicamente, este esquema suavizó la desigualdad a través del acceso a la información. Con su ayuda, los niños de primaria podían elegir por sí mismos lo que les convenía hacer: hacer cola (si no era demasiado larga) o pasar el tiempo de forma más útil y luego elegir un momento más apropiado. Me emocionó mucho este pensamiento.

Diseño de un sistema de seguimiento de comedor.

En septiembre de 2017, tuve que presentar un proyecto para un curso de programación orientada a objetos y presenté este sistema como mi proyecto.

La historia de un escolar coreano que recibió un premio del ministerio por un sistema de seguimiento de colas

Plan inicial del sistema (septiembre de 2017)

Selección de equipos (octubre 2017)

La historia de un escolar coreano que recibió un premio del ministerio por un sistema de seguimiento de colas

Un interruptor táctil simple con una resistencia pull-up. Esquema con cinco escudos en tres filas para reconocer la cola a lo largo de tres líneas.

Solo pedí cincuenta interruptores de membrana, una mini placa Wemos D1 basada en ESP8266 y algunas abrazaderas de anillo a las que planeaba conectar los cables esmaltados.

Prototipado y desarrollo (octubre 2017)

Comencé con una placa, monté un circuito en ella y la probé. Estaba limitado en la cantidad de materiales, así que me limité a un sistema con cinco estribos.

Para el software que escribí en C++, establecí los siguientes objetivos:

  1. Trabaja de forma continua y envía datos solo durante los periodos en los que se sirve la comida (desayuno, almuerzo, cena, merienda).
  2. Reconocer la situación de cola/tráfico en la cafetería a frecuencias tales que los datos puedan luego usarse en modelos de aprendizaje automático (digamos, 10 Hz).
  3. Envíe datos al servidor de manera eficiente (el tamaño del paquete debe ser pequeño) y en intervalos cortos.

Para lograrlos necesitaba hacer lo siguiente:

  1. Utilice el módulo RTC (Reloj en tiempo real) para monitorear continuamente la hora y determinar cuándo se sirve la comida en la cafetería.
  2. Utilice un método de compresión de datos para registrar el estado del escudo en un carácter. Al tratar los datos como un código binario de cinco bits, asigne los distintos valores a caracteres ASCII para que representen los elementos de datos.
  3. Utilice ThingSpeak (una herramienta de IoT para análisis y gráficos en línea) enviando solicitudes HTTP mediante el método POST.

Por supuesto, hubo algunos errores. Por ejemplo, no sabía que el operador sizeof() devuelve el valor 4 para un objeto char *, y no la longitud de la cadena (porque no es una matriz y, por lo tanto, el compilador no calcula la longitud) ¡Y me sorprendió mucho que mis solicitudes HTTP contuvieran solo cuatro caracteres de todas las URL!

Tampoco incluí paréntesis en el paso #define, lo que generó resultados inesperados. Bueno digamos:

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

Aquí se esperaría que A fuera igual a 3 (10 / 3 = 3), pero en realidad se calculó de manera diferente: 2 (2 * 5/ 3 = 2).

Finalmente, otro error notable que solucioné fue el reinicio del temporizador de vigilancia. Luché con este problema durante mucho tiempo. Como resultó más tarde, estaba intentando acceder al registro de bajo nivel en el chip ESP8266 de manera incorrecta (por error ingresé un valor NULL para un puntero a una estructura).

La historia de un escolar coreano que recibió un premio del ministerio por un sistema de seguimiento de colas

Un protector para los pies que diseñé y construí. En el momento en que se tomó la foto, ya había sobrevivido a cinco semanas de pisoteo.

Hardware (estribos)

Para garantizar que los escudos pudieran sobrevivir a las duras condiciones de la cantina, les establecí los siguientes requisitos:

  • Los escudos deben ser lo suficientemente fuertes para soportar el peso humano en todo momento.
  • Los escudos deben ser delgados para no molestar a las personas en la fila.
  • El interruptor debe activarse al pisarlo.
  • Los escudos deben ser impermeables. El comedor siempre está húmedo.

Para cumplir con estos requisitos, me decidí por un diseño de dos capas: acrílico cortado con láser para la base y la cubierta superior, y corcho como capa protectora.

El diseño del escudo lo hice en AutoCAD; dimensiones: 400 por 400 milímetros.

La historia de un escolar coreano que recibió un premio del ministerio por un sistema de seguimiento de colas

A la izquierda está el diseño que entró en producción. A la derecha hay una opción con conexión tipo Lego.

Por cierto, finalmente abandoné el diseño de la derecha porque con este sistema de fijación resultó que entre los escudos debería haber 40 centímetros, lo que significa que no podría cubrir la distancia requerida (más de diez metros).

La historia de un escolar coreano que recibió un premio del ministerio por un sistema de seguimiento de colas

La historia de un escolar coreano que recibió un premio del ministerio por un sistema de seguimiento de colas

Para conectar todos los interruptores utilicé cables esmaltados; ¡en total requirieron más de 70 metros! Coloqué un interruptor de membrana en el centro de cada escudo. De las ranuras laterales sobresalían dos clips, a la izquierda y a la derecha del interruptor.

Bueno, para impermeabilizar utilicé cinta aislante. Mucha cinta aislante.

¡Y todo funcionó!

Período del cinco de noviembre al doce de diciembre

La historia de un escolar coreano que recibió un premio del ministerio por un sistema de seguimiento de colas

Foto del sistema: aquí se pueden ver los cinco escudos. A la izquierda está la electrónica (D1-mini / Bluetooth / RTC)

El XNUMX de noviembre a las ocho de la mañana (hora del desayuno), el sistema comenzó a recopilar datos actuales sobre la situación en el comedor. No podía creer lo que veía. Hace apenas dos meses estaba esbozando el esquema general, sentado en casa en pijama, y ​​aquí estamos, todo el sistema funcionando sin problemas... o no.

Errores de software durante las pruebas

Por supuesto, había muchos errores en el sistema. Aquí están los que recuerdo.

El programa no comprobó los puntos Wi-Fi disponibles al intentar conectar el cliente a la API ThingSpeak. Para corregir el error, agregué un paso adicional para verificar la disponibilidad de Wi-Fi.

En la función de configuración, llamé repetidamente "WiFi.begin" hasta que apareció una conexión. Más tarde descubrí que la conexión la establece el firmware ESP8266 y que la función de inicio solo se usa al configurar Wi-Fi. Corregí la situación llamando a la función solo una vez, durante la configuración.

Descubrí que la interfaz de línea de comando que creé (estaba destinada a configurar la hora, cambiar la configuración de red) no funciona en reposo (es decir, fuera del desayuno, el almuerzo, la cena y el té de la tarde). También vi que cuando no se produce ningún registro, el bucle interno se acelera excesivamente y los datos en serie se leen demasiado rápido. Por lo tanto, establecí un retraso para que el sistema espere a que lleguen comandos adicionales cuando se espera.

Oda al perro guardián

Ah, y una cosa más sobre el problema con el temporizador de vigilancia: lo resolví precisamente en la etapa de prueba en condiciones de "campo". Sin exagerar, esto fue todo lo que pensé durante cuatro días. En cada descanso (que duraba diez minutos) corría a la cafetería sólo para probar la nueva versión del código. Y cuando se abrió la distribución, me senté en el suelo durante una hora, tratando de contagiarme. ¡Ni siquiera pensé en la comida! ¡Gracias por todas las cosas buenas, ESP8266 Watchdog!

Cómo descubrí WDT

La historia de un escolar coreano que recibió un premio del ministerio por un sistema de seguimiento de colas

Fragmento de código con el que estaba luchando

Encontré un programa, o más bien una extensión para Arduino, que analiza la estructura de datos del software cuando se produce un reinicio de Wdt, accediendo al archivo ELF del código compilado (correlaciones entre funciones y punteros). Cuando se hizo esto, resultó que el error se puede eliminar de la siguiente manera:

La historia de un escolar coreano que recibió un premio del ministerio por un sistema de seguimiento de colas

¡Maldita sea! Bueno, ¡quién diría que corregir errores en un sistema en tiempo real era tan difícil! Sin embargo, eliminé el error y resultó ser un error estúpido. Debido a mi inexperiencia, escribí un bucle while en el que la matriz iba más allá de los límites. ¡Puaj! (index++ y ++index son dos grandes diferencias).

La historia de un escolar coreano que recibió un premio del ministerio por un sistema de seguimiento de colas

Problemas con el hardware durante las pruebas.

Por supuesto, el equipamiento, es decir, los protectores para los pies, distaba mucho de ser ideal. Como era de esperar, uno de los interruptores está atascado.

La historia de un escolar coreano que recibió un premio del ministerio por un sistema de seguimiento de colas

El XNUMX de noviembre, durante el almuerzo, se atascó el interruptor del tercer panel.

Arriba proporcioné una captura de pantalla de un gráfico en línea del sitio web de ThingSpeak. Como puede ver, algo sucedió alrededor de las 12:25, después de lo cual el escudo número tres falló. Como resultado, se determinó que la longitud de la cola era 3 (el valor es 3 * 100), incluso cuando en realidad no alcanzó el tercer escudo. La solución fue que agregué más relleno (sí, cinta adhesiva) para darle más espacio al interruptor.

A veces mi sistema quedaba literalmente desarraigado cuando el cable quedaba atrapado en la puerta. Por esta puerta se llevaban carros y paquetes al comedor, de modo que llevaba consigo el cable, cerrándolo y sacándolo del enchufe. En tales casos, noté una falla inesperada en el flujo de datos y supuse que el sistema estaba desconectado de la fuente de energía.

Difusión de información sobre el sistema en toda la escuela.

Como ya mencioné, utilicé la API ThingSpeak, que visualiza los datos del sitio en forma de gráficos, lo cual es muy conveniente. En general, básicamente publiqué un enlace a mi agenda en el grupo de Facebook de la escuela (busqué esta publicación durante media hora y no pude encontrarla, muy extraño). Pero encontré una publicación en mi Banda, una comunidad escolar, del 2017 de noviembre de XNUMX:

La historia de un escolar coreano que recibió un premio del ministerio por un sistema de seguimiento de colas

La historia de un escolar coreano que recibió un premio del ministerio por un sistema de seguimiento de colas

¡La reacción fue salvaje!

Publiqué estas publicaciones para despertar el interés en mi proyecto. Sin embargo, sólo mirarlos ya es bastante entretenido en sí mismo. Digamos que puedes ver claramente aquí que el número de personas aumentó bruscamente a las 6:02 y prácticamente cayó a cero a las 6:10.

La historia de un escolar coreano que recibió un premio del ministerio por un sistema de seguimiento de colas La historia de un escolar coreano que recibió un premio del ministerio por un sistema de seguimiento de colas

Arriba he adjuntado un par de gráficos relacionados con el almuerzo y el té de la tarde. Es interesante observar que el pico de carga de trabajo a la hora del almuerzo casi siempre se producía a las 12:25 (la cola llegaba al quinto escudo). Y para la merienda no suele ser habitual que haya mucha gente (la cola tiene como máximo una tabla).

¿Sabes qué es gracioso? ¡Este sistema sigue vivo (https://thingspeak.com/channels/346781)! Inicié sesión en la cuenta que usé antes y vi esto:

La historia de un escolar coreano que recibió un premio del ministerio por un sistema de seguimiento de colas

En el gráfico anterior vi que el XNUMX de diciembre la afluencia de gente fue significativamente menor. Y no es de extrañar: era domingo. En este día casi todo el mundo va a algún lugar, porque en la mayoría de los casos sólo el domingo se puede salir del recinto escolar. Está claro que no verás ni un alma viva en la cafetería el fin de semana.

Cómo recibí el primer premio del Ministerio de Educación de Corea por mi proyecto

Como puedes comprobar por ti mismo, no trabajé en este proyecto porque estuviera tratando de ganar algún tipo de premio o reconocimiento. Sólo quería usar mis habilidades para resolver un problema crónico que enfrentaba en la escuela.

Sin embargo, la nutricionista de nuestra escuela, Miss O, con quien me hice muy cercano mientras planificaba y desarrollaba mi proyecto, un día me preguntó si conocía un concurso de ideas para la cafetería. Entonces pensé que era una idea extraña comparar ideas para el comedor. ¡Pero leí el folleto informativo y descubrí que el proyecto debe presentarse antes del 24 de noviembre! Bien bien. Rápidamente finalicé el concepto, los datos y los gráficos y envié la solicitud.

Cambios en la idea original del concurso.

Por cierto, el sistema que finalmente propuse era ligeramente diferente del que ya estaba implementado. Básicamente, adapté mi método original (medir la longitud de la cola en tiempo real) para escuelas coreanas mucho más grandes. A modo de comparación: en nuestra escuela hay trescientos estudiantes, ¡y en otras hay tanta gente en una sola clase! Necesitaba descubrir cómo escalar el sistema.

Por eso propuse un concepto más basado en el control “manual”. Hoy en día, las escuelas coreanas ya han introducido un plan de alimentación para todas las clases, que se cumple estrictamente, por lo que construí un marco diferente del tipo "señal-respuesta". La idea aquí era que cuando el grupo que visitaba la cafetería delante de usted alcanzara un cierto límite en la longitud de la fila (es decir, la fila se acortaba), le enviarían manualmente una señal usando un botón o interruptor en la pared. . La señal se transmitirá a la pantalla del televisor o mediante bombillas LED.

Realmente quería resolver un problema que surgía en todas las escuelas del país. Mi intención se fortaleció aún más cuando escuché una historia de la señorita O: te la contaré ahora. Resulta que en algunas escuelas grandes la fila se extiende más allá de la cafetería, hasta la calle, de veinte a treinta metros, incluso en invierno, porque nadie puede organizar el proceso adecuadamente. Y a veces sucede que durante varios minutos no aparece nadie en el comedor, y esto también es malo. En las escuelas con un gran número de estudiantes, el personal apenas tiene tiempo para atender a todos, incluso si no se pierde ni un minuto de tiempo para comer. Por tanto, los últimos en llegar al reparto (normalmente estudiantes de primaria) simplemente no tienen tiempo suficiente para comer.

Así que, aunque tuve que presentar mi solicitud rápidamente, pensé muy detenidamente en cómo podría adaptarla para un uso más amplio.

¡Mensaje que gané el primer premio!

En pocas palabras, me invitaron a venir y presentar mi proyecto a funcionarios del gobierno. ¡Así que puse todos mis talentos en Power Point a trabajar y vine y presenté!

La historia de un escolar coreano que recibió un premio del ministerio por un sistema de seguimiento de colas

Inicio de la presentación (extrema izquierda - ministro)

Fue una experiencia interesante: se me ocurrió algo para el problema de la cafetería y de alguna manera terminé entre los ganadores del concurso. Incluso estando en el escenario, seguía pensando: "Hmm, ¿qué estoy haciendo aquí?" Pero, en general, este proyecto me trajo grandes beneficios: aprendí mucho sobre el desarrollo de sistemas integrados y la implementación de proyectos en la vida real. Bueno, recibí un premio, por supuesto.

Conclusión

Hay algo de ironía en esto: por mucho que participé en todo tipo de concursos y ferias científicas en las que me inscribí a propósito, no salió nada bueno de ello. Y entonces me encontró la oportunidad y me dio buenos resultados.

Esto me hizo pensar en las razones que me motivan a emprender proyectos. ¿Por qué empiezo a trabajar, para “ganar” o para resolver un problema real en el mundo que me rodea? Si en su caso interviene el segundo motivo, le recomiendo encarecidamente que no abandone el proyecto. Con este enfoque de negocios, podrá encontrar oportunidades inesperadas en el camino y no sentirá la presión de la necesidad de ganar; su principal motivador será la pasión por su negocio.

Y lo más importante: si logras implementar una solución decente, podrás probarla inmediatamente en el mundo real. En mi caso, la plataforma era una escuela, pero con el tiempo la experiencia se acumula y quién sabe, tal vez tu aplicación sea utilizada por todo el país o incluso por el mundo entero.

Cada vez que pienso en esta experiencia, me siento orgulloso de mí mismo. No puedo explicar por qué, pero el proceso de implementación del proyecto simplemente me produjo un gran placer y el premio fue una ventaja adicional. Además, me alegré de poder resolverles a mis compañeros un problema que arruinaba sus vidas todos los días. Un día uno de los estudiantes se me acercó y me dijo: "Su sistema es muy conveniente". ¡Yo estaba en el séptimo cielo!
Creo que incluso sin ningún premio me sentiría orgulloso de mi desarrollo sólo por esto. Quizás fue ayudar a los demás lo que me trajo tanta satisfacción... en general, me encantan los proyectos.

Lo que esperaba lograr con este artículo.

Espero que al leer este artículo hasta el final, te hayas inspirado para hacer algo que beneficie a tu comunidad o incluso a ti mismo. Te animo a que uses tus habilidades (la programación es sin duda una de ellas, pero hay otras) para mejorar la realidad que te rodea. Puedo asegurarte que la experiencia que obtendrás en el proceso no se puede comparar con ninguna otra cosa.

También puede abrir caminos que no esperabas, eso es lo que me pasó a mí. ¡Así que, por favor, haz lo que amas y deja tu huella en el mundo! El eco de una sola voz puede sacudir al mundo entero, así que cree en ti mismo.

A continuación os dejo algunos enlaces relacionados con el proyecto:

Fuente: habr.com

Añadir un comentario