Reto:
Queremos facer un aparcadoiro cun número limitado de prazas. Un display 7 segmentos indicará o número de prazas que quedan dispoñibles.
Hai un barreira de entrada e unha barreira de saída. A detección de coches á entrada e á saída faise con sensores ultrasónicos e o movemento das barreiras con servos. Para cada barreira imos poñer un único sensor ultrasónico á entrada: cando detecta un obxecto sobe a barreira e cando deixa de detectar o obxecto agarda un tempo e baixa a barreira.
Cada vez que entra ou sae un coche un contador rexistrará o cambio.
Nesta simulación de Scratch podes ver o que se pretende:
Preme en cada coche para que entre ou saia do parking
Montaxe:
Compoñentes:
- Arduíno, protoboard, cables
- 2 sensores ultrasónicos HC-SR04
- 2 miniservos
- Display 7 segmentos 1 díxito + rexistro de desprazamento 74HC595
Pins Arduíno:
Sensor entrada | Servo entrada | Rexistro 7seg: | |||
trig1 = 9 | echo1 = 10 | 8 | latchPin = 13 | ||
Sensor saída: | Servo saída | clockPin = 12 | |||
trig2 = 5 | echo2 = 6 | 7 | dataPin = 11 |
Programa:
Para realizar o programa imos dividir o traballo en dous: Mentres outros fan a montaxe da maqueta, un/unha compoñente do equipo traballará no control das barreiras e outro no display 7 segmentos. Despois xuntaremos todo no mesmo programa.
Necesitades traballar previamente:
- Sensor ultrasónico
- Movemento dun servo
- Display 7 seg con rexistro de desprazamento.
- Estruturas condicional e agardar mentres.
Recoméndase crear funcións para cada evento. Por exemplo void lecturaEntrada (){proceso} para a lectura do sensor de entrada, void subirEntrada(){ proceso} para o movemento da barreira de entrada, void Display(byte numero){proceso} para enviar o dato do nº de prazas ao display, etc. Logo no loop() só teremos que invocar estas funcións cando queiramos que se executen.
Non está de máis utilizar a consola para enviar datos do proceso como “distancia entrada = X cm”, “subindo saída”, etc. Dese xeito poderás detectar erros facilmente, por exemplo, se non se executa unha función ou se executa repetidamente en bucle.
Diagrama de fluxo:
Cando arrancamos o Arduíno os sensores ultrasónicos darán unha lectura = 0, polo que cómpre agardar a que ámbolos dous dean unha lectura maior que 0, pois se non van ordenar abrir a porta antes de que haxa presenza. Como o farías?
Propostas:
Cando todo funcione correctamente podes facer algunhas melloras:
- Semáforos: Engade un semáforo ao carón de cada barreira para indicar ao condutor cando pode pasar.
- Máis sensores: Para a entrada e a saída o ideal é que haxa un sensor a cada lado da barreira, de xeito que baixe cando detecte que o vehículo xa pasou e non despois dun tempo. Engade outros dous ultrasónicos ao programa.
- Pulsadores: Poderiamos incluír uns pulsadores de emerxencia para poder abrir e cerrar as barreiras no caso de necesidade, aínda que non haxa detección do sensor ou estean todas as prazas ocupadas. Como o farías?
- Detector de presencia: Vai ser unha liada de cables, pero é interesante simular os aparcadoiros nos que se indican mediante unha luz verde as prazas que están libres. Que sensor porías para detectar a presenza dun vehículo nunha praza?
Mostra:
Aquí podes ver un vídeo co aparcadoiro funcionando:
Modelos 3D
Para a montaxe deste proxecto deseñamos e imprimimos unhas pezas cunha impresora 3D.
Nesta páxina de thingiverse podes descargar as pezas deseñadas para este parking. Se queres, podes modificalas facendo unha copia desta páxina de OnShape.
Imaxes: [tecnoloxia.org CC By-SA]
En tecnoloxia.org/impresion3d tendes información sobre como configurar a vosa impresora e sobre como deseñar pezas con Onshape.