[megoldva] raspberry pi mma7455 accelerometer

Fórumok

Sziasztok.

Vásároltam egy ilyen cuccot ,hogy ne keljen forrasztgatni.
http://www.drotek.fr/shop/en/27-mma7455-accelerometer-sensor-pcb.html

És próbáltam összekötni a rasberry -vel. Ez a lábkiosztás:
VCC = pin 1
SDA = pin 3
SCL = pin 5
GND = pin 6
Kerestem egy python kódot, mert egyenlőre csak látni szeretném ,hogy működik.

# I2C writes =D0=0
# MMA7455 I2C address 1D (3A ,3B) write , read
# AN3745 app note for calibration
# byte read , write 1D , write address, read 1D ,DATA
# Byte write, write 1D , write address, write data.
# addresses,
# 06 XOUT8
# 07 YOUT8
# 08 ZOUT8
# 09 STATUS D0 1=data ready
# 0A detection source
# 0F who am i
# 16 Mode Control x1000101 measure 2gmode 0x45
# 16 Mode Control x1000001 measure 8gmode 0x41
# 16 Mode Control x1000100 standby 2gmode 0x84
# 16 Mode Control x1010101 ston measure 2gmode 0x55
# 18 Control1 D7 filter 0=62Hz,1=125Hz other 0
# 19 Control2 default 0
#!/usr/bin/python
import smbus
import time
import os
# import graphics
# Define a class called Accel
class Accel():
b = smbus.SMBus(0)
def setUp(self):
# Setup the Mode
self.b.write_byte_data(0x1D,0x16,0x55)
# Setup Calibration
self.b.write_byte_data(0x1D,0x10,0)
self.b.write_byte_data(0x1D,0x11,0)
self.b.write_byte_data(0x1D,0x12,0)
self.b.write_byte_data(0x1D,0x13,0)
self.b.write_byte_data(0x1D,0x14,0)
self.b.write_byte_data(0x1D,0x15,0)

def getValueX(self):
return self.b.read_byte_data(0x1D,0x06)

def getValueY(self):
return self.b.read_byte_data(0x1D,0x07)

def getValueZ(self):
return self.b.read_byte_data(0x1D,0x08)

MMA7455 = Accel()
MMA7455.setUp()

for a in range(10000):
x = MMA7455.getValueX()
y = MMA7455.getValueY()
z = MMA7455.getValueZ()

print "x=", x , "\t[" , "=" * (80 * x / 256) , " " * (80 - (80 * x / 256)) , "] " , (80 * x / 256) , "%"
print "y=", y , "\t[" , "=" * (80 * y / 256) , " " * (80 - (80 * y / 256)) , "] " , (80 * y / 256) , "%"
print "z=", z , "\t[" , "=" * (80 * z / 256) , " " * (80 - (80 * z / 256)) , "] " , (80 * z / 256) , "%"

time.sleep(0.1)
os.system('clear')

Betöltettem a modulokat:
"i2c-bcm2708, i2c-dev"

Elvileg működik:

pi@raspberrypi ~ $ sudo i2cdetect -l
i2c-0 i2c bcm2708_i2c.0 I2C adapter
i2c-1 i2c bcm2708_i2c.1 I2C adapter

Nem tudom mit ronthatok el. Biztosan valami orbitálisan egyszerű lehet a problémám , de sajnos nem működik.


pi@raspberrypi ~ $ sudo python mma7455.py
Traceback (most recent call last):
File "mma7455.py", line 48, in
MMA7455.setUp()
File "mma7455.py", line 29, in setUp
self.b.write_byte_data(0x1D,0x16,0x55)
IOError: [Errno 5] Input/output error

Nem találok már több leírást vagy információt ezzel kapcsolatban a neten. Ezért gondoltam felteszem ide. Hátha van valakinek ötlete.

Hozzászólások

Talan valami hardware gond lehet.

A Raspbian-t bootoltam, feltettem a python-smbus csomagot, copy/paste a fenti programod (megfelelo behuzasokkal).

Nincs accelerometer board-om, de van egy Aardvark I2C/SPI/GPIO adapterem (http://www.totalphase.com/products/aardvark_i2cspi/), ami tud slave-kent viselkedni. Beallitottam az 0x1d-t cimnek.

Egyreszt megy az i2cdetect (# i2c-detect 0), masreszt a script is elindul, es azt az erteket olvassa, amit beallitok a slave-en. Mivel mukodik, az altalad hasznalt pinout jo (annyira biztam benned, hogy meg sem neztem a kapcsolasi rajzot:-)

Az i2cdetect-et nezted? Hasznos lehet.

/sza2

Szerk: nekem akkor volt 'IOError: [Errno 5] Input/output error' amikor nem volt slave a buszon.

Szerk2: ahogy latom, ez a komoly panel csak kivezeti a hasznalt labakat raszterre (es van rajta egy ~100n kondi). Szerintem celszeru lehet a chip-select labat (CS) fixen tapra kotni (foldre teve SPI modban van az IC, lehet, hogy uresen hagyva esetleg lebeg, ami nem tul jo).

Nem figyeltem egészen oda a dolog ezen részére, de olvasgatás közben belefutottam néhány sorba, ahol annak örült valaki, hogy talált egy kernelt, ami úgy kezeli az I2C-t (a rPi hardverét), hogy az RTC (mert ez volt az) gyári kernelmoduljával módosítás nélkül együttműködik.

Ebből azt szűrtem le, hogy az általánosan használt kernelekben még nem biztos, hogy ez a dolog tökéletesen működik.
Amúgy többen is panaszkodtak erre, de hogy ez milyenféle kernel volt éppen, azt nem tudom.

Megpróbálhatsz ebben az irányban is kutakodni.

Rasbian. Fel lett frissìtve. Viszont raktam rà egy w1-test petch-et. Vagy nem tudom mit ami a kernellel csinàlt valamit. Meg fogom próbàlni egy frissen installàlt rendszerrel minden hukmuk nèlkül. Este hazaérek és kipróbàlgatok pàr dolgot. Köszönöm az eddigi ötletelet mindenkitől.

Feltettem a Rasbiant újra. Upgrade a legfrissebbre.
És az volt a megoldás amit írtál a "CS" lábát tápra kelet kötni.
Most már működik faintossan :) Köszönöm szépen :)