0

Edisonのログファイルのサイズを制限する

Edisonのログはsystemdで/var/log/journal に保存されているが、制限かけておかないと無限にログが増えるらしい
systemdのログでディスクがすぐパンパンに


ログはバイナリなのでjournalctlコマンドから表示する

% journalctl -u (Unit名)
% journalctl -u (Unit名) -f
-f 付けるとtail -fみたいになる


ディスク使用量
% journalctl --disk-usage

/etc/systemd/journald.confに
SystemMaxUse=5M
とか書いて設定できる


設定を有効にするために再起動
% systemctl restart systemd-journald
systemd-journald再起動してjournalctl –disk-usageみたら一気に減ってた

0

EdisonとMIDIコントローラでHueを調光する

これ
Node.jsとMIDIコントローラでHueを調光する

Macminiにつないで常用してたので、けっこうアップデートしてる。
https://github.com/shokai/hue-korg-control

やっぱりスマホアプリよりも物理的なツマミやスライダーが複数あったほうが複数のHueを操作するのには向いてると思う

Edisonは起動が速くて、電源入れて10秒ぐらいでWiFiつながってsystemdに登録しておいたhue-korg-controlが起動して調光できるようになる。たまにnano KONTROLが認識されてないのでEdisonにUSBホストケーブル挿し直す必要あるけど


EdisonにUSB MIDIコントローラを接続する

EdisonにArduinoをUSB接続すると同じ要領で、USBホストケーブルを使ってkorg NANO KONTROLをつないだ。

使ってるUSBホストケーブルはこれ

もう売ってない初代nano KONTROL使ってるんだけど、2でも動くだろたぶん


alsaインストール

midiデバイスはNode.jsからだとmidi npmを使って制御する。中で使われてるRtMidiがalsaに依存しているので、opkgでインストールする

% opkg install alsa-lib-dev alsa-dev


hue-korg-control起動

shokai/hue-korg-controlをgit cloneしてnpm installしてnpm start


serviceとして登録する

Edison起動時にhue-korg-controlを起動するようにsystemdを設定した

/lib/systemd/system/edison_config.service とかを参考にした


/lib/systemd/system/hue-korg-control.service
[Unit]
Description=hue-korg control service
After=mdns.service

[Service]
ExecStart=/bin/su root -c 'cd /home/root/src/hue-korg-control && npm start'
Restart=always
RestartSec=10s
Environment=NODE_ENV=development

[Install]
WantedBy=default.target
環境変数を複数設定したい時は単純にEnvironment=を複数書けばいいらしい

% systemctl enable hue-korg-control  # 登録
% systemctl start hue-korg-control # 起動

rebootして起動してたらok


ログはjournalctlでtail -fみたいに見れる
% journalctl -u hue-korg-control -f

0

Intel Edisonにopkgで色々インストールした

Yoctoはopkgというパッケージマネージャを使うらしい。ビルド済みのバイナリが降ってくるので速い。


Edison opkg package repo created | Intel Communities

/etc/opkg/base-feeds.conf を編集してリポジトリを追加する。

src/gz all      http://repo.opkg.net/edison/repo/all
src/gz edison http://repo.opkg.net/edison/repo/edison
src/gz core2-32 http://repo.opkg.net/edison/repo/core2-32
src all http://iotdk.intel.com/repos/1.1/iotdk/all
src x86 http://iotdk.intel.com/repos/1.1/iotdk/x86
src i586 http://iotdk.intel.com/repos/1.1/iotdk/i586
httpsがほしい。

% opkg update

gitをインストールした。lessをアップデートしないとgit logが文字化けする。
% opkg install git
% opkg install less
あと、ssh-keygenして公開鍵を作ってgithubに登録した。


% opkg install bash
% chsh

screenのdetachは重要
% opkg install screen


Intel Edisonの時刻合わせ(systemd-timesyncd,timedatectl) – Qiita
% timedatectl set-timezone Asia/Tokyo

