デジタル鉄道模型フォーラムDCC・メルクリン等のデジタル鉄道模型の話題でコミュニケーションできる場です。登録・利用は無料です。
デスクトップステーション(DesktopStation)のページはこちら
・無料の日本型超高品質DCCサウンドデータをWebで配布中!
・鉄道模型をスマホで簡単制御!国産で革新的なコマンドステーション DSair2はこちらから。

2017年12月09日

DietPiを試す

ラズベリーパイのソフトを立ち上げるにあたって、とりあえずディストリビューションは、ラズビアンの軽量版であるDietPiにすることにしました。

DietPiのコンセプトは、「軽さは正義!」です。

イメージをダウンロードして、SDカードに書き込むまでは特に変わりません。書き込んだ後、SDカードのルートにある、dietpi.txtを開きます。

■以下のように修正


Wifi_Enabled=1
Wifi_SSID=*秘密*
Wifi_KEY=*秘密*
AUTO_AutoStartTarget=7
wifi_hotspot_key=dshotspot
wifi_country_code=JP

AUTO_Install_Enable=1
AUTO_DietpiSoftware_Install_ID=9 #will install Node.js
AUTO_DietpiSoftware_Install_ID=16 #will install Build Essential


■起動後

何故かうまく自動でwifiが認識しませんでした。
仕方ないので、dietpi-configを起動して、Wifiを設定しなおしました。Desktop画面では無いですが、そこそこ簡単にWifiの設定が出来、無事にアップデート処理を走らせられました。

Raspberry pi 3Bに標準搭載されたWifi機能のおかげで、本当に使いやすくなりました。数年前に、2Bで遊んでた立場からすると、一気に使い勝手が改善された感じです。

■Node.jsとnpmのインストール

自動で、node.js v9.2.1とnpm 5.5.1がインストールされました。

■serialport用の準備

serialportはv6.x.x系のビルドバイナリしかなく、v9にすると、いろいろややこしいのでv6.11.3のLTS版を強制インストールします。

> npm install -g n
> n 6.11.3

インストールが終わったら、バージョン確認です。

> node -v
v6.11.3

あと、npmがどうしても通らないのでpythonもインストールしました。node-gypがpythonを要求するようです。

> apt-get install python

これでnode.js用のシリアルポートライブラリをインストールできます。

> sudo npm install serialport --unsafe-perm --build-from-source

■Wifi hotspotの設定

今は社内wifiルータに繋げているので、単独稼働の状況になるときに設定予定。

■Avahiのインストール

IPアドレスでつなぐのは面倒なので、Avahiを入れて、名前解決できるようにします。

> apt-get install avahi-daemon -y


■USBシリアルの認識

Arduino互換機(CH340)をラズパイに差し込むと、まずは、ttyUSB0として認識するようです。


root@DietPi:/home/dspi# ls /dev/tty*
/dev/tty /dev/tty14 /dev/tty20 /dev/tty27 /dev/tty33 /dev/tty4 /dev/tty46 /dev/tty52 /dev/tty59 /dev/tty8
/dev/tty0 /dev/tty15 /dev/tty21 /dev/tty28 /dev/tty34 /dev/tty40 /dev/tty47 /dev/tty53 /dev/tty6 /dev/tty9
/dev/tty1 /dev/tty16 /dev/tty22 /dev/tty29 /dev/tty35 /dev/tty41 /dev/tty48 /dev/tty54 /dev/tty60 /dev/ttyAMA0
/dev/tty10 /dev/tty17 /dev/tty23 /dev/tty3 /dev/tty36 /dev/tty42 /dev/tty49 /dev/tty55 /dev/tty61 /dev/ttyprintk
/dev/tty11 /dev/tty18 /dev/tty24 /dev/tty30 /dev/tty37 /dev/tty43 /dev/tty5 /dev/tty56 /dev/tty62 /dev/ttyUSB0
/dev/tty12 /dev/tty19 /dev/tty25 /dev/tty31 /dev/tty38 /dev/tty44 /dev/tty50 /dev/tty57 /dev/tty63
/dev/tty13 /dev/tty2 /dev/tty26 /dev/tty32 /dev/tty39 /dev/tty45 /dev/tty51 /dev/tty58 /dev/tty7


lsmodで、CH34xドライバがロードされていればOKです。どうも、標準でCH340Gに対応しているようです。


root@DietPi:/home/dspi# lsmod
Module Size Used by
ch341 6086 0
usbserial 29980 1 ch341
joydev 9988 0
evdev 12359 0
hid_logitech_hidpp 20341 0
brcmfmac 293441 0
brcmutil 9927 1 brcmfmac
cfg80211 545726 1 brcmfmac
rfkill 21008 2 cfg80211
hid_logitech_dj 12148 0
bcm2835_gpiomem 3900 0
uio_pdrv_genirq 3923 0
fixed 3285 0
uio 10396 1 uio_pdrv_genirq
fuse 99353 1
ipv6 408387 26


lsusbでさらに何を認識しているかチェックできます。

root@DietPi:/home/dspi# lsusb
Bus 001 Device 006: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
Bus 001 Device 004: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub


node.jsで動かすアプリでは、以下のようにコーディングすることになります。


var sport = new SerialPort('/dev/ttyUSB0', {
baudRate: 115200
});


■dsgw.jsを転送

SSH経由で無理やり転送して動かしましたが、serialportライブラリがうまく動き出ません。
ちょっと調査を進めています。

シリアルポートが、なぜかうまく開かないようです。
気づいたら動き始めました???です。

■とりあえず動いたのでビデオ

まだまだ実装レベルは低いですが、DSmainR5.1をラズパイに繋ぐと、iPadやPCなどから操作できるようになりました。ラズパイがサーバになる感じです。



従来のDSpiは、上にDCC/MMシールド相当の基板を差し込んでましたが、今回はUSBにDSmainやDSone、DSシールドなどを繋げる形です。PC版DesktopStationがラズパイになったイメージです。

mobileDS_concept1.png

■Todo

・起動高速化。今は1分くらいかかる。ほぼ固まった時に、余計なモジュールは削除して軽量化する。
・ROM化。これができないと、いきなり電源断するとSDカードが壊れる。
・DSmain等からのデータ収集。実は、応答をすべて無視しています。理由は、応答を見る方法をまだ分かっていないから。
・複数タブレット端末接続時のデータ共有。
・Wifi Spot化。たぶん、dietpi-configでwifiをいったん切るとホットスポット設定が出てくる?
・ttyUSB0にならないと動かない。複数繋げるとダメ。自動検出できない。
・イメージファイルの軽量化。今は4GB中、2GBくらい。
・Arduino UNO(本物)は、どう認識するかまだ未チェック。ドライバを入れないと動かないかもしれない。面倒なので、サポート外にするかも(Arduino UNO互換品の偽物の方をサポートする方が楽なので・・・)
posted by yaasan at 09:01 | Comment(2) | ガジェッド