2017年11月30日木曜日

Raspberry Pi 3はとてもデリケートなマシンでした

Raspberry Pi 3買っちゃいました💻

ついにRaspberry Pi 3 Model Bを買っちゃいました。
たまたまAmazonクーポン2千円引きを見つけたので、迷った末の購入でした。
先日、Raspberry Pi Zero Wを買ったばかりなのですが😅

さっそく使ってみる

発送先を配送センターにしてもらい、朝1で取りに行ってきました。配達してもらうよりそのほうが早く確実なので🚚
動作確認のため、先日買ったばかりの東芝 Exceria 64GB最新版RASPBIAN STRETCH WITH DESKTOPをEtcherでイメージ展開。
Raspberry Pi Zero W同様にWi-Fi/Bluetoothが実装されているので/boot/wpa_supplicant.confを作り、SSHを有効にするため/boot/ssh.txtを作りました。
OTG接続は出来ないので、config.txtとcmdline.txtはそのままです。
久々のGUI版Raspbianということで、HDMIでモニタを繋いで映しながら、PCからSSH接続&VNC接続で操作。
sudo apt-get update👉sudo apt-get upgrade👉sudo rpi-update
ソフトウェアを最新にアップデートし、GUIから地域情報やキーボードレイアウトなどを設定しつつ、SSH側から/etc/dhcpcd.confを編集してネットワークの設定をしたり。
その後、すでに動かしているRaspberry Pi 2の置き換えを想定した、諸々のパッケージのインストールや設定をしました。
ちゃんと動くので大丈夫そう・・・と思ったのですが。

雷が落ちてる⚡

動作確認中に気になったのが、画面右上の⚡マークでした。
調べてみると電力不足の警告で、以前のRaspbianの場合は四角いレインボーカラーのマークだったものです。
諸々の設定や動作確認を終えたあと、VNC経由で接続したGUIでChromiumを起動しYoutubeの動画を再生してみました。
相変わらずの⚡マーク表示のまま強行したところ、再生開始👉全画面表示=フリーズ🍧
まったく操作できなくなって、あえなく強制電源OFFしました。

Raspberry Pi 3 Model Bがリリースされた当初、電源MicroUSBにつなぐアダプタ電流量は2.5A推奨というのを覚えていました。
そのため、普段持ち歩き用で使っている最大3A/4USBポートのUSB電源アダプタを使っていたのですが、それでも⚡マーク出っぱなしだったので不思議でした。
電圧電流計をアダプタ側に挿し、そこからUSBケーブルを伸ばして接続していたのですが、推移を見ると5.0xV。電流も1Aにも達していません。
だから、電力不足は無いのになぜ?と不思議でした。

⚡マークの厳密な意味を調べてみると、電圧不足が原因とのこと。電力は電力でも、電流不足では無かったのです。
Raspberry Piの想定電圧って厳密にどれぐらいなのか調べてみたところ、公式ページにその記述があり5.1Vとの事でした。そして、電流要件の2.5AというのはGPIOやUSBなどに機器を接続した場合に必要となる容量なので、最小構成ならば1Aもあれば十分なようです。
つまり、問題は電圧ということでした。

Raspi UPS HAT Boardが使えなかった

Raspberry Pi 2で使っているRaspi UPS HAT Boardを後々Raspberry Pi 3でも使おうと思っていたので、その動作確認も兼ねて電圧不足対策の検証実験をしてみました。
そのため、シャットダウンして諸々のケーブル外して持ってきました。

硬くて中々外れないGPIOに刺さってるRaspi UPS HAT Boardを頑張ってはずし、Raspberry Pi 3に挿します。
見た目一緒なので、どっちがどっちかパッと見わかりませんけどね😅

そして、HDMIのみ接続してバッテリー給電で立ち上げました。
そしたら、残念な事に起動直後から⚡マークが出っぱなし。
負荷テスト代わりにしていたChromiumでのYoutube再生も、すぐにフリーズして撃沈。
Raspberry Pi 3未対応というのがわかりました。

続いて、Raspi UPS HAT Boardを付けたまま、電圧不足だったUSBケーブルやUSBアダプタを色々試してみましたがいずれも撃沈でした。
電圧安定用のコンデンサ代わりにRaspi UPS HAT Boardが使えないかと淡い期待を抱いていたのですが、そもそも5V電圧を3.7Vのリチウムイオン電池から作り出すDC/DCコンバーターの段階でダメなので無理のようです。残念😭

