e
sv

Raspberry Pi Pico ile ADXL345 İvme Ölçerin Arayüzlenmesi

888 Okunma — 26 Ocak 2024 19:07
Raspberry Pi Pico ile ADXL345 İvme Ölçerin Arayüzlenmesi
avatar

Admin

  • e 0

    Mutlu

  • e 0

    Eğlenmiş

  • e 0

    Şaşırmış

  • e 0

    Kızgın

  • e 0

    Üzgün

Bu makalemizde, ADXL345 3 eksenli İvme Ölçerin MicroPython kodunu kullanarak Raspberry Pi Pico ile arayüz oluşturma sürecini inceleyeceğiz. Raspberry Pi Pico, yüksek çözünürlüklü ve düşük güçlü bir dijital ivmeölçer olan ADXL345 ile iyi bir şekilde eşleşen uygun maliyetli, esnek ve güçlü bir mikro denetleyicidir. Bu bileşenler birlikte hareket tabanlı kontrol sistemleri, yönlendirme sensörleri ve hatta yaratıcı oyun kontrolörleri gibi çok çeşitli büyüleyici projeler geliştirmek için kullanılabilir.

Bu makale boyunca size Raspberry Pi Pico ve ADXL345 ivmeölçerin nasıl bağlanacağına dair ayrıntılı bilgiler sunacağız. Ayrıca ivmeölçer verilerini elde etmek ve işlemek için gerekli kodu yazma sürecinde size rehberlik edeceğiz. Bu eğitimin sonunda, hem Raspberry Pi Pico hem de ADXL345 ivmeölçer hakkında sağlam bir anlayışa ve ayrıca bu bileşenleri kullanarak kendi özel projelerinizi oluşturmak için gereken becerilere sahip olacaksınız.

Raspberry Pi Pico Nedir

Raspberry Pi Pico, Raspberry Pi Foundation tarafından üretilen bir mikrodenetleyici kartıdır. Raspberry Pi ailesinin diğer üyelerinden farklı olarak, Raspberry Pi Pico özellikle mikrodenetleyici projeleri için tasarlanmıştır. Bu kart, Raspberry Pi tarafından geliştirilen ve RP2040 adı verilen özel bir mikrodenetleyici çipini içerir.

Raspberry Pi Pico’nun temel özellikleri şunlardır:

  1. RP2040 Mikrodenetleyici Çipi: Bu çip, çift çekirdekli ARM Cortex-M0+ işlemciler içerir ve birçok GPIO (Genel Amaçlı Giriş/Çıkış) pinine sahiptir. Bu, Pico’nun geniş bir dış donanım yelpazesini desteklemesini sağlar.
  2. Çeşitli Giriş/Çıkış Pinleri (GPIO): Pico, geniş bir GPIO yelpazesi sunar, bu da kullanıcıların sensörler, ekranlar, motorlar ve diğer dış cihazlar gibi çeşitli bileşenleri bağlamalarını sağlar.
  3. Mikro USB Bağlantı Noktası: Pico, mikro USB bağlantı noktası üzerinden programlanabilir ve güç alabilir.
  4. 2 MB Flash Bellek: Pico, kullanıcıların programlarını depolamak için 2 megabayt flash belleğe sahiptir.
  5. Uygulama Geliştirme Desteği: Pico, MicroPython ve C/C++ gibi dillerle programlanabilir. Raspberry Pi tarafından sağlanan Pico SDK (Yazılım Geliştirme Kiti), C/C++ programlamada kullanılabilir.
  6. Çalışma Voltajı: Pico, 3.3V çalışma voltajına sahiptir.

Raspberry Pi Pico, genellikle robotik projeler, gömülü sistemler, sensör uygulamaları ve öğrenme amaçlı projeler gibi çeşitli mikrodenetleyici uygulamalarında kullanılmaktadır.

Raspberry Pi Pico ile ADXL345 İvme Ölçerin Arayüzlenmesi
Raspberry Pi Pico ile ADXL345 İvme Ölçerin Arayüzlenmesi 8

ADXL345 Nedir

ADXL345, Analog Devices tarafından üretilen bir üç eksenli ivmeölçer (accelerometer) entegresidir. Bu entegre, özellikle hareket algılama ve ivme ölçüm uygulamalarında kullanılmak üzere tasarlanmıştır. ADXL345, dijital bir sensördür ve kullanıcıya üç eksenli ivme verilerini ölçme yeteneği sağlar.

