Arduino and Visual Basic RF Over Temperature Humidity Measurement

by sezgingul in Circuits > Arduino

7851 Views, 21 Favorites, 0 Comments

Arduino and Visual Basic RF Over Temperature Humidity Measurement

Arduino ve Visual Basic ile Bluetooth Üzerinden Sıcaklık Nem Kontrol Ölçümü

We can see Arduino using 433 MHz RF with instantaneous display of temperature and humidity values as we do with the visual basic program.

http://make.robimek.com/arduino-visual-basic-wireless-temperature-humidity-control/

Let's start with temperature and humidity before our project then let us interface with the visual basic program. Materials:

  • 2 Number Arduino (no matter nano models will suffice.)
  • RF module 433 MHz (433 MHz, we used in this project. You can also use modules of different frequencies)
  • Temperature Humidity Meter Module

Transmitter Circuit:

arduino-rf1.png

Temperature and humidity values will be sent to the transmitter circuit and the receiver circuit.

Pin connector of the circuit:

Tx signal pin >> Arduino's digital 3.pin

Temperature-Humidity Sensor Data Pin >> Arduino's digital 2.Pin

Receiver Circuit:

arduino-rx-devre1.png

Our circuit will be transferred to the PC by taking the data receiver from the transmitter.

Circuit Connections:

Rx signal pin >> Arduino's digital 11.p

We have completed our transmitter and receiver circuits. Now let's start writing our interface with the visual basic program.

Visual Basic Interface Program:

sıcaklık-nem-arayüz.png

You can design the form as shown in figure.

Tools Required to our form:

  • 3 Piece Button
  • 2 Number combobox
  • 2 Number Progressbar
  • 11 Number Label
  • 2 Number Picturebox
  • 1 Piece SerialPort
  • 1 Piece Timor

Add the System Libraries.

Imports System

Imports System.ComponentModel

Imports System.Threading

Imports System.IO.Ports

Let's Define Our Serial Port Object.

Dim myPort As Array ‘port name identification

Delegate Sub SetTextCallback(ByVal [text]As String)

Let's Define Our Form Loader Part.

myPort = IO.Ports.SerialPort.GetPortNames()

ComboBox2.Items.Add(9600)

ComboBox2.Items.Add(19200)

ComboBox2.Items.Add(38400)

ComboBox2.Items.Add(57600)

ComboBox2.Items.Add(115200)

For i = 0 To UBound(myPort)

ComboBox1.Items.Add(myPort(i))

Next

ComboBox1.Text = ComboBox1.Items.Item(0)

ComboBox2.Text = ComboBox2.Items.Item(0

)Button2.Enabled = False

Let's Define Our Butonu Necessary to Enable Us to Connect Our Ports to Receive Data.

Timer1.Start()SerialPort1.PortName = ComboBox1.Text

SerialPort1.BaudRate = ComboBox2.Text

SerialPort1.Parity = IO.Ports.Parity.None

SerialPort1.StopBits = IO.Ports.StopBits.One

SerialPort1.DataBits = 8SerialPort1.Open()

Label10.Text = “Connected sensors”

Button1.Enabled = FalseButton2.Enabled = True

TextBox4.ForeColor = Color.GreenLabel11.Text = “Receiving Data…”

Let's Define Our Butonu Disconnect Necessary to Stop the Data Acquisition.

Timer1.Stop()SerialPort1.Close()

Button1.Enabled = TrueButton2.Enabled = FalseText

Box3.ForeColor = Color.Red

Label10.Text = “Disconnected.”

Label11.Text = “Data Stopped.”

Let Us Define One of Our Combobox to Select the Port.

If SerialPort1.IsOpen = False Then

SerialPort1.PortName = ComboBox1.Text

Else

MsgBox(“Port while you can not change”, vbCritical)End If

Let Us Define for Us to Select the Required Baud Rate Value.

If SerialPort1.IsOpen = False Then

SerialPort1.BaudRate = ComboBox2.Text

Else

MsgBox(“Port while you can not change”, vbCritical)

End If

Finally, the Serial Data Will Allow Us to Do Our Part Identification Is Necessary to Time.

Dim str As Stringstr = “1”

SerialPort1.Write(str)

Dim receiveddata As Integer = SerialPort1.ReadLine()

Label7.Text = receiveddata

If receiveddata < 0 Then

ProgressBar1.Value = -receiveddata

Else

ProgressBar1.Value = receiveddata

End If

System.Threading.Thread.Sleep(500)

Dim receiveddata2 As Integer = SerialPort1.ReadLine()

Label8.Text = receiveddata2

ProgressBar2.Value = receiveddata2

System.Threading.Thread.Sleep(500)

Arduino Transmitter Software

#include <VirtualWire.h>

#include <dht11.h>

.#define DHT11PIN 2

dht11 DHT11;char msg[6];

void setup()

{

vw_setup(2400);

vw_set_tx_pin(3);

}

void loop()

{

int chk = DHT11.read(DHT11PIN);

int sicaklik =DHT11.temperature;

int nem = DHT11.humidity;

sprintf(msg, “%d,%d”, sicaklik, nem);

vw_send((uint8_t *)msg, strlen(msg));

vw_wait_tx(); delay(1000);

}

Arduino Receiver Software

#include <VirtualWire.h>

int sicaklik;

int nem;

int i;

char x;

char StringReceived[6];

void setup(){ Serial.begin(115200);

vw_set_rx_pin(11); vw_setup(2400);

vw_rx_start();

}

void loop()

{

if(Serial.available()>0)

x=Serial.read();

uint8_t buf[VW_MAX_MESSAGE_LEN];

uint8_t buflen = VW_MAX_MESSAGE_LEN;

if(x==’1′)

{

if( vw_get_message(buf, &buflen) )

{

for (i = 0; i < buflen; i++)

{

StringReceived[i]= char(buf[i]);

}

sscanf(StringReceived, “%d,%d”,&sicaklik, &nem);

Serial.println(sicaklik);

delay(500);

Serial.println(nem);

delay(500);

memset( StringReceived, 0, sizeof( StringReceived));

}

}

}

Description:

Arduino ve Visual Basic ile Bluetooth &amp;Uuml;zerinden Sıcaklık Nem Kontrol &amp;Ouml;l&amp;ccedil;&amp;uuml;m&amp;uuml;

500 millisecond delay is happening with data acquisition software.

If the timer of the form System.Threading.Thread.Sleep(500) change this value should also change the value. Otherwise you will get the wrong values.

More İnformation and example project : http://make.robimek.com/arduino-visual-basic-wireless-temperature-humidity-control/