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, 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:
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.
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:
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.
Ahududu Pi Pico | 1 Adet |
ADXL345 3 Eksenli İvme Ölçer | 1 Adet |
Breadboard | 1 Adet |
Jumper Kablo | 6 Adet |
ADXL345’i Raspberry Pi Pico’ya aşağıdaki şekilde bağlayın:
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.
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)
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_magnitude
Pitch 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.
Yorum yapabilmek için giriş yapmalısınız.
Raspberry Pi Pico ile ADXL345 İvme Ölçerin Arayüzlenmesi
Yorum Yaz