2a78cb0a08e1fff08a6ac38c5f33b484 - Electrogeek

Kit de 37 sensores de Arduino-Raspberry (Ky-001…Ky-004) Primera Parte Deja un comentario

Módulos Arduino y Raspberry Pi

KY-001: Módulo sensor de temperatura DS18B20

1 2 - Electrogeek

Descripción:

Módulo sensor de temperatura entre 55°C bajo cero y 125°C

Rango de Voltaje: 3.0 V ~ 5.5 V

Rango de Temperatura: -55°C ~ +125°C

Rango de Temperatura: 67°F ~ 257°F

Rango de Precisión: ±0.5°C

Hoja de datos: https://cdn.sparkfun.com/datasheets/Sensors/Temp/DS18B20.pdf

Conexión Arduino:

2 4 - Electrogeek

EspKy 001 Ard - Electrogeek

Código Arduino:

Requisito librería OneWire: https://github.com/PaulStoffregen/OneWire.git

#include 
 
// DS18S20 Temperatura chip i/o
OneWire ds(2);  // Inicializamos el pin 2
 
void setup(void) {

  // Inicializamos el puerto serie en 9600 baudios
  Serial.begin(9600);

}
 
void loop(void) {
 
  // Creamos las variables para convertir a grados centigrados
  int HighByte, LowByte, TReading, SignBit, Tc_100, Whole, Fract;
 
  byte i;
  byte present = 0;
  byte data[12];
  byte addr[8];
 
  if ( !ds.search(addr)) {
      Serial.print("Sin mas direcciones.n");
      ds.reset_search();
      return;
  }
 
  Serial.print("R=");
  for( i = 0; i < 8; i++) {
    Serial.print(addr[i], HEX);
    Serial.print(" ");
  }
 
  if ( OneWire::crc8( addr, 7) != addr[7]) {
      Serial.print("CRC invalido!n");
      return;
  }
 
  if ( addr[0] == 0x10) {
      Serial.print(" Es un dispositivo de la familia DS18S20.n");
  }
  else if ( addr[0] == 0x28) {
      Serial.print("Es un dispositivo de la familia DS18S20 .n");
  }
  else {
      Serial.print("Dispositivo desconocido: 0x");
      Serial.println(addr[0],HEX);
      return;
  }
 
  ds.reset();
  ds.select(addr);
  ds.write(0x44,1);         // Comienza la conversion
 
  delay(1000); 
 
  present = ds.reset();
  ds.select(addr);    
  ds.write(0xBE);         
 
  Serial.print("P=");
  Serial.print(present,HEX);
  Serial.print(" ");
  for ( i = 0; i < 9; i++) {           // Necesitamos leer 9 bytes
    data[i] = ds.read();
    Serial.print(data[i], HEX);
    Serial.print(" ");
  }
  Serial.print(" CRC=");
  Serial.print( OneWire::crc8( data, 8), HEX);
  Serial.println();
 
  //Conversion de datos a grados centigrados
  LowByte = data[0];
  HighByte = data[1];
  TReading = (HighByte << 8) + LowByte;
  SignBit = TReading & 0x8000;  
  if (SignBit)
  {
    TReading = (TReading ^ 0xffff) + 1; 
  }
  Tc_100 = (6 * TReading) + TReading / 4; 
 
  Whole = Tc_100 / 100; 
  Fract = Tc_100 % 100;
 
 
  if (SignBit) 
  {
     Serial.print("-");
  }
  Serial.print(Whole);
  Serial.print(".");
  if (Fract < 10)
  {
     Serial.print("0");
  }
  Serial.print(Fract);
 
  Serial.print("n"); 
}

Conexión Raspberry Pi:

Para activar la comunicación entre la Raspberry Pi y el sensor DS18B20 debemos agregar información al final del archivo config.txt.

Abrimos Terminal y tecleamos:

  • sudo nano /boot/config.txt

y al final del archivo agregamos la siguiente línea:

  • dtoverlay=w1-gpio,gpiopin=4

Presionamos Ctrl + x, luego y, finalmente enter. Para guardar los cambios.

Reiniciamos con:

3 1 - Electrogeek

EspKy 001 Rasp - Electrogeek

Código Raspberry Pi:

# coding=utf-8
# Importamos los módulos necesarios
import glob
import time
from time import sleep
import RPi.GPIO as GPIO
 
# tiempo entre mediciones
sleeptime = 1
 
# Habilitamos la resistencia Pull UP
GPIO.setmode(GPIO.BCM)
GPIO.setup(4, GPIO.IN, pull_up_down=GPIO.PUD_UP)
 
# Luego de habilitada la resistencia Pull UP debemos esperar que inicie el sensor
print('aguarda que inicie el sensor...')
 
base_dir = '/sys/bus/w1/devices/'
while True:
    try:
        device_folder = glob.glob(base_dir + '28*')[0]
        break
    except IndexError:
        sleep(0.5)
        continue
device_file = device_folder + '/w1_slave'
 
# Definimos la funcion de medición de temperatura.
def Medicion():
    f = open(device_file, 'r')
    lines = f.readlines()
    f.close()
    return lines
 
Medicion()
 
def EvaluarMedicion():
    lines = Medicion()
    while lines[0].strip()[-3:] != 'YES':
        time.sleep(0.2)
        lines = Medicion()
    equals_pos = lines[1].find('t=')
    if equals_pos != -1:
        temp_string = lines[1][equals_pos+2:]
        temp_c = float(temp_string) / 1000.0
        return temp_c
 
# loop
try:
    while True:
        print('---------------------------------------')
        print("Temperatura:", EvaluarMedicion(), "°C")
        time.sleep(sleeptime)
 
