lunes, 15 de febrero de 2021

Contador de tráfico mediante Arduino

Autor: Fernando Martín Pérez
Idea del Proyecto
Se ha ideado una herramienta que controla el número de vehículos que circula por una calle, de tal manera que se automatiza la cuenta de vehículos que circulan para poder realizar estudios y estadísticas.

Funcionamiento
Se incrustará en el centro del carril de la calzada una resistencia LDR (debidamente protegida para que en caso de que un vehículo la atraviese con las ruedas, no sea dañada). Cuando no circula ningún vehículo, la resistencia al paso de la corriente a través de ella es baja porque le llega la iluminación de la calle, por lo que Arduino considerará que está recibiendo una señal "HIGH".
En el momento que un coche circula por encima, le llegará muy poca iluminación, por lo que la resistencia será muy elevada, y arduino considerará que está recibiendo una señal "LOW".
Cuando recibe una señal "LOW", Arduino contará al coche y sumará el paso de un nuevo coche.

Para evitar desajustes, se han añadido dos pulsadores, uno restará el paso de coches, y otro lo sumará; es decir, si un coche atraviesa el sensor y por cualquier motivo Arduino no lo ha detectado, se puede añadir manualmente que ha pasado un coche. A su vez, si pasa una persona por encima (por ejemplo si atraviesa mal la calle y justo por el lector), con el seggundo pulsador se puede restar un paso por el lector.

A cada paso de vehículo, se encenderá un LED, que nos indicará que el sistema ha realizado una lectura correcta, y si se resta una lectura, se encenderá otro LED, para comprobar que se ha realziado correctamente esta sustracción.

Asimismo, para evitar exceso de cableado que dificulte la operación del sistema y visualización de datos, se opta por aprovechar las características de las placas protoboard y no emplear cables con banana, sino cables colocacdos a medida que permitan utilizar únicamente bananas para conectar la placa Arduino a la protoboard.

Materiales
  • 1 o 2 placas protoboard
  • 1 placa Arduino
  • 1 pantalla LCD Arduino
  • 1 potenciómetro 10 kohmios
  • 2 LED
  • 1 resistencia LDR
  • 2 pulsadores
  • 3 resistencias de 10 kohmios
  • 1 resistencia de 1 kohmio
  • cables necesarios para realizar conexiones 
Esquema conexionado
El esquema de conexiones es el siguiente:


Imágenes del montaje








Vídeo demostrativo



Código
El código, explicado mediante comentarios, es el siguiente:


#include <LiquidCrystal.h>
//Incluye la librería para utilizar la pantalla LCD

 

 

LiquidCrystal lcd(7,6,5,4,3,2); //Define los pines a utilizar de la pantalla LCD

 

//Se declaran las variables necesarias

int LED1=0;

int LED2=1;

int BOTON1=8;

int BOTON2=9;

int val1;

int val2;

const int LDR1 = 12;

int vehiculos=0;

 

 

//Setup, se desarrolla solo una vez, al inicio

void setup() {

 //Se especifica si los pines van a ser de salida o entrada

pinMode(LED1,OUTPUT);

pinMode(BOTON1,INPUT);

pinMode(LED2,OUTPUT);

pinMode(BOTON2,INPUT);

pinMode(LDR1, INPUT);

 

//Se inicializa el uso de pantalla LCD

lcd.begin(16,2);

 

//Loop, se desarrolla en bucle constantemente

}

void loop() {

 //Muestra en la pantalla LCD cuántos vehículos han pasado

lcd.setCursor(0,0);

lcd.print("Vehículos:");

lcd.setCursor(0,1);

lcd.print(vehiculos);

 

//Variables para controlar el estado de los pulsadores

val1=digitalRead(BOTON1);

val2=digitalRead(BOTON2);

 

//Variable que nos dice si la LDR está recibiendo luz (HIGH), u oscuridad (LOW)

int value1 = digitalRead(LDR1);

 

 

//Bucle if para contar un vehículo si se atraviesa la LDR

if (value1 == LOW)

 {

  vehiculos=vehiculos+1;

  digitalWrite(LED1,HIGH);

  delay(1000);

  digitalWrite(LED1,LOW);

 }

 

//Bucle if para contar un vehículo si se pulsa el pulsador de sumar un vehículo y encender el LED de vehículo contado

if(val1==HIGH)

{

  vehiculos=vehiculos+1;

  digitalWrite(LED1,HIGH);

  delay(1000);

  digitalWrite(LED1,LOW);

  }

 

else { digitalWrite(LED1,LOW);

}

 

//Bucle if para restar un vehículo si se pulsa el pulsador de restar y encender el LED de vehículo restado

if(val2==HIGH)

{

  vehiculos=vehiculos-1;

  digitalWrite(LED2,HIGH);

  delay(1000);

  digitalWrite(LED2,LOW);

  }

 

else { digitalWrite(LED1,LOW);

}

 

}

