タグ別アーカイブ: Linux

linux関連

マルチメータアプリ(仮称)にアイコンつけてみた!

メータ表示数が増えてきたので、アイコンをちゃんと作ってつけてみた!

Before / After

 

上から、

  • 車載PC(この画面を表示しているPC)への入力電圧 (自作電圧計回路より)
  • 後部席の温度 (bme280より)
  • 後部席の湿度 (bme280より)
  • 気圧 (bme280より)
  • 標高 (GPS-M1ZZより)
  • ラジエータの水温 (Camp-Junction-Boxより 自作回路経由)

以上!

mz20mon-tinker その5

usb0周りをチューニング。

  • rndisなドライバーなため、デバイス認識の度にMACアドレスが変わってしまう。
  • udevで無理やりmacアドレスを変更することも可能だけど、あまり意味がなさそう。。結局は認識直後はランダムなMACアドレスになるので。。
  • というわけで、IPを手動で固定割り当てに変更。
  • 通常時のLTE⇔Wifi切り替え時は、usbパワーオフはせず、ifdownのみで行うことに。
    • LTE運用中の夜中のRefresh処理時は、usbパワーoff/onする!
  • それに伴い、scriptの整備!

あと、禁断の。。。(w

diff --git a/drivers/usb/dwc2/hcd_intr.c b/drivers/usb/dwc2/hcd_intr.c
index bda0b21b850f..ae006c0cd705 100644
--- a/drivers/usb/dwc2/hcd_intr.c
+++ b/drivers/usb/dwc2/hcd_intr.c
@@ -461,7 +461,7 @@ static int dwc2_update_urb_state(struct dwc2_hsotg *hsotg,
                                                      &short_read);

        if (urb->actual_length + xfer_length > urb->length) {
-               dev_warn(hsotg->dev, "%s(): trimming xfer length\n", __func__);
+               // dev_warn(hsotg->dev, "%s(): trimming xfer length\n", __func__);
                xfer_length = urb->length - urb->actual_length;
        }

@@ -1165,7 +1165,7 @@ static void dwc2_update_urb_state_abn(struct dwc2_hsotg *hsotg,
        u32 hctsiz;

        if (urb->actual_length + xfer_length > urb->length) {
-               dev_warn(hsotg->dev, "%s(): trimming xfer length\n", __func__);
+               // dev_warn(hsotg->dev, "%s(): trimming xfer length\n", __func__);
                xfer_length = urb->length - urb->actual_length;
        }

@@ -1897,6 +1897,7 @@ static void dwc2_hc_chhltd_intr_dma(struct dwc2_hsotg *hsotg,
                                dwc2_halt_channel(hsotg, chan, qtd,
                                        DWC2_HC_XFER_PERIODIC_INCOMPLETE);
                        } else {
+                               #if 0
                                dev_err(hsotg->dev,
                                        "%s: Channel %d - ChHltd set, but reason is unknown\n",
                                        __func__, chnum);
@@ -1904,6 +1905,7 @@ static void dwc2_hc_chhltd_intr_dma(struct dwc2_hsotg *hsotg,
                                        "hcint 0x%08x, intsts 0x%08x\n",
                                        chan->hcint,
                                        dwc2_readl(hsotg->regs + GINTSTS));
+                               #endif
                                goto error;
                        }
                }

続く~

mz20monリプレース〜の大黒 (9/2)

mz20mon-tinkerの準備がだいたい整ったので、車載のmz20monとリプレースを決行

まずは、中身入れ替え!

で、ケース閉じたとこ!

中身(OSとか)の調整してたら朝になっちゃった。

ちょろっと落ちたのち、大黒へ行こうかなと思った時。。

mz20mon-tinkerに繋がらない。。。

うーむ。オンボードのwifi接続が切れてるね。。。

iwlist scanしても、ap見つからないし。

dmesgすると。。

[ 9148.266217] ————[ cut here ]————
[ 9148.266383] WARNING: CPU: 2 PID: 575 at drivers/net/wireless/rockchip_wlan/rtl8723bs/core/rtw_mlme.c:2484 rtw_sta_mstatus_report+0x58/0x5c [8723bs]()
[ 9148.266395] Modules linked in: rtl8812au xt_conntrack 8723bs rtc_ds1307 [last unloaded: rtl8812au]
[ 9148.266432] CPU: 2 PID: 575 Comm: ifconfig Not tainted 4.4.103+ #1
[ 9148.266441] Hardware name: Rockchip (Device Tree)
[ 9148.266475] [<c010fe68>] (unwind_backtrace) from [<c010bae4>] (show_stack+0x20/0x24)
[ 9148.266498] [<c010bae4>] (show_stack) from [<c050b28c>] (dump_stack+0x84/0xa0)
[ 9148.266519] [<c050b28c>] (dump_stack) from [<c011df54>] (warn_slowpath_common+0x98/0xc4)
[ 9148.266537] [<c011df54>] (warn_slowpath_common) from [<c011e03c>] (warn_slowpath_null+0x2c/0x34)
[ 9148.266691] [<c011e03c>] (warn_slowpath_null) from [<bf01e4a0>] (rtw_sta_mstatus_report+0x58/0x5c [8723bs])
[ 9148.267012] [<bf01e4a0>] (rtw_sta_mstatus_report [8723bs]) from [<bf066040>] (cfg80211_rtw_disconnect+0x64/0xac [8723bs])
[ 9148.267200] [<bf066040>] (cfg80211_rtw_disconnect [8723bs]) from [<c0b6201c>] (cfg80211_disconnect+0x144/0x210)
[ 9148.267223] [<c0b6201c>] (cfg80211_disconnect) from [<c0b37f2c>] (__cfg80211_leave+0xe8/0x128)
[ 9148.267243] [<c0b37f2c>] (__cfg80211_leave) from [<c0b37fa0>] (cfg80211_leave+0x34/0x40)
[ 9148.267261] [<c0b37fa0>] (cfg80211_leave) from [<c0b38178>] (cfg80211_netdev_notifier_call+0x1cc/0x59c)
[ 9148.267280] [<c0b38178>] (cfg80211_netdev_notifier_call) from [<c013bd44>] (notifier_call_chain+0x50/0x78)
[ 9148.267298] [<c013bd44>] (notifier_call_chain) from [<c013bea4>] (raw_notifier_call_chain+0x28/0x30)
[ 9148.267319] [<c013bea4>] (raw_notifier_call_chain) from [<c0941210>] (call_netdevice_notifiers_info+0x54/0x64)
[ 9148.267340] [<c0941210>] (call_netdevice_notifiers_info) from [<c0941240>] (call_netdevice_notifiers+0x20/0x28)
[ 9148.267359] [<c0941240>] (call_netdevice_notifiers) from [<c0941358>] (__dev_close_many+0x5c/0xcc)
[ 9148.267376] [<c0941358>] (__dev_close_many) from [<c09414e8>] (__dev_close+0x38/0x50)
[ 9148.267395] [<c09414e8>] (__dev_close) from [<c09494e0>] (__dev_change_flags+0x9c/0x140)
[ 9148.267412] [<c09494e0>] (__dev_change_flags) from [<c09495ac>] (dev_change_flags+0x28/0x58)
[ 9148.267431] [<c09495ac>] (dev_change_flags) from [<c0a206b0>] (devinet_ioctl+0x300/0x674)
[ 9148.267448] [<c0a206b0>] (devinet_ioctl) from [<c0a22124>] (inet_ioctl+0xd0/0x100)
[ 9148.267467] [<c0a22124>] (inet_ioctl) from [<c092b4e8>] (sock_ioctl+0x270/0x2c0)
[ 9148.267489] [<c092b4e8>] (sock_ioctl) from [<c0245414>] (do_vfs_ioctl+0x5b0/0x690)
[ 9148.267507] [<c0245414>] (do_vfs_ioctl) from [<c0245550>] (SyS_ioctl+0x5c/0x84)
[ 9148.267525] [<c0245550>] (SyS_ioctl) from [<c01072c0>] (ret_fast_syscall+0x0/0x3c)
[ 9148.267536] —[ end trace ff38b8ef69aa49ad ]—

こんなん出てますた。。

まぁ、WiFiドライバのbugっすね。。

つーわけで、オンボードは諦めて、USBドングルで行くことに。ヨドバシの店頭受取で注文して、とりあえず、大黒へ!

大黒は、6+2台くらいですた。

帰りに、ヨドバシakibaに寄って、USB WiFiアダプタと、WiFiルータ買ってきますた。

家に帰って、早速ごにょごにょしてたけど。。。

なかなかうまく行かないねー。

USB WiFiアダプタを、root hub直下に挿すと、

[ 5432.223706] dwc2 ff540000.usb: dwc2_hc_chhltd_intr_dma: Channel 12 – ChHltd set, but reason is unknown
[ 5432.232170] dwc2 ff540000.usb: hcint 0x00000002, intsts 0x06600029
[ 5432.510764] dwc2 ff540000.usb: dwc2_hc_chhltd_intr_dma: Channel 3 – ChHltd set, but reason is unknown
[ 5432.519223] dwc2 ff540000.usb: hcint 0x00000002, intsts 0x06600009
[ 5432.665691] dwc2 ff540000.usb: dwc2_hc_chhltd_intr_dma: Channel 13 – ChHltd set, but reason is unknown
[ 5432.674145] dwc2 ff540000.usb: hcint 0x00000002, intsts 0x04600009
[ 5432.682477] dwc2 ff540000.usb: dwc2_update_urb_state_abn(): trimming xfer length
[ 5432.744629] dwc2 ff540000.usb: dwc2_update_urb_state(): trimming xfer length
[ 5433.086668] dwc2 ff540000.usb: dwc2_hc_chhltd_intr_dma: Channel 2 – ChHltd set, but reason is unknown
[ 5433.095126] dwc2 ff540000.usb: hcint 0x00000002, intsts 0x04600009
[ 5433.534718] dwc2 ff540000.usb: dwc2_hc_chhltd_intr_dma: Channel 14 – ChHltd set, but reason is unknown
[ 5433.543179] dwc2 ff540000.usb: hcint 0x00000002, intsts 0x04600009
[ 5435.723651] dwc2 ff540000.usb: dwc2_hc_chhltd_intr_dma: Channel 2 – ChHltd set, but reason is unknown
[ 5435.732111] dwc2 ff540000.usb: hcint 0x00000002, intsts 0x06600029
[ 5436.110721] dwc2 ff540000.usb: dwc2_hc_chhltd_intr_dma: Channel 3 – ChHltd set, but reason is unknown
[ 5436.119424] dwc2 ff540000.usb: hcint 0x00000002, intsts 0x04600009
[ 5436.444688] dwc2 ff540000.usb: dwc2_hc_chhltd_intr_dma: Channel 12 – ChHltd set, but reason is unknown
[ 5436.453149] dwc2 ff540000.usb: hcint 0x00000002, intsts 0x04600009
[ 5436.461483] dwc2 ff540000.usb: dwc2_update_urb_state_abn(): trimming xfer length
[ 5436.478706] dwc2 ff540000.usb: dwc2_hc_chhltd_intr_dma: Channel 7 – ChHltd set, but reason is unknown
[ 5436.487140] dwc2 ff540000.usb: hcint 0x00000002, intsts 0x06600029
[ 5436.495471] dwc2 ff540000.usb: dwc2_update_urb_state_abn(): trimming xfer length
[ 5437.166692] dwc2 ff540000.usb: dwc2_hc_chhltd_intr_dma: Channel 6 – ChHltd set, but reason is unknown
[ 5437.175138] dwc2 ff540000.usb: hcint 0x00000002, intsts 0x04600009
[ 5437.183474] dwc2 ff540000.usb: dwc2_update_urb_state_abn(): trimming xfer length
[ 5437.255693] dwc2 ff540000.usb: dwc2_hc_chhltd_intr_dma: Channel 12 – ChHltd set, but reason is unknown
[ 5437.264166] dwc2 ff540000.usb: hcint 0x00000002, intsts 0x04600009
[ 5437.272520] dwc2 ff540000.usb: dwc2_update_urb_state_abn(): trimming xfer length
[ 5438.604662] dwc2 ff540000.usb: dwc2_hc_chhltd_intr_dma: Channel 0 – ChHltd set, but reason is unknown
[ 5438.613139] dwc2 ff540000.usb: hcint 0x00000002, intsts 0x04600009
[ 5438.621496] dwc2 ff540000.usb: dwc2_update_urb_state_abn(): trimming xfer length
[ 5438.790725] dwc2 ff540000.usb: dwc2_hc_chhltd_intr_dma: Channel 11 – ChHltd set, but reason is unknown
[ 5438.799202] dwc2 ff540000.usb: hcint 0x00000002, intsts 0x04600009
[ 5438.807564] dwc2 ff540000.usb: dwc2_update_urb_state_abn(): trimming xfer length
[ 5441.495612] dwc2 ff540000.usb: dwc2_update_urb_state(): trimming xfer length

なエラーが出まくります。。。

試行錯誤の末、USB-Hubかましたら無事解決w

USB-OTGドライバのbugかなー。。^^;

しばらくコレで様子を見ます

続く〜

Orange Pi Plus2 (その2)

いろいろ設定。

boot時のオプションなど。

/boot/script.binの変更 (fedora24の場合)

  • # dnf install sunxi-tools
    # ln -s /usr/bin/sunxi-fexc /usr/local/bin/bin2fex
  • # cd /boot
    # bin2fex script.bin > HOGEHOGE.fex
    # vi HOGEHOGE.fex
    # fex2bin HOGEHOGE.fex script.bin
  • # reboot

CPU Clockの上限を1.54GHzへ。

  • fexファイル修正 (変更箇所のみ)
    cooler0 = "1536000 4 4294967295 0"
    extremity_freq = 1536000000
    max_freq = 1536000000
    LV1_freq = 1536000000
    LV1_volt = 1500
    
  • fex2binで更新し、reboot

不要なドライバーをblacklist化

  • # vi /etc/modprobe.d/opp-blacklist.conf
    blacklist pcf8591
    blacklist bmp085
    blacklist 8189es
    • pcf8691,bmp085はオンボードなi2cデバイスらしいけどいらないので。
    • 8189esはオンボードwifi、こちらも、技適通ってないし、いらないや。

wiringOPビルド

  • # git clone https://github.com/zhaolei/WiringOP.git -b h3
    # cd WiringOP
    # sh ./build

RTC追加

  • Orange Pi Plus2は、オンボードでrtcチップ載っていますが、バックアップバッテリーとクリスタル(32.768kHz)が載ってなく事実上使い物にならないので、i2cなrtcを追加することに。
  • 今回は、ds3231というチップのrtcに。
  • 適当にスクリプト作成
    # cat /opt/bin/set-clock.sh
    #!/bin/bash
    echo ds3231 0x68 > /sys/class/i2c-adapter/i2c-0/new_device 2>/dev/null
    sleep 1
    /usr/sbin/hwclock -f /dev/rtc1 -s
    # chmod 750 /opt/bin/set-clock.sh
  • サービス登録のファイル作成
    # cat /etc/systemd/system/rtc.service 
    [Unit]
    Description=set clock from rtc
    #Before=dbus.service
    Before=chronyd.service
    
    [Service]
    Type=oneshot
    ExecStart=/opt/bin/set-clock.sh
    RemainAfterExit=yes
    
    [Install]
    WantedBy=multi-user.target
  • サービス登録
    • # systemctl enable rtc.service

mz20mon 電源逝ったョ >< (その2)

電源届いたので修理開始。

で、修理中、いろいろ確認したところ、以前作製した、LTEモデム用USB電源コントロールの♀コネクタ線のハンダがとれて中でぷらーんとしてました。

電源壊れた原因はコイツだ!!

5Vラインと、データ(-)が取れてました。おそらく、5Vとデータ(-)がショートして、過電流により電源終了。。かと。^^;

ちゃんと半田付けしなおして、しっかり固定しました。これで、もう、大丈夫かなと。

↑モデムも死んでなかったです。^^

そんなこんなで、修理は無事完了。

そして、車載完了。

オフ会モード(その6)

オフ会モード検知のmz20mon側を整備!

GPIOのinputモードがうまく動作しなく悩んでいたのが解決方法がわかったので本番作業。

GPIO26番に、オフ会モード入力ピンを接続(オフ会モード時にGNDに落ちる線)

↓回路図(再掲)

内部プルアップし、値を読み込みたかったのですが、内部プルアップができなかった。

wiringPIのgpioコマンドで

# gpio mode 26 in
# gpio mode 26 up

とやっても、うまくいかなかった。

実は、オプションに、-gをつける必要がありました。
# -gは、BCM_GPIOピン番号でした。-gなしは、wiringPIのGPIO番号らしく、gpio readallで対応はわかるそうで。
# ちなみに、pull-up/downの設定以外は、shellから/sys/class/gpio/〜の操作でいけます。

# gpio -g mode 26 in
# gpio -g mode 26 up

でうまくいきました〜

初期化シェルは、こんな↓感じ。

#!/bin/bash

## for INPUT
gpios='18 24 25 26 19 13 23'

for arg in $gpios ; do
 echo $arg > /sys/class/gpio/export
 echo 0 > "/sys/class/gpio/gpio${arg}/active_low"
 /usr/local/bin/gpio -g mode ${arg} in
 /usr/local/bin/gpio -g mode ${arg} up
done

## for OUTPUT
gpios='16 20 21 12'

for arg in $gpios ; do
 echo $arg > /sys/class/gpio/export
 echo out > "/sys/class/gpio/gpio${arg}/direction"
 echo 0 > "/sys/class/gpio/gpio${arg}/value"
done

というわけで、chkプログラムの動作確認。

ちゃんとGPIO26の値取得できました。

作業終了〜

以上!

mz20monリニューアルしたョ (その2)

西川電子部品で、コネクタゲットしてきた!

2,3,4,5ピンのオスメス各2セット

でもって、トランクセンサー用配線に、この4pinなやつでコネクタ作製。

CAMP Junction-BOXの配線は、3.5mmジャックのミニプラグにした。

↓で、その先のUSB-Serialと接続してインプリしたョ。

# Raspberry Pi2 の RJ45左隣上側のUSBポートへ。

↑通電してる様子(w

続く〜

mz20monリニューアルしたョ

mz20monをトランクのラック内に移動するため、平たいスリムなケースに入れ替えました。

  • 旧ケース:タカチ MB-6
    • 140x75x200 (mm)
  • 新ケース:タカチ YM-200
    • 200x40x150 (mm)

まずは、ケース加工して、詰め込むヨ!

  • 穴開け
    • 背面:17Φ*2、6Φ*4、8Φ*1
    • 全面:8Φ*1

継ぎ接ぎだらけだったのでハーネス回りもリフレッシュ!

左側にRaspberry Pi2本体とその下にSSDをマウント。
その右側の黒い箱は、USB電源コントロールBOX。
右手前部分には、電源レギュレーター(12V→5V)部。
後は、i2cなセンサーとか、USBケーブルとか、ごにょごにょっと。。。^^;

 

フロントには、パイロットLEDを付けました。

背面は、、

左から、

  • LTEモデム用 USBポート
  • トランク内センサー(温度、湿度、気圧)
  • CAMP Junction-BOXからの入力
  • オルタネータ V/A入力
  • GPSレシーバ
  • eth0 RJ45ポート
  • 電源

です。

大きさはこんな感じ。

だいぶ薄くなりました!

参考までに、Before↓

↓新旧比較

左:新、右:旧ケース(抜け殻)

HKS CAMP JUNCTION BOXを改造するョ (その2)

PICのTXとレギュレータのOutとGNDから線を引き出したヨ

そんでもって、とりあえず、USB-シリアルのTTL側のRxとGndにぶっこんでLinuxマシンに繋いでみたヨ

CAMP本体とも繋いで電源On!

↓おお。ちゃんとデータ取れた!

CAMP側もジャンクションボックスは認識できてるぽい。

データ流れとか

CAMP本体とジャンクションボックスがつながっている状態で電源入れると。

  1. CAMP本体→ジャンクションボックス 1byte送出 0x88
  2. ジャンクションボックス→CAMP本体 1byte送出 0x99
  3. この後は、ジャンクションボックスから一方的にデータ垂れ流し。

※通信速度は9600bpsでした。

データ形式

4byte 1セットのデータ

  • 1byte目:CH番号
    • 0x80: CH1(Temp-H)
      0x81: CH2(Temp-L)
      0x82: CH3(PRESS/THERMO,VOLT,G,RATIO 0-5V,RATIO 0-1V)
      0x83: CH4(PRESS/THERMO,VOLT,G,RATIO 0-5V,RATIO 0-1V)
  • 2byte目:プラス・マイナス
    • 0x50: + (Ascii Codeで ‘P’)
      0x4d: ー (Ascii Codeで ‘M’)
  • 3byte目:データ上位5bit
  • 4byte目:データ下位7bit

データの内容 (値:3byte目*128+4byte目で計算できます)

  • Temp-H
    • 0〜1000  (マイナスはなし)
    • 絶対値=℃
  • Temp-L
    • -20.0〜+180.0
    • データは上記の10倍の値。
    • 例)
      • -20.0℃ = 2byte目が0x4dで、データは:200
      • +105.2℃ = 2byte目が0x50で、データ:1052
  • PRESS
    • -700 (mmHg)〜+2.00kgf/cm2
    • マイナス時は、絶対値=−データmmHg
    • プラス時は、データは100倍の値で、kgf/cm2
    • データ255はセンサーなしかと。
    • 例)
      • -700mmHg = 2byte目が0x4dで、データ:700
      • +1.25kgf/cm2 = 2byte目が0x50で、データ:125
  • VOLT
    • 0〜5.0V
    • データは上記の10培の値
      • 0.2V = 2byte目が0x50で、データ:2
      • 4.8V = 2byte目が0x50で、データ:48
  • G
    • -1.5〜+1.5
    • データは上記の10培の値