except KeyboardInterrupt:
    GPIO.cleanup()

Para correr el programa abrimos terminal y tecleamos:

KY-002 : Modulo Sensor de Vibración

4 1 - Electrogeek

Descripción:

Este módulo sensor de vibraciones funciona como un Switch, al detectar una vibración cierra

un circuito lo que genera que el usuario pueda detectar los movimientos.

Conexión Arduino:

5 1 - Electrogeek

EspKy 002 Ard - Electrogeek

Código Arduino:

int Led = 13 ; // Declara la variable entera LED y le asigna el Pin 13

int Sensor = 10; // Declara la variable entera Sensor y le asigna el Pin 10

int val; // Declara la variable entera val

void setup ()

{

pinMode (Led, OUTPUT) ;

pinMode (Sensor, INPUT) ;

digitalWrite(Sensor, HIGH);

}

void loop ()

{

val = digitalRead (Sensor) ; // La senial actual del sensor sera leida y asignada a val

if (val == HIGH) // Si una senial es detectada el led se encendera

{

digitalWrite (Led, LOW);

}

else

{

digitalWrite (Led, HIGH);

}

}

Conexión Raspberry Pi:

6 1 - Electrogeek

EspKy 002 Rasp 1 - Electrogeek

Código Raspberry Pi:

# Se importan los modulos necesarios

import RPi.GPIO as GPIO

import time

GPIO.setmode(GPIO.BCM)

# Se declara el Pin de entrada del sensor y se activa la resistencia pull-up.

GPIO_PIN = 24

GPIO.setup(GPIO_PIN, GPIO.IN, pull_up_down = GPIO.PUD_UP)

print("Probar Sensor [presiona ctrl+c para terminar la prueba]")

# Esta funcion sera llamada al detectarse el sensor

def outFunction(null):

print("Senial detectada")

# Al momento de detectar una senial se llamara a la funcion outFunction y se la activara

GPIO.add_event_detect(GPIO_PIN, GPIO.FALLING, callback=outFunction, bouncetime=100)

# loop

try:

while True:

time.sleep(1)

# se limpian los GPIO luego de terminado el programa

except KeyboardInterrupt:

GPIO.cleanup()

Para correr el programa abrimos terminal y tecleamos:

KY-003: Módulo sensor magnético efecto Hall

7 2 - Electrogeek

Descripción:

Este sensor mide un campo magnético. Si existe la presencia de un campo magnético se creará

una señal en alto.

Conexión Arduino:

KY 003 bb 1 - Electrogeek

EspKy 003 Ard - Electrogeek

Código Arduino:

int Led = 13 ;

int Sensor = 10;

int val; // Declaramos una variable temporal

void setup ()

{

pinMode (Led, OUTPUT) ;

pinMode (Sensor, INPUT) ;

digitalWrite(Sensor, HIGH);

}

void loop ()

{

val = digitalRead (Sensor) ;

if (val == HIGH)

{

digitalWrite (Led, LOW);

}

else

{

digitalWrite (Led, HIGH);

}

}

Conexión Raspberry Pi:

KY 003pi bb 1 - Electrogeek

EspKy 003 Rasp - Electrogeek

Código Raspberry Pi:

int Led = 13 ;

int Sensor = 10;

int val; // Declaramos una variable temporal

void setup ()

{

pinMode (Led, OUTPUT) ;

pinMode (Sensor, INPUT) ;

digitalWrite(Sensor, HIGH);

}

void loop ()

{

val = digitalRead (Sensor) ;

if (val == HIGH)

{

digitalWrite (Led, LOW);

}

else

{

digitalWrite (Led, HIGH);

}

}

Para correr el programa abrimos terminal y tecleamos:

KY-004: Módulo botón interruptor

8 1 - Electrogeek

Descripción:

Este módulo tiene integrado un interruptor común con una resistencia de 10 kΩ.

Conexión Arduino:

Diag Ky 004 Arduino - Electrogeek

EspKy 004 Ard01 - Electrogeek

Código Arduino:

int Led = 13;

int Sensor = 10;

int val;

void setup ()

{

pinMode (Led, OUTPUT) ;

pinMode (Sensor, INPUT) ;

digitalWrite(Sensor, HIGH);

}

void loop ()

{

val = digitalRead (Sensor) ;

if (val == HIGH)

{

digitalWrite (Led, LOW);

}

else

{

digitalWrite (Led, HIGH);

}

}

Conexión Raspberry Pi:

KY 004pi bb 1 - Electrogeek

EspKy 004 Rasp01 - Electrogeek

Código Raspberry Pi:

import RPi.GPIO as GPIO

import time

GPIO.setmode(GPIO.BCM)

GPIO_PIN = 24

GPIO.setup(GPIO_PIN, GPIO.IN, pull_up_down = GPIO.PUD_UP)

print ("Sensor-Test [press ctrl+c to end it]")

def outFunction(null):

print("Signal detected")

GPIO.add_event_detect(GPIO_PIN, GPIO.FALLING, callback=outFunction, bouncetime=100)

# loop

try:

while True:

time.sleep(1)

except KeyboardInterrupt:

GPIO.cleanup()

Para correr el programa abrimos terminal y tecleamos:

Saludos Ditecno Makers hasta el momento vimos del Ky-001 hasta el Ky-004. Si quieres ver los

Modulos  Ky-005 hasta el modulo Ky-010 para Arduino y Raspberry

Hasta pronto donde seguiremos con este tutorial… LUCIANO

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

0
    0
    Tu Carrito
    Tu carrito esta vacíoVolver a la tienda
    Enviar Whatsapp
    Hola 👋
    ¿En qué podemos ayudarte?