ただ建築が好きな走るエンジニア、

日系某メーカーを辞めて外資系に転職。資格、建築デザイン、転職と来て今はひたすらす走ってます。2019別大2:49:13。

ランニングデータロガーの作り方 その二

2020-04-10 22:01:53 | 日記

昨日はハードウェア編でした。

って単にパイゼロと加速度センサを

つないでチョコベイビーに入れた

だけですけど。

 

加速度のログを取る

プログラムは 下記になります。

上手く貼り付けられるかな。

 

6050.py


# -*- coding: utf-8 -*-
#!/usr/bin/python

# import module
import csv
import smbus
import math
from time import sleep
from datetime import datetime

# slave_add
DEV_ADDR = 0x68
# register_add
ACCEL_XOUT = 0x3b
ACCEL_YOUT = 0x3d
ACCEL_ZOUT = 0x3f
TEMP_OUT = 0x41
GYRO_XOUT = 0x43
GYRO_YOUT = 0x45
GYRO_ZOUT = 0x47
PWR_MGMT_1 = 0x6b
PWR_MGMT_2 = 0x6c
AFS_SEL_ADD = 0x1c
AFS_SEL_SET = 0x10 # 0x18:16g, 0x10:8g, 0x08 4g, 0x00 2g
ACCEL_DIV = 4096.0 # 16g:2048.0, 8g:4096.0, 4g:8192.0, 2g:16384.0

bus = smbus.SMBus(1)
# Unlock Sleep
bus.write_byte_data(DEV_ADDR, PWR_MGMT_1, 0)

def read_byte(adr):
    return bus.read_byte_data(DEV_ADDR, adr)

def write_byte(adr, param):
    bus.write_byte_data(DEV_ADDR, adr, param)

def read_word(adr):
    high = bus.read_byte_data(DEV_ADDR, adr)
    low = bus.read_byte_data(DEV_ADDR, adr+1)
    val = (high << 8) + low
    return val

def read_word_sensor(adr):
    val = read_word(adr)
    if (val >= 0x8000):
        return -((65535 - val) + 1)
    else:
        return val

def get_accel_data_lsb():
    x = read_word_sensor(ACCEL_XOUT)
    y = read_word_sensor(ACCEL_YOUT)
    z = read_word_sensor(ACCEL_ZOUT)
    return [x, y, z]

def get_accel_data_g():
    x,y,z = get_accel_data_lsb()
    x = x / ACCEL_DIV
    y = y / ACCEL_DIV
    z = z / ACCEL_DIV
    return [x, y, z]

# Main function
write_byte(AFS_SEL_ADD, AFS_SEL_SET)
while 1:
    d = datetime.now()
    datetext = '{0}:{1:02}:{2:02}.{3:06}'.format(d.hour, d.minute, d.second, d.microsecond)
    accel_x,accel_y,accel_z = get_accel_data_g()
    print 'acl[g]',
    print 'x: %06.3f' % accel_x,
    print 'y: %06.3f' % accel_y,
    print 'z: %06.3f' % accel_z,
    print

    with open('data.csv', 'a') as f:
        writer = csv.writer(f, lineterminator='\n')
        writer.writerow([datetext, '%06.3f' % accel_x, '%06.3f' % accel_y, '%06.3f' % accel_z])
    f.close()

    sleep(0.0036)


 

たったこれだけです。

 

ハイライトしていないソースは見にくい。

Gooブログで上手くハイライトさせる方法を

知っていたら誰か教えて欲しいです。

 

 

 

Comment

ランニングデータロガーの作り方 その一

2020-04-10 00:45:00 | 電気


今日はチョコベイビー、じゃなくて
ラズパイ&加速度センサの作り方の
忘備録です。




ラズパイゼロWiFi付き、
サイエンススイッチで買いました。
私が購入したときは、
品薄でお一人様一個でした。
流石に古いラズパイだと
ランパンのポケットは苦しい。


加速度センサはAmazon。
こういう部品が簡単に買える
世の中になったんですね。
昔は毎週秋葉原に行ってたのに。


加速度センサがチョコベイビーの蓋に
すっぽりハマったのがケースの決め手
でした。手間いらず。


ラズパイ側は高さがネックで
コネクタは諦めてはんだ付けしました。
接続はこんな感じ。
ちょっと微妙なはんだ付けですが。


そして電源用USBの所だけ
穴を開けて完成です。

あとは適当なモバイルバッテリーに
繋ぐだけ。

明日はPythonのコード紹介します。







Comment