İşlevsel özellikleri şu şekildedir:

  1. Üç Eksenli İvme Ölçümü: ADXL345, x, y ve z eksenlerindeki ivmeyi ölçebilir. Bu, sensörün herhangi bir yöndeki ivmeyi algılamasını sağlar.
  2. Dijital Arabirim: ADXL345, I2C (Inter-Integrated Circuit) veya SPI (Serial Peripheral Interface) gibi dijital haberleşme protokollerini kullanarak mikrodenetleyicilere bağlanabilir.
  3. Yüksek Hassasiyet ve Düşük Güç Tüketimi: Yüksek hassasiyetle çalışabilen bu sensör, aynı zamanda düşük güç tüketimi özelliğine sahiptir, bu da taşınabilir pil destekli cihazlarda kullanım için uygun hale getirir.
  4. Dinamik Aralık: ADXL345, genellikle programlanabilir bir dinamik aralık sunar, bu da ölçülen ivmenin belirli bir aralık içinde olmasını sağlar.
  5. Özelleştirilebilir Eşik Değerleri: Kullanıcılar, belirli bir ivme eşiğini aşan durumları algılamak için eşik değerlerini özelleştirebilirler.

Bu tür üç eksenli ivmeölçerler, özellikle giyilebilir teknolojiler, hareket algılama uygulamaları, oyun kumandaları, sensörlü cihazlar ve başka türden hareketle ilgili projelerde kullanılır. ADXL345, geniş bir kullanım yelpazesi ve kolay entegrasyon yetenekleri nedeniyle popüler bir ivmeölçer entegresidir.

Raspberry Pi Pico ile ADXL345 İvme Ölçerin Arayüzlenmesi
Raspberry Pi Pico ile ADXL345 İvme Ölçerin Arayüzlenmesi 9

ADXL345‘in Özellikleri

ADXL345, aşağıdaki temel özelliklere sahip üç eksenli bir ivmeölçerdir:

  1. Eksenler: 3 eksen (X, Y, Z)
  2. Hassasiyet: Kullanıcı tarafından seçilebilir, ±2g, ±4g, ±8g veya ±16g
  3. Çözünürlük: 10 bit veya 13 bit, kullanıcı tarafından seçilebilir
  4. Çıkış veri hızı (ODR): 0,10 Hz – 3200 Hz
  5. İletişim arayüzleri: I2C (400 kHz’e kadar) ve SPI (4 telli ve 3 telli, 5 MHz’e kadar)
  6. Besleme voltajı aralığı: 2,0 V ila 3,6 V
  7. Akım tüketimi: Çıkış veri hızına ve ölçüm moduna bağlı olarak 23 µA ila 130 µA
  8. Çalışma sıcaklığı aralığı: -40°C ila +85°C
  9. Paket: 3 mm × 5 mm × 1 mm LGA
Raspberry Pi Pico ile ADXL345 İvme Ölçerin Arayüzlenmesi
Raspberry Pi Pico ile ADXL345 İvme Ölçerin Arayüzlenmesi 10

Kullanılacak Malzemeler

Ahududu Pi Pico1 Adet
ADXL345 3 Eksenli İvme Ölçer1 Adet
Breadboard1 Adet
Jumper Kablo6 Adet

Bağlantı Şeması

Raspberry Pi Pico ile ADXL345 İvme Ölçerin Arayüzlenmesi
Raspberry Pi Pico ile ADXL345 İvme Ölçerin Arayüzlenmesi 11

ADXL345’i Raspberry Pi Pico’ya aşağıdaki şekilde bağlayın:

  • VCC’den 3,3V’a (Pim 36)
  • GND’den GND’ye (Pim 38)
  • SDA’dan SDA’ya (GP20, Pim 26)
  • SCL’den SCL’ye (GP21, Pim 27)
  • CS ila 3,3V (Bu, I2C modunu kullanmak içindir)
  • SD0 – GND (Bu, I2C adresini 0x53 olarak ayarlar)

Hızlanma Değerlerini Okumak için MicroPython Kodu

Pico’nun ADXL345 ve Raspberry arayüzünü kullanarak x, y ve z eksenindeki Hızlanma Ham Değerlerini okumak için örnek bir MicroPython kodunu burada bulabilirsiniz.

from machine import Pin, I2C
import time
import ustruct
 
# Constants
ADXL345_ADDRESS = 0x53
ADXL345_POWER_CTL = 0x2D
ADXL345_DATA_FORMAT = 0x31
ADXL345_DATAX0 = 0x32
 
# Initialize I2C
i2c = I2C(0, sda=Pin(8), scl=Pin(9), freq=400000)
 
# Initialize ADXL345
def init_adxl345():
    i2c.writeto_mem(ADXL345_ADDRESS, ADXL345_POWER_CTL, bytearray([0x08]))  # Set bit 3 to 1 to enable measurement mode
    i2c.writeto_mem(ADXL345_ADDRESS, ADXL345_DATA_FORMAT, bytearray([0x0B]))  # Set data format to full resolution, +/- 16g
 