DISPENSADOR DE GOLOSINAS AUTOMÁTICO



PROYECTO DE DISPENSADOR AUTOMÁTICO DE GOLOSINAS CON ARDUINO





INFORMACIÓN PRELIMINAR:

Máster Universitario en Profesor de Educación Secundaria Obligatoria, Bachillerato, Formación Profesional y Enseñanza de Idiomas (MUPES)
Universidad de Salamanca

Asignatura: Innovación Docente en la Especialidad de Tecnología

Curso: 2020/2021



TRABAJO REALIZADO POR:

Abel Olmedo Rodríguez 


CONTEXTO ADECUADO:

Este proyecto puede resultar adecuado para cualquier curso de Secundaria en la asignatura de Tecnología, ya sea en 1º de ESO, en 3º de ESO como en 4º de ESO, tando en la modalidad de Académicas como de Aplicadas. 

También puede ser adecuado para  la asignatura de Tecnología industrial I y II, de 1º y 2º de Bachillerato respectivamente.

En particular se propone para el 4º curso de ESO de la asignatura de Tecnología modalidad Académicas para el bloque de Control y robótica.
  

DESCRIPCIÓN DEL FUNCIONAMIENTO:

El funcionamiento se basa en que mediante un pulsador, se dispensan pequeñas gominolas de manera automática. El pulsador hace girar a un servomotor el cual está solidarizado con un pequeño cilindro con una oquedad en un lateral. 

Al alinearse esta oquedad con una perforación en el envase de las golosinas, caen por gravedad al interior del cilindro una cantidad controlada de las mismas. 

Posteriormente, el cilindro gira en sentido contrario para dejarlas caer por una rampa que desemboca en un pequeño recipiente para que las golosinas puedan ser tomadas.

En estado normal podemos apreciar un led RGB que luce con una tonalidad azul y una pantalla LCD que nos muestra la frase "¿QUIERE GOLOSINAS? - SON GRATIS". 

Cuando se acciona el pulsador y el cilindro comienza a girar, el led RGB, que en estado normal luce azul, se torna rojo advirtiendo de que el servomotor está trabajando acompañado a su vez de la pantalla LCD mencionada en la cual en esta ocasión se puede leer el mensaje "EN PROCESO... ESPERE".

El funcionamiento termina cuando el servomotor acaba de realizar todos los movimientos programados y habiendo depositado ya las golosinas en el recipiente final. En este momento en la pantalla LCD se puede leer la frase "AQUÍ TIENE SUS RICAS GOLOSINAS" acompañado de un parpadeo del led RGB, esta vez con tonalidad verde, apoyado a su vez por varios sonidos de un zumbador, advirtiendo de que todo el proceso ha terminado y puede recoger las golosinas.


El proyecto cuenta también con otra posibilidad manual, mediante el accionamiento de un joystick en el eje y. Los movimientos serían los equivalentes a la modalidad automática pero abarcando directamente desde 0 a 90 y 180º , es decir solo en dos movimientos, desde reposo a 90º, giraría a 0º para recoger golosinas y después moviendo el joystick hacia el lado contrario el servomotor giraría hasta los 180 º, dejando caer las golosinas a la rampa inferior.

En este caso no seactivaría ningún otro elemento, pueso que está pensado explusivamente para un accionamiento manunal llegado el caso de que el mecanismo se atascase.



VIDEO:







ESQUEMA DEL CIRCUITO EN TINKERCAD:







COMPONENTES DE ARDUINO UTILIZADOS:

  • Placa protoboard
  • Placa ARDUINO
  • Potenciómetro
  • Joystick
  • Pulsador
  • Zumbador
  • Servomotor
  • Pantalla LCD
  • Led RGB
  • Resistencias 220
  • Cables


MATERIALES UTILIZADOS PARA LA MAQUETA:

  • Tableros DM
  • Tornillería 3x25mm para madera
  • Silicona termofusible
  • Varilla roscada 4mm
  • Arandelas metálicas 4mm
  • Tuercas hexagonales 4mm
  • Poliestireno extruido
  • Bote de galletas saladas
  • Lata de atún


FOTOGRAFÍAS DEL MONTAJE DEL CIRCUITO:





























CÓDIGO ARDUINO:

#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);


#include <Servo.h>

    Servo Abel;


#include "pitches.h"

    int melody[] = {

    NOTE_C5, NOTE_D5, NOTE_E5, NOTE_F5, NOTE_G5, NOTE_A5, NOTE_B5, NOTE_C6};

    int duration = 500;  // 500 miliseconds


const int SW_pin = 4; // digital pin connected to switch output

const int X_pin = A0; // analog pin connected to X output

const int Y = 0; // analog pin connected to Y output


#define BLUE 3

#define GREEN 5

#define RED 6

 

void setup() {

pinMode(SW_pin, INPUT);

digitalWrite(SW_pin, HIGH);

Serial.begin(9600);


Abel.attach(2);

delay(10);


lcd.begin(16, 2);

lcd.print("QUIERE GOLOSINAS");


pinMode(RED, OUTPUT);

pinMode(GREEN, OUTPUT);

pinMode(BLUE, OUTPUT);


digitalWrite(RED, HIGH);

digitalWrite(GREEN, HIGH);

digitalWrite(BLUE, HIGH);

}

 int redValue;

int greenValue;

int blueValue;

 

void loop() {

if (digitalRead(SW_pin) == HIGH)

{

    Serial.print("Switch:  HIGH-->");

    Serial.print(digitalRead(SW_pin));

}


if (digitalRead(SW_pin) == LOW)

{

    lcd.begin(10, 2);

    lcd.print(" EN PROCESO...");

    lcd.setCursor(0, 1);

    lcd.print("     ESPERE     ");


    digitalWrite(RED, HIGH);

    digitalWrite(GREEN, LOW);

    digitalWrite(BLUE, LOW);

    delay(1000);


    Abel.write(90);

    delay(2000);

    Abel.write(45);

    delay(2000);

    Abel.write(0);

    delay(2000);

    Abel.write(45);

    delay(2000);

    Abel.write(180);

    delay(2000);

    Abel.write(90);

    delay(2000);


    lcd.begin(3, 2);

    lcd.print(" AQUI TIENE SUS");

    lcd.setCursor(0, 1);

    lcd.print("RICAS GOLOSINAS");


    for (int thisNote = 0; thisNote < 8; thisNote++)

    tone(13, melody[thisNote], duration);


    digitalWrite(RED, LOW);

    digitalWrite(GREEN, HIGH);

    digitalWrite(BLUE, LOW);

    delay(1000);

    digitalWrite(RED, LOW);

    digitalWrite(GREEN, LOW);

    digitalWrite(BLUE, LOW);

    delay(1000);

    for (int thisNote = 0; thisNote < 8; thisNote++)

    tone(13, melody[thisNote], duration);

    digitalWrite(RED, LOW);

    digitalWrite(GREEN, HIGH);

    digitalWrite(BLUE, LOW);

    delay(1000);

    digitalWrite(RED, LOW);

    digitalWrite(GREEN, LOW);

    digitalWrite(BLUE, LOW);

    delay(1000);

    for (int thisNote = 0; thisNote < 8; thisNote++)

    tone(13, melody[thisNote], duration);

    digitalWrite(RED, LOW);

    digitalWrite(GREEN, HIGH);

    digitalWrite(BLUE, LOW);

    delay(1000);

    digitalWrite(RED, LOW);

    digitalWrite(GREEN, LOW);

    digitalWrite(BLUE, LOW);

    delay(1000);

    for (int thisNote = 0; thisNote < 8; thisNote++)

    tone(13, melody[thisNote], duration);

    digitalWrite(RED, LOW);

    digitalWrite(GREEN, HIGH);

    digitalWrite(BLUE, LOW);

    delay(1000);

    digitalWrite(RED, LOW);

    digitalWrite(GREEN, LOW);

    digitalWrite(BLUE, LOW);

    delay(1000);

    for (int thisNote = 0; thisNote < 8; thisNote++)

    tone(13, melody[thisNote], duration);

    digitalWrite(RED, LOW);

    digitalWrite(GREEN, HIGH);

    digitalWrite(BLUE, LOW);

    delay(1000);

    digitalWrite(RED, LOW);

    digitalWrite(GREEN, LOW);

    digitalWrite(BLUE, LOW);

    delay(1000);

    Serial.print("Switch:  LOW-->");

    Serial.print(digitalRead(SW_pin));

    lcd.begin(3, 2);

    lcd.print("QUIERE GOLOSINAS");

}


int position_Y= analogRead(Y);

int angulo = map(position_Y, 0, 1023, 0, 180);

Abel.write(angulo);

delay(10);

Serial.print("Switch:  ");

Serial.print(digitalRead(SW_pin));

Serial.print("\n");

Serial.print("X-axis: ");

Serial.print(analogRead(X_pin));

Serial.print("\n");

Serial.print("Y-axis: ");

Serial.println(analogRead(Y));

Serial.print("\n\n");

delay(100);


lcd.setCursor(3, 1);

lcd.print("SON GRATIS");


digitalWrite(RED, LOW);

digitalWrite(GREEN, LOW);

digitalWrite(BLUE, HIGH);

}











Sensor de aparcamiento con Arduino

   

Este proyecto forma parte de la asignatura Innovación Docente en la Especialidad de Tecnología, dentro del Master   Universitario de profesor   de Educación Secundaria Obligatoria, Bachillerato, Formación Profesional y Enseñanza de Idiomas de la Universidad de Salamanca.

 

            Autora: MARIA JOSE GOMEZ GONZALEZ 


   DESCRIPCION DEL PROYECTO  

Utilizando un instrumento musical, El Theremin, que unido a un juego de luces y con un sensor de ultrasonidos, se ha construido un sensor de aparcamiento. El funcionamiento es el siguiente: según el objeto se acerca al sensor de ultrasonidos, se van iluminando los LED y el zumbador empieza a emitir sonidos.  Los LED rojos indican peligro por proximidad, a continuación se encienden, según nos alejamos, los LED amarillos que indican precaución, a medida que nos alejamos más se encienden los LED verdes indican que ya no hay peligro por proximidad. Esto juego de luces va acompañado del sonido que emite el zumbador pasivo, que va cambiando su tono a medida que nos alejamos del objeto.


VIDEO

 RELACION CON LA ASIGNATURA DE TECNOLOGIA

Según ORDEN EDU/362/2015, de 4 de mayo, por la que se establece el currículo y se regula la implantación, evaluación y desarrollo de la educación secundaria obligatoria en la Comunidad de Castilla y León, este proyecto estaría indicado para alumnos de la asignatura de Tecnología en los siguientes cursos:

 1º ESO Bloque 4. Estructuras y mecanismos: máquinas y sistemas
3º ESO Bloque 4. Estructuras y mecanismos: máquinas y sistemas
4º ESO Académicas Bloque 1. Electrónica aplicada
4º ESO Aplicadas Bloque 3. Electrónica
1º Bachillerato Tecnología Industrial I Bloque 3. Máquinas y sistemas
2º Bachillerato Tecnología Industrial II Bloque 5. Control y programación de sistemas automáticos

COMPONENTES

  1. Placa de Arduino Uno R3 
  2. Protoboard
  3. Resistencias 220  (8 unidades)
  4. Luces LED rojas (3 unidades)
  5. Luces LED amarillas (2 unidades)
  6. Luces LED VERDES (3 unidades)
  7. Sensor ultrasónico HC-SR04
  8. Zumbador pasivo
  9. Cables de hembra a macho
  10. Cableado de distintos tamaños 



  

 ESQUEMA

   

FUNCIONAMIENTO

        El sistema cuenta como entrada el Sensor ultrasónico HC-SR04 (echo), y como salidas Luces LED rojas, Luces LED amarillas, Luces LED verdes, Zumbador pasivo e incluso el Sensor ultrasónico HC-SR04 (trigger).

        Se utilizan cables puente para conectar los LED, Zumbador pasivo y Sensor ultrasónico al Arduino.
            El Sensor ultrasónico es el que hace que se enciendan los LED y que empiece a sonar el Zumbador pasivo, en cuanto detecta movimiento en una distancia entre   4 y 25 cm, con los siguientes intervalos:

Entre 4 - 8 cm 2 LED rojas

Entre 8 -10 cm 3 LED rojas

Entre 10 -12 cm 3 LED rojas 1 LED amarilla

Entre 12 -14 cm 3 LED rojas 2LED amarilla

Entre 14 -18 cm 3 LED rojas 2LED amarilla y 1 LED verde

Entre 18 -22 cm 3 LED rojas 2LED amarilla y 2 LED verde

Entre 22 y 25 cm 3 LED rojas 2LED amarilla y 3 LED verde

Superado los 25 cm se apagan todas las luces y se para el sonido.

    La melodía del zumbador va cambiando con los intervalos.    

CODIGO

1º Código passive buzzer
Código Sensor ultrasónico; es importante cambiar el pin en el código y guardarlo en el programa

3ºCodigo del trabajo final

 REFERENCIAS

http://workshopweekend.net/arduino/projects/arduino_theremin

Elegoo Super Starter Kit para UNO. V1.0.17.7.10

 



Semáforo

 

AUTORA: María del Canto Pedrosa García

Proyecto realizado para la asignatura de Innovación Docente en la Especialidad de Tecnología, del Máster Universitario de Profesorado en Educación Secundaria Obligatoria, Bachillerato y Formación Profesional y Enseñanza de Idiomas, 2020-21 en la Universidad de Salamanca.

DESCRIPCIÓN: Este proyecto consiste en el desarrollo de la programación de un semáforo por ciclos de tiempo, pero con la posibilidad de interrupción, a través de dos pulsadores, tanto para el caso de los peatones, como para el caso de los coches en caso de emergencias.

VÍDEO DEMOSTRATIVO:



CONTEXTO:

Este tipo de proyectos es ideal para alumnos de 4º de la ESO, para la asignatura de Tecnología tanto de la rama de académicas (Bloque I: Electrónica aplicada) como de la de aplicadas (Bloque III: Electrónica aplicada).
Con el desarrollo de este proyecto los alumnos no solo consolidaran los conceptos vistos en clase, sino que también trabajaran competencias clave como:
- Competencia en comunicación lingüística: deben ser capaces de expresarse correctamente de forma escrita y oral.
- Competencia matemática y competencias básicas en ciencia y tecnología: deben saber utilizar el lenguaje matemático, sus signos, símbolos y operaciones básicas, y obtener la capacidad para comprender e interactuar con el medio que nos rodea, observando los fenómenos naturales e intentando dar una explicación racional mediante la utilización del método científico.
- Competencia digital: la cual hace referencia a, con espíritu crítico, buscar, tratar, procesar y presentar la información utilizando las diferentes tecnologías de la información.
-Competencia para aprender a aprender: supone desarrollar en el alumnado la habilidad de aprender por sí mismos, de manera que sean capaces de construir sus propios conocimientos de forma significativa y autónoma en función de sus necesidades.
-Competencias sociales y cívicas: persigue la formación de individuos tolerantes y democráticos con perfecta cabida en la sociedad plural en la que vivimos. (SIEMPRE QUE SE TRABAJE EN GRUPO)
- Competencia en el sentido de iniciativa y espíritu emprendedor: pretende fomentar el espíritu emprendedor de cada individuo, de manera que sean capaces de afrontar sus propias metas con creatividad, confianza, sentido crítico y no dejándose influenciar por los demás.

MATERIALES:

- 1 Placa Arduino ELEGOO UNO R3

- 1 Protoboard.

- 2 LED rojo.

- 2 LED verde.

- 1 LED amarillo.

- 1 Zumbador pasivo.

- 2 Pulsadores

- 5 resistencias de 220 ohmios.

- 2 resistencias de 10 kilo-ohmios.

- Cables de conexión.

- Cable de conexión a PC.

 ESQUEMA DEL CIRCUITO:

Simulación del proyecto con Tinkercad.

FUNCIONAMIENTO:

El estado inicial del semáforo es abierto (verde) para los peatones  y cerrado para coches . Cuando el semáforo para peatones está abierto suena un pitido similar al de los semáforos reales.

Tras 4 segundos comienza el cambio, por lo que el semáforo de peatones comienza a parpadear y el sonido también se hace intermitente, a la misma frecuencia que el led verde, durante 3,5 segundos.

Tras esto el semáforo de peatones pasa a estado cerrado y por lo tanto se enciende el led rojo del semáforo de peatones. Tras un periodo de 0,5 segundos, es el led verde del semáforo de coches el que se enciende.

El semáforo de coches tiene un periodo de duración abierto de 10 segundos, tras este tiempo pasamos al estado de cambio, donde se apagará el led verde para encenderse el amarillo durante 1,5 segundos, después se apagará el amarillo para encenderse el rojo y 0,4 segundos después, comienza el ciclo desde el principio con el semáforo de peatones abierto (verde y con el pitido).

En este proyecto he programado un pulsador (para peatones) que en caso de que estemos en el estado semáforo de coches abierto, si es activado este pulsador, el semáforo de coches pasa al estado de cambio y así pasar al estado semáforo coches cerrado y semáforo peatones abierto.

También he tenido en cuenta el caso contrario, que exista una emergencia (ambulancia, bomberos, policía...) y poder pasar con un pulsador  al estado semáforo de coches abierto. Cuando se activa este segundo pulsador, el semáforo de peatones que está en estado abierto, pasa al estado intermitente, para ponerse en rojo y dejar paso a que el semáforo de coches se ponga en verde.

CÓDIGO:

Para descargar el código: Semáforo






IMÁGENES DEL MONTAJE: