Email in VB.net to send Arduino Sensors Data “2010 Express”
Table of Contents
Description:
Email in VB.net to send Arduino Sensors Data– In this tutorial, you will learn how to design your own computer application in VB.net to monitor the temperature and humidity values and then send these values on specific email id. With the help of this project, the temperature and humidity values can be monitored from anywhere around the world.
In this project, the famous DHT11 temperature and humidity sensor are used with the Arduino. The Arduino Uno is used to access the Temperature and Humidity values and then using the Serial Communication the temperature and humidity values are sent in a string message to the designed computer application. These values are displayed on the screen and are also sent to the destination email id.
Let’s get started!!!
Amazon Links:
Arduino Nano USB-C Type (Recommended)
*Disclosure: These are affiliate links. As an Amazon Associate I earn from qualifying purchases.
At first, you will find this project quite impractical, as you will need a computer or a laptop connected with the Arduino Uno or Mega all the time. Who connects a computer 24 hours with the Arduino Uno just to monitor the Temperature and Humidity? While there are so many breakout boards that can be used to send the sensors data to any email id around the world. There are Ethernet cards, ESP8266 wifi modules, Nodemcu ESP8266, etc. All these modules can be directly interfaced with the Arduino Uno or Mega and you never need a computer to send an email. I have been using Nodemcu ESP8266 for Real Time sensors monitoring, but there are situations when you need a computer application like for example a SCADA system, where you process all the data and then send the end results on an email ID.
When you start comparing both the options and as you dig deeper you will understand how important this project is. The computer application designed for monitoring and sending an email can be used in infinite ways. The application designed in this Tutorial can be used without the Arduino. This application can be easily modified and can be used in student’s attendance system, this application can be used in the products inquiry system, and this project can be used in all those places where you need to send an email. This application can also be used for marketing, as this is an automatic email sending system.
The software’s used in this project are
Arduino IDE
Visual Basic.Net “VB.net” 2010 Express Edition.
DHT11 sensor Pinout:
This is the DHT11 temperature and humidity sensor which is used in this project for building the Real-Time weather station. DHT11 Sensor has a total of 4 pins. Pin number 1 is the VCC, pin number 2 is the data, pin number 3 is not connected while pin number 4 is the Ground.
The other useful information about the DHT11 sensor can be found in its datasheet. For example its applications, Features, Dimensions, Product parameter, Electrical characteristics, Pin description, and data format, etc. It’s a good designing practice to study the datasheet of the electrical component before you start using it any circuit.
For the easy connections, I highly recommend firs you need to fix this sensor on the Vero Board, Solder its legs and the 10-kilo resistor. Then solder jumper wires. This way you can easy interface the DHT11 temperature and humidity sensor with the Arduino Uno or Mega.
Circuit Diagram:
The connection of the DHT11 temperature and humidity sensor with the Arduino Uno or Mega is really simple. As you can see in the circuit diagram above, a 10 kilo Ohm resistor is connected between pin number 1 and pin number 2. As I said earlier the pin number 3 of the dht11 sensor is not used. Pin number 4 of the DHT11 temperature and humidity sensor is connected with the Arduino’s Ground, while pin number 2 is connected with the Arduino’s pin number 12.
Email in VB.net Arduino and VB.net Programming:
Email in VB.net– In this Project, two programs are used, one program is written for the Arduino and the other program is the computer application designed in vb.net using 2010 Express Edition.
DHT11 Arduino Programming:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
#include "DHT.h" #define DHTPIN 12 // what pin we're connected to //Uncomment whatever the type of sensor we are using. #define DHTTYPE DHT11 // DHT 11 //#define DHTTYPE DHT22 // DHT 22 (AM2302) //#define DHTTYPE DHT21 // DHT 21 (AM2301) // Connect pin 1 (on the left) of the sensor to +5V // NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1 // to 3.3V instead of 5V! // Connect pin 2 of the sensor to whatever your DHTPIN is // pin3 of the sensor is not connected // Connect pin 4 (on the right) of the sensor to GROUND // Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor // Initialize DHT sensor for normal 16mhz Arduino DHT dht(DHTPIN, DHTTYPE); // NOTE: For working with a faster chip, like an Arduino Due or Teensy, you // might need to increase the threshold for cycle counts considered a 1 or 0. // You can do this by passing a 3rd parameter for this threshold. It's a bit // of fiddling to find the right value, but in general the faster the CPU the // higher the value. The default for a 16mhz AVR is a value of 6. For an // Arduino Due that runs at 84mhz a value of 30 works. // Example to initialize DHT sensor for Arduino Due: //DHT dht(DHTPIN, DHTTYPE, 30); String TextForSms ; String humidity = " Humidity: %"; String temperature = " Temperature"; String sign = " *C"; void setup() { Serial.begin(9600); Serial.println("DHT11 test!"); dht.begin(); } void loop() { // Wait a few seconds between measurements. delay(2000); // Reading temperature or humidity takes about 250 milliseconds! // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor) int h = dht.readHumidity(); // Read temperature as Celsius int t = dht.readTemperature(); // Read temperature as Fahrenheit int f = dht.readTemperature(true); // Check if any reads failed and exit early (to try again). if (isnan(h) || isnan(t) || isnan(f)) { Serial.println("Failed to read from DHT sensor!"); return; } // Compute heat index // Must send in temp in Fahrenheit! int hi = dht.computeHeatIndex(f, h); // Serial.print("Humidity: "); // Serial.print(h); // Serial.print(" %\t"); // Serial.print("Temperature: "); // Serial.print(t); // Serial.print(" *C "); TextForSms = TextForSms + "Humidity: "; TextForSms.concat(h); TextForSms = TextForSms + "% Temperature: "; TextForSms.concat(t); TextForSms = TextForSms + "*C"; Serial.println(TextForSms); delay(2000); TextForSms = " "; if ( t > 37 ) Serial.println("Temperature Exceeded"); // TextForSms.concat(humidity); // TextForSms.concat(h); // TextForSms.concat(temperature); // TextForSms.concat(t); // TextForSms.concat(sign); // Serial.println(TextForSms); // Serial.print(f); // Serial.print(" *F\t"); // Serial.print("Heat index: "); // Serial.print(hi); // Serial.println(" *F"); } |
For the Program Explanation watch Video Tutorial given at the end of this Article.
Email Sending Application VB.net Programming:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
' import libraries Imports System.Runtime.InteropServices Imports System.Threading Imports System.IO Imports System.Net Imports System.Net.Mail Imports System.Net.NetworkCredential Imports System.Reflection Imports System.Text Imports Microsoft.Win32 Imports System.IO.Ports Public Class Form1 ' thread-safe calling for thread_hide Delegate Sub Change() Private Declare Function InternetGetConnectedState Lib "wininet.dll" (ByRef lpdwFlags As Int32, ByVal dwReserved As Int32) As Boolean Delegate Sub SetTextCallback(ByVal [text] As String) Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load SerialPort1.Close() SerialPort1.PortName = "com5" SerialPort1.BaudRate = "9600" SerialPort1.DataBits = 8 SerialPort1.Parity = Parity.None SerialPort1.StopBits = StopBits.One SerialPort1.Handshake = Handshake.None SerialPort1.Encoding = System.Text.Encoding.Default SerialPort1.Open() End Sub Private Sub DataReceived(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived Try Dim mydata As String = "" mydata = SerialPort1.ReadExisting() If txtOutput.InvokeRequired Then txtOutput.Invoke(DirectCast(Sub() txtOutput.Text &= mydata, MethodInvoker)) Else txtOutput.Text &= mydata End If Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick If InStr(txtOutput.Text, "Exceeded") Then CheckBox1.Checked = True End If End Sub Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick If CheckBox1.Checked = True Then Dim smtp As New SmtpClient Dim message As New MailMessage Dim username As String Dim password As String Dim destination As String Dim subject As String Dim lngFlags As Integer username = "guidingstarpvc@gmail.com" password = "yourpassword" destination = "electroniclinic@gmail.com" subject = "Temperature Exceeded!!!!!" smtp.Host = "smtp.gmail.com" smtp.EnableSsl = True smtp.Port = 587 smtp.Credentials = New Net.NetworkCredential(username, password) message.To.Add(destination) message.From = New MailAddress(username) message.Subject = subject message.Body = txtOutput.Text If InternetGetConnectedState(lngFlags, 0) Then ' checks if internet connection is available or not smtp.Send(message) txtOutput.Text = "" CheckBox1.Checked = False Else txtOutput.Text = txtOutput.Text + "" + vbNewLine + " net connection not available" + vbNewLine + "" End If End If End Sub End Class |
For the practical demonstration and step by step, explanation watch the following video tutorial.