Kilometre / Saat cinsinden hız ölçmek için bir radar projesi yapımından bahsedelim. Projeyi arduino ile yapıp hız ölçme görüntülemesini ise .Net C# ile yazdığımız bir programda bilgisayar üzerinden yapacağız.
Parça Listesi ve Devre Şeması
Proje için gerekenler listededir. Tam adetleri devre şemasında görülebilir elinizde fazlasının olması yararınıza olacaktır ben 2 tane doppler sensör yaktım. Hassas yaratıklar.
- Doppler sensör (HB100)
- Opamp (LM324)
- Kapsitör (2.2nF, 0.1uF, 4.7uF, 100uF)
- Direnç (8.2k, 10k, 12k, 100k, 1m)
Arduino Kodlama
FreqMeasure kütüphanesini kullanacağız. Yüklemek için arduino IDE’sinde Araçlar > Kütüphane yöneticisini açıp FreqMeasure yazarak kuruyoruz. Hız değerlerini C# ile yazdığımız programdan görüntüleyeceğimiz için verileri seri porttan aktaracağız. FreqMeasure ve Serial kullanmamız yeterli olacaktır.
Kütüphanede arduinonun 8. pini otomatik tanımlı olduğundan HB100 sensörünün IF bacağı opamp devrelerinden geçtikten sonra arduinonun 8. pinine bağlanacaktır.
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 |
#include <FreqMeasure.h> void setup() { Serial.begin(9600); FreqMeasure.begin(); } double sum=0; int count=0; void loop() { if (FreqMeasure.available()) { sum = sum + FreqMeasure.read(); count = count + 1; if (count > 30) { float frequency = FreqMeasure.countToFrequency(sum / count); if (frequency/19.49 >1) { //Serial.print("Hız: "); Serial.println(frequency/19.49); //Serial.println(" km/sa "); } sum = 0; count = 0; } } } |
C# Program Kodları
Visual Studio ile windows form olarak geliştirdiğimiz program önce açık seri portları görüntüleyecek ve bağlanılabilir olan seri porta bağlanıp gelen verileri okuyacaktır. Arduino usb ile bilgisayara bağlı olmalıdır. Program program görüntüsü:
Kodlar:
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 |
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO.Ports; using System.Linq; using System.Text; using System.Threading; using System.Windows.Forms; namespace BluetoothRadar { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { serialPort1 = new SerialPort(comboBox1.Text, 9600); serialPort1.Open(); while (serialPort1.IsOpen) { while (serialPort1.BytesToRead > 0) { textBox1.Text += Convert.ToChar(serialPort1.ReadByte()); if (textBox1.Text.Contains("\r\n")) { textBox1.Text = ""; } textBox1.Refresh(); Thread.Sleep(200); } } } private void Form1_Load(object sender, EventArgs e) { comboBox1.DataSource = SerialPort.GetPortNames(); } private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) { textBox1.Text += serialPort1.ReadExisting() + "\r\n"; } } } |