ラズパイ試食レポ[12]: ケースをゲットだぜ! [Raspberry Pi]
ラズパイのケースとして市販のクリアケースを使ってきましたが、最近、高校時代の友人がなんと3Dプリンタでケースを自作したとのこと、「すげー」とか言ってたら、私にも作ってくれました!
3Dプリンタで作ったものを初めて触りましたが、積層面も結構きれいにできるのにびっくり。もっとでこぼこかと思っていました。
オレンジ色のにくいやつ!
ラズパイ試食レポ[11]:メディアセンターその2 [Raspberry Pi]
以前、メディアセンターKodiの設定だけやっていたのですが、ようやく活用してみることにしました。
ところが、これが一筋縄では行きませんでした。ホームビデオのデータのバックアップに一番手間取ったのですが、関係ないところは省略して、Kodi関係の備忘録的に大切なところだけメモしておきます。
- 簡易NASが対応しているファイルシステムに注意: FAT32にしか対応していないルータが多い。
- HDD上の一部の日本語のフォルダやファイル名が化ける。 : NTFSのときにはなかった。「学習」が「学試」に。気のせいか、PCに付けている時には見えるファイルが、samba越しにみるとPCからでも見えなかったり?
- kodiからsamba越しに見ると、フォルダやファイル名の日本語が化けている: /home/kodi/.smb/smb.confに以下を追加したら解決。
dos charset = CP932
unix charset = UTF-8
display charset = UTF-8
dos filemode = Yes
dos filetimes = Yes
dos filetime resolution = Yes - 一部のフォルダに入っていけない: 最初は日本語が化けているせいかとも思ったが、日本語が解決しても一部フォルダに入れず、「エラー2:利用できません」メッセージが出る。多くのフォルダは普通に入れる。上記smb.confの最後3行を追加したら起きなくなった気がするが、本当にそれが原因かは不明。
- テレビリモコンが効かなくなる: 最近発生。リモコンが効かない。リブートすると治ることもある。Kodiに関係しないところのリモコンは効く。つまりHDMI越しにラズパイに制御が渡るところが不通になるイメージ。HDMIの接触が微妙?
- アドオンのYouTUBEが動作しない:これはアドオンの最新版をダウンロードしたら解決。kodiのメニューからはアップデートできず、zipをダウンロードする。ここを参照(自己責任でお願いします)。
- mpeg2の絵と音がずれる。Windows上で再生する場合は気にならないので、ファイルではなく再生環境のせいだと思うんだが、ラズパイが非力ってことなのかな?
と、いくつか気になる点はあるものの、昔からの写真やホームビデオが気軽にテレビで見られるようになったので、家族には好評でした。
FRISKとレーザーポインタ [電子工作]
ミント菓子にもいろいろありますが、定番のFRISKやMINTIAには大型版もありますね。Cloretsもガムじゃないミント菓子を出しました。
そして、最近発見したのですが、イオンでプライベートブランドのミント菓子が¥78で売っていました。ケース形状やミントタブレット形状などはFRISKそっくりですが、ケースは並べてみるとイオンのほうが細長いです。そして、このイオンのはなんと詰め替え用も売っているとのこと。
ところで、FRISKケースは電子工作のケースとして再利用することは、半ば定番化してきていますが、遅ればせながら、やってみました。
工作というほどのものでもないですが、レーザーポインタを作ってみました。
右下手前にある黒い円筒形のものが3Vで動く赤色レーザーモジュールです。
左下手前にあるのがタクトスイッチ。奥にあるのがCR2032ボタン電池です。
部品はいずれもamazonで購入(スイッチは手持ちだったので入手先は失念)しました。部品代は総額¥250くらいでしょうか。
配線をはんだづけして、部品の固定は瞬間接着剤です。穴あけは小型電動ドリルで。ちょっとひび割れが入ってしまいました。
ふたをスライドすることで、タクトスイッチが顔を出して押せるようになる構造です。カバンの中などで意図せずスイッチがオンになるのを防ぐためです。
ちょっと手間取った点は、タクトスイッチの高さが高すぎてケースに収まらなかったこと。ボタン部分をカッターで削りました。電池ホルダもギリギリです。心配していたレーザーモジュールはぴったりだったのに、ノーケアだった部品に足元をすくわれました。
出来栄えは、まあまあ満足。レーザーは決して明るくはないですが、暗い部屋でスクリーンに近ければプレゼンで使えるレベルです。
できればもっと小型化したいところです。ボタン電池をもっと小型のものにして、円筒状のケースに入れたいですね。
オードリー・ヘプバーン
先日、YouTubeでたまたま見つけた動画。
オードリー・ヘプバーンがチョコのCMに出ています。
あまりに自然だし、風景や車や服装も50年代っぽいし、「へー、こんなCMに出てたんだ」などと普通に思ってしまいましたが。
ちょっと待てよ。と。
本人はファッションからも20代の頃のオードリーだ。「ローマの休日」や「サブリナ」の頃で、これらの映画はモノクロ。当時カラーもあったけど、こんなにきれいじゃないはず。
しかもBGMは、本人が歌っているムーン・リバーじゃないか。ムーン・リバーは「ティファニーで朝食を」の主題歌で劇中で歌っているから、それを使っているようだが、ティファニーの頃はオードリーは30代半ば。
おかしい。
って思ったら、コメント欄にCGだと書いてありました。なーんだ。
でもとても自然に出来ていて、本当に映画のワンシーンのようでした。素晴らしい。
ほかの女優さん版も見てみたいですね。グレース・ケリーとか。
A4, A3混在のWORD文書のヘッダ [PC Tips]
Microsoft Office の WORD の使い方です。
レポートなど、ふつうはA4サイズの文書として作成しますが、大きな図面を貼る場合など、時にA3を横にしたページを差し挟みたくなります。そのやり方は、ネットでもよく見かけますので、ここでは省略(ページ区切りを挿入した上で、ページサイズ変更)。
ヘッダ、フッタを設定している場合、ページサイズをA3ヨコに変更しても、ヘッダがA4のままになります。
これがどうにかならんものかと、ネットで調べましたが見つけることができませんでした。WORDのテンプレートなどを調べた結果、まあまあ満足のいくやり方が見つかったので、メモ代わりに書いておきます。
特に個人的な好みのヘッダは、一本横線を入れて、その右上に日付などを書いたものです。
このように、2ページ目のA3ヨコでもヘッダが1ページ目と同じになっています(この図は比べ安くするために、ページの縦方向を短くしています)。
右上の日付はテキストボックスを置いていますが、これは、レイアウトの設定で、右揃えに配置することでページサイズによらず対応できます。
横線は図で描いているのですが、どうにもならないようです。
そこで、横線は、表の罫線を利用することにします。
表の罫線の下側だけ表示しています。このままではまだページサイズに対応できていません。
表のプロパティで、表のサイズを「100%で固定」します。デフォルトではサイズはcm単位ですが、%単位での指定も可能なのでした。
さらに、2ページ目のヘッダの「前と同じ」を解除すれば、上のようにページサイズに対応できます。
日付はテキストボックスでもいいですが、表のセルの中に右揃えで書いてしまえば簡単です。
横線は、表のほかにも、罫線メニューから挿入できる「横線」や、ハイフンを3連続で入力して2連続リターンするとオートコレクトで変換される横線(正体不明)も100%にできます。
Bruno Mars [Music]
◆Bruno Mars
もう20年近く洋楽をちゃんと聞かなくなっていましたが、何きっかけか忘れましたが、Bruno Marsを知りました。
最初に聞いたのはこれ。
なんか懐かしい雰囲気。私が洋楽をよく聞いていた80年代のファンクの香りがします。
次に知ったのがこれで、もろファンク。
Bruno Marsって超売れっ子みたいですね。全然知りませんでした。
このバンドメンバーと踊りながらパフォーマンスする感じも、80年代ファンクバンドっぽくて好きです。複雑なダンスを踊っているわけではないですが、超かっこいいです。
◆Jam & Lewis の思い出
高校生の頃、洋楽を聞き始めて、初めにはまったのは Prince でした。当時は Purple Rain の頃で、Prince 絶頂期と言っていいのでは。1999、Purple Rain、around the world in a day の3枚は凄い。
Princeの曲を紹介し出すとキリがないですが、これがいいかな。
Princeは曲はすごいんですが、正直、見た目やパフォーマンスは生理的に気持ち悪いです。ファンの方、ごめんなさい。私もファンなんですよ、一応。
Prince にもファンクっぽいのはあるんですが、Princeの息のかかったバンドで The Time というのがありました。映画Purple Rainに出演して有名になったのですが、その後に出た pandemonium というアルバムに好きな曲が多くて、お気に入りになりました。Price が陰とすれば The Time は陽って感じ。
で、The Timeがファンクっぽい曲が多い。といっても本当のファンク好きにはゲテモノ扱いかもしれません。Prince同様、ギターロックも入ってるし、ギラギラしたシンセサウンドもてんこ盛りですから。
後で気が付くと、これが Jam & Lewis サウンドだったんですな。当時は知りませんでした。
The Time の動画は少ない。頭が切れてますが、これで。
その後、ジャネット・ジャクソンがコントロールとリズムネイションでブレイクした時、この感じ好きかも、って思い、この時初めてプロデューサーに目が行きました。Jam & Lewis、The Time のキーボードとベースです。
これがリズムネイション。
その後も、キャリン・ホワイトのロマンティックって曲がいいなって思ったら、やっぱり Jam & Lewis で、ああ、俺ってこの人たちの曲が好きなんだ、とその時確信しました。
これがロマンティック。
いまでも基本踊れる曲が好きですし、好みの曲の条件のうちの、シンプルでキャッチーなフレーズが単純に繰り返されるサビ、サビとは違うパターンのリフがあること、などは、このころの体験がベースにあるような気がします。
最後に、文脈とはあまり関係ないですが、YouTube見てたら見つけて懐かしいので貼っておきます。当時大好きだったなぁ。
サブサーキットの階層表示 [シェルスクリプト]
SPICEネットリストねたをもうひとつ。
SPICEネットリストはサブサーキット(SUBCKT)という回路ブロックが階層構造をとっています。Cプログラムが関数によって構造化されているのと似ています。
SPICEネットリストを一見しただけでは、SUBCKTの階層構造を把握することは困難です。どのSUBCKTがどのSUBCKTを呼んでいるのか、何度もネットリストを読み返さなければなりません。
そこで、階層構造といえば「再帰呼び出し」です! コンピュータのファイルシステムの階層構造などを表示しようとすると再帰呼び出しを使います。ある関数が、その中で自分自身を呼び出す、というものです。
ファイルシステムの場合、何度も同じフォルダの中身をスキャンすることができますが、SPICEネットリストをシェルやawkで取り扱う場合、何度も読み直すことは困難です。
そこで、少し美しくないですが、SUBCKTごとに中身をファイルに書き出しておくことにしました。ファイル名をSUBCKT名にしておくことで、何度でも中身をcatすることとします。
できあがったのが以下です。以前紹介した、継続行処理を前処理として入れています。
#!/bin/sh
# cdltree -- print tree of cdl
# set input cdl file to INPUT variable.
# create SUBCKT_LIST of subckts include input cdl file.
# v1.0 /HORI @2015-07-15
#######################
# VARIABLE DEFINITION #
#######################
INPUT=./input.cdl
SUBCKT_LIST=./subckt_list
LEVEL=1
TOP_CELL_NAME=""
#######################
# FUNCTION DEFINITION #
#######################
# create subckt files
function mksubcktfiles() {
if [ -f $SUBCKT_LIST ]; then
rm -f $SUBCKT_LIST
fi
cat $INPUT | awk '
# de-plus
/^\+ /{
LINE = LINE substr($0, 3)
next
}
{
if (LINE != "") {
print LINE
}
LINE = $0
}
END{
}' | awk -v SUBCKT_LIST=$SUBCKT_LIST '
# create all subckt files except for primitive
/^\.SUBCKT/{
flg = 1
file_name = $2
print $2 >> SUBCKT_LIST
}
/\.ENDS/ && flg == 1{
flg = 0
}
flg == 1 && /^XI/{
print $NF > file_name
}'
}
# sort subckt file's contents
function sort_file() {
for FILE in `cat $SUBCKT_LIST`
do
if [ -f $FILE ]; then
cp -f $FILE tmp
cat tmp | sort | uniq > $FILE
fi
done
rm -f tmp
}
# get top cell name
function get_top_cell_name() {
TOP_CELL_NAME=`cat $INPUT | awk '
/^\* Top Cell Name:/{
print $5
}'`
echo "$TOP_CELL_NAME ($(( LEVEL - 1 )))"
}
# search tree
function subckt() {
TARGET=$1
if [ -f $TARGET ]; then
for ELEMENT in `cat $TARGET`
do
# create indent space
COUNT=$LEVEL
while (( COUNT-- ))
do
echo -n " "
if [ $COUNT -le 0 ]; then
break
fi
done
echo "$ELEMENT ($LEVEL)"
LEVEL=$(( LEVEL + 1 ))
subckt $ELEMENT # recursive call
done
# end of list, return upper level
LEVEL=$(( $LEVEL - 1 ))
else
# file not found, that element is primitive, reset level
LEVEL=$(( $LEVEL - 1 ))
fi
}
# post processing
function post() {
for FILE in `cat $SUBCKT_LIST`
do
rm -f $FILE
done
}
################
# MAIN ROUTINE #
################
trap post 0 1 2 3 15 # signal 0 is normal exit
mksubcktfiles
sort_file
get_top_cell_name
subckt $TOP_CELL_NAME
#EOF
SPICEネットリストの折り返し行をくっつける [シェルスクリプト]
SPICEネットリストでは、長い1行には途中に改行を入れて折り返すことができますが、その際、折り返された行の行頭には「+」マークを付けることになっています。
これが、シェルやawkで処理する際に障壁になります。
そこで、前処理として、「+」で始まる行を前の行にくっつけて1行にしてしまうことにします。
シェルやawkが扱える1行の文字数には上限があります(昔のSunOSでは1024文字だったような)が、面倒になるのでここでは無視します。使用上の制約としておきます。
出来上がったawkスクリプトが以下です。attachという名前にしました。なかなかシンプルで気に入っています。もっとシンプルにできるものでしょうか。
#!/bin/awk -f
/^\+ /{
LINE = LINE substr($0, 3)
next
}
{
if (LINE != "") {
print LINE
}
LINE = $0
}
END{
}
ラズパイ2試食レポ[10]: メディアサーバにチャレンジ [Raspberry Pi]
ラズパイ関連のサイトを拝見していると、メディアサーバにする例がたくさん載っています。kodi(旧名xbmc)というアプリケーションがあり、キオスク的にこれを使用できるようにしてあるインストールパッケージも用意されているようです。
でも、メディアサーバって何?って感じでした。もともとNASやサーバに写真、動画、音楽などの情報ファイルを集中管理している人は、それらをリビングのテレビでブラウジングして視聴可能になるので、相当利便性が上がると思います。私はそんな事をしていないので、まあ、何ができるかやってみよう、という感じです。
◆HDMIの解像度設定
リビングのテレビでの表示が不調(たまに映らなかったり、ちらついて安定しなかったり)なので、ちゃんと設定することにしました。テレビのマニュアルを調べたところ、HDMI入力で対応可能な解像度の選択肢が載っていました。ラズパイが設定可能な解像度はこちらのページの中程。両方を見比べてワイド画面にピッタリなWXGAの1360×768を選択しました。
ラズパイの設定は/boot/config.txtで。hdmi_group=2、hdmi_mode=39、としました。
結果、ばっちり安定して映るようになりました。
◆kodiのインストール
基本はbe-damaさんのサイトを参考にしました。ここでは補足情報だけ追記します。
ラズパイをHDMIケーブルでテレビに繋ぎ、キーボードとマウスをUSBに繋ぎました。kodiをインストールして自動起動設定をして再起動すると、kodiが起動しました。でもキーボードもマウスも効かなくて操作できません。kodiはkodiというユーザで起動されているのですが、kodiユーザがinputグループに属していないためにこうなるそうです。なので、以下で解決。
pi@raspberrypi ~ $ sudo usermod -a -G input kodi
◆kodiの操作
せっかくテレビにkodiの画面が出ているのに、操作がキーボード&マウスでは不便です。なんとテレビのリモコンでkodiの操作が可能です。初めて知ったのですが、HDMIというのは単に映像と音声を送るだけでなく、テレビのリモコンの操作情報をソース側へ渡すこともしてくれるそうで、kodiも対応しています。kodiのメニューの、
システム > 設定 > システム > 入力デバイス > 周辺機器
で有効化します。
ただし、操作できる機能はテレビにより異なるようで、うちのSHARP製では、方向キー、戻るキーくらいしか効きませんでした。これでも最低限の操作は可能です。
他の選択肢として、Androidアプリのリモコンがあります。いくつか試した中ではYasteが完璧です。スマホやタブレットから完璧に操作できます。テレビリモコンと違ってLAN越しですが遅延は全く気になりません。テレビリモコンでは機能しなかったホームボタンやコンテキストメニュー表示なども機能します。さらに検索などの文字入力が、kodiのソフトキーボードでは英語のみなのですが、リモコンから日本語を送信できます。
◆YouTubeが見られる
kodiには非常に多数のアドオンが用意されています。kodiにレポジトリを登録し、インターネットからダウンロードしてインストールします。その中に、YouTubeを視聴できるアドオンがあったので試してみました。いちいちPCを起動しなくてもテレビでYouTubeが見られれば便利そうです。
ビデオのアドオンからYouTubeを選択してインストールするだけ利用可能になりました。サムネイル表示はかなりもっさりしています。また、前述のとおり検索に日本語を使うにはアプリリモコンを使うしかないです。ただ、一度検索した語句はメニューに登録されるので次回は入力不要です。
◆kodiから普通のアプリケーションを起動できないか
kodiの裏ではLinuxが走っているわけですから、Webブラウザを起動してリモコン操作できれば、テレビでgoogle検索できて便利です。ですが、Xは起動していないし、リモコンでマウスポインタが動かせるか、などそもそもできるかどうかわかりません。
調べると、汎用ラウンチャとして Advanced Launcher なるアドオンがあります。いろいろ試していますが、未だアプリケーションの起動に成功していません。あらかじめXを起動しておいて、Xauth許可やディスプレイ設定などして…など試行錯誤中です。
アドオンやkodiの設定は pythonやxmlで記述されているようで、学習すればカスタマイズは比較的容易かもしれません。ラズパイ2試食レポ[9]: ブリッジにしてみた [Raspberry Pi]
自宅リビングのテレビには有線LANポートが付いていますが、今は繋いでいません。マニュアルを見ると、地デジ番組で双方向通信する際に使用するようです。よく「dボタンを押して参加」のような番組がありますが、確かに過去に「ネットに繋がっていないと応募できません」と言っていた番組があったような気がします。
繋いでいないのは、リビングに有線LANが来ていないからです。我が家では2FにNuroひかりのモデム?が置いてあって、そいつが唯一の有線HUB兼無線親機です。
ラズパイには有線LANポートがあり、今はUSBに無線LANアダプタを付けているので、ラズパイをブリッジにしてテレビをネットに繋げられるのでは? と思いました。やってみましょう。
◆その前にSDカード延命作戦
フラッシュは書き換え回数が有限ですので、Linuxのようにいろいろなファイルを書き込むOSを連続運転しては、SDカードがわりと短期間で使用不能になると思います。
そこで、スワップファイル無効、一時ファイル置き場をRAM(tmpfs)にする、などの措置で、SDカードへの書き込みを減らします。
kimura@pc-links.comさんの「Raspberry Pi でRAMディスクを使う」の通りやればできますので、ここでは詳細省略します。
◆ブリッジ作成
参考にさせて頂いたのは、tenforwardさんの「Raspberry Pi を無線 LAN アクセスポイントに」です。こちらを始め、いくつかのサイトでは無線LANアクセスポイント化する話が多いですが、今回やるのはその手前の有線と無線をブリッジするところまでです。
- bridge-utilsのインストール: ブリッジを作るだけならこれは必須ではないようです。ブリッジデバイスの確認に使うbrctlコマンドをインストールするだけです。
pi@raspberrypi ~ $ sudo apt-get install bridge-utils
- /etc/network/interfacesの書き換え: 下記を追記。
auto br0
iface br0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1
bridge_ports wlan0 eth0 - 確認: 下記のようにブリッジが形成されています。この状態でテレビとラズパイを有線LANで接続し、テレビ側の設定でIPアドレス自動取得できましたので、ブリッジできていると思います。
うまくいったのですが、いくつか疑問が残っています。
- 自宅で固定IPアドレスの設定などしたことがないので、てっきりDHCPが動いていると思っているのですが、編集前の/etc/network/interfacesでは、eth0もwlan0もmanualとなっていました。アドレスをどこで指定しているのでしょうか。
- また、最初は「iface br0 inet dhcp」と書いたら、起動時に「DHCPできません」的なエラーが出てネットワークデバイスがすべてdisableになってしまいました。上記のようにstaticにしたら大丈夫でした。