lunes, 7 de noviembre de 2016

RaPi - Acceso remoto

Para poder sacar un poco de cables del medio y liberar la televisión del cuarto donde tengo conectada la RaPi por HDMI, decidí configurar el acceso remoto, para poder manejarla directamente desde la notebook.

No es lo mas rápido del mundo y tengo alguna incompatibilidad de teclados que hace que ciertos simbolos se me compliquen, pero permite ver un poco de tele mientras tanto...

De paso también instalé el samba que me permite compartir archivos desde la computadora a la Raspberry Pi y viceversa lo que es muy útil por ejemplo para chequear los archivos de configuración del openHab con el Designer que tengo instalado en mi computadora con Windows.

Configurar acceso remoto


El primer paso es chequear desde la configuración de la RaPi el nombre del host (por defecto es raspberrypi)

Desde la RaPi también, pasar a instalar los siguientes componentes:

sudo apt install -y tightvncserver
 * la opcion -y contestará sí a todas las preguntas, si se prefiere mas control se puede obviar
sudo apt install -y xrdp


Una vez instalados los tres, probar la conexión desde Windows haciendo un ping raspberrypi (o el nombre que tenga la Raspberry).


Abrir el programa Remote Desktop Connection. Seleccionar el nombre de la raspberry y al abrir la conexión ingresar nombre de usuario y password (por defecto pi y raspberry)


Así ya podemos usar la Raspberry desde una computadora con Windows conectada a la misma red, sin necesidad de conectarle monitor, teclado ni mouse.

Para crear un directorio compartido:

Desde la Rapi, instalar samba:
   sudo apt install -y samba
Crear carpeta llamada share:
   mkdir ~/share
Configurar samba, modificando el archivo smb.conf :
 sudo nano /etc/samba/smb.conf
y agregar lo siguiente:

 [PiShare]
   comment=Raspi Share
   path=/home/pi/share
   browseable=Yes
   writeable=Yes
   only guest=No
   create mask=0740
   directory mask=0750
   public=no

Crear un usuario pi para acceder desde windows:

$ sudo smbpasswd -a pi

Solicitara ingresar y confirmar una password.

Nota: el mismo comando puede usarse para cambiar la password en caso de que, por ejemplo... se olvide :)


Acceder desde Windows al directorio compartido


TeclaWindows+R para abrir nueva ventana
//raspberry
usuario: raspberrypi\pi
contraseña: la que se creo recien














Listo! No solo puedo acceder a la Rapi en forma remota sino que puedo intercambiar archivos a través de un directorio/carpeta compartida.

sábado, 5 de noviembre de 2016

Próximos pasos

Para ir juntando todo, los próximos pasos son:

- Configurar el Esp8266 para que publique mensajes MQTT
- Agregarle un sensor de temperatura y que publique esa informacion por MQTT cada x tiempo
(Probar el circuito completo con openHab como se configuró aca)
- Encontrar como dar energía autonoma al esp8266
- Hacer unas pruebas con el esp8266 07 que tiene mas pines disponibles para hacer un sensor autónomo mas potente
- Hacer el post explicando como funciona el binding del clima en openHab

- Hacer una prueba con un relay para encender algo a traves de openHab
- Configurar el binding que permita manejar el openHab a traves de comandos de voz de Siri

Así que hay trabajo de sobra...

viernes, 4 de noviembre de 2016

Arduino - Cargando un programa en el esp8266

Una de las características del módulo esp8266 es que además de poder usarlo para conectar por WiFi un Arduino, se le puede agregar un programa directamente al módulo que realice alguna función directamente.

La buena noticia es que para pasar un programa al esp8266 se puede usar el IDE de Arduino directamente!

Para instalar el soporte para módulo ESP8266:
  - Agregar la siguiente dirección en "File -> Preferences -> Additional Boards Manager URLs":
       http://arduino.esp8266.com/stable/package_esp8266com_index.json
  - Abrir "Tools -> Board -> Board Manager" y clickear en install en el ESP8266

Solo hay que tener cuidado con las conexiones y entender que los módulos ESP8266 tienen dos modos, un modo que permite cargarles programas y un modo que los ejecuta. Para setear en que modo queremos trabajar podemos usar un programa de Arduino.

El modelo que tengo yo es el ESP01, para el cual hay que poner el pin GPIO en low y resetear para entrar al modo flash y cree un sketch que permite ponerlo en un modo u otro, encendiendo un led azul cuando esta en modo flash.

//sketch para cargar firmware a ESP8266 por medio de Arduino
int ch_pd = 3;
int io0 = 2;
// Seteo de otros pines ESP8266-> Arduino
// VCC -> 3,3 Arduino
// TX -> TX (1) Arduino
// RX -> RX (0) Arduino
// GND -> GND Arduino

void setup() {
  pinMode(ch_pd, OUTPUT);
  pinMode(io0, OUTPUT);
  pinMode(8, OUTPUT);
  digitalWrite(io0, LOW); //-> Manda 0 al GPIO0 para poner en modo Flasheo
  //digitalWrite(io0, HIGH);   //-> Manda 1 al GPIO0 para sacar el modo Flasheo
  digitalWrite(ch_pd, LOW);
  delay(1000);
  digitalWrite(ch_pd, HIGH);
  if (digitalRead(io0)==LOW){
    //Modo Flash
    digitalWrite(8,HIGH);
    } else {
    digitalWrite(8,LOW);
    }
}

void loop()
{

}

Este sketch se carga primero asi como está seleccionando como Board en mi caso Arduino Uno.

Una vez que está cargado (el led en el pin 8 se prende), se puede cargar un sketch para el ESP8266, como este básico de blink que viene como ejemplo (aparece al seleccionar el esp8266 como Board) que hace parpadear la luz azul del esp8266) pero seleccionando Generic ESP8266 Module como Board.



Hay que tener en cuenta que para que funcione hay que sacar el modo flash, para lo cual se puede usar el mismo sketch de modo flasheo pero modificando la siguiente linea. Hay que recordar volver a setear el board como Arduino Uno, porque sino se estaría intentando enviar el programa al ESP8266 en vez de setear los pines.
digitalWrite(io0, HIGH);   //-> Manda 1 al GPIO0 para sacar el modo Flasheo

Si todo funciona bien la luz azul del esp8266 debería empezar a parpadear y ya estamos listos para seguir!

Aclaración: en muchos lados lei que el Arduino Uno no alcanza para proveer la energía que necesita el esp8266 pero la verdad por ahora no tuve problemas en hacerlo arrancar y cargarle programas solamente con el Arduino Uno conectado por el USB a la computadora.