日本語を表示したいけどlocaleが無い。エディタはMacで起動してるemacsだから問題ないけど、git logで日本語が全部化けるのがちょっとつらい

0

EdisonにArduinoをUSB接続する

EdisonのGPIOを使ってセンサーなどを接続するのもいいけど、USB接続でArduinoを追加するのもいいと思う。間に給電機能付きUSBハブを挟めば電気的に分離できるので難しい回路を作ってEdisonにいきなり接続してショートして全損という事態も避けられる。
もちろん超コンパクトに作るならEdisonのGPIOからI2Cとかで直接やった方がいい。


USBホスト

Edison Breakout Board KitのJ16 USBコネクタは、USBホストケーブルを接続してその先にUSBデバイスを接続できる。

Arduinoの他にもUSBハブ経由でkorgのUSB MIDIコントローラやMIDIキーボード、USBスピーカーも接続できた(lsusbにデバイス名は表示された)けど、alsaがデフォルトでは入っていないのでコントロールできなかった。

Edison+ArduinoMicro

J21から給電する

普通は給電用に使うJ16をUSBホストケーブル用に使うには、別の口から給電する必要がある。
J21に7〜15Vを入れればいい。J21の外側がGND、内側がVCCになっている。

Breakout Board Hardware Guideより

7〜15Vを用意するのが面倒くさいので、試しに5Vを入れてみたら問題なく動いた。
余っているUSBケーブルをむいて、赤白黒緑の4本の線を取り出すと赤が5V、黒が0Vになってるのでそれを使う。こういうケーブルを作っておくと持ち運びも便利だし、しょっちゅう役立つ。

念の為にテスターで調べるか、持っていなければいらないLEDに一瞬チョンとつけて光るか確かめた方がいい。

あと、裏面のJ22に面実装のDCジャックを追加して、ACアダプタから動かす事もできるらしい。


Arduino

手元にあったArduino Micro(Leonardoと同じATMega32U4内蔵のUSB機能を使用)とArduino UNO(FTDIのチップのUSB機能を使用)の両方とも、ドライバなしでEdisonの「/dev/ttyACM0」として認識された。


EdisonからArduinoを動かす

Arduinoにプログラム書いてEdisonと通信させるのは面倒なのでFirmataを使う。

去年作ったarduino-firmata npmとcoffeeで書く

ArduinoFirmata = require 'arduino-firmata'
arduino = new ArduinoFirmata().connect process.env.ARDUINO

arduino.on 'connect', ->
console.log "connect!"

led_stat = false
setInterval ->
arduino.digitalWrite 13, led_stat
led_stat = !led_stat
, 1000 # 1秒ごとに点滅

setInterval ->
console.log arduino.analogRead 0
, 500 # 0.5秒ごとにADC0読み取り

% ARDUINO=/dev/ttyACM0 coffee led_blink.coffee

0

Edisonをsshfsでマウントする

組み込みLinux上でエディタを起動するとCPUもメモリもつらい事になる。
EdisonのディスクをMacでマウントして、Macで起動したemacsでプログラムを書く。実行はEdisonにログインしておこなう。

sshfsのインストール

% brew install osxfuse sshfs

osxfuseのインストールログに表示される通り設定する
% sudo /bin/cp -RfX /usr/local/opt/osxfuse/Library/Filesystems/osxfusefs.fs /Library/Filesystems/
% sudo chmod +s /Library/Filesystems/osxfusefs.fs/Support/load_osxfusefs


マウント

Edisonへのsshログイン設定の設定をしたうえで

% mkdir /Volumes/edison
% sshfs edison: /Volumes/edison
あるいは
% sshfs edison.local: /Volumes/edison

これでホームディレクトリがマウントできる

マウントした状態でMacから作成・操作したファイルは、Edison上ではrootが作ったことになる。
gitの操作ぐらいならMacからやっても大丈夫だと思う。
npmのインストールはC拡張モジュールとかはMac用のがビルドされてしまうのでやめたほうがいい。そういうのはsshでEdisonにログインしてからやる。


アンマウント

% umount /Volumes/edison