martes, 8 de julio de 2014

Controlar calefacción vía internet con Excel y RealTerm



¿Que hace un hombre de mi edad encendiendo y apagando lucecitas? No lo he hecho como me gustaría, lo haré, pero de momento consigo encender y apagar un led a distancia, vía internet.
Utilizo RealTerm, estaba en otro tema cuando me encontré con RealTerm, Excel y Arduino. No buscaba controlar un apagado -encendido desde la red, estaba intentado hacer una gráfica en excel  con los datos leídos y pasados por Arduino.

  • En una entrada de mi blog dedicado a Excel pongo la lista de comandos a ejecutar, enmarcados por unas palabras clave, que me permite identificar claramente el área de comandos. Tan fácil como limitar este area con "Inicio lista de comandos" y "Fin lista de comandos"
  • Con el vbasic de Excel leo periodicamente esa entrada en mi blog.
  • RealTerm es un terminal serie que permite comunicar el ordenador con Arduino, es equivalente al monitor de Arduino.
  • Para comunicar Excel y Arduino hay que insertar un objeto en la programación VBasic que nos permita esa comunicación. RealTerm tiene en internet un ejemplo incompleto de como se inserta el objeto RealTerm. Dándole vueltas y echando un poco de imaginación terminé encontrado algunas sentencias, que no encontré en internet, que me permitieron automatizar esa comunicación.
  • En Arduino preparé un pequeño programa que lee la entrada serie y que, entre otras cosas, al reconocer el comando de encendido, enciende, y al reconocer el comando de apagado, apaga.
  • Resumiendo hay tres niveles de programación, VBasic propiamente dicho, inserción de RealTerm y lo que queramos que haga el microcontrlador.


Inserción de RealTerm:

Sub AbreRealterm()
Dim Puerto, Baudios, Captura, Titulo, FicCap, FicEnvio
  Set RT = CreateObject("Realterm.RealtermIntf")

 With Sheets("Aux")
  Puerto = .Range("b3").Value
  Baudios = .Range("c3").Value
  Captura = .Range("d3").Value
  FicCap = .Range("e3").Value
  FicEnvio = .Range("f3").Value
Titulo = .Range("g3").Value
  End With
  
  
  With RT
 ' .displayas = 1
  .HalfDuplex = True
  .Caption = Titulo ' "Realterm Controlado desde Excel"

  .port = Puerto
  .baud = Baudios
  .capture = Captura 'True
  .portopen = True
 ' .capture = False
  
'.sendfile = "c:\temp\Envios.txt" ' False
.capturefile = FicCap '"c:\temp\Captura.txt"

  
'  .SelectTabSheet ("I2C")
  End With


  

End Sub



Sub RealtermVisible()
Sheets("Inicio").Select
ActiveSheet.Shapes("Button 7").Select
If RT.Visible Then
    Selection.Characters.Text = "Ver Realterm"
    RT.Visible = False
    Else
      Selection.Characters.Text = "No Ver Realterm"
    RT.Visible = True
    End If
    ActiveSheet.Range("a1").Select
End Sub


Sub ActualizaTerminal()
With RT
 ' .HalfDuplex = True
  '.Caption = "Realterm Controlado desde Excel"
  '.portopen = True
  '.port = 14
  '.baud = 9600
  '.capture = "file = c:\temp\xxxx.txt"
 ' .sendfile = "c:\temp\xxxx.txt" ' False
 ' .capturefile = "c:\temp\xxxx.txt"
 ' .ansi = True
 ' .SelectTabSheet ("I2C")
  
  .capture = False
 ' .capture = True
 .sendfile = "c:\temp\Envios.txt" ' False
 .capturefile = "c:\temp\Captura.txt"
 .terminal.Clear
'.capturestart = 0
'.alfduplex = True
  
  End With

End Sub