Merhabalar, değerli makerlar! Sizlere, parmaklarınızın ucundaki bir düğmeye dokunarak ileriye ve geriye adımlar atabileceğiniz, sağa ve sola dönebileceğiniz uzaktan kumandalı bir robotun varlığından bahsetmek isterim. Ancak bu robotun en büyüleyici özelliği, kendine has bir koruma mekanizması barındırması. Tank, üzerinde taşıdığı ultrasonik sensör aracılığıyla çevresini sürekli olarak tarar ve karşısına çıkan herhangi bir engelle karşılaştığında, otomatik bir refleksle durur. Siz, uzaktan kumandasının düğmelerine basarak, bu mekanik canavarı istediğiniz yöne götürebilirsiniz.
Teknoloji konusunda bilginiz olmasa da endişelenmeyin. Bu robot, teknolojik bir bilgi birikimi gerektirmeden, her yaştan insanın kullanımına uygun bir şekilde tasarlanmıştır. Bu, hem çocukların hem de yetişkinlerin vakit geçirebileceği, keyif alabileceği bir oyuncaktır.
Peki, siz bu robotu kontrol ederek, engellerle dolu, gizemli bir labirenti keşfetmeye hazır mısınız? Eğer cevabınız evetse, bu robotik serüvene katılmak için okumaya devam edin. Bu uzaktan kumandalı robot projesi, temel teknoloji ve mühendislik konularına dair bir merak uyandırabilir ve bilim ile teknolojiye ilgi duyan kişiler için daha ileri düzey projelere kapı aralayabilir.
Uzaktan Kumandalı Robotlar
Çocuklar için Uzaktan Kumandalı Araba
Uzaktan kumandalı robot oyuncakları, çocuklara etkileşimli ve sürükleyici bir oyun deneyimi sunan popüler ve heyecan verici oyuncaklardır. Bu minyatür araçlar, kullanımı kolay cihazlar aracılığıyla uzaktan kontrol edilir ve çocuklara yaratıcılıklarını keşfetme ve temel motor becerilerini geliştirme fırsatı tanır. Çeşitli tasarımlarıyla macera dolu arazi araçlarından şık yarış modellerine kadar çocuklara ilgi alanlarına en uygun olanı seçme imkanı sunarlar.
Çocuklar için uzaktan kumandalı arabalar sadece saatlerce eğlence sunmakla kalmaz, aynı zamanda el-göz koordinasyonu ve ince motor becerilerinin gelişimini de teşvik eder. Bu oyuncaklar, oyun yoluyla öğrenmeyi keyifli hale getirir ve genç meraklılar için teknoloji ve mühendislik dünyasına harika bir giriş sunar.
Detaylar ve Algoritma
Bu projede robot tank araç kiti kullanacağız. Robotun önündeki duvarları algılayabilmesi ve hareketlerine karar verebilmesi için HC-SR04 ultrasonik mesafe sensöründen yararlanacağız. Robot tank, aracın önündeki alanı tarayacak ve yol açıksa ileri doğru hareket edecek. Eğer 10 cm içinde bir duvar (engel) varsa, araç duracak ve mesafeyi tekrar ölçecek.
Robot tankı uzaktan kumanda ile kontrol edebilirsiniz. Uzaktan kumandanın yukarı ok tuşuna bastığınızda ileri hareket edecek, sağ ok tuşuna bastığınızda sağa, sol ok tuşuna bastığınızda sola hareket edecek ve OK tuşuna bastığınızda ise duracak.
Gerekli Malzemeler
1x PicoBricks
1x HC-SR04 Ultrasonik Sensorü
2x DC Motor
Bağlantı Kabloları
Piller
Devre Şeması
Robot Tank Projesinin İnşa Aşamaları
İsterseniz, aşağıdaki butondan Robot Araç STL dosyalarını indirebilir ve bunları bir 3D yazıcıda basabilirsiniz, ya da kendi tasarım ve üretim tercihlerinize göre şekillendirebilirsiniz.
Paneldeki modülleri ayırmanız gerekecek, bu nedenle modül bağlantılarını grove kabloları ile yapmalısınız.
İşte sizin için projenin kodları. Hangi dilde yazmak istediğiniz size kalmış :)
PicoBricks IDE Kodları
MicroBlocks Kodları
MicroPython Kodları
from time import sleep
from machine import Pin
from machine import PWM
import utime
from picobricks import NEC_16
from picobricks import IR_RX
from machine import ADC
trigger = Pin(15, Pin.OUT)
echo = Pin(14, Pin.IN)
def getDistance():
trigger.low()
utime.sleep_us(2)
trigger.high()
utime.sleep_us(5)
trigger.low()
while echo.value() == 0:
signaloff = utime.ticks_us()
while echo.value() == 1:
signalon = utime.ticks_us()
timepassed = signalon – signaloff
distance = (timepassed * 0.0343) / 2
print(“The distance from object is “,distance,”cm”)
return distance
def ir_callback(data, addr, ctrl):
global ir_data
global ir_addr, data_rcvd
if data > 0:
ir_data = data
ir_addr = addr
print(‘Data {:02x} Addr {:04x}’.format(data, addr))
data_rcvd = True
ir = NEC_16(Pin(0, Pin.IN), ir_callback)
ir_data = 0
data_rcvd = False
motor_1 = PWM(Pin(21))
motor_1.duty_u16(0)
motor_2 = PWM(Pin(22))
motor_2.duty_u16(0)
def left():
global distance
motor_1.duty_u16(50 * 650)
motor_2.duty_u16(0 * 650)
def right():
global distance
motor_1.duty_u16(0 * 650)
motor_2.duty_u16(50 * 650)
def stop():
global distance
motor_1.duty_u16(0 * 650)
motor_2.duty_u16(0 * 650)
def forward():
global distance
motor_1.duty_u16(50 * 650)
motor_2.duty_u16(50 * 650)
while True:
distance = getDistance()
if distance <= (10):
stop()
if data_rcvd == True:
data_rcvd = False
if ir_data == IR_RX.number_left:
left()
if ir_data == IR_RX.number_right:
right()
if ir_data == IR_RX.number_up:
forward()
if ir_data == IR_RX.number_ok:
stop()
Arduino Kodları
#include <IRremote.h>
#include <Wire.h>
#include "ACROBOTIC_SSD1306.h"
#define IR_RECEIVE_PIN 0
#define trigPin 15
#define echoPin 14
int a = 0;
long duration, distance;
void setup() {
//define dht sensor and Oled screen
Serial.begin(115200);
Wire.begin();
oled.init();
oled.clearDisplay();
pinMode(IR_RECEIVE_PIN, INPUT);
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
if (IrReceiver.decode()) {
a = (IrReceiver.decodedIRData.decodedRawData);
Serial.println(a);
IrReceiver.resume();
}
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration / 2) / 29.1;
if (distance <= 10)
{
stop();
}
if (a == -1520763136) {
left();
}
if (a == -150405376) {
right();
}
if (a == -417792256) {
forward();
}
if (a == -484638976) {
stop();
}
}
void stop()
{
digitalWrite(21, LOW);
digitalWrite(22, LOW);
}
void left()
{
digitalWrite(21, HIGH);
digitalWrite(22, LOW);
}
void right()
{
digitalWrite(21, LOW);
digitalWrite(22, HIGH);
}
void forward()
{
digitalWrite(21, HIGH);
digitalWrite(22, HIGH);
}