This is default featured slide 1 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 2 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.

sábado, 22 de agosto de 2015

Central meteorológica experimental con ARDUINO y Bluetooth


Listado de componentes
  • Sensor DHT22.
  • Sensor BMP085.
  • Módulo BT RN-42.
  • LCD.
  • Arduino UNO.
  • Resistencias 10 KΩ (3).
  • Pulsadores NA (2).
  • LED.
  • Cables. 



Código fuente

// “Central meteorológica experimental”

// Programa

// A. Incluir bibliotecas (libraries)
 
#include ; // Presentar datos por LCD
#include ; // Pantalla LCD
#include ; // Comunicación I2C
#include ; // Sensor BMP085
#include ; // Sensor DHT22
#include ; // Comunicación Bluetooth RN-42  

// B. Definir variables
 
// Pines para la pantalla LCD:
#define BACKLIGHT_PIN     3
#define En_pin  2
#define Rw_pin  1
#define Rs_pin  0
#define D4_pin  4
#define D5_pin  5
#define D6_pin  6
#define D7_pin  7
// Variables para la librería del sensor DHT
#define DHTTYPE DHT22
#define DHTPIN A0  
// Definir pines:
const int led = 13;
const int pulsadorA = 2;
const int pulsadorB = 3;
// Variables de programa
int contador=0;  
float temperature;
float pressure;
float pressure2;  
float h;
float t;
float tmedia;
// Variables de librería:
LiquidCrystal_I2C lcd(0x27,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);
Adafruit_BMP085 bmp;
DHT dht(DHTPIN, DHTTYPE); 
SoftwareSerial SerialBT(10,11); // (RX, TX) en Arduino

