Herkese merhaba. Yapımı eğlenceli ve bir o kadar keyifli bir proje ile karşınızdayım. Bu proje Nokia 5110 LCD, HC-SR04 kullanarak Arduino Radar Yapımı. Gömülü sistemler üzerine kendinizi geliştirmek isterseniz bir proje fikri de benden size gelsin. Bu projenin bir diğer faydaları da Arduino ile Nokia 5110 LCD ekran ile nasıl çalışabileceğimizi öğreneceğiz.
Kullanılan Malzemeler
- Arduino Uno
- Servo Motor
- HC-SR04 Ultrasonic Mesafe Sensörü
- HC-SR04 Ultrasonic Mesafe Sensörü Tutucu
- Dişi-Erkek Jumper Kablo
- Erkek-Erkek Jumper Kablo
- Nokia 5110 LCD Ekran
Arduino Radar Yapımı Projesi Nasıl Çalışır?
Projemiz çalıştığında hc-sr04 sensörümüz trig pininden gönderdiği sinyalleri, echo pininden geri alarak mesafeyi ölçüyor. Bu ölçüyü haberleşme yoluyla Arduino kart aracılığı ile Nokia 5110 LCD ekranımıza aktarıyor. Haberleşmeyi sağlamak için Arduino uno kartımızın haberleşme pini olan A0 ve A1 pinlerine trig ve echo pinini bağlıyoruz. Böylece projemiz işlevli bir şekilde bize engelin mesafesini ve yönünü bizlere Nokia 5110 LCD ekranımız üzerinden aktarıyor.
Projemiz için gerekli malzemeleri temin ettiysek eğer ki başlayalım. İlk olarak “Arduino IDE” uygulamasında HC-SR04 sensörün algıladığı engelleri haberleşme yoluyla Nokia 5110 LCD ekrana aktaracak, çalıştıracak kodu yazıyoruz. (Arduino IDE nasıl kurulur?)
Arduino Kodu
// Arduino Radar Yapımı kodumuz
#include <Arduino.h>
#include <SPI.h>
#include <U8g2lib.h>
#include <Servo.h>
U8G2_PCD8544_84X48_F_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 8, /* data=*/ 9, /* cs=*/ 11, /* dc=*/ 10,/* reset=*/ 12); // Nokia 5110 Display
Servo Servo1;
const int servoPin = 2;
const int buzPin = 3;
//for sonar
const int echoPin = A0;
const int triggerPin = A1;
int distance;
int cont =180;
int locationOfObjects[180];
void drawDial(int angle) {
u8g2.drawCircle(42, 48, 41, U8G2_DRAW_ALL);//center(42,48) radius:41
u8g2.drawCircle(42, 48, 31, U8G2_DRAW_ALL);//center(42,48) radius:31
u8g2.drawCircle(42, 48, 21, U8G2_DRAW_ALL);//center(42,48) radius:21
u8g2.drawCircle(42, 48, 11, U8G2_DRAW_ALL);//center(42,48) radius:11
int x = 42 - 41 * cos(angle * 3.14 / 180);
int y = 48 - 41 * sin(angle * 3.14 / 180);
u8g2.drawLine(42, 48, x, y);
}
void drawObjectLine(int value, int angle) {
int x0 = 42 - 41 * cos(angle * 3.14 / 180);
int y0 = 48 - 41 * sin(angle * 3.14 / 180);
int x1 = 42 - value * cos(angle * 3.14 / 180);
int y1 = 48 - value * sin(angle * 3.14 / 180);
u8g2.drawLine(x1, y1, x0, y0);
}
int getDistance() {
long duration;
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
duration = pulseIn(echoPin, HIGH);
// Calculating the distance
return duration * 0.034 / 2;
}
void clearArray() {
for (int i = 0; i < 180; i++) {
locationOfObjects[i] = 0;
}
}
void setup(void) {
pinMode(buzPin, OUTPUT);
pinMode (triggerPin, OUTPUT);
pinMode (echoPin, INPUT );
u8g2.begin();
Servo1.attach(servoPin);
Serial.begin(9600);
}
void loop(void) {
for (int i = 0; i < 180; i++) {
cont--;
Servo1.write(cont);
u8g2.clearBuffer();
drawDial(i);
distance = getDistance();
Serial.println(distance);
if (distance <20){digitalWrite(buzPin, HIGH);}
else{digitalWrite(buzPin, LOW);}
if (distance < 30) {
locationOfObjects[i] = distance;
} else {
locationOfObjects[i] = 0;
}
for (int k = 0; k < i; k++) {
if (locationOfObjects[k]) {
drawObjectLine(locationOfObjects[k], k);
}
}
u8g2.sendBuffer();
delay(50);
}
clearArray();
for (int i = 180; i > 0; i--) {
cont++;
Servo1.write(cont);
u8g2.clearBuffer();
drawDial(i);
distance = getDistance();
Serial.println(distance);
if(distance <20){digitalWrite(buzPin, HIGH);}
else{digitalWrite(buzPin, LOW);}
if (distance < 30) {
locationOfObjects[i] = distance;
} else {
locationOfObjects[i] = 0;
}
for (int k = 180; k > i; k--) {
if (locationOfObjects[k]) {
drawObjectLine(locationOfObjects[k], k);
}
}
u8g2.sendBuffer();
delay(50);
}
clearArray();
}
Bu kodu yazdıktan sonra kontrol ediyoruz ve kütüphanelerimizin çalışıp çalışmadıklarına emin oluyoruz. Sonrasında kodumuzu Arduino Uno kartımıza yükledikten sonra devre kurulumunu yapıyoruz. Devre kurulumu yaparken her parçanın çalıştığından emin olmamız işimizi kolaylaştırır ve minimum düzeyde hata alırız.
Devre Şeması
Devre şemamız da görüldüğü gibi jumper kablolarımız ile devremizi birbirine bağlıyoruz. Bağlantıyı tamamladıktan sonra sensörümüzü, servo motorumuzun üzerine sabitliyoruz. Devremiz çalışmaya başladıysa eğer bir sonraki adıma geçiyoruz.
TinkerCAD 3D Çizimi
Dilerseniz yapmış olduğumuz radar sistemine bir de ayakta durabilmesi için stand yapalım. Stand için Tinkercad’i kullandım isterseniz benim çizimimden isterseniz kendiniz çizerek güzel bir stand yapabilirsiniz. “3D radar standı“.
Proje Görseli
Bu blog yazımız da bu kadardı umarım faydalı ve bilgilendiğiniz bir blog yazısı olmuştur. Sizlerin de benim kadar keyif aldığınızı düşünüyorum. Bir sonraki blog yazılarında görüşmek üzere…
1 Yorum
abi nokia lcdyi nasıl bağlıcaz