İçeriğe Geç

Otto Tank Projesi

06 Nov 2023
Otto Tank Project

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);  
}
code of blocks
Önceki Gönderi
Sıradaki Gönderi

Abone olduğun için teşekkürler!

Bu e-posta kaydedildi!

Görünümü satın alın
Seçenekleri Seçin

Seçeneği Düzenle

Stok Bildirimi

Karşılaştır

Ürün Stok KoduDeğerlendirmeAçıklama Kategori Uygunluk Ürün Tipi Diğer Detaylar
this is just a warning
Giriş Yap
Alışveriş Sepeti
0 Ürünler
Same Day Shipping No Extra Costs
Easy Returns Guarantee Return with Ease
Secure Checkout Secure Payment