Arduino (IoT): Simple Tutorial Válvula Solenoide con un BJT

Solenoide Arduino Santiapps

Arduino Honduras Santiapps Marcio Valenzuela

Tutorial Válvula Solenoide con un BJT

En este tutorial continuamos aprendiendo sobre como controlar solenoides.  En el anterior lo hicimos via un FET pero esta vez lo hacemos via un BJT.

Requisitos:

  1. Computadora (mac)
  2. Arduino UNO
  3. Válvula Solenoide de 12V
  4. TIP120 Transistor
  5. Diode
  6. 2 baterias de 9V
  7. Breadboard
  8. Arduino IDE (https://www.arduino.cc/en/Main/Software)
Arduino IoT: Simple Tutorial Valvula Solenoid Santiapps Marcio Valenzuela
Arduino IoT: Simple Tutorial Valvula Solenoid

Una válvula solenoide no es mas que una válvula controlada por un electromagnet, que es esencialmente un motor invertido.  Sabemos entonces que los motores generan contra corrientes.  Como podemos ver en el diagrama de arriba, debemos alimentar la válvula de una fuente y proteger el cerebro (Arduino) de las contra corrientes a través de un diodo.

Al mismo tiempo debemos controlar el flujo de corriente a la válvula a través de un transistor.  Para esto es posible usar un TIP120, enviarle una señal por medio del GATE o BASE.  Podemos ver el siguiente diagrama:

Arduino IoT: Control Solenoid con Arduino Santiapps Marcio Valenzuela
Arduino IoT: Control Solenoid con Arduino

Aquí vemos como una señal desde el pin 13 hacia el Gate del TIP120 abre el flujo para que la solenoide complete el circuito a tierra y como el diodo controla dicho flujo en una sola dirección.

Como seleccionar un BJT:

VCB

VCE

VEB

IC

VBEon

El código:

[code]
/* BJT TIP-120
This sketch will blink a LED and at the same time, use the MOSFET to open a 12V solenoid.
Arduino D10 : To LED (Through 330 Ohm Resistor)
Arduino D02 : To MOSFET Gate
*/
int ledPin = 10; // Connect the pin to Arduino pin 10
int mosfetPin = 2; // Connect the MOSFeT Gate (first pin on the left, when writing on the chip is facing you) to Arduino pin 2
void setup(){
pinMode(ledPin, OUTPUT);
pinMode(mosfetPin, OUTPUT);
}
void loop(){
digitalWrite(ledPin, HIGH);
digitalWrite(mosfetPin, HIGH);
delay(60000); // Will turn both the LED and the MOSFET on for 60s, it gives you plenty of time to see if water is flowing as expected!
digitalWrite(ledPin, LOW);
digitalWrite(mosfetPin, LOW);
delay(5000); // Will shut down everything for 5s and restart.
}
[/code]

 

Controlar el flujo de un liquido puede ser muy util para regar plantas y muchas otras aplicaciones mas.

IoT Arduino-Raspberry Pi Hackeando una TSRB430 BLE Relay Board P2

Hacking Electronics Arduino Santiapps
Raspberry Pi 2 Bluetooth Serial Uart HM10 HM12 Relay Board AI by Santiapps Marcio Valenzuela
Raspberry Pi 2 Bluetooth Serial Uart HM10 HM12 Relay Board AI

 

Continuamos haciendo la TSRB430 BLE pero ahora desde una Raspberry Pi 🙂

Primero instalar ssh y automatizar con:

sudo /etc/init.d/ssh start

y luego con:

boot_enable_ssh.rc renombrar a boot.rc

luego instalar vncserver con:

sudo apt-get install tightvncserver

luego correr vmc server:

vncserver :1 -geometry 1280×800 -depth 16 -pixelformat rgb565

Acceder al ble uart del rpi para detectar tsrb430:

PL2032 – AT+ADDR?

74DAEAB314A5

AT+CONNL

pasando el codigo a un py script:

PRIMERO SCRIPT PARA CONNL

import serial

ser = serial.Serial(

port=’/dev/serial0′,

baudrate=9600,

parity=serial.PARITY_NONE,

stopbits=serial.STOPBITS_ONE,

bytesize=serial.EIGHTBITS,

timeout=1

)

print “Serial esta abierto: ” + str(ser.isOpen())

print “Escribiendo…”

#ser.write(“o”)

ser.write(“AT+CONNL”)

print “Escrito!  Ahora leamos…”

AHORA LA CORREMOS…

pi@raspberrypi:~/Documents/python $ python togglerelay.py

Serial esta abierto: True

Escribiendo…

Escrito!  Ahora leamos…

got ‘OK+CONNLOK+CONN’

pi@raspberrypi:~/Documents/python $

Requisitos

  1. RPi2
  2. Modulo Serial HM10 BLE
  3. TSRB430 Relay Board

Raspberry Pi2 Codigo

[code]</pre>
#!/usr/bin/env python
import serial
ser = serial.Serial(
port=’/dev/serial0′,
baudrate=9600,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=1
)
print “Serial esta abierto:” + str(ser.isOpen())
print “Escribiendo…”
ser.write(“e”)
#ser.write(“AT+CONNL”)
print “Escrito!  Ahora leamos…”
x = ser.readline()
print “got ‘” + x + “‘”
ser.close()
[/code]

Aqui enviamos el codigo e al relay board y podemos ver que el relay se cierra.

 

En el proximo tutorial veremos como leer los estados de los relay.

IoT Arduino-Raspberry Pi Hackeando una TSRB430 BLE Relay Board P1

Hacking Electronics Arduino Santiapps
Raspberry Pi 2 Bluetooth Serial Uart HM10 HM12 Relay Board AI by Santiapps Marcio Valenzuela
Raspberry Pi 2 Bluetooth Serial Uart HM10 HM12 Relay Board AI

 

En realidad vamos a usar los comandos especificados por el fabricante, asi que técnicamente no es hacking, pero suficiente cerca 🙂

Requisitos

  1. Arduino MCU
  2. Modulo Serial HM10 BLE
  3. TSRB430 Relay Board

Arduino Code

[code]
#include <SoftwareSerial.h>
int bluetoothTx = 10; // TX-O pin of bluetooth
int bluetoothRx = 11; // RX-I pin of bluetooth
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);
void setup(){
Serial.begin(9600); // Begin the serial monitor at 9600bps
delay(200); // Short delay, wait for the Mate to send back CMD
bluetooth.begin(9600); // Start bluetooth serial at 9600
Serial.print(“send…”);
// bluetooth.print(“AT”);
//bluetooth.print(“e”); //open relay 1
//delay(2000);
//bluetooth.print(“o”); //close relay 1
}
void loop(){
if(bluetooth.available()){
Serial.print((char)bluetooth.read());
}
if(Serial.available()){
bluetooth.print((char)Serial.read());
}
}
void activateTSRB430() {
Serial.print(“commanding…”);
bluetooth.print(“110”);
delay(3000);
bluetooth.print(“100”);
delay(2000);
}
[/code]

Con este codigo conectamos un Arduino MCU con un modulo serial bluetooth y enviamos comandos una relay board TSRB430 HM-10 BLE.

Ahora hagamos lo mismo pero desde una RPi!

Requisitos

  1. RPi2
  2. Modulo Serial HM10 BLE
  3. TSRB430 Relay Board

Raspberry Pi2 Code

[code]</pre>
#!/usr/bin/env python
import serial
ser = serial.Serial(
port=’/dev/serial0′,
baudrate=9600,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=1
)
print “Serial is open: ” + str(ser.isOpen())
print “Now Writing”
ser.write(“e”)
#ser.write(“AT+CONNL”)
print “Did write, now read”
x = ser.readline()
print “got ‘” + x + “‘”
ser.close()
[/code]

Aqui enviamos el codigo e al relay board y podemos ver que el relay se cierra.

En el proximo tutorial veremos que podemos hacer con esta conexión.