IR-Thermometer mit LoRaWAN
05.06.2025
Elektronik | Funk | Software
Der Technik-Blog
Zu diesem Artikel gibt es auch ein Video auf Youtube: Arduino Serial Port (COM) zu Visual Basic Software - Windows
Dieser Artikel beschreibt, wie Daten (z.B. Messwerte) von einem Arduino Board über die serielle Schnittstelle (COM-Port) an einen Windows Computer gesendet werden können. Als Software wurde ein kleines Programm in Visual Basic geschrieben, dass drei Parameter von Arduino Board auslesen kann und in Textfeldern anzeigt.
In diesem Beispiel werden Daten vom Arduino zum Computer übertragen. Selbstverständlich ist es auch ohne großen Aufwand möglich, Daten vom Computer an den Arduino zu senden. Die Daten vom Arduino werden mit 9600 Baud gesendet. Dieser Wert ist bei sowohl beim Beispielcode vom Arduino als auch von der Windows Software fest eingestellt und muss immer an beiden Seiten angepasst werden. Der Arduino überträgt drei Parameter. Das ist die Laufzeit in Sekunden, der Wert vom Potentiometer(0 – 1024) und ein statischer Wert (1234). Diese drei Parameter werden gleichzeitig übertragen und mit einem Beistrich getrennt. Die gesamte Zeile hat am Ende ein Semikolon, dass das Ende der Datenreihe kennzeichnet. In unserem Visual Basic Beispiel Code werden dann die Parameter-Pakete in einzelne Werte gesplittet. Dies funktioniert über den Beistrich, der das Ende eines einzelnen Parameters kennzeichnet. Zuletzt werden diese Werte in eine TextBox geladen und bei jedem neuen Datenpaket aktualisiert.
Die in Visual Basic geschriebene Software empfängt die Datenpakte über den COM-Port und zeigt diese in drei Felder an. In der Mitte wird der analoge Wert vom Potentiometer an Pin A5 angezeigt. Das erste Feld zeigt die Laufzeit in Sekunden an. Das letzte Feld zeigt den dritten Wert, der vom Arduino gesendet wird und in diesem Beispiel statisch ist.
long timer;
void setup() {
Serial.begin(9600);
}
void loop() {
if(millis() > timer+500){
timer = millis();
SendToSerial();
}
}
void SendToSerial(){
int val = analogRead(A5);
Serial.print(millis()/1000);
Serial.print(",");
Serial.print(val);
Serial.print(",");
Serial.print("1234");
Serial.println(";");
}Imports System
Imports System.IO.Ports
Public Class Form1
Dim SerialPort As String
Dim RxData As String = ""
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Timer1.Enabled = False
SerialPort = ""
For Each sp As String In My.Computer.Ports.SerialPortNames
com_port.Items.Add(sp)
Next
End Sub
Private Sub SerialPort_ComboBox_SelectedIndexChanged(sender As Object, e As EventArgs) Handles com_port.SelectedIndexChanged
If (com_port.SelectedItem & lt;> "") Then
SerialPort = com_port.SelectedItem
End If
End Sub
Private Sub connect_BTN_Click(sender As Object, e As ventArgs) Handles connect_btn.Click
If (connect_btn.Text = "Connect") Then
If (SerialPort & lt;> "") Then
SerialPort1.Close()
SerialPort1.PortName = SerialPort
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.ReadTimeout = 10000
SerialPort1.Open()
connect_btn.Text = "Disconnect"
Timer1.Enabled = True
Else
MsgBox("Please choose Serial Port")
End If
Else
SerialPort1.Close()
connect_btn.Text = "Connect"
Timer1.Enabled = False
End If
End Sub
Private Sub Timer1_Tick(sender As Object, e AsEventArgs) Handles Timer1.Tick
'Read Serial Data and split it to text boxes
RxData = ReceiveSerialData()
Dim rxpacket As String() = RxData.Split(";")
Dim rxprams As String() = rxpacket(0).Split(",")
TB_P1.Text = rxprams(0)
TB_P2.Text = rxprams(1)
TB_P3.Text = rxprams(2)
End Sub
Function ReceiveSerialData() As String
Dim Incoming As String
Try
Incoming = SerialPort1.ReadExisting()
If Incoming Is Nothing Then
Return "no-data" & vbCrLf
Else
Return Incoming
End If
Catch ex As TimeoutException
Return "Error: Serial Port timeout."
End Try
End Function
End Class
PT1000 Sensoren können nicht direkt analog mit einem Mikrocontroller gemessen werden. Wie baut man einen Messwandler mit dem LM358 für den PT1000 und Arduino?
Weiterlesen
Mit einem Mikrocontroller wie dem Arduino, einer kleinen Schaltung und entsprechender Software kann die Windgeschwindigkeit über ein Anemometer gemessen werden
WeiterlesenAEQ-WEB © 2015-2025 All Right Reserved