Introducción:
Hoy en día, en grandes edificios, los ascensores convencionales tienen mayor tiempo de espera, mayor tiempo de viaje, mayor consumo de energía. Por lo tanto, existe la necesidad de desarrollar un algoritmo que reduzca los problemas anteriores. He realizado este proyecto como pasante en Smartron. He desarrollado un algoritmo que reduce el tiempo de espera y de viaje en ascensores.
He usado el concepto de Internet de las cosas en este proyecto junto con el uso del microcontrolador Arduino.
Marco conceptual:
El teclado del ascensor está fuera del ascensor en el vestíbulo del edificio. Todos los ascensores en un piso particular del edificio tienen un teclado común en la entrada del vestíbulo. Cuando una persona presiona el piso deseado en el teclado, el sistema le asigna un ascensor (que está en ese piso o más cerca del piso).
¿Cómo se asigna el ascensor al usuario?
Cuando un usuario presiona el piso deseado en el teclado, el sistema realiza los siguientes pasos:
1) Comprueba si hay algún ascensor en esa planta, en caso afirmativo, asigna el ascensor.
2) Si no, comprueba si el usuario quiere ir a un piso superior o inferior desde su piso actual.
3) A continuación, asigna el ascensor que sube y se acerca a ese piso.
La principal restricción de este algoritmo es que un ascensor puede tener un máximo de 4 paradas. Entonces, cuando verifica un ascensor, verifica si el ascensor ha alcanzado sus paradas máximas o no.
¿Qué es el sistema y cómo funciona?
Cada ascensor está conectado a un Arduino en la configuración maestro-esclavo. Cada ascensor es esclavo de un Arduino maestro que es responsable de asignar el ascensor al usuario.
Cada ascensor mantiene una cola (estructura de datos). El número de elementos en cola es el número máximo de paradas que puede tener un ascensor.
El primer elemento de la cola es su piso actual. Los elementos posteriores son sus destinos en orden.
El maestro verifica cada cola y obtiene dónde están todos los ascensores desde el primer elemento de sus colas.
El ascensor sube cuando la diferencia entre el elemento actual y el siguiente es positiva y viceversa.
He usado Arduino IDE para la programación y el kit práctico de Arduino para probar.
Este proyecto es un POC para el ascensor inteligente y se puede utilizar para el estudio adicional sobre ascensores inteligentes (el uso de inteligencia artificial lo hace realmente inteligente).
Pseudo Código:
Maestro:
// declare arrays for the slaves(queues are implemented using arrays) void setup(){ SPI.begin; // Begin SPI protocol digitalWrite(SS,HIGH); SPI.begin(); SPI.setClockDivider(SPI_CLOCK_DIV8); } void loop(){ // create as many functions as there are keypads in the building. // inside each function keypad1(){ // take keypad input. // check all the filters and assign a lift SPI.transfer(destination); // goes to selected slave enqueue(destination); // added to selected slave queue } Keypad2(){ // take keypad input. // check all the filters and assign a lift SPI.transfer(destination); // goes to selected slave enqueue(destination); // added to selected slave queue } } Slave code: // declare array for the slave (queue is implemented using array) void setup(){ pinMode(MISO,OUTPUT); SPCR |= _BV(SPE); // turn on slave mode SPCR |= _BV(SPIE); // turn on interrupt } ISR(SPI_STC_vect){ // receive destination from master // add to the queue } void loop(){ // always looks at the first element of the queue and goes to that floor. // when the destination is reached, it is deleted from queue // inform master about deletion so that it can update the queue for this slave } ?
Atentamente,
Sri Harsha
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA