Accelerometer ADXL345 Micropython

, , Leave a comment

Halo selamat datang kembali di andidinata.com. Input ketiga dari project Little Gadget II saya adalah Accelerometer ADXL345. Sensor ini dapat mendeteksi gerakan dari tiga sumbu yaitu X, Y dan Z. Accelerometer ini menganut prinsip MEMS (=microelectromechanical system) yaitu sistem deteksi pergerakan yang terjadi dalam skala mikroskopis di dalam chip. Pergerakan chip mengakibatkan perubahan nilai kapasitif sehingga arah dan intensitas dari pergerakan bisa dihitung.

Sensor 3-axis ADXL345 ini suprisingly tergolong murah jika dibandingkan dengan kemampuan yang dimilikinya. Harganya sekitar Rp. 35,000 saja di Tokopedia. Koneksinya menggunakan interface I2C seperti bisa dilihat pada tabel berikut ini.

Untuk mengaktifkannya, copykan file adxl345_upy.pyke dalam ESP8266 (link tersedia di bagian source yang terdapat dibagian bawah tulisan ini). Jika kamu menggunakan ampy, ketikkan perintah berikut ini:

ampy -b 115200 -p /dev/ttyUSB0 put adxl345_upy.py

Setelah tercopy, masuklah ke micropython shell. Jika kamu menggunakan picocom, ketikkan

picocom -b 115200 /dev/ttyUSB0

Setelah berada di dalam, ketikkan beberapa baris ini untuk testing accelerometer kamu.

Driver yang kita gunakan menyediakan nilai axis dalam sebuah library, jadi sangat mudah kita kita ingin menarik seluruh axis atau hanya beberapa saja. Misalnya jika kita ingin menarik nilai X saja dan membuatnya sebagai variabel baru gunakan perintah ini

pos_x=axes['x']

JIka kita ingin membaca sensor ini terus menerus, letakkan dalam while loop dan berikan sleep time.

Berikut ini adalah demo Hello World dengan Accelerometer dan Nokia 5110 LCD

import utime
from machine import Pin, SPI
from adxl345_upy import ADXL345_upy
import pcd8544

spi = SPI(1)
spi.init(baudrate=8000000, polarity=0, phase=0)
cs = Pin(2)
dc = Pin(15)
rst = Pin(0)

bl = Pin(12, Pin.OUT, value=1)
lcd = pcd8544.PCD8544(spi, cs, dc, rst)

import framebuf
buffer = bytearray((lcd.height // 8) * lcd.width)
framebuf = framebuf.FrameBuffer1(buffer, lcd.width, lcd.height)

sensor = ADXL345_upy(sensor_id=2)

while True:
    framebuf.fill(0)
    lcd.data(buffer)
    axes=sensor.sample(True)
    pos_x=int(axes['x']*40)
    pos_y=int(axes['y']*20)
    pos_z=int(axes['z']*20)
    framebuf.text("Hello",22+pos_x,14+pos_y,1)
    framebuf.text("World",22+pos_x,22+pos_y,1)
    lcd.data(buffer) 
    
    if axes['z'] > 0:
        bl.value(0)
    else:
        bl.value(1)

    utime.sleep(0.05)

Hasilnya akan seperti ini:

 


Dengan accelerometer ini saya sudah menulis beberapa program untuk aplikasi pedometer (step detection), level (seperti waterpass, pengukur kedataran sebuah bidang) dan game yang dikendalikan dengan accelerometer. Silahkan check instagram saya di @mcdinata

Sekian tulisan dari saya, terima kasih sudah membaca dan semoga bermanfaat. Mohon dukungannya dengan memberikan like, share dan subscribe ke blog ini. Sampai jumpa kembali di tulisan berikutnya.

Source:

Get ADXL345 Driver from Download Page (link)

I missed the source of the ADXL driver for micropython, did not save it in the bookmark. Once i find it, this section will be updated accordingly.

Facebook Comments
 

Leave a Reply