Arduíno

Ir a Arduíno en tecnoloxia.org

Parking

Reto:

parking3

[tecnoloxia.org CC By-SA]

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:

proxecto_parking_barreira

Programa inicial para unha barreira [tecnoloxia.org CC By-SA]

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:

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:

parking-fluxo2

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:

  1. Semáforos: Engade un semáforo ao carón de cada barreira para indicar ao condutor cando pode pasar.
  2. 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.
  3. 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?
  4. 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:

Para a montaxe deste proxecto deseñamos e imprimimos unhas pezas cunha impresora 3D.

parking1

parking4 parking2

parking3 parking5

Imaxes: [tecnoloxia.org CC By-SA]