Raspberry Pi Pico Bluetooth Kullanımı

Raspberry Pi Pico Bluetooth Kullanımı

Raspberry Pi Pico Bluetooth teknolojisini nasıl kullanacağınızı detaylıca anlattığımız, Raspberry Pi Pico eğitim serisi rehberlerimizin bir yenisine daha hoş geldiniz. Bu içeriğimizde, Bluetooth modülü ve MicroPython programlama dili kullanarak geliştireceğimiz Android uygulaması yardımıyla bir LED’i uzaktan kablosuz olarak kontrol edeceğiz. Projelerimizde sıkça kullandığımız HC-06 Bluetooth modülü, son derece ekonomik olması ve mikrodenetleyicilerle kolayca arayüz oluşturabilmesi sayesinde oldukça popülerdir. Modülün haberleşme altyapısı standart UART (seri iletişim) protokolüne dayanır. Bu doğrultuda projedeki temel amacımız, Raspberry Pi Pico kartımız ile Bluetooth modülü arasında kararlı bir UART seri iletişimi tesis etmektir.

Gerekli Donanım Bileşenleri

  • HC-06 Serial Bluetooth Modülü
  • Raspberry Pi Pico Geliştirme Kartı
  • 5mm Kırmızı LED
  • 220 Ohm Koruma Direnci (1/4W)
  • Jumper Bağlantı Kabloları (Erkek-Erkek)
  • Breadboard (Deney Tahtası)
Raspberry Pi Pico Bluetooth Kullanımı
Raspberry Pi Pico Bluetooth Kullanımı

Raspberry Pi Pico Bluetooth Devre Bağlantıları

Yukarıda paylaştığımız devre şemasında da görüleceği üzere, Bluetooth modülünün veri gönderiminden sorumlu olan verici (TX) pini, turuncu kablo aracılığıyla Raspberry Pi Pico kartının GPIO1 (Physical Pin 2 – UART0 RX) ucuna çaprazlanarak bağlanmıştır. Modülün veri alımından sorumlu olan alıcı (RX) pini ise yeşil kabloyla Pico’nun GPIO0 (Physical Pin 1 – UART0 TX) ucuna bağlanmıştır. Güç beslemesi için HC-06 modülünün VCC pini kırmızı kabloyla doğrudan Pico üzerindeki VBUS (5V USB gücü) hattına, ortak şasi bağlantısı için ise GND pini siyah kabloyla Pico kartının herhangi bir GND (Toprak) pinine bağlanmıştır. Kontrol edeceğimiz LED ise, aşırı akımdan zarar görmemesi için 220 ohm direnç üzerinden Pico’nun GPIO16 pinine bağlanmıştır.

Android Uygulama Arayüzünün Kurulumu (Serial Bluetooth Terminal)

Projemizde veri gönderip almak için Google Play Store üzerinde yer alan güvenilir ve popüler Serial Bluetooth Terminal mobil uygulamasını kullanacağız. Uygulamayı akıllı telefonunuza indirip açtığınızda oldukça basit ve kullanışlı bir terminal arayüzü ile karşılaşacaksınız. Terminal ekranının en alt kısmında “M1”, “M2”, “M3” şeklinde sıralanmış, özel komut atayabileceğimiz makro butonları yer almaktadır.

Bu butonları projemize uyarlamak amacıyla:

  • M1 butonunu “LED Açık” (LED ON)
  • M2 butonunu “LED Kapalı” (LED OFF)
    komutunu gönderecek şekilde özelleştirmemiz gerekir.

Butonları kişiselleştirmek için “M1” butonunun üzerine basılı tutun. Açılan düzenleme penceresinde “Name” (Buton Adı), “Value” (Gönderilecek Değer), “Edit Mode” ve “Action” parametrelerini düzenleyebilirsiniz. Buton ismine “Led On” yazarak kaydedin. Aynı adımları “M2” butonu için de uygulayarak değerini “Led Off” olarak ayarlayın.

Bu basit adımların ardından arayüzdeki “M1” ve “M2” butonları, yerini doğrudan tıklayabileceğiniz Led On ve Led Off butonlarına bırakacaktır. Böylece mobil terminal tarafındaki kurulum ve makro atamaları başarıyla tamamlanmış olur.

Serial Bluetooth Terminal Mobil Uygulama Buton Ayarları

MicroPython main.py Yazılım Açıklamaları:
Kodun başlangıcında, donanım kontrolünü sağlamak amacıyla MicroPython’ın dahili machine kütüphanesinden Pin ve UART sınıflarını projemize dahil ediyoruz. Ardından, UART(0, 9600) komutuyla Pico’nun donanımsal seri haberleşme birimini başlatıyoruz. Buradaki 0 parametresi, donanımsal UART0 kanalını temsil eder. Raspberry Pi Pico üzerinde iki adet bağımsız UART kanalı bulunur. Giriş pinleri olarak atadığımız GPIO0 (TX) ve GPIO1 (RX) pinleri, UART0 birimi için fiziksel bağlantı noktalarını oluşturur.

from machine import Pin, UART
uart = UART(0, 9600)

Seri port tanımlamasının ardından, LED’i bağladığımız GPIO16 pinini dijital çıkış (Pin.OUT) olarak sisteme tanıtıyoruz:

LedGPIO = 16
led = Pin(LedGPIO, Pin.OUT)

Seri Port Üzerinden Gelen Verilerin Okunması

Sonsuz while True: döngüsü içerisinde, uart.any() fonksiyonunu kullanarak seri haberleşme hattında bekleyen bir veri paketi olup olmadığını sürekli kontrol ediyoruz. Bluetooth üzerinden veri ulaştığında, bu veriyi uart.readline() fonksiyonu ile okuyoruz. Yaptığımız testlerde, mobil uygulamadan “Led On” butonuna tıklandığında Pico seri portuna b’\xd0′ byte bilgisinin ulaştığını, “Led Off” butonuna tıklandığında ise b’\xd5′ byte değerinin geldiğini saptadık.

Yazılım algoritmasında bu gelen benzersiz byte verilerini sorgulayarak LED çıkış pinini aktif (high) veya pasif (low) konumuna getiriyoruz:

while True:
if uart.any():
command = uart.readline()
# print(command) # Seri porttan gelen ham byte değerini görmek için yorum işaretini kaldırabilirsiniz
if command == b'\xd0':
led.high()
print("LED Aktif")
elif command == b'\xd5':
led.low()
print("LED Pasif")

Raspberry Pi Pico MicroPython Kodlarının Tamamı

Aşağıda yer alan kod bloklarını kopyalayıp Thonny IDE veya tercih ettiğiniz editör yardımıyla Raspberry Pi Pico kartınızın içerisine main.py ismiyle kaydederek projeyi anında çalıştırabilirsiniz:

from machine import Pin, UART

# UART0 birimi 9600 baud hızında başlatılıyor
uart = UART(0, 9600)

# LED çıkış pini tanımlanıyor
LedGPIO = 16
led = Pin(LedGPIO, Pin.OUT)

while True:
# Seri portta veri kontrolü yapılıyor
if uart.any():
command = uart.readline()
# print(command) # Gelen ham veriyi izlemek isterseniz bu satırı aktif edin
if command == b'\xd0':
led.high()
print("LED AÇILDI")
elif command == b'\xd5':
led.low()
print("LED KAPATILDI")

Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.