意外な発見もありました。それは、Nexus 5付属のLG純正ケーブル&USBアダプタが使えてしまった事でした。
最初の動作確認中、常に100円ショップの短い2A対応充電ケーブルのみを使ってあれこれUSBアダプタを試していたのですが、ケーブルの挿し替えが面倒で充電用に常に転がしてあったコレを挿したんです。
純正ケーブルの長さは約1m。100円ショップのモノより長いのですが、使えたということはそれだけ抵抗値が少ないということです。
純正だけあってケーブルにちゃんとスペックも記載されていて、100円ショップモノで良くありがちな素性の良くわからんケーブルではありません。
また、アダプタは5V1Aという表記のみでしたが、USB電流電圧計で電圧を計ってみたところ、一般的にRaspberry Pi 3で使えると言われているiPad用のApple 12W USB電源アダプタとほぼ同等の数字でした。 さすが、Googleの名前を背負ったAndroid機の付属品だけの事はあります。

結論。純正品がオススメ

Raspberry Pi 3で使う電源は、一般的なUSBアダプタよりも求められる電圧が厳しい事が今回わかりました。
USBの正式な規格では5V±10%、5.25V〜4.75Vの範囲内で、汎用品として売られている商品はこれを満たすように作られています。
ですから、それらが粗悪品というわけでもありませんし、それ以前にUSB規格外の大電流を流しちゃってる時点で逸脱している事は良く言われる話です。
また、一般的に言われている2.5Aの電流量の話よりも、Raspberry Pi本体へ届いた時の電圧が5.1Vキッチリでているかどうかが問題でした。

それらの検証結果から得た結論。
使う電源アダプタは、純正アダプタを使うか、最低でも高負荷検証済みアダプタを使ったほうが良いでしょう。

私もこの後、どちらかのアダプタを購入しようと思います。
ケースもまだ買っていないので追加出費です😭

今回の話はRaspberry Pi 3 Model Bに限った話で、私が持っているRaspberry Pi 2/Zero/Zero Wについてはこの限りではありません。
特にZero/Zero Wについては、PCに直接接続して使えてしまうぐらいです。
私が持っていないモデルも同様に、Raspberry Pi 3 Model Bほどシビアな電圧条件ではないかと思います。
ただ気になるのは、Raspberry Pi 2 Model B V1.2です。
違いはSoCで、従来のRaspberry Pi 2 Model B V1.1のBroadcom BCM2836からRaspberry Pi 3 Model Bと同じBCM2837に変更になったモデルです。ただし、周辺回路がそのままなのか、クロック周波数が900MHzに抑えられています。
果たして、これが従来品程度の電圧要件なのか、それともRaspberry Pi 3 Model B同様にシビアなのかです。

もうしばらくRaspberry Pi 2に頑張ってもらわないとならなさそうです。

2017年11月28日火曜日

11月第3週(11/19~11/25)ダイエットサマリー 体重増加するも
㈱G-7ホールディングス様創業42周年大感謝祭当選
ほっかほかヒートテック

猫もヒナタで丸くなる😺

すっかり季節は冬で、気温も一時氷点下なんて日もありました。
室温も15℃を下回る日がほとんどですが、外よりは遥かに暖かいです。
7月に買ったテントを1度も設営していないので、近場のキャンプ場に行こう行こうと思っていたらオフシーズン。
登山や旅行で充実した1年でしたが、これだけがやり残しになってます⛺️

体重増加するも踏みとどまり

先週から再び増え続けた体重でしたが、何とか週末に止めました。
季節の変わり目で、気候変化やそれに伴う食材変化でなかなか安定させられず苦慮していますがそれも毎年の事。
体調崩さず、怪我に気をつけ、ペース作りながら息抜きしながら。
人生は長いマラソンです。一時の事に一喜一憂しても、良くも悪くも一時的な事。
老いによる戻れない要素は確かにありますが、それも含めて減量ダイエットなのかなと思ってます。

相変わらずの筋トレフィニッシュ

今週も、普段通りの筋トレメニューでやりきりました。
そろそろ、来年の春日部大凧マラソン大会のエントリーの事を考えないとならないのですが、書いている通りまったく走っていないので、昨年同様完走できるかの不安がつきまとっています。
エントリー開始が、昨年と同様なら12月から。それまでに決めないとと思っているのですが。

たまたま、サイクリング途中で立ち寄った越谷の業務スーパーで買い物をした際に「良かったら応募してみてください。」と頂いた懸賞ハガキ。
色々ある中からめぐみの郷が選ぶ「兵庫七つ星セット」に申し込んだところ、まさかの当選しちゃいました。
ありがとうございます🙇

めぐみの郷は産直ショップで、関西を中心に展開しているので関東では馴染みの薄いお店です。
そこから送られて来た、産地直送の食材の数々にニヤニヤが止まりませんでした😁
さつまいもは、ホイルに包んで普段使わない魚焼きグリルに入れて焼き芋に。
丁度よい水分加減と甘さとサイズ感。たまりませんでした。

里芋は、皮を剥いてジックリ麺つゆで炊き上げてみました。
ゴロッとした大きさもさることながら、味も大きいからか旨味抜群でした。

ビックリしたのが短形自然薯。大ぶりのサイズです。
長芋は、買ったり頂いたりして食べたことがあるのですが、自然薯は今回が初めて。
軽く火で炙ってヒゲを焼こうとしたら、あまり生えてなかったので楽でした。
軽くハードスポンジで土の多そうな皮をこすり、残りはそのままですり下ろし、麺つゆを垂らし、かなり前に買って食べる機会が無かったテーブルマークの業務用雑穀米をチンして頂きました。
やっぱり、自然薯は山芋の味が濃いですね。美味しすぎて、ご飯食べきった後に自然薯だけで1株全部いただいちゃいました😋

この他、丹波黒豆甘納豆は開封して写真撮った後にペロリ。
和歌山県産 紀州南高 はちみつ梅も、作業しながら食べてたら無くなってました😅
残るは、丹波黒大豆、平成29年新米丹波篠山コシヒカリ2kg、小豆です。
豆ご飯炊いちゃおうか、それともお正月にお餅と一緒にアンコにして頂いちゃおうか。
悩ましいですねぇ😋
大自然の恵み、ありがとうございます🙇

ユニクロ ヒートテック エクストラウォーム再び

昨シーズンは、ユニクロ ヒートテック エクストラウォーム タイツを買ってズボンポカポカでした。
今年は、長袖シャツ買おうかと思って物色していたのですが、たまたまボーダーの型落ち品が安く売られていたので買ってきました。
Mサイズのヒートテック フリースモックネックTが最近ブカブカ気味だったので、先日Sサイズの物をやっぱり型落ち特価で買えたのですが、それに合わせてコレもSサイズにしてみました。
ボディサイズはピッタリなのですが、袖が8分袖ぐらい短いんですよね😅
インナーなので人目につく事ないから着ちゃおうと思ってますが、袖の長さで服選ぶ日が来るとは夢にも思ってませんでした。

そして、靴下もついにヒートテック🧦
筋トレ中の床の冷たさが厳しくなる季節突入なので、さんざん悩んだ末に買ってきました。
というのも、今まで愛用していたのが100円ショップで1足108円の物で、コレは特価ながらも2足990円と5倍の価格。
実際に履いてみると、さすがにお値段5倍だけあって保温効果は抜群でした。
履き心地も良くて、今のところ伸びてずり下がるような事もありません。

ヒートテック極暖のおかげで、今シーズンはまだウルトラダウンライトの袖を通していません。
富士山登山の時は、コンパクト軽量でとてもお世話になったんですけどね。

今週のダイエットサマリーはコレで終わり。
地元春日部の中央町第4公園は、紅葉🍁眺める前にゴッソリ落ち葉に。
これを集めて焚き火ついでに焼き芋したら美味しそうですが、市内公園はすべて火気厳禁です。
野焼きも禁止されているので、お店で買うか自宅のキッチンで焼くかして作って食べるのが無難ですね。

今週もお読み頂きありがとうございました。
次回もお楽しみに😉

2017年11月20日月曜日

11月第2週(11/12~11/18)ダイエットサマリー 体重増加
今週の家電

元祖タワー丼🗼

週末、久々にスカイツリーへ行き、そば処 かみむらで昼食に元祖タワー丼をいただきました🗼
サクサク大きいエビが3尾とかき揚げが乗ったドンブリは食べごたえ十分。漬物はサッパリしていて、お味噌汁も出汁が効いて美味しかったです。
また、添えてある大根おろしが口の中をサッパリさせてくれます。そして、ドンブリのタレがお好みでかけられる所もユニークなポイントだと思いました。
美味しかったです。ごちそうさまでした。

そして体重も登る

再び増加し始めた体重。食べれば増えます。
今週はイレギュラーな食事が多かったので、それがグラフに出てます。
色々やってて夜更かしの日も多く、気がつけば夜が明けていた日も。
減量ダイエットには急ブレーキかかっちゃいましたが、その分得られるモノも大きかったので、私の中ではヨシとしています。
毎日測って、毎週ブログを書いて、自覚して。
自分に厳しすぎるのも体にも精神にも良くないので、適度な息抜きと自分なりの落とし所も大切かなと思います。

体重増えても筋トレはいつも通り

どんな状況でも、体は鍛え続けています。ある意味、これも息抜きの1つです。
そして、ペースを崩さない事。体重が増えたからと、焦って運動量増やすのは返ってダメにします。
体を動かすのには限界があるので、食事や生活習慣のバランスを考え、トータルで取り組む事が大切です。

今週の家電

新しいシーリングライト アイリスオーヤマ LED シーリングライト ~12畳用 CL12D-5.0を買いました。
先日、帰宅してダイニングキッチンの蛍光灯を付けたら、ポンと音がして点かなくなってしまいました。
カバーを開けると、蛍光灯の端子付近が3管あるうち2管が真っ黒で寿命かと思いました。しかし、それとは関係ない常夜灯も点かなかったので故障と判断。
使用頻度の低い部屋から一時的に持ってきて、コレが届く間代用していました。

Amazonのタイムセール&割引クーポンというコンボ技が使えたので即ポチし、発送後にヤマト運輸の営業所留めにして、自分の都合の良い時間に取りに行ってきました。
受け取ったらビックリ。箱は小さいし軽いし。自転車の後ろの荷台に括り付けて持って帰ってきたのですが、あまりに軽すぎて落とさないかと逆に心配になりました。
今まで色々なメーカーのシーリングライトを見てきましたが、LEDタイプは初めて。
開けたら見慣れぬ形状やパーツ構成で、説明書を読んで取付け方法を熟読してから作業開始です。

引掛シーリングローゼットにはいくつか種類がありますが、うちのは角型と呼ばれるよく見るタイプのモノです。
コレに、付属の角型用台座を取付けます。簡単な作りで、ただローゼットを挟んで止まるだけ。
シーリングライトを取付けた時に、ぐらつかないようにするためだけのスペーサーのようです。

次に、シーリングライト本体を直付けします。
カバーを片手で押さえながら、もう片手で真ん中をまわして取り外します。
ひっくり返すとこんな感じ。薄っすらとLEDのツブツブがたくさん見えます。

カバーを外した本体を、天井のローゼットに取付けます。 コネクタ付近が透明パーツなので、ローゼットへの位置合わせが目視できるのと、重量もかなり軽いので作業しやすかったです。
また、アダプタ方式でない分、余計な配線もありません。

カバーを付ける前に、壁のスイッチをオンにして点灯を確認。
予想以上の明るさでビックリしました。
最小の調光にしても全然明るくて、もう1つ小さい8畳用のCL8D-5.0や6畳用のCL6D-5.0でも十分な気もしました。
広さこそ12畳なのですが、明るさって壁紙や家具の色や配置でかなり変わってくるので難しいんですよね。

カバーを取付けてから常夜灯の確認忘れに気が付き、点けて写真を撮りました。見た目は電球と一緒ですね。
あと、本体が蛍光灯の時と比べ半分ぐらいの大きさなので、この小ささに慣れるまで少し時間がかかりそうです。
本体サイズは、この12畳用も8畳用も6畳用もすべて同じで、中のLEDの数が違うだけらしいです。
おそらく、調光範囲も1LEDあたりの階調は同じだと思うので、眩しすぎるのは困るって人は1サイズ小さいモノを選んだほうが良いかもしれません。

おまけ

注文していたエスプレッソマシンで使うためのミルクピッチャー(ミルクジャグ)が届きました。
日本国内だと選択肢が少ないので、海外からのお取り寄せ。それでも、このメモリ付きのタイプは選択肢が少なかったです。

実際に使い出すと、このメモリが地味に便利で、牛乳を入れる量がビシッと決まります。
温め加減は、底に手を添えながらスチーミングしていき、持てないぐらい熱々になったらちょうどいいみたいでした。
ラテアートとかは程遠いものの、きめ細かいクリーミィなフォームミルク作るには、ステンレス製のミルクピッチャーって必須ですね。

ダイエットサマリーはこれで終わり。
11月14日は埼玉県民の日で、無料開放された施設のうち越谷市のキャンベルタウン野鳥の森と花田苑に行ってきました。
人馴れしてるのか、近づいても逃げる気配がまったくなく、目の前で写真撮らせてもらいました。

この日も自転車でやってきたのですが、越谷市に入ったら雨模様に。
花田苑も雨に打たれながらの見学になってしまったのですが、紅葉が綺麗でした🍁
庭園内の茶屋で抹茶とお菓子もいただきましたが、霞がかった風景もまた風情かな。

今週もお読み頂きありがとうございました。 次回もお楽しみに!

2017年11月17日金曜日

Raspberry Pi+Raspbian stretchでwkhtmltopdfを使ったホームページ画像化しGoogleフォトにアップロードする

事の発端は毎週のダイエットサマリーブログ

毎週掲載しているダイエットサマリーブログで、体組成データや筋トレチェック表を画像化して掲載しています。
以前ご紹介した画像化の方法でしばらく使っていたのですが、OSアップデートによる変更で動作しなくなったり、SDカードの破損で運用そのものが危ぶまれたり、踏んだり蹴ったりのトラブル続出で使用中止していました。
代替案で、他の端末からスクリーンショットをアップロードして使っていたのですが、その作業がとにかく面倒くさい😭
Raspbian stretchで強化されたセキュリティ関連のクセが、やっとここに来て飲み込めて来たので楽したくて再チャレンジしました😤

wkhtmltopdfに巡り合う

あれこれ探した末に見つけたのがwkhtmltopdfでした。
Google製のアプリで、HTMLレンダリングエンジンWebkitを使って展開し、それをPDFや画像ファイル化するためのものです。
対応OSもWindows・macOS・Linuxに対応しているので、私のようにあれこれ使う人にとってはとても助かります。

Raspbian stretch LITEにインストールするも動かず

インストール方法は、おなじみのaptを使います。

sudo apt-get install wkhtmltopdf
使い方は、下記のコマンドです。
wkhtmltoimage [URL] [画像ファイル]

Raspberry Pi Zero Wで使ってみたのですが、下記のようなエラーが出て動きません。

QXcbConnection: Could not connect to display
中止
フレームバッファが必要なのかも。

仮想フレームバッファ Xvfbで実行

前回画像化でも使った仮想フレームバッファ Xvfbを今回も使います。
まずは、インストール。

sudo apt-get install xvfb
次に、仮想フレームバッファをこのアプリで作成し、そこでwkhtmltopdfを実行します。
xvfb-run -a -s '-screen 0, 1024x768x24' wkhtmltoimage [URL] [画像ファイル]
これで、どんな環境でも使えると思います。

出来た画像ファイルをupload-gphotosGoogleフォトへアップロード

使わせていただいているブログサイト Bloggerの記事作成機能はとても便利で、Googleフォトの画像も直接貼り付けられます。
そこで、HTMLから作った画像を、upload-gphotosGoogleフォトへアップロードします。

upload-gphotosはTypeScriptで書かれていますが、JavaScriptへトランスパイルされたモノがnpmでインストール可能なので、今回はそれを使わせていただきます。

node.js、npm、nを最新に

Raspbianに標準インストールされているパッケージが古く、そのままでは動きません。
そこで、最新版のインストール作業から始めます。

まず、パッケージリストを更新します。

sudo apt-get update
次に、npmをインストール。
sudo apt-get install -y npm
次に、npmの最新版をインストール。
sudo npm install -g npm
npmをnpmでインストールってなんかだか不思議な感じですけどね😅
このブログを書いてる段階のRaspbian最新版September 2017では、下記のようなエラーがでます。
/usr/bin/env: ‘node’: No such file or directory
これは、node.jsのコマンドであるnodeがないために出るエラーです。nodejsという古い名前のままなので、nodeという名前でリンクを作ります。
sudo ln -s /usr/bin/nodejs /usr/bin/node
そして、再びnpmの最新版をインストールするコマンドを実行すると処理が始まります。 npm最新版になったら、次はnode.jsのバージョン管理パッケージnをインストール。
sudo npm install -g n
やっと、本題の最新版node.jsのインストールです。
sudo n stable
もし、最新バージョンがリリースされているにも関わらずError: invalid version~というエラーが出た場合、そのバージョンのターゲットCPUのパッケージがまだアップロードされていない可能性があります。
Raspberry Piは、現段階でARMv6/7/8の3種類のCPUアーキテクチャ商品があります。Raspberry Pi 2 V1.2と3(コンピュータモジュール含む)がARMv8、Raspberry Pi 2 V1.1がARMv7、その他はARMv6です。ARMv8は64bitアーキテクチャなのでARM64としてリリースされてる事が多いですが、Raspbianは互換性維持のために32bitで動かしているので実質ARMv7と思って良いと思います。
ご使用のRaspberry Pi用CPUアーキテクチャパッケージがアップロードされていない場合は、
sudo n [バージョン番号]
直接バージョン番号を指定してインストールしてください。
あるかどうかの確認は、ダウンロード先のnodejs.orgにブラウザでアクセスし、バージョン毎にディレクトリ(フォルダ)が分かれているので、その中にlinux-arm~l.tar.gzってのがあるか確認し、ある中から最新バージョンのモノを指定してください。
念のため、インストールしたnode.jsのバージョンを確認しておいてください。
node -v
もし、古いバージョンのままの時はリンク先が古いものを指してるはずですので、最新版に変更すればOKです。

upload-gphotosをインストール

ここまで来たらもう一息!
upload-gphotosのページの下のInstallationのnpm (Recommended)を参考にインストールします。
スーパーユーザーでインストールするので、sudoを付けて実行してください。

sudo npm install -g upload-gphotos
使い方はこんな感じ
upload-gphotos [画像ファイル名] -u [Googleフォトユーザー名] -p [パスワード] 
ログインエラーが出た場合、安全性の低いログイン技術を使ったアプリの利用許可がされていない可能性があります。 安全性の低いアプリによるアカウントの使用を許可するの説明を参考に、安全性の低いアプリの許可にアクセスして有効にしてください。

シェルスクリプトでサクッと実行

準備は整ったので、これを組み合わせて簡単に実行でいるシェルスクリプトを作ります。
便宜上スクリプト名はhtml2pngとします。

nano html2png
#!/bin/bash
# 一時ファイルを作る
tmpfile=$(mktemp --suffix=.png)

function rm_tmpfile {
  [[ -f "$tmpfile" ]] && rm -f "$tmpfile"
}
trap rm_tmpfile EXIT
trap 'trap - EXIT; rm_tmpfile; exit -1' INT PIPE TERM

xvfb-run -a -s "-screen 0, 1024x768x24" wkhtmltoimage --width $2 $1 "$tmpfile"
upload-gphotos "$tmpfile" -u [ユーザー名] -p [パスワード]
出来たら実行権限を追加します。
chmod +x html2png
使い方はこんな具合。
html2png [URL] [横幅px]

upload-gphotosでちょっと気になった不具合

例によって、Raspberry Pi Zero W+Raspbian Stretch Ver.September 2017ベースで試していたのですが、upload-gphotos実装直前までこぎつけて不具合を見つけました。それは、他のRaspberry PiからSSHコマンドを使ってリモート実行した時に起こりました。

1つ目は、アップロード時のプログレッシブバーが表示されません。
wkhtmltopdfのプログレッシブバーや他の文字は表示されているので、upload-gphotosで使われてるモジュール固有の問題のようです。
原因を調べてみると、TTYチェックしてる部分があってそうじゃない場合はそもそも表示しないようなのです。
なぜ除外してるかさらに調べた所、1行の長さを取得してる部分があってそれがTTYじゃないと取得できず、仮にチェックを無効にしてもその後の処理でエラーになってしまいました。
まぁ、仕様通りの動作ですし、進捗状況が未表示でも問題ないので、このまま使わせていただく事にしました。

問題だったのはもう1つの不具合でした。
アップロード終了後に諸々の情報を表示して終わるのですが、それがSSHコマンドからの直接実行だと終わらないのです。
通信処理を非同期で行っていて、それをメインモジュールで同期モードで動かしてるようなのですが、TypeScriptとJavaScriptのトランスコンパイルの部分で仕様差が吸収出来てないような気がしました。
そのままではいろいろ困るので、cli.ts(cli.js)の末行付近にある

console.info(JSON.stringify(photos, null, 2));
の次の行にプロセスの終了命令を追加しました。
process.exit();
これで、終了しない不具合は解消されました。

最後の最後でまさかの!?

やっとブログも書き終わる!と思った矢先に、まさかの不具合発覚。
曜日が表示されていないのです。なぜ?どうして??
原因は簡単でした。日本語フォントがインストールされてなかったんです😅
ということで、Google Noto Fontsをインストール。
sudo apt-get install -y fonts-noto

無事に曜日が表示されました。

お読み頂きありがとうございました。
次回もお楽しみに!

2017年11月14日火曜日

Pimoroni Button SHIMを動かしてみる

Pimoroni Button SHIMを実際に動かしてみる

ロングピンヘッダーソケットを取り付けたPimoroni Button SHIMの準備が整ったので、Raspberry Pi Zero Wのチェックも兼ねて動かしてみます。

OS Raspbianの準備

Raspbianは、GUI環境のDESKTOP版と、CLIのみの軽量なLITE版があります。
迷った時は、大は小を兼ねるのでDESKTOP版がオススメですが、その分サイズも大きく書き込みに時間がかかり大容量SDカードも必要になるのでLITE版もメリットがあります。
今回は、GUIを使わないのでLITE版を使います。
OSはディスクイメージファイルになって、公式ページのDOWNLOADSからダウンロードします。
DOWNLOAD ZIPとDownload Torrentの2種類のダウンロード方法があって悩ましいのですが、BitTorrentを使われてる方ならDownload Torrentのほうが若干早いです。BitTorrentは、ちょっと小難しい話になるので今回は割愛します。

イメージの展開はEtcherを使うと簡単です。
アプリをインストールした後起動し、ダウンロードしたイメージファイル(ZIPを展開した後のファイル)👉SDカードを指定👉実行
この他にも色々な方法がありますが、簡単で早くて対応OSもWindows・mac・Linuxに対応していて、さらにコマンドライン版もあるのでオススメです。

次に、起動前の/bootパーティションの設定を行います。
Raspberry Pi Zero Wは、OTGスレーブモードと呼ばれるUSB直結でSSH接続できる機能があるのでその設定から。

  1. SDカードの/bootパーティション(WindowsならSDカードを差した時に見られるドライブ)にssh.txtというファイルを作ります。中は空っぽでOKです。0バイトでも1バイトでも構いません。作り方はテキストエディタなりコマンドラインなりで適当に作ってください。
  2. config.txtの最後にdtoverlay=dwc2の1行を追記します。
  3. cmdline.txtの末尾に、改行せずスペースを1つ入れてmodules-load=dwc2,g_etherを追記します。

無線LANの設定もしちゃいます。/bootパーティションにwpa_supplicant.confというファイル名で下記の内容のファイルを作ります。

country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
  ssid="[SSID名]"
  psk="[パスフレーズ]"
}
起動時にこのファイルが/etc/wpa_supplicant/wpa_supplicant.confに上書きムーブされ、/bootに作ったファイルは消えます。

これで、OSの入ったSDカードの作成は終わりです。
OTGスレーブモードで起動する場合、Windowsはそのままでは認識しません。あらかじめ、AppleのiTunesかBonjourをインストールしておいてください。
macOSはそのままで大丈夫です。Linuxは、、、わかりません😅

Raspberry Pi Zero Wを起動

出来上がったSDカードをRaspberry Pi Zero Wに挿し、PCに接続して起動します。
最新版では、初回起動時にSDカードの容量最大までパーティションの拡張処理をするので少々時間がかかります。以前は、raspi-configでやらないとしてくれなかったのですが。
本体の緑色LEDの点滅が収まって、点きっぱなしになったら起動完了。
SSHクライアントアプリでraspberry.localにアクセスすると接続出来ます。
コマンドライン版なら

ssh pi@raspberry.local
これで繋がります。初期パスワードはraspberryです。
raspberry.localのraspberryはホスト名なので、起動後にraspi-configなどで変更した場合はその名前になります。

I²Cの設定と確認

Pimoroni Button SHIMは、I²C(あいすくえあどしーorあいあいしー)接続のボタン・LEDボードで、TCA9554A I/O エクスパンダが使われています。
Raspberry Piの学習で良くある、GPIOにLEDやスイッチを繋いで操作するモノとは違い、4線接続だけで5つのボタンと1つのフルカラーLEDを操作できる便利なボードです。
Raspbianは、初期状態でI²Cが無効になっているのでその設定をします。

raspi-configを起動します。
sudo raspi-config
すると、画像のような画面が出てきますのでInterfacing Optionsを選んでエンターを押します。

次に、I2Cを選んでエンターを押します。

I2Cを有効にする?と聞かれるので矢印キーでYESを選んでエンターを押します。
するとちょっと間があき、有効になった確認画面が出るのでエンター。
最初の画面に戻るのでESCキーを押し、再起動するか?と聞かれるのでそこで再起動してください。

再起動してSSHで再接続したら、今度はi2c-toolsをインストールします。
sudo apt-get install i2c-tools -y
完了したら、そのままi2cdetectを実行。
i2cdetect -y 1
画像のように3fという表示が出てれば、Raspberry Pi Zero WにButton SHIMが認識されています。
もし、表示されていない場合は何らかの不具合です。

Pimoroni Button SHIMの商品ページ下に、Softwareという説明があります。
そこのButton SHIM Python libraryのリンクを押すと、Githubに移動します。
その下の説明にあるFull installの指示に従って、サクッとインストールします。

curl https://get.pimoroni.com/buttonshim | bash
完了するまで少し時間がかかります。終わるとPimoroniというディレクトリが作られます。
試しにサンプルプログラムを動かしてみましょう。
python Pimoroni/button-shim/examples/rainbow.py
実行すると画面にButton SHIM: rainbow.py~とメッセージが表示されます。
そこでButton SHIMのボタンA~Eをそれぞれ押すと、ボタンごとにLEDが点灯して色が変わります。
終わらせるときは、CTRL+Cを押すとプロンプトに戻ります。

サンプルプログラムは、rainbow.pyを含めて全部で3つあります。
volume.pyは、音量を変えたりミュートしたりする事ができます。なお、EボタンのHold to power offは、ボタン長押しするとLEDが点滅するだけで何も起きません。
keyboard.pyは、SSH接続では何も起こらないのですが、モニタを接続しているとキーボード入力と同じようにボタンごとにA~Eが入力されます。ただし、使うためには準備が必要で、

sudo pip install evdev
このコマンドを実行してevdev Pythonパッケージをインストールしなくてはならないのと、
実行にroot権限が必要なのでsudoを付けなくてはなりません。
sudo python Pimoroni/button-shim/examples/keyboard.py

なんとなくボタンが追加されるだけだろうと、軽い気持ちで注文購入したPimoroni Button SHIMでしたが、使ってみると結構面白く、またとても難しいです。
提供されるライブラリは、標準でボタンを押したとき、放したとき、長押しした時の3つのイベントが使えます。
サンプルコードでは5つあるボタンを個別に押して使っていますが、工夫すると複数ボタン同時押しに機能を持たせる事も可能です。
また、Raspberry Pi Zero/Wにはイヤホンマイク端子がありませんが、HDMI接続すれば映像と一緒に音声も出力できます。そこで、Pygameモジュール集を使い、ボタンを押した時に効果音を付けるだけでもピコピコ鳴って楽しいです。

1つ忘れていましたが、作業が終わって電源を切る時はシャットダウンしてください。

sudo shutdown -h now
そのまま電源切っても平気な場合がありますが、アプリによってはちゃんと終了処理してあげないと、次回起動時に立ち上がらなくなる事があります。
何らかの事情でシャットダウン出来ずにそのまま電源を切ってしまったときに、起動しようとしたらエラーが出て起動できなくなる事があります。そうした緊急事態に備えて、何か冒険したい時は安定して使える状態のSDカードをイメージバックアップして、いつでも元に戻せるようにしておく事をオススメします。

お読みいただきありがとうございました。
次回もお楽しみに!

2017年11月13日月曜日

Raspberry Pi Zero Wを買ったのでGPIOピンヘッダ取付け

スイッチサイエンスRaspberry Pi Zero W抽選販売に当選

ダイエットサマリーでお知らせしたとおり、スイッチサイエンスのRaspberry Pi Zero W抽選販売に当選したので買っちゃいました。
Raspberry Pi Zero同様、これもGPIOにピンヘッダが付いていないので、それを取り付けるところから始まります。

いつも通りハンダ付け

今は、金槌で叩き入れるだけで取付けられるGPIO Hammer Headerという便利なヘッダーピンがあります。
スイッチサイエンスでも販売されているので、これで楽させてもらおうかとも思いましたが、やはりハンダ付けは電子工作の醍醐味。
ということで、普通の2×20 ピンヘッダを一緒に購入し、今回もいつも通りハンダ付けする事にしました。
中学生の頃から使い続けてる愛用のgoot CA-40 キャップ付きはんだこてを引っ張り出してきて作業開始です。

ピンヘッダーを現物合わせし、OKならはんだ付けを始めます。
ひっくり返して作業するので、Raspberry Pi本体がうまく水平になるように高さ調整します。

とりあえず、ピン1本を仮付けし、ピンの樹脂パーツがしっかり基盤に接地してるのを確認します。
ここで斜めになってるようなら、熱くならない部分のピンを指で押し付けながら、仮付けしたハンダをこてで溶かせばスッと入るので、すぐにはんだこてを離せば固まってしっかり止まります。

あとは、サクサクと1ピンずつハンダを流し込んでいきます。
それにしても、今の基盤ってとてもハンダ付けしやすいですよね。良く乗ります。
乗りが悪いときは、フラックスを塗るとよくなります。
ハンダがなかなか溶けない時は、はんだこてのコテ先が汚れてる可能性が高いです。
その時は、クリーニングスポンジに当てて汚れを取るか、それでもダメならヤスリで擦ると良くなります。汚れが熱を伝えにくくしているために起こります。

今回も上出来。40ピンのはんだ付けが出来ました。
使ったハンダは、もうかれこれ30年以上前のものですが大丈夫でした。

はんだ付けは電子工作の醍醐味よねぇ♪
Raspberry Pi Zero Wの完成です。

悪戦苦闘のButton SHIMロングピンヘッダハンダ付け

BME680ボードと一緒に買ったPimoroni Button SHIMでしたが、スタック用のロングピンヘッダソケットを付けたくて、部品が手に入るまで取付けを保留してました。
標準サイズのモノが秋葉原でも売られて無く、海外サイトで見つけたので注文して届くのを待っていたのですが、スイッチサイエンスでも取扱があってしかも安い!
2つあっても何かに使うだろうということで、先に届きそうだったスイッチサイエンスにも発注し、それを取り付ける事にしました。

はんだ付け前にロングピンヘッダをRaspberry Pi Zero Wに差し込み、そこにButton SHIMを付けてみました。
そこでとんでもない事に気がついたのですが、縦に付けられてるボタンスイッチと飛び出しているピンの間が狭く、愛用のはんだこてのこて先が入れにくかったのです。

四苦八苦した上、なんとかはんだ付け出来ました。
Raspberry Pi Zero Wの3倍の作業時間。こて先を基盤に当てすぎると熱で壊してしまうので、作業中それだけがとても心配でした。

使いやすいAdafruit Raspberry Pi Zero用ケース

スイッチサイエンスからRaspberry Pi Zero Wと一緒にAdafruit Raspberry Pi Zero用ケースも購入しました。
ツメ止め式のケースでネジ止めはありません。Raspberry Pi Zero/W共用ですが、本体を入れるのに少々コツがいります。
GPIO部は上面だけ利用可能で、底面の穴はありません。また、GPIO37/39ピン隣にあるTV/RUN端子用の穴も蓋にはありません。
カメラケーブルとマイクロSDカードスロットは穴が開いています。
Pimoroniのケースには、マイクロSDカードスロットの穴が無かったので脱着の多い時に不便を感じてました。
今は、Raspberry Pi ZeroにBME280を取付けて2階の環境測定用に固定接地してるので、逆にホコリなどが入りにくい分良いのですが。

悪戦苦闘してロングピンヘッダソケットを取付けたButton SHIMをスタッキングしてみました。
この後、Raspberry Pi Zero Wで動作確認やソフトウェアの開発をするので、しばらくこの状態で使うことになります。
出来たらRaspberry Pi 2に付け替えて使うつもりなのですが。

作業を終えて一段落。
ふと、スイッチサイエンスから届いた箱の蓋の裏側を見ると
秋の夜長の電子工作 時間はたっぷりありますよ🍁
年度初めの慌ただしい春とは違い、いろいろな事に取り組みやすい秋。まさに電子工作の秋といった感じでしょうか。

お読みいただきありがとうございました。
次回は、Pimoroni Button SHIMを使う話を書きたいと思います。
お楽しみに!