En este tutorial, veremos como hacer un dispositivo, que nos va a permitir encender o apagar hasta ocho luces, motores y más , por medio de bluetooth o un teclado de ocho pulsadores
Tal vez pueda interesarte proyectos en arduino, pic, robótica, telecomunicaciones, suscribete en http://www.youtube.com/user/carlosvolt?sub_confirmation=1 mucho videos con código fuentes completos y diagramas
Materiales
Arduino nano
El Arduino Nano es una placa pequeña, completa y compatible con la placa de pruebas basada en el ATmega328 (Arduino Nano 3.x). Tiene más o menos la misma funcionalidad del Arduino Duemilanove, pero en un paquete diferente. Solo carece de un conector de alimentación de CC y funciona con un cable USB Mini-B en lugar de uno estándar.
Microcontrolador | ATmega328 |
Arquitectura | AVR |
Tensión de funcionamiento | 5 V |
Memoria flash | 32 KB de los cuales 2 KB utiliza el gestor de arranque |
SRAM | 2 KB |
Velocidad de reloj | 16 MHz |
Pines analógicos IN | 8 |
EEPROM | 1 KB |
Corriente CC por pines de E / S | 40 mA (pines de E / S) |
Voltaje de entrada | 7-12 V |
Pines de E / S digitales | 22 (6 de los cuales son PWM) |
Salida PWM | 6 |
El consumo de energía | 19 mA |
Tamaño de PCB | 18 x 45 mm |
Peso | 7 g |
Diagrama de pines
Pines hembra
Zócalo para el arduino nano
Pines macho
Módulo bluetooth HC-05
Especificaciones
- Frecuencia: banda ISM de 2,4 GHz
- Modulación: GFSK
- Protocolo USB : USB v1.1 / 2.0
- Sensibilidad: Menos de -84dBm en el 0,1% BER
- Potencia de transmisión : menos de 4dBm , Clase 2 .
- Ratio asíncronos: 2.1Mbps ( Max) / 160 kbps .
- Sincróno : 1Mbps / 1Mbps
- Perfiles de la ayuda : puerto serie Bluetooth (maestro y esclavo)
- Fuente de alimentación: + 3.3VDC 50mA . (soporta de 3.3 a 6V)
- Temperatura de trabajo: -5 ° C a 45 ° C.
Ocho Pulsadores
Módulo relay de 8 canales
Características
Permite controlar el encendido/apagado de equipos de alta potencia (electrodomésticos). Funciona perfectamente con Arduino, Pic o cualquier otro sistema digital.
Dentro de la gran variedad de proyectos que podemos realizar con Arduino, podemos llegar a desear controlar componentes de alto voltaje o alto amperaje, como bombillas o bombas de agua, los cuales no pueden ser manejados directamente con Arduino. En estos casos es necesario utilizar Relays o Reles, estos dispositivos permiten controlar cargas de alto voltaje con una señal pequeña.
El modulo posee 8 Relays de alta calidad, capaces de manejar cargas de hasta 250V/10A. Cada canal posee aislamiento eléctrico por medio de un optoacoplador y un led indicador de estado. Su diseño facilita el trabajo con Arduino, al igual que con muchos otros sistemas como Raspberry Pi, ESP8266 (NodeMCU y Wemos), Teensy y Pic. Este modulo Relay activa la salida normalmente abierta (NO: Normally Open) al recibir un “0” lógico (0 Voltios) y desactiva la salida con un “1” lógico (5 voltios). Para la programación de Arduino y Relays se recomienda el uso de timers con la función “millis()” y de esa forma no utilizar la función “delay” que impide que el sistema continue trabajando mientras se activa/desactiva un relay.
Entre las cargas que se pueden manejar tenemos: bombillas de luz, luminarias, motores AC (220V), motores DC, solenoides, electroválvulas, calentadores de agua y una gran variedad de actuadores más. Se recomienda realizar y verificar las conexiones antes de alimentar el circuito, también es una buena práctica proteger el circuito dentro de un case.
Datos técnicos
8 canales independientes
8 Relevadores (Relays) de 1 polo 2 tiros
El voltaje de la bobina del relé es de 5 VDC
Led indicador para cada canal (enciende cuando la bobina del relé esta activa)
Activado mediante corriente: el circuito de control debe proveer una corriente de 15 a 20 mA
Puede controlado directamente por circuito lógicos
Terminales de conexión de tornillo (clemas)
Terminales de entrada de señal lógica con headers macho de 0.1″.
Puede controlado directamente por circuito lógicos
Alimentación y consumo
La forma mas sencilla de alimentar este módulo es desde Vcc y GND de la placa Arduino, manteniendo el Jumper en su lugar, con lo que JD-Vcc = Vcc. Esta conexión tiene dos limitaciones importantes:
Se pierde la aislación eléctrica que brindan los optoacopladores, lo que aumenta la posibilidad de daño al Arduino si hay algún problema con las cargas de los relés.
La corriente consumida por las bobinas de los relés debe ser provista por la placa Arduino. Cada bobina consume unos 90 mA y las cuatro juntas suman 360 mA. Si a esto le sumamos los consumos que pueden tener otras salidas, estamos muy cerca de los 500 mA que puede suministrar un puerto USB. En este caso se debería alimentar al Arduino con una fuente externa, lo que aumenta el limite de corriente a 1 A (en el caso de la Arduino UNO).
La forma mas segura es remover el jumper y alimentar la placa de relés con dos fuentes: la de la placa Arduino conectada a Vcc y una segunda fuente, con el positivo a JD-Vcc y el negativo a GND, sin estar éste unido a la placa Arduino. Esta conexión tiene como ventajas:
Hay completa aislación entre la carga y el Arduino.
Todo el consumo de los relés es tomado de la segunda fuente y no del Arduino o el puerto USB.
Entradas
Las entradas a la placa pueden conectarse directamente a las salidas digitales de la placa Arduino. La única precaución a tener en cuenta es que cuando Arduino arranca al ser alimentado, los pines se configuran como entradas automáticamente y puede ocurrir que, por un brevísimo lapso de tiempo entre el arranque y la correcta configuración de estos pines como salidas, las entradas de control al módulo de relé queden en un estado indeterminado. Esto se puede evitar conectando en cada entrada un pull-up con una resistencia de 10K a Vcc, lo que asegura un estado ALTO durante el arranque.
PCB
Descargar PCB –> control de luces de 8 canales por bluetooth
Circuito
Código Fuente
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 |
//Más proyectos en www.rogerbit.com String cadena; int estadoBoton11 = 0; int estadoBoton12 = 0; int estadoBotonA5 = 0; int estadoBotonA0 = 0; int estadoBotonA1 = 0; int estadoBotonA2 = 0; int estadoBotonA3 = 0; int estadoBotonA4 = 0; int estado11 = 0; int estado12 = 0; int estadoA5 = 0; int estadoA0 = 0; int estadoA1 = 0; int estadoA2 = 0; int estadoA3 = 0; int estadoA4 = 0; //Pulsadores int botonPin11 =11; int botonPin12 =12; int botonPinA5 =A5; int botonPinA0 =A0; int botonPinA1 =A1; int botonPinA2 =A2; int botonPinA3 =A3; int botonPinA4 =A4; void setup() { Serial.begin(9600);//Velocidad del puerto debe conincidir con el módulo bluetooth //Definimos estos pines como salidas pinMode(3,OUTPUT); pinMode(4,OUTPUT); pinMode(5,OUTPUT); pinMode(6,OUTPUT); pinMode(7,OUTPUT); pinMode(8,OUTPUT); pinMode(9,OUTPUT); pinMode(10,OUTPUT); //Ponemos en estado Alto todas las salidas digitalWrite(3,HIGH); digitalWrite(4,HIGH); digitalWrite(5,HIGH); digitalWrite(6,HIGH); digitalWrite(7,HIGH); digitalWrite(8,HIGH); digitalWrite(9,HIGH); digitalWrite(10,HIGH); //Definimos estos pines como entradas para los pulsadores pinMode(botonPin11, INPUT_PULLUP); pinMode(botonPin12, INPUT_PULLUP); pinMode(botonPinA5, INPUT_PULLUP); pinMode(botonPinA0, INPUT_PULLUP); pinMode(botonPinA1, INPUT_PULLUP); pinMode(botonPinA2, INPUT_PULLUP); pinMode(botonPinA3, INPUT_PULLUP); pinMode(botonPinA4, INPUT_PULLUP); } void loop() { //leemos los caractres que ingresan al puerto serie y obtenemos una cadena if (Serial.available()) { cadena = String(""); while (Serial.available()) { cadena = cadena + char(Serial.read()); delay(1); } } //Pin 3 arduino IN1 en módulo relay de 8 canales if(cadena == "SET1OFF")//Apagado { digitalWrite(3,HIGH); estado11 = 0; cadena=""; } if(cadena == "SET1ON")//Encendido { digitalWrite(3, LOW); estado11 = 1; cadena=""; } //Pin 4 arduino IN2 en módulo relay de 8 canales if(cadena == "SET2OFF")//Apagado { digitalWrite(4,HIGH); estado12 = 0; cadena=""; } if(cadena == "SET2ON")//Encendido { digitalWrite(4, LOW); estado12 = 1; cadena=""; } //Pin 5 arduino IN3 en módulo relay de 8 canales if(cadena == "SET3OFF")//Apagado { digitalWrite(5,HIGH); estadoA5 = 0; cadena=""; } if(cadena == "SET3ON")//Encendido { digitalWrite(5,LOW); estadoA5 = 1; cadena=""; } //Pin 6 arduino IN4 en módulo relay de 8 canales if(cadena == "SET4OFF")//Apagado { digitalWrite(6,HIGH); estadoA0 = 0; cadena=""; } if(cadena == "SET4ON")//Encendido { digitalWrite(6,LOW); estadoA0 = 1; cadena=""; } //Pin 7 arduino IN5 en módulo relay de 8 canales if(cadena == "SET5OFF")//Apagado { digitalWrite(7,HIGH); estadoA1 = 0; cadena=""; } if(cadena == "SET5ON")//Encendido { digitalWrite(7,LOW); estadoA1 = 1; cadena=""; } //Pin 8 arduino IN6 en módulo relay de 8 canales if(cadena == "SET6OFF")//Apagado { digitalWrite(8,HIGH); estadoA2 = 0; cadena=""; } if(cadena == "SET6ON")//Encendido { digitalWrite(8,LOW); estadoA2 = 1; cadena=""; } //Pin 9 arduino IN7 en módulo relay de 8 canales if(cadena == "SET7OFF")//Apagado { digitalWrite(9,HIGH); estadoA3 = 0; cadena=""; } if(cadena == "SET7ON")//Encendido { digitalWrite(9,LOW); estadoA3 = 1; cadena=""; } //Pin 10 arduino IN8 en módulo relay de 8 canales if(cadena == "SET8OFF")//Apagado { digitalWrite(10,HIGH); estadoA4 = 0; cadena=""; } if(cadena == "SET8ON")//Encendido { digitalWrite(10,LOW); estadoA4 = 1; cadena=""; } delay(100);//Retardo antirrebote para los pulsadores estadoBoton11 = digitalRead(botonPin11);//Leemos el pulsador para ver su estado estadoBoton12 = digitalRead(botonPin12);//Leemos el pulsador para ver su estado estadoBotonA5 = digitalRead(botonPinA5);//Leemos el pulsador para ver su estado estadoBotonA0 = digitalRead(botonPinA0);//Leemos el pulsador para ver su estado estadoBotonA1 = digitalRead(botonPinA1);//Leemos el pulsador para ver su estado estadoBotonA2 = digitalRead(botonPinA2);//Leemos el pulsador para ver su estado estadoBotonA3 = digitalRead(botonPinA3);//Leemos el pulsador para ver su estado estadoBotonA4 = digitalRead(botonPinA4);//Leemos el pulsador para ver su estado //Llama a una función if (estadoBoton11 == LOW) {//Si el pulsador está precionado se cumple esta condición luz11(); } //Llama a una función if (estadoBoton12 == LOW) {//Si el pulsador está precionado se cumple esta condición luz12(); } //Llama a una función if (estadoBotonA5 == LOW) {//Si el pulsador está precionado se cumple esta condición luzA5(); } //Llama a una función if (estadoBotonA0 == LOW) {//Si el pulsador está precionado se cumple esta condición luzA0(); } //Llama a una función if (estadoBotonA1 == LOW) {//Si el pulsador está precionado se cumple esta condición luzA1(); } //Llama a una función if (estadoBotonA2 == LOW) {//Si el pulsador está precionado se cumple esta condición luzA2(); } //Llama a una función if (estadoBotonA3 == LOW) {//Si el pulsador está precionado se cumple esta condición luzA3(); } //Llama a una función if (estadoBotonA4 == LOW) {//Si el pulsador está precionado se cumple esta condición luzA4(); } } //Función para encender la luz con el botón void luz11(){ if(estado11 ==0){//Si la variable estado es igual a 0 se cumple esta condición digitalWrite(3, LOW);// Encendemos el relay estado11 = 1;//Asignamos el valor 1 a la variable "estado" } else{ digitalWrite(3, HIGH);//Apagamos el relay estado11 = 0; } while(estadoBoton11 == LOW){ estadoBoton11 = digitalRead(11);//Se cumple esta condición mientras esté precionado el botón } } //Función para encender la luz con el botón void luz12(){ if(estado12 ==0){//Si la variable estado es igual a 0 se cumple esta condición digitalWrite(4, LOW);// Encendemos el relay estado12 = 1;//Asignamos el valor 1 a la variable "estado" } else{ digitalWrite(4, HIGH);//Apagamos el relay estado12 = 0; } while(estadoBoton12 == LOW){ estadoBoton12 = digitalRead(12);//Se cumple esta condición mientras esté precionado el botón } } //Función para encender la luz con el botón void luzA5(){ if(estadoA5 ==0){//Si la variable estado es igual a 0 se cumple esta condición digitalWrite(5, LOW);// Encendemos el relay estadoA5 = 1;//Asignamos el valor 1 a la variable "estado" } else{ digitalWrite(5, HIGH);//Apagamos el relay estadoA5 = 0; } while(estadoBotonA5 == LOW){ estadoBotonA5 = digitalRead(A5);//Se cumple esta condición mientras esté precionado el botón } } void luzA0(){ if(estadoA0 ==0){//Si la variable estado es igual a 0 se cumple esta condición digitalWrite(6, LOW);// Encendemos el relay estadoA0 = 1;//Asignamos el valor 1 a la variable "estado" } else{ digitalWrite(6, HIGH);//Apagamos el relay estadoA0 = 0; } while(estadoBotonA0 == LOW){ estadoBotonA0 = digitalRead(A0);//Se cumple esta condición mientras esté precionado el botón } } //Función para encender la luz con el botón void luzA1(){ if(estadoA1 ==0){//Si la variable estado es igual a 0 se cumple esta condición digitalWrite(7, LOW);// Encendemos el relay estadoA1 = 1;//Asignamos el valor 1 a la variable "estado" } else{ digitalWrite(7, HIGH);//Apagamos el relay estadoA1 = 0; } while(estadoBotonA1 == LOW){ estadoBotonA1 = digitalRead(A1);//Se cumple esta condición mientras esté precionado el botón } } //Función para encender la luz con el botón void luzA2(){ if(estadoA2 ==0){//Si la variable estado es igual a 0 se cumple esta condición digitalWrite(8, LOW);// Encendemos el relay estadoA2 = 1;//Asignamos el valor 1 a la variable "estado" } else{ digitalWrite(8, HIGH);//Apagamos el relay estadoA2 = 0; } while(estadoBotonA2 == LOW){ estadoBotonA2 = digitalRead(A2);//Se cumple esta condición mientras esté precionado el botón } } //Función para encender la luz con el botón void luzA3(){ if(estadoA3 ==0){//Si la variable estado es igual a 0 se cumple esta condición digitalWrite(9, LOW);// Encendemos el relay estadoA3 = 1;//Asignamos el valor 1 a la variable "estado" } else{ digitalWrite(9, HIGH);//Apagamos el relay estadoA3 = 0; } while(estadoBotonA3 == LOW){ estadoBotonA3 = digitalRead(A3);//Se cumple esta condición mientras esté precionado el botón } } //Función para encender la luz con el botón void luzA4(){ if(estadoA4 ==0){//Si la variable estado es igual a 0 se cumple esta condición digitalWrite(10, LOW);// Encendemos el relay estadoA4 = 1;//Asignamos el valor 1 a la variable "estado" } else{ digitalWrite(10, HIGH);//Apagamos el relay estadoA4 = 0; } while(estadoBotonA4 == LOW){ estadoBotonA4 = digitalRead(A4);//Se cumple esta condición mientras esté precionado el botón } } |
PROYECTO RECOMENDADO
Hola, tengo una consulta, si que hacer que la entrada de 220v y 5v salgan de un solo conector (de 220v), para hacer eso tengo que hacer 2 caminos y por uno usar un transformador para que salgan 5v o no funcionaria así?
si es así que tipo de transformador tengo que usar o cualquiera sirve?