// C. Bucle inicial (setup) 
 
 void setup() {  
  pinMode(led, OUTPUT); // Se define el LED como una salida
  pinMode(pulsadorA, INPUT); // Definir pulsador 1 como una entrada
  pinMode(pulsadorB, INPUT); // Definir pulsador 2 como una entrada  
  Serial.begin(9600);
  SerialBT.begin(9600);  
  dht.begin();
  bmp.begin();  
  if (!bmp.begin()) {
    Serial.println("Could not find a valid BMP085 sensor, check wiring!");
    while (1) {}
  }  
  lcd.begin(16,2);
  lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
  lcd.setBacklight(LOW);
  lcd.home();

// D. Núcleo del programa

 void loop(){     
  if(digitalRead(pulsadorA) == HIGH){
  digitalWrite(led, HIGH); // Led encendido
  lcd.display();
  lcd.setBacklight(HIGH);
  contador=1;
  }  
  if(digitalRead(pulsadorB) == HIGH){
    digitalWrite(led, LOW); // Led encendido
    Serial.println("Apagado"); // Se registra la pulsación
    contador=0;
    lcd.noDisplay();
    lcd.setBacklight(LOW);
  }  
  if(contador == 1){
  t = dht.readTemperature();
  h = dht.readHumidity();  
  temperature = bmp.readTemperature();
  pressure = bmp.readPressure();       
  tmedia= (t+temperature)/2;  
  pressure2= (pressure/100);      
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print(tmedia);
  lcd.print((char)223);
  lcd.print("C   ");
  lcd.print(h);
  lcd.print("%");  
  lcd.setCursor(0,1);
  lcd.print(pressure2);
  lcd.print("mbar");
  delay(3000);  
    Serial.print("Humidity-DHT = "); 
    Serial.println(h);
    Serial.print("Temperature-DHT = "); 
    Serial.print(t);
    Serial.print("[");
    Serial.write(186);
    Serial.println("C]");  
    Serial.print("Temperature-BMP = ");
    Serial.print(temperature);
    Serial.print("[");
    Serial.write(186);
    Serial.println("C]");     
    Serial.print("Pressure = ");
    Serial.print(pressure2);
    Serial.println("[mbares]");
    SerialBT.println(" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ");
    SerialBT.print("T=      ");
    SerialBT.print(tmedia);
    SerialBT.println("  [Grados Celsius] ");     
    SerialBT.print("H=     ");
    SerialBT.print(h);
    SerialBT.println("  [% de Humedad Relativa]");     
    SerialBT.print("P= ");
    SerialBT.print(pressure2);
    SerialBT.println("  [milibares]");     
   // Determinar la altitud considerando la presión barométrica estándar
    // Presión de 1013.25 millibar = 101325 Pascal
    Serial.print("Altitude = ");
    Serial.print(bmp.readAltitude());
    Serial.println(" meters");     
    Serial.print("Real altitude = ");
    Serial.print(bmp.readAltitude(101300));
    Serial.println(" meters");     
  }
}

Algunos comentarios
  • Se presenta un proyecto de “Central Meteorológica” experimental capaz de medir temperatura, humedad relativa, presión atmosférica y altura con presentación local de resultados e interfaz de comunicación Bluetooth. Se deja para una etapa intermedia el desarrollo de la interface Android, el sketch correspondiente en Arduino, el Datalogger y el anexado de otros sensores: velocidad y dirección del viento y luminosidad. Para una etapa final, desarrollo de la interfaz de comunicación Ethernet.
  • Sensor DHT22: temperatura (-40°C a +80°C, +-0.5% precisión) y humedad relativa (0% a 99%, precisión +-2% RH a 25°C). Tiempo de sensado: 1 vez cada 2 segundos. 
  • Sensor BMP085: temperatura (-40°C a +85°C), presión barométrica (300 hPa a 1100 hPa, 0.03 hPa resolución / 0.25 m) y altitud (9000 m sobre el nivel del mar a -500m).
  • Interfaz de comunicación Bluetooth: módulo BT Clase 2 “RN-42”.
  • LCD: bus de dos hilos I2C (Inter-Integrated Circuit) para la presentación local de la información. Utiliza solo dos líneas bidireccionales de bus: reloj (SCK, AD5 en la placa UNO) y datos (SDA, AD4 en la placa UNO).
  • Cada uno de los dos pulsadores está conectado en montaje “pull down” empleando resistencias de 10 KΩ (valor “normal” en montajes pull up y pull down). Así, se establece un estado lógico bajo a la entrada del circuito lógico cuando dicho circuito está en reposo y alto en el caso contrario evitando falsos estados producidos por ruido eléctrico cuando se deja una entrada con un valor indeterminado.


Secuencia de LED con ARDUINO

Deberá mostrar secuencialmente (mediante 8 LED) el código binario natural de 8 bits con una secuencia de 500mS. Se deberá utilizar un bucle for() para aumentar el número, la función shiftOut() y un registro de desplazamiento. Además, indicara en el monitor serial, el numero decimal que está contando, siempre escribiendo en línea nueva.


/*Uso del registro de desplazamiento*/
//Pin 8 Arduino conectado al Pin 12 del 74HC595 (Latch)
int latchPin = 8;
//Pin 12 Arduino conectado al Pin 11 del 74HC595 (Clock)
int clockPin = 12;
//Pin 11 Arduino conectado al Pin 14 del 74HC595 (Data)
int dataPin = 11;
void setup() {
//configurar pines como salidas (output)
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop() {
//contar desde 0 a 255
for (int i = 0; i < 256; i++) {
//poner latchPin en bajo para permitir el flujo de datos
digitalWrite(latchPin, LOW);
shiftOut(i);
//poner latchPin en alto para cerrar el registro y enviar datos
digitalWrite(latchPin, HIGH);
delay(500);
}
}
void shiftOut(byte dataOut) {
boolean pinState;
//registro de desplazamiento listo para enviar datos
digitalWrite(dataPin, LOW);
digitalWrite(clockPin, LOW);
for (int i=0; i<=7; i++) {
//set clockPin en LOW previo enviar un bit
digitalWrite(clockPin, LOW);
//si el valor de DataOut y (AND lógico) en bitmask es verdadero, poner pinState en 1 (HIGH)
if ( dataOut & (1<
pinState = HIGH;
}
else {
pinState = LOW;
}
//poner dataPin en HIGH o en LOW dependiendo de pinState
digitalWrite(dataPin, pinState);
digitalWrite(clockPin, HIGH);
}
//detener el desplazamiento de datos
digitalWrite(clockPin, LOW);
}

Obtener una lectura (analógica) desde un potenciómetro que activará de 1 a 5 LED (función map()).



/*Código IDE Arduino*/

// Definición de constantes:
const int analogPin = A0;   // pin de conexión del potenciómetro
const int ledCount = 5;    // por 5 LED conectados
int ledPins[] = {2, 3, 4, 5, 6};   // array conteniendo números de pines de conexión de los LED
void setup() {
//lazo con el número de pin y envío a la salida del array:
for (int thisLed = 0; thisLed < ledCount; thisLed++) {
pinMode(ledPins[thisLed], OUTPUT); 
  }
}
void loop() {
  //lectura del potenciómetro:
  int sensorReading = analogRead(analogPin);
  //convertir el resultado a un rango entre 0 y el número de LED (5):
  int ledLevel = map(sensorReading, 0, 1023, 0, ledCount);
  
// lazo sobre el array de LED:
  for (int thisLed = 0; thisLed < ledCount; thisLed++) {
    //si el índice de elementos del array es menor que ledLevel, encender este pin:
    if (thisLed < ledLevel) {
      digitalWrite(ledPins[thisLed], HIGH);
    } 
    //apagar todos los pines más altos que ledLevel:
    else {
      digitalWrite(ledPins[thisLed], LOW); 
    }
  }
}

jueves, 19 de marzo de 2015

Nuevo curso "Aprendiendo Electrónica con Arduino"


Taller - Aprendiendo Electrónica con Arduino

Duración del curso (carga horaria): 40 hs
Frecuencia: 1 día por semana
Carga horaria por clase: 3 hs
Objetivos del curso: 
Que el alumno pueda conocer e identificar los componentes eléctricos y electrónicos dentro de un circuito, diseñar y calcular circuitos electrónicos básicos, utilizar instrumentación de laboratorio, utilizar software CAD, reconocer los componentes y utilizar la plataforma de desarrollo Arduino.
Destinatarios del curso: 
Profesionales. Docentes. Estudiantes de enseñanza media, superior y universitaria. Personal de Empresas (admite Programa Crédito Fiscal para Capacitación SEPYME).
Requisitos del curso: 
Sin requisitos previos. El curso está abierto a participantes sin conocimiento previos en programación y/o electrónica analógica y digital o con conocimientos básicos de las mismas. Cada participante deberá disponer de una notebook con puerto USB y sistema operativo Windows.
Contenidos:
  • Conceptos básicos.
  • Resistencia.
  • Capacidad.
  • Diodos.
  • Transistores.
  • Fuentes de alimentación.
  • Instrumentación de laboratorio.
  • Software CAD.
  • Hardware y software de la plataforma de desarrollo Arduino.
  • Proyecto integrador.
Material que se incluye: 
No es necesario contar con los componentes, placa Arduino y otros materiales para realizar el curso taller. En cada clase, el docente facilitará los materiales necesarios para realizar las prácticas propuestas. El Instituto proveerá a los alumnos del programa y material de estudio en formato digital. Cada participante deberá disponer de una notebook con puerto USB y sistema operativo Windows.

Nuevo curso "Desarrollo de aplicaciones con Arduino"


Taller - Desarrollo de aplicaciones con Arduino

Duración del curso (carga horaria): 40 hs
Frecuencia: 1 día por semana
Carga horaria por clase: 3 hs

Objetivos del curso:
Finalizado el curso, los participantes serán capaces de identificar y aplicar los conceptos fundamentales de electricidad, electrónica y programación aplicados a Arduino, identificar los componentes de la placa Arduino UNO y la utilización de esta, conocer las distintas formas de programación y su realización, diseñar, montar y programar circuitos con sensores y actuadores, montar circuitos en protoboard y simularlos en la computadora.

Destinatarios del curso:
Profesionales. Docentes. Estudiantes de enseñanza media, superior y universitaria. Personal de Empresas (admite Programa Crédito Fiscal para Capacitación SEPYME)
Requisitos del curso: Para facilitar el aprendizaje del alumno es conveniente que tenga conocimientos previos de las leyes de Ohm y Kirchhoff, uso básico de instrumentos de medición, resistencias, LED, sensores y actuadores básicos, protoboard y operación de PC a nivel usuario. Es recomendable realizar previamente el curso “Aprendamos electrónica con Arduino”. Cada participante deberá traer un notebook con puerto USB disponible y sistema operativo Windows.

Contenidos:
Electricidad y electrónica
Introducción al entorno Arduino
Hardware de Arduino UNO
Programación de Arduino
Introducción a las comunicaciones
Conectando Arduino con el mundo físico. Proyecto integrador

Material que se incluye:
No es necesario contar con los componentes, placa Arduino y otros materiales para realizar el curso taller. En cada clase, el docente facilitará los materiales necesarios para realizar las prácticas propuestas. El Instituto proveerá a los alumnos del programa y material de estudio en formato digital. Cada participante deberá disponer de una notebook con puerto USB y sistema operativo Windows.

Nuevo curso "Robótica con Arduino"


Taller - Robótica con Arduino

Duración del curso (carga horaria): 40 hs
Frecuencia: 1 día por semana
Carga horaria por clase: 3 hs

Objetivos del curso:
Finalizado el curso, los participantes serán capaces de identificar los conceptos fundamentales de mecánica, electrónica y programación para su aplicación en robótica, conocer y comprender el funcionamiento de los principales componentes de un sistema robótico como sensores, actuadores, efectores y sistema de control de mecanismos móviles, diseñar la construcción y programación de un sistema robótico basado en la utilización de sensores y actuadores que interactúen con el mundo real.

Destinatarios del curso:
Profesionales. Docentes. Estudiantes de enseñanza media, superior y universitaria. Personal de Empresas (admite Programa Crédito Fiscal para Capacitación SEPYME)

Requisitos del curso:

Contenidos:
Introducción a la robótica
Electricidad y electrónica
Introducción a la plataforma Arduino
Bases de Mecatrónica
Sensores y actuadores utilizados en robótica
Proyecto integrador

Material que se incluye:
No es necesario contar con los componentes, placa Arduino y otros materiales para realizar el curso taller. En cada clase, el docente facilitará los materiales necesarios para realizar las prácticas propuestas. El Instituto proveerá a los alumnos del programa y material de estudio en formato digital. Cada participante deberá disponer de una notebook con puerto USB y sistema operativo Windows.