そんな感じで、可視化してみた。

↓可視化前(生データ)

続く〜

NaO10号 車載情報システムメンテ

舞々木でメンテ!

今回のメニュー

  • オフ会モード仕様追加
    • 3rdバッテリー充電のOn/Offスイッチ追加
  • ステアリングパッド情報システムのメインスイッチLED制御まわりスクリプト整備
  • 車載PC8号機メンテ
    • ラベル張替え(w
    • kernelビルド&更新
      • 4.8.15→4.10.17
    • パッケージ更新
  • スマフォリモコン環境構築
    • サーバ側:mz20h77
    • アプリ側:jojoagogogo氏のWebリモコン利用

オフ会モード仕様追加

今回、メインバッテリーに安定化電源繋いで充電しながらエンジンオフのまま作業した。

オフ会モードで作業しようとしたが、2nd/3rdバッテリーの充電もしたかったので、オフ会モード時でも、2nd/3rdバッテリー充電はOnのままにできるようスイッチを追加した。

ステアリングパッド関連メンテ(mz20rpi0)

ステアリングパッドのは、下記の仕様で。

  1. 電源通電(IGN 12V & メインスイッチもON) *LED点灯
  2. 5sec-Wait
  3. Raspberry Pi Zero電源ON *LED消灯
  4. OS起動(Raspberry Pi Zero / Pidora)
  5. LCD初期化
  6. ネットワーク関連起動
  7. mz20h77と疎通ができたら、LED点灯させ、情報システムアプリ起動

車載PC8号関連メンテ(mz20h77-new)

ラベルの張替え

MZ20-H81I → MZ20-H77-new

いろいろやってて、2016/1/16に、M/BをASUS P8H77-I に戻したので。。

※PCの側面についてるロッカスイッチは、オフ会モード時の2nd/3rdバッテリーアイソレーターのOn/Offスイッチ。

Kernelビルド&更新

車載PC8号機は、HDMIスプリッター経由で助手席モニタにも画面を出してるのですが、HDMI入力を別ソースにしたあと戻したら画像が乱れる(パレットぐちゃぐちゃ)ようになってたのでなんとかしようと。

yum updateで、xorg最新にしても症状変わらず。

いつからおかしくなってたかはわからないけど、HDMIスプリッター入れた当初はうまくいってたので、もしかしたら、kernelか!?ということで、kernelを更に最新に。

とりあえず、f24の最新カーネル(4.10.17)を、PC8号でビルド。

そんでもって、grub.conf更新して、再起動。

結果OK!!直りました。kernel 4.8.15で デグレってただけかも。(w

パッケージ更新

ついでにパッケージも全部最新へ(Cent6.9)

スマフォリモコン環境構築

アプリ側にはjojoagogogo氏作のWebリモコンを利用。その受け口のサーバサイドはmz20h77+自宅サーバを利用

サーバ側

  • ミュージックサーバーリモコン用html作製
  • Webリモコンからのコマンド受付用スクリプト作製
    • 曲の選択
    • Pause/Play
    • ボリューム制御
    • とか

クライアの側

  • Webリモコン設定

あとは、mz20h77,mz20rpi0,mz20rpi2,mz20rpi3等、基本、Linux作業〜

[IoT]mz20mon

車載Raspberry Piシリーズ4台目を投入したので、ちょこっと説明。

  • 1台目: Raspberry Pi2
    エアコンパネル専用 (IGN-ON時のみ稼働)
  • 2台目:Raspberry Pi Zero
    ステアリングモニタ専用 (IGN-ON時のみ稼働)
  • 3台目:Raspberry Pi3
    LEDマトリックスパネル制御専用 (IGN-ON時のみ稼働、たまに、手動で稼働)
  • 4台目:Raspberry Pi2 ※今回はこの話
    多目的管理サーバ (常時稼働)

ざっくり構成

上記は、4台目のRpi2に接続している簡易構成図。

電源関連

  • 本システム専用にDeepCycleBattery 12V/50Ahを用意 → ブログ参照
  • 充電は走行中(IGN-ON)時に、走行充電器にて
  • Rpi2/関連システムには、12V→5Vレギュレータより供給

OS

  • Fedora24 for ARMv7
  • メインストレージは、16GB microSD
  • 追加ストレージに、64GB SSD(USB接続)

ネットワーク

  • インターネット接続
    Pixela社のLTE USBドングル PIX-MT100 に、OCNモバイルOneのSIMをさして通信
  • VPN
    tachibanaに、VPN接続
  • LAN
    オンボードEthernetにて、既存車内LANと接続

機能仕様等

  • dhcpサーバ
  • ntpサーバ
  • DNSリゾルバー(cache)
  • NAT Router機能
  • mysql(MariaDB)
  • 各種ロガー
    • Location
    • 温度・湿度・気圧
    • 電圧・電流
    • SPD、Rev、INJ、加吸圧、水温、その他(todo)

監視

  • tachibanaより、VPN経由で監視
  • 監視agentは、zabbix-agent

    ↑サンプル

センサーとか

  • 電流・電圧センサー1  (INA226iso)
    本システムの消費電力(12Vライン側)を計測
    zabbixモニタリング
    mysqlへロギング
  • 電流・電圧センサー2 (INA226iso-100)
    オルタネータハイサイド電流・電圧計測
    zabbixモニタリング
    mysqlへロギング
    ※まだ、シャント抵抗仮設置しただけ。
  • 温度・湿度・気圧センサー (BME280)
    トランク内の温度・湿度・気圧を計測
    zabbixモニタリング
    mysqlへロギング
  • GPSセンサー (GPS受信キット)
    現在地記録
    mysqlへロギング
    MQTT通知

他の構成は、システム詳細を参照。

続く。

忘年会&24h運用 車載Raspberry Pi2の検証(その3)

12/23(金)

車載24時間運用のためのRpi2を構築してたら、SSDが逝きました。。

写真の黒いやつ。

おそらく、SATA-USB変換があまりよろしくなかったかと。。。

SSD取り出して、別のUSB変換やSATA直でも、認識しなくなりました。。

ということで、とりあえず、怪しげな60GB-SSDをぽちって、作業終了。

続きは、鶴見の忘年会の後で、、

一路、尻手へ。尻手駅で、TOMさんをピックアップし、鶴見のKoni邸到着!

渋谷組忘年会(w

宴のあとは、TOMさんを送りに相模原へ!

厚木倉庫で、荷物整理後、ドンキ経由で、富士宮入り。

12/24(土)

車載Rpi2工作開始。

一旦仮眠後、作業続行

一通り完成!

さっそく車載!

完成の図

右側(下)バッテリー 12V50Ah、その上がRpi2-Box(12V→5Vレギュレータ、Rpi2、SSD、SATA→USBケーブルなど)

真ん中(下)くらいに、追加のアイソレータ。

↓テンポラリの電流計

続く。。

24h運用 車載Raspberry Pi2の検証

10号に、24h運用のRpi2を車載すべく、実験開始。

仕様

  • メイン電源:12V50Ahの鉛電池(Long)
  • 12V→5Vレギュレーター(USBメス*2)
  • アイソレーター(New Era SBC-001B)で走行中のみ充電
  • PIX-MT100にてインターネット接続

バッテリーをフル充電にしてから、充電をオフにし、バッテリーのみで稼働テスト。

いまのところ、4日間以上動き続けている。

さすが、50Ah

続く。

ガレNaO@富士宮(2016/10/29~10/30)

久々の富士宮。

p_20161029_040053_vhdr_on

今回は、サーバーメンテナンスがメイン。。

p_20161029_083635_vhdr_on

WDのGreen 2TB1本が逝ったので、WD Red 2TBへリプレース。

ついでに、ホストOSも、Cent6.8→Fedora24へ。

↓GuestOSをリストア。(Cent6.8,Fedora14,Fedora17,Cent6.6等)

p_20161029_184006_vhdr_onp_20161029_083708_vhdr_on

だいたい終わったので、近所のコンビニへ。

↓途中にある川(w

p_20161030_115347_vhdr_onp_20161030_115259_vhdr_on

日曜(10/30)のお昼過ぎ、富士宮を後に。

↓愛鷹PAで休憩(w

p_20161030_135638_vhdr_onp_20161030_135631_vhdr_on

以上!

 

NaO10号 情報機器相関図 2016/10/5

相関図

nao10_20161006_chart


前回からの変更点

  • Sounder/Sounder Controller追加 (9/25)
  • Camera Selector追加 (10/3)

回路図

ステアリングパッド内

  • Raspberry Pi Zero+3.5インチTFT+電源制御回路+ホーン制御回路
    MZ20_RpiZero
    Src 電源制御:PIC-ASM、Horn制御:C+Shell(@Fedora)
  • Pad-TX(2015/6)
    NaO8_pad_ctl_tx_3
    Src PIC-ASM

 

エアコン関連

  • aircon状態解析
    AirConLedState

 

グローブボックス内

  • Pad-RX(2005/4)
    NaO8_pad_ctl_rx_20050425
  • ODO-Counter(Teensy 3.x Ver. 2015/12/7)
    ODO_COUNTER_V5
  • GPS-Clock Ver.3(2015/3/31)
    GPS_CLOCK_V3
  • GPS-Clock Ver.4(2015/12/20)
    GPS_CLOCK_V4_Teensy32
  • Camera Selector (2016/10/3)

    monicam_ctl

トランク内

  • Steering Switch Controller for Strada
    stssw_for_mz20_strada_2
  • VTHP Sensor (電圧,温度,湿度,気圧センサー)
    V_TEMP_Meter01a

運転席座席下

  • Sounder/Sounder Controller Version 0.3 (2016/9/25)
    3ch_sounder_v03

操作音用のサウンダーを作るの巻 (完)

金曜の夜中(~土曜の早朝)に、新倉でちょいと作業。

p_20160930_235909_vhdr_on

サウンダーの、MicroSDの入れ替えと、ステアリングパッド側アプリのデプロイ&debug

そのあと、ルームモニター整備&フロントカメラの設置!

p_20161001_021619_vhdr_onp_20161001_021628_vhdr_on

フロントカメラはいい感じ!だけど、切替器の配線は後日。。

 

操作音用のサウンダーを作るの巻 (その3)

Sounder(Teensy3.2側)をちょっと、仕様変更。

  • 電子コンビからの入力は、D0固定
    • その変わり、MQTT経由で、音番号を変更できるようにした。
  • MicroSDリーダーを接続(SPI)
  • アンプ変更
  • スピーカーボックス作りなおし
    • テプラテープの空箱にスピーカーをマウント!(w

p_20160925_003806_vhdr_on

WiFi MQTT Client(WROOM-02側)も完成したので、ちゃんと箱詰め!

p_20160925_002317_vhdr_onp_20160925_002321_vhdr_on

閉じたところ↓

p_20160925_002858_vhdr_on

全体↓

p_20160925_004026_vhdr_on

上から

  • WiFi MQTT Client for Sounder
  • Sounder for NaO10 MZ20
  • スピーカー

一旦、Sounder側のユニットは完成

後は、車載PC,エアコンパネルPC,ステアリングパッドPCの各アプリの開発かな。

構成は、こんな↓感じ

sounder_chart

回路図(ver. 0.3)

sounder_v03

続く。。

 

NaO10号 情報機器相関図 2016/8/6

相関図

NaO10_20160806_chart

前回からの変更点

  • 電圧,温度,湿度,気圧メーター追加

回路図

ステアリングパッド内

Raspberry Pi Zero+3.5インチTFT+電源制御回路+ホーン制御回路

MZ20_RpiZero

 

Pad-TX(2015/6)

NaO8_pad_ctl_tx_3

 

エアコン関連

aircon状態解析

AirConLedState

 

グローブボックス内

Pad-RX(2005/4)

NaO8_pad_ctl_rx_20050425

 

ODO-Counter(Teensy 3.x Ver. 2015/12/7)

ODO_COUNTER_V5

 

GPS-Clock Ver.3(2015/3/31)

GPS_CLOCK_V3

 

GPS-Clock Ver.4(2015/12/20)

GPS_CLOCK_V4_Teensy32

トランク内

Steering Switch Controller for Strada

stssw_for_mz20_strada_2

VTHP Sensor (電圧,温度,湿度,気圧センサー)

V_TEMP_Meter01a

電圧、気温、湿度、気圧計 (その1)

ナビ入れ替えで、シフトパネルのとこの電圧計が無くなって寂しいので、電圧計をPCに表示することに。

ついでに、BME280というセンサー↓を使って、気温、湿度、気圧もいっしょに!

 

まずは、回路。

V_TEMP_Meter2

で、作ってみた!

モニター部↓

20160720_124454

センサー部↓

20160721_100122

UART→USBシリアルで、PCへ。

ステアリングモニター用は、電圧と温度のみで。開発環境でテスト↓

20160720_124444

PC8号機には、電圧、温度、湿度、気圧を表示。開発環境でテスト↓

20160721_225636

表示文字も、単なるテキストだと物足りなかったので、7Seg風に文字を作ってみた(w

32×50のドット絵で(w

ついでに、下記サイトを参考に、気圧・温度から標高を計算してみた。

http://keisan.casio.jp/exec/system/1257609530

続く。

 

NaO10号 情報機器相関図 2016/6/27

相関図

NaO10_20160627

前回からの変更点

  • ナビ/オーディオメインシステム変更
    • CN-HX3000D→CN-F1D
  • CN-F1Dのステアリングスイッチ入力用コントローラー回路追加
    • Steering Switch Controller for Strada (一番最後に回路図つけてます)

回路図

ステアリングパッド内

Raspberry Pi Zero+3.5インチTFT+電源制御回路+ホーン制御回路

MZ20_RpiZero

 

Pad-TX(2015/6)

NaO8_pad_ctl_tx_3

 

エアコン関連

aircon状態解析

AirConLedState

 

グローブボックス内

Pad-RX(2005/4)

NaO8_pad_ctl_rx_20050425

 

ODO-Counter(Teensy 3.x Ver. 2015/12/7)

ODO_COUNTER_V5

 

GPS-Clock Ver.3(2015/3/31)

GPS_CLOCK_V3

 

GPS-Clock Ver.4(2015/12/20)

GPS_CLOCK_V4_Teensy32

トランク内

Steering Switch Controller for Strada

stssw_for_mz20_strada_2

ETC2.0化に向けて(その5)

stradaテストはまだまだ続く。

ちゃんとした安定化電源でテストしたら、タッチパネルの不具合は皆無になった(w

20160623_112505

電源のノイズが悪さしてたかも!?

ちょっと安心ということで、ステアリングスイッチの続きです。

回路作って~

20160624_035948

設定してみた!

20160624_040418

VOL UP,VOL DOWN,MUTE,現在地の4つ!

うまくいったヨ

(参考)

  • 回路はちょっと手直し(PCからの入力はソフトウェアシリアルで)
    stssw_for_mz20_strada_2
  • for Arduino Nano
    /*
     * Steering Switch Controller
     * 
     * 1: VOL-UP
     * 2: VOL-DOWN
     * 6: 現在地
     * 7: Mute
     */
     
    #include  <SoftwareSerial.h>
    #define PIN_CTL 4
    #define PIN_DA1 7
    #define PIN_DA2 8
    #define PIN_DA3 9
    #define PIN_LED1 13
    
    #define RX_PIN 5
    #define TX_PIN 6
    
    SoftwareSerial strada(RX_PIN,TX_PIN);
    
    int pos=0,mode=0;
    #define MAX_LENGTH 64
    char serial_str[MAX_LENGTH+1];
    
    void setup() {
      pinMode(PIN_LED1, OUTPUT);
      pinMode(PIN_CTL, OUTPUT);
      pinMode(PIN_DA1, OUTPUT);
      pinMode(PIN_DA2, OUTPUT);
      pinMode(PIN_DA3, OUTPUT);
      digitalWrite(PIN_CTL,LOW);
      digitalWrite(PIN_DA1,LOW);
      digitalWrite(PIN_DA2,LOW);
      digitalWrite(PIN_DA3,LOW);
      strada.begin(9600);
    }
    
    void loop() {
      char ch;
      if(strada.available()>0){
        while(strada.available()){
          ch=strada.read();
          if(ch==13)continue;
          if(ch==10){
            int num=atoi(serial_str);
            if(num>0 && num<8){
              outputdata(num,mode);
            } else if(num==0){
              if(mode==0){
                mode=1;
              } else {
                mode=0;
              }
            }
            pos=0;
            serial_str[0]=0;
          } else if(ch>9 && ch<128) {
            if(pos<MAX_LENGTH){
              serial_str[pos]=ch;
              pos++; serial_str[pos]=0;
            }
          }
        }
      }
      delay(10);
    }
    
    void outputdata(int num,int mode){
      int i,d1,d2,d3;
      digitalWrite(PIN_CTL,LOW);
      if(num>8 || num<1)return;
      switch(num){
        case 1: d1=LOW; d2=LOW ;d3=HIGH; break;
        case 2: d1=LOW; d2=HIGH;d3=LOW;  break;
        case 3: d1=LOW; d2=HIGH;d3=HIGH; break;
        case 4: d1=HIGH;d2=LOW ;d3=LOW;  break;
        case 5: d1=HIGH;d2=LOW ;d3=HIGH; break;
        case 6: d1=HIGH;d2=HIGH;d3=LOW;  break;
        case 7: d1=HIGH;d2=HIGH;d3=HIGH; break;
      }
    
      // Set Data
      digitalWrite(PIN_DA1,d1);
      digitalWrite(PIN_DA2,d2);
      digitalWrite(PIN_DA3,d3);
    
      // Push Swicth
      digitalWrite(PIN_CTL,HIGH);
      digitalWrite(PIN_LED1,HIGH);
      delay(100 + (mode*1200) );
      digitalWrite(PIN_LED1,LOW);
      // Release Switch
      digitalWrite(PIN_CTL,LOW);
    
      // Reset Data
      digitalWrite(PIN_DA1,LOW);
      digitalWrite(PIN_DA2,LOW);
      digitalWrite(PIN_DA3,LOW);
    }
    

続く。

車載PC9号機に向けて

メインの車載PCをリプレースするにあたり、次期車載PC9号機の構築を開始しました。

今回は、大幅に変更。

ほぼ0から構築開始。

主な変更点

  • OS変更 CentOS6.7 → Fedora23
  • OS変更に伴い、Systemd関連の整備
  • kernelのチューニング(リビルド)
  • scriptsの全面見直し
  • M/B,CPU変更 (P8H77-i→H81I-Plus、CPUは仮でCore i3-4130T)

↓現在 (進捗30%)

20160405_091818

↑ 自宅開発環境。

全機能再構築完了後に、現在の8号機のケースへ収納予定。