- Gerekli Bileşenler:
- Devre şeması:
- 8051 Mikrodenetleyici:
- HC-05 Bluetooth Modülü:
- L293D Motor Sürücüsü IC:
- Android Telefon Kontrollü Robotun Çalışması:
- Kod açıklaması:
Bu projede 8051 mikrodenetleyici ve Bluetooth modülünü kullanarak Android Telefon kontrollü bir robot yapacağız. Robot DC motorlar kullanılarak tasarlandı ve DC motorların yönü android uygulamasından alınan komutlar ile kontrol edilecek. Robotun durumu Android uygulamasına geri gönderilir. Bu proje aynı zamanda HC-05 Bluetooth modülünün 8051 mikrodenetleyicileriyle arayüzlenmesine yardımcı olacaktır. 8051 ile ev aletlerini kontrol etmek için Bluetooth modülünü zaten kullandık.
Gerekli Bileşenler:
- 8051 mikrodenetleyici (AT89S52)
- HC-05 Bluetooth modülü
- L293D Motor Sürücüsü
- Robot şasi
- DC Motorlar (2)
- Tekerlekler (2)
- Castor Tekerlek
- Atlama telleri
- Bluetooth terminali android uygulaması
Devre şeması:
8051 Mikrodenetleyici:
8051 mikro denetleyici, 128 baytlık yonga RAM, 4K bayt yonga ROM, iki zamanlayıcı, bir seri bağlantı noktası ve dört adet 8 bit bağlantı noktasına sahip 8 bitlik bir mikro denetleyicidir. 8052 mikro denetleyici, 8051 mikro denetleyicinin bir uzantısıdır. Bu projede AT89S52 mikrodenetleyici kullanıyoruz. Aşağıdaki tablo 8051 aile üyesinin karşılaştırmasını göstermektedir.
Özellik |
8051 |
8052 |
ROM (bayt cinsinden) |
4K |
8K |
RAM (bayt) |
128 |
256 |
Zamanlayıcılar |
2 |
3 |
G / Ç pimleri |
32 |
32 |
Seri port |
1 |
1 |
Kaynakları kes |
6 |
8 |
HC-05 Bluetooth Modülü:
HC-05, bir seri Bluetooth modülüdür. AT komutları kullanılarak yapılandırılabilir. Üç farklı konfigürasyonda çalışabilir (Master, Slave, Loop back). Projemizde köle olarak kullanacağız. HC-05 modülünün özellikleri şunları içerir:
- Tipik -80dBm hassasiyet.
- Varsayılan baud hızı: 9600bps, 8 veri biti, 1 durdurma biti, eşlik yok.
- Otomatik eşleştirme pin kodu: "1234" varsayılan pin kodu
- 6 iğneli.
- HC-05'e güç sağlamak için Vcc ve Gnd pinleri kullanılır.
- Mikrodenetleyici ile iletişim kurmak için Tx ve Rx pinleri kullanılır.
- HC-05 modülünü etkinleştirmek için pimi etkinleştirin. düşük olduğunda modül devre dışı bırakılır
- Durum pini durum göstergesi olarak işlev görür. Başka bir Bluetooth cihazıyla eşleştirilmediğinde / bağlanmadığında, LED sürekli olarak yanıp söner. Başka bir Bluetooth cihazına bağlandığında / eşleştirildiğinde, LED 2 saniyelik sabit bir gecikme ile yanıp söner.
L293D Motor Sürücüsü IC:
L293D, çift H köprü motor sürücüsü IC'dir. Bu bir akım yükseltici görevi görür, L293D'nin çıkışı DC Motorları sürer. İki dahili H-köprü devresi içerir. Ortak çalışma modunda, iki DC motoru her iki yönde aynı anda sürebilir. Aşağıdaki tablo, L293D IC'nin pin açıklamasını gösterir. L293D Motor Sürücüsünü kullanan bazı projeler.
Pin Açıklaması
Pin No. |
İsim |
Fonksiyon |
1 |
1,2'yi etkinleştir |
Motor 1 için pimi etkinleştirin |
2 |
Giriş 1 |
Motor 1 için giriş 1 |
3 |
Çıkış 1 |
Motor 1 için çıkış 1 |
4 |
Gnd |
Zemin (0V) |
5 |
Gnd |
Zemin (0V) |
6 |
Çıkış 2 |
Motor 1 için çıkış 2 |
7 |
Giriş 2 |
Motor 1 için giriş 2 |
8 |
Vcc 2 |
Motorlar için besleme gerilimi (5V) |
9 |
3,4'ü etkinleştir |
Motor 1 için pimi etkinleştirin |
10 |
Giriş 3 |
Motor 2 için giriş 1 |
11 |
Çıkış 4 |
Motor 2 için çıkış 1 |
12 |
Gnd |
Zemin (0V) |
13 |
Gnd |
Zemin (0V) |
14 |
Çıkış 4 |
Motor 2 için çıkış 2 |
15 |
Giriş 4 |
Motor 2 için giriş 2 |
16 |
Vcc 1 |
Besleme gerilimi (5V) |
Android Telefon Kontrollü Robotun Çalışması:
Bu Akıllı Telefon kontrollü Robotta, android uygulamasının kullanıcısı verileri HC-05 modülü aracılığıyla 8051 mikro denetleyiciye gönderir. Alınan veriler 8051 mikrodenetleyicide karşılaştırılır ve buna göre karar verilir. Aşağıdaki tablo, alınan farklı karakterler için motorların yönünü ve robotun durumunu gösterir.
Alınan karakter |
Motor 1 |
Motor 2 |
Robotun durumu |
f |
İleri |
İleri |
Ileri hareket |
b |
Geriye |
Geriye |
Geriye doğru hareket eder |
r |
İleri |
Geriye |
Sağa hareket eder |
l |
Geriye |
İleri |
Sola hareket eder |
s |
Kapalı |
Kapalı |
Durduruldu |
Bluetooth terminali uygulaması bize Bluetooth terminal taklit etmek için izin verir. Bu uygulama çift yönlü iletişimi destekler ve bu uygulama çoğu cihazla uyumludur.
Aşağıdaki adımlar, bu uygulamanın nasıl kurulacağını ve kullanılacağını göstermektedir.
1. Android telefonunuza Bluetooth terminal uygulamasını indirin ve yükleyin. Uygulama aşağıdaki bağlantıdan indirilebilir.
play.google.com/store/apps/details?id=ptah.apps.bluetoothterminal
2. Uygulamayı yükledikten sonra uygulamayı açın ve Bluetooth'u açın.
3. Cihazı seçin ve bağlan seçeneğine tıklayın. Başarılı bağlantıdan sonra HC-05 modülüne veri göndermeye başlayabiliriz.
Karakterin 8051 Mikrodenetleyici tarafından gerekli motorları döndürmek için nasıl gönderilip alındığını görmek için aşağıdaki Kod Açıklamasını kontrol edin.
Kod açıklaması:
Bu proje için eksiksiz C programı ve tanıtım videosu bu projenin sonunda verilmiştir. Kod küçük anlamlı parçalara bölünmüş ve aşağıda açıklanmıştır.
8051 mikro denetleyicileriyle L293D arabirimi için, L293D'nin 8051 mikro denetleyiciye bağlı olduğu pimleri tanımlamamız gerekir. Motor 1'in In1 pini P2.0'a, Motor 1'in In2 pini P2.1'e, Motor 2'nin In1 pini P2.2'ye, Motor 2'nin In2 pini P2.0'a bağlı.
sbit m1f = P2 ^ 0; // motor1 in1 pini sbit m1b = P2 ^ 1; // motor1 in2 pini sbit m2f = P2 ^ 2; // motor2'nin in1 pini sbit m2b = P2 ^ 3; // motor2 in2 pimi
Daha sonra programda kullanılan bazı fonksiyonları tanımlamamız gerekiyor. Gecikme işlevi, belirtilen zaman gecikmesini oluşturmak için kullanılır. Txdata işlevi, verileri seri port üzerinden iletmek için kullanılır. Rxdata işlevi, seri bağlantı noktasından veri almak için kullanılır.
void delay (unsigned int); // gecikme oluşturma işlevi char rxdata (void); // 8051 void txdata (işaretsiz karakter) seri bağlantı noktası üzerinden bir karakter almak için işlev; // 8051 seri bağlantı noktası üzerinden bir karakter gönderme işlevi
Kodun bu bölümünde 8051 mikro denetleyiciyi seri iletişim için yapılandıracağız. TMOD kaydı, zamanlayıcı 1, mod 2 (otomatik yeniden yükleme) için 0x20 ile yüklenir. SCON kaydı, 8 veri biti, 1 durdurma biti için 0x50 ile yüklenir ve alma etkinleştirilir. TH1 yazmacı, saniyede 9600 bitlik baud hızı için 0xfd ile yüklenir. Zamanlayıcıyı başlatmak için TR1 = 1 kullanılır.
TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1; Kodun bu bölümünde, rxdata işlevinin döndürülen karakteri, daha sonra kullanılmak üzere değişken 's' içinde saklanır.
s = rxdata (); // hc-05 bluetooth modülünden seri veri al
Kodun bu bölümünde, alınan karakteri farklı yönler için önceden atanmış karakterlerle karşılaştırmalıyız. Alınan karakter 'f' ise, robotun ileri yönde hareket etmesi gerekir. Bu, m1f, m2f pinleri yüksek ve m1b, m2b pinleri düşük yapılarak gerçekleştirilir . Bu yapıldıktan sonra, robotun durumunu android uygulamasına göndermemiz gerekiyor. Bu, txdata işlevi yardımıyla yapılır. Alınan farklı karakterler için aynı işlem tekrarlanır ve buna göre karar alınır. Tablo 1, robotun farklı hareket yönleri için farklı m1f, m1b, m2f, m2b değerlerini göstermektedir.
if (s == 'f') // her iki motoru ileri yönde hareket ettirin {m1f = 1; gecikme (1); m1b = 0; gecikme (1); m2f = 1; gecikme (1); m2b = 0; gecikme (1); for (i = 0; msg1! = '\ 0'; i ++) // robotun durumunu bluetooth aracılığıyla android uygulamasına gönder {txdata (msg1); }}
m1f |
m1b |
m2f |
m2b |
Motor 1 dönüşü |
Motor 2 dönüşü |
Robotun durumu |
1 |
0 |
1 |
0 |
ileri |
ileri |
İlerlemek |
0 |
1 |
0 |
1 |
tersine çevirmek |
tersine çevirmek |
Geriye doğru hareket etmek |
1 |
0 |
0 |
1 |
ileri |
tersine çevirmek |
Sağa hareket |
0 |
1 |
1 |
0 |
tersine çevirmek |
ileri |
Sola hareket |
0 |
0 |
0 |
0 |
durdu |
durdu |
durdu |
Bu, 8051 mikro denetleyiciyi kullanarak dört motoru kontrol ederek Robot arabasını herhangi bir yönde döndürebilirsiniz. Bu robot, android telefonunuz yoksa, 8051 ile DTMF kullanılarak da kontrol edilebilir.
Ayrıca tüm Robotik Projelerini buradan kontrol edin.