Autoit en español
Aplicaciones con Autoit - Juan Antonio Villalpando
-- Tutorial de iniciación a Autoit --
Volver al índice del tutorial
____________________________
68.- Sensor de humedad y temperatura DHT 11. Arduino. Bluetooth. AutoIt.
- En los tutoriales de Arduino vimos el sensor DHT 11:
http://kio4.com/arduino/45humedad.htm
- Con el sensor DHT 11 podemos captar humedad y temperatura. En este tutorial solo trabajaremos con la temperatura.
- En esta aplicación se captará temperatura y humedad con el DHT 11 conectado al Arduino. Mediante el módulo bluetooth se enviará la Temperatura.
- El ordenador con bluetooth y mediante el AutoIt tomará esa temperatura y la irá mostrando en un gráfico.
___________________________________________
1.- Conexión del Arduino, el módulo Bluetooth HC-06 y el sensor DHT 11.
- Esto ya lo hemos visto en el tutorial anterior.
- Forma de conectarlo.
Módulo Bluetooh |
Arduino |
VCC |
5 V |
GND |
GND |
TXD |
RX (es la conexión 0 del Arduino) |
RXD |
TX (es la conexión 1 del Arduino) |
- Fíjate que el TXD va con el RX y que el RXD va con el TX
- En el momento de alimentarlo con los 5V, el LED del módulo bluetooth parpadeará.
- Como se ve en la imagen, el terminal Data del módulo del sensor DHT 11 está conectado al terminal 10 del Arduino. |
|
___________________________________________
3.- Código del Arduino.
- Este código lo vimos en el tutorial: http://kio4.com/arduino/45humedad.htm
- NOTA: cuando vayas a cargar el programa en el Arduino, desconecta la alimentación del módulo bluetooth.
bluetooth_autoit_dht11.ino |
#include "DHT.h"
#define DHTPIN 10
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
// Juan A. Villalpando
void setup() {
Serial.begin(9600);
dht.begin();
}
void loop(){
float humedad = dht.readHumidity();
float temperatura = dht.readTemperature();
//Serial.print("Humedad: ");
//Serial.println(humedad);
// Serial.print("Temperatura :");
Serial.print(temperatura);
Serial.print(":");
delay(500);
}
|
___________________________________________
4.- Código de AutoIt.
- La librería CommNG.au3 la he puesto en la carpeta Include de donde está instalado el AutoIt.
- También es necesario commg.dll como vimos en el tutorial 62_bluethoot_arduino.htm
- Esta línea es donde se establece la configuración del bluetooth.
- El 29 es el COM29, el puerto del bluetooth en mi ordenador.
$abre_este_puerto = _CommSetPort(29, $Error, 9600, 8, 1, 1, 2)
bluetooth_autoit_arduino_temperatura.au3 |
#include <CommMG.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
$ancho = 1247
$alto = 443
#Region ### START Koda GUI section ###
$Form1 = GUICreate("DHT 11 - Juan A. Villalpando", $ancho, $alto, -1, -1)
_GDIPlus_Startup ()
Global $grafico = _GDIPlus_GraphicsCreateFromHWND($Form1)
$Label1 = GUICtrlCreateLabel("(S)", 1168, 400, 17, 17)
GUISetOnEvent($GUI_EVENT_CLOSE, "Salir")
GUISetState(@SW_SHOW)
; Juan A. Villalpando
#EndRegion ### END Koda GUI section ###
Global $x,$y, $lstx,$lsty
$color = _GDIPlus_PenCreate(0xFF0000FF, 8)
Opt("GUIOnEventMode", 1)
For $i = 0 To $alto Step $alto/5
_GDIPlus_GraphicsDrawLine($grafico,0,($alto-$i),$ancho,($alto-$i))
GUICtrlCreateLabel($i/$alto*50,0,$alto-$i+3,15,17)
Next
For $i = 0 To $ancho Step $ancho/100
_GDIPlus_GraphicsDrawLine($grafico,($ancho-$i),0,($ancho-$i),$alto)
Next
Conecta(0)
$timer = TimerInit()
While 1
$recibido = _CommGetLine(':', 0, 0)
$temperatura = StringSplit($recibido, ":")
$y = $temperatura[1]*$alto/50
ConsoleWrite($recibido&@CRLF)
ConsoleWrite($y&@CRLF)
$x = TimerDiff($timer)/1000*($ancho/100)
GUICtrlSetData($Label1,$x/($ancho/100))
If $x > $ancho Then
$timer = TimerInit()
$x = 0
$y = 0
$lstx = 0
$lsty = 0
EndIf
If $lstx = 0 Then
$lstx = $x
$lsty = $alto-$y
EndIf
_GDIPlus_GraphicsDrawLine($grafico,$lstx,$lsty,$x,$alto-$y,$color)
$lstx = $x
$lsty = $alto-$y
Sleep(500)
WEnd
Func salir()
Exit
EndFunc
Func Conecta($mode = 1)
Local $Error
$abre_este_puerto = _CommSetPort(29, $Error, 9600, 8, 1, 1, 2)
Sleep(1000)
EndFunc
|
___________________________________________
4.- Comentarios.
- El Ardino envía Serial.print(":"); indicando fin de información.
- El AutoIt crea el gráfico con las dimensiones de ancho y alto.
- Recibe la información mediante $recibido = _CommGetLine(':', 0, 0) .
- El ":" le indicará que ese es el final del mensaje.
- Obtendremos 25.00:
- Las siguientes líneas quita ":" y obtenemos 25.00
- Adaptamos el 25.00 al tamaño de la ventana y dibujamos una línea azul, esa es la parte más complicada del código.
_________________
- Propuesta.
- C
_________________
|