ホーム > BeagleBone, Physical Computing > BeagleBone Black のハードウェアハック(6)Hacking BeagleBone Black, part 6

BeagleBone Black のハードウェアハック(6)Hacking BeagleBone Black, part 6

2014 年 1 月 23 日

BeagleBone Blackのセンサ表示のコードをまとめる。

これまで作ってきたコードを組み合わせて、BeagleBone Blackに取り付けたLCDに時刻と温度、照度を表示するプログラムを作成しました。

LCD on BBB

LCD on BBB

工夫した点は次の通りです。

(1) AD変換のために使ったAdafruitのライブラリはpythonで書かれています。シェルスクリプトから制御しようとした場合、毎回pythonのスクリプトを呼び出すことになります。 このため、AD変換の機能もシェルスクリプトで記述しました。

(2) (1)に伴い、capeの初期化もシェルスクリプトに入れました。

(3) タイミングに依ってAD変換が失敗することがあったので、リトライするようにしました。

完成したコードは次の通りです。(/usr/local/bin/i2c-time-and-temp.sh)

#!/bin/bash

unset TERM

i2cset=/usr/local/sbin/i2cset
bus=1
chip=0x3e
LANG=C

#initialize cape
if ! grep -q cape-bone-iio /sys/devices/bone_capemgr.9/slots ; then
    echo cape-bone-iio > /sys/devices/bone_capemgr.9/slots ;
    sleep 1;
fi

porttmp=`find /sys -name \*AIN1\* -print`
portcds=`find /sys -name \*AIN3\* -print`

# initialize LCD display
$i2cset -y $bus $chip 0 0x38 0x39 0x14 0x7f 0x5f 0x6c i
sleep 0.5
$i2cset -y $bus $chip 0 0x38 0x0d 0x01 i
sleep 0.5

while true ; do
    msg1=`date +"%X" | perl -pe '$_=join" ",map{ord }split//'`

    while true ; do
	temp=`cat $porttmp 2>&1 /dev/null `
	if [ $? -eq 0 ]; then break; fi
    done

    while true ; do
	light=`cat $portcds 2>&1 /dev/null`
	if [ $? -eq 0 ]; then break; fi
    done

    ttmp=`echo "( $temp.0 - 500.0) * 0.1" | bc`
    light1=`echo " $light / 18" | bc`
    msg2=`echo $ttmp $light1\% | perl -pe '$_=join" ",map{ord }split//'`
    # echo $msg2
    $i2cset -y $bus $chip 0 0x01
    $i2cset -y $bus $chip 0x40 $msg1 i
    $i2cset -y $bus $chip 0 0xc0 i
    $i2cset -y $bus $chip 0x40 $msg2 i
    sleep 1
done

起動時にこのスクリプトをバックグラウンドで動かすようにします。

/lib/systemd/system/lcd.serviceの設定


[Unit]
Description=LCD Display

[Service]
Type=simple
ExecStart=/usr/local/bin/i2c-time-and-temp.sh

[Install]
WantedBy=multi-user.target

サービスの登録

 # ln -s /lib/systemd/system/lcd.service /etc/systemd/system
 # systemctl daemon-reload
 # systemctl start lcd.service
 # systemctl enable lcd.service

カテゴリー: BeagleBone, Physical Computing タグ:
コメントは受け付けていません。