# Read acceleration data
def read_accel_data():
    data = i2c.readfrom_mem(ADXL345_ADDRESS, ADXL345_DATAX0, 6)
    x, y, z = ustruct.unpack('<3h', data)
    return x, y, z
 
# Main loop
init_adxl345()
while True:
    x, y, z = read_accel_data()
    print("X: {}, Y: {}, Z: {}".format(x, y, z))
    time.sleep(0.1)

Bu kod ADXL345’i başlatır, tam çözünürlüklü, ±16g ölçümler için yapılandırır ve ardından her 0,1 saniyede bir X, Y ve Z eksenleri için hızlanma verilerini okur ve yazdırır. Uygulamanızın gereksinimlerine bağlı olarak kodu farklı bir hassasiyet ayarı kullanacak veya verileri farklı bir hızda okuyacak şekilde ayarlayabilirsiniz.

Raspberry Pi Pico ile ADXL345 İvme Ölçerin Arayüzlenmesi
Raspberry Pi Pico ile ADXL345 İvme Ölçerin Arayüzlenmesi 12

Dönme Açısı Değerlerini Okumak için MicroPython Kodu

ADXL345 ivme ölçeri kullanarak büyüklüğü, eğimi ve yuvarlanmayı ölçmek için MicroPython kodunu değiştirebilirsiniz. Büyüklüğü, eğimi ve yuvarlanmayı hesaplamak ve bunları ivme verileriyle birlikte yazdırmak için güncellenmiş kod:

from machine import Pin, I2C
import time
import ustruct
import math
 
# Constants
ADXL345_ADDRESS = 0x53
ADXL345_POWER_CTL = 0x2D
ADXL345_DATA_FORMAT = 0x31
ADXL345_DATAX0 = 0x32
 
# Initialize I2C
i2c = I2C(0, sda=Pin(8), scl=Pin(9), freq=400000)
 
# Initialize ADXL345
def init_adxl345():
    i2c.writeto_mem(ADXL345_ADDRESS, ADXL345_POWER_CTL, bytearray([0x08]))  # Set bit 3 to 1 to enable measurement mode
    i2c.writeto_mem(ADXL345_ADDRESS, ADXL345_DATA_FORMAT, bytearray([0x0B]))  # Set data format to full resolution, +/- 16g
 
# Read acceleration data
def read_accel_data():
    data = i2c.readfrom_mem(ADXL345_ADDRESS, ADXL345_DATAX0, 6)
    x, y, z = ustruct.unpack('<3h', data)
    return x, y, z
 
# Calculate the magnitude of acceleration
def calc_accel_magnitude(x, y, z):
    return math.sqrt(x**2 + y**2 + z**2)
 
# Calculate roll angle in degrees
def calc_roll(x, y, z):
    return math.atan2(y, math.sqrt(x**2 + z**2)) * (180 / math.pi)
 
# Calculate pitch angle in degrees
def calc_pitch(x, y, z):
    return math.atan2(-x, math.sqrt(y**2 + z**2)) * (180 / math.pi)
 
# Main loop
init_adxl345()
while True:
    x, y, z = read_accel_data()
    magnitude = calc_accel_magnitude(x, y, z)
    roll = calc_roll(x, y, z)
    pitch = calc_pitch(x, y, z)
    print("X: {}, Y: {}, Z: {}, Magnitude: {:.2f}, Roll: {:.2f}, Pitch: {:.2f}".format(x, y, z, magnitude, roll, pitch))
    time.sleep(0.1)
Raspberry Pi Pico ile ADXL345 İvme Ölçerin Arayüzlenmesi
Raspberry Pi Pico ile ADXL345 İvme Ölçerin Arayüzlenmesi 13

Bu güncellenmiş kod , ivme vektörünün eğimini, yuvarlanmasını ve büyüklüğünü hesaplamak için yeni , calc_roll,  calc_roll,   fonksiyonlarını içerir . calc_accel_magnitudePitch ve roll, matematik kütüphanesindeki atan2 fonksiyonu kullanılarak hesaplanır ve derece cinsinden ifade edilir. Büyüklük, ivme bileşenlerinin karelerinin toplamının karekökü olarak hesaplanır.

Ana döngü ivmeölçer verilerini okur, büyüklüğü, eğimi ve dönüşü hesaplar ve ardından sonuçları her saniye yazdırır.

okuyucu yorumlarıOKUYUCU YORUMLARI

Yorum yapabilmek için giriş yapmalısınız.

Sıradaki içerik:

Raspberry Pi Pico ile ADXL345 İvme Ölçerin Arayüzlenmesi

Araç çubuğuna atla