En otros artículos ya hemos hablado del RaspberryPi y de Teensy cada uno por separado.
En esta oportunidad, revisamos las ventajas de una implementación concreta de los dos equipos, usaremos la flexibilidad de Raspberry Pi con las grandes capacidades y el pequeño formato que tiene Teensy.
El Teensy tiene la capacidad de emular un teclado y eso usaremos en la primera prueba.
En la segunda prueba usaremos el ADC (Conversor Análogo Digital) de Teensy para enviar datos a una Raspberry Pi. Una vez adquiridos estos datos pueden ser postprocesados.
Tras el salto veremos los elementos y el código utilizado
Materiales
- Teensy
- Fuente de alimentación 5V @ 2A
- RaspberryPi ver link en tienda
- Acceso a Internet
- Protoboard, link en tienda
- Cables
- Conector micro USB
- Sensores de prueba (usamos un sensor de aceleración ADXL335)
- Conector para Raspberry Pi
Prueba 1: GPIO desde Raspberry Pi al Teensy
El setup inicial lo obtuvimos de este link y consiste en conectar el Teensy al puerto GPIO 4 de la Raspberry Pi
Para ello se utiliza un conversor de niveles con lo que aseguramos los niveles de voltaje adecuados para cada equipo.
Como prueba usamos el siguiente sketch
void setup(){
pinMode(0, INPUT);
}
void loop(){
if(digitalRead(0))
{
Keyboard.println("High");
delay(1000);
}else{
}
}
Desde la raspberry Pi se debe ejecutar la siguiente serie de comandos
sudo su -
echo "4" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio4/direction
echo "1" > /sys/class/gpio/gpio4/value;
echo "0" > /sys/class/gpio/gpio4/value;
Con esto generamos un 1 o un 0 en la GPIO4 desde la línea de comandos, cuando el valor sea un 1 el teensy genera una acción por la puerta USB, emulando a un teclado.
La conexión del hardware es de la siguiente manera
El pin 0 de Teensy va conectado a GPIO 4, a través del conversor.
Conversor de niveles se conecta a HV (pin Vin en Teensy) y LV (3,3V en Raspberry pi)
Se conecta la Tierra desde ambos equipos al conversor de niveles.
Eso se muestra en la figura
Prueba : Captura de ADC por puerta serial
Para la segunda prueba debemos habilitar la puerta serial, esto lo habíamos hecho en el artículo sobre GPS y lo repetimos aquí. Estos son los pasos
1) Editar cmdline.txt
sudo nano /boot/cmdline.txt
El archivo debe quedar de esta manera
# dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
2) Editar inittab, usando el siguiente comando
sudo nano /etc/inittab
comentar la siguiente linea
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
3) Hacer reboot
sudo reboot
Usando Python
Para usar la puerta serial debemnos instalar la biblioteca pyserial
sudo pip pyserial
En el teensy cargamos el siguiente sketch
HardwareSerial Uart1 = HardwareSerial();
void setup()
{
Serial.begin(9600);
Uart1.begin(9600);
}
int val;
void loop()
{
val = analogRead(3);
Uart1.print("analog 3 is: ");
Uart1.println(val);
delay(1000);
}
En la Raspberry Pi, el archivo Python que usamos es el siguiente ,
# website: www.iot.cl
#
#
# Purpose : basic use of serial port
#
# Date : 2013–06–06
from serial import Serial
s = Serial('/dev/ttyAMA0', 9600, timeout=2)
f = open("data", "w")
while True:
try:
a = s.readline()
print a
f.writelines(a)
except KeyboardInterrupt:
break
s.close()
f.close()
Al ejecutar el script se guardan los valores informados por teensy en el archivo data, y se muestra la salida por pantalla.
La conexion física se ve en la siguiente foto
Bibliografía
www.irongeek.com
Documentacion de Pyserial
Raspberry Pi B. Hay algún Kit para controlar un invernadero. Temperatura, humedad, co2
Entrada datos sensores . Salida activar dispositivos generadores Y/O accionar claraboyas.?
Muchas gracias
Estimado, hasta donde sabemos no existe ese kit, pero puede adquirir los sensores por separado junto con relays, el programa se puede desarrollar en python ya que es lo mas adecuado para la Raspberry Pi.
Saludos