ラベル Raspberry Pi の投稿を表示しています。 すべての投稿を表示
ラベル Raspberry Pi の投稿を表示しています。 すべての投稿を表示

2017年11月5日日曜日

10月第5週(10/29~11/4)ダイエットサマリー 体重は富士山🗻
不整脈の原因特定
Raspberry Pi関連
今週の家電

紅葉の季節🍁

秋深まり、木々も紅葉する陽気になりましたね。
寒暖差が大きくて、服選びが悩ましいです。
先週の台風21号に続き、今週も台風22号の襲来でスタートしましたが、幸い前回ほどの被害は無かったので長距離サイクリングしてきました。ロードバイクならなんてこと無い距離なのでしょうが🚲
途中でニャンコ先生と遭遇したので、1枚撮らせて頂きました。まったく相手にされなかったのですが😅

体重はまるで富士山🗻

体重のグラフは、まるで富士山のごとく、登りきって再び下がり始めました🗻
そんな感じで、やっと63kg台に到達。
献血が無いおかげで、採血可能判定の血液検査のプレッシャーが無い分、色々無茶な事も出来ます。
食事をとるタイミングは食欲任せで、以前のように1食だけだったり、2食でも少食だったりする事が増えてきました。
その結果がコレなのですが、そもそも健康的な食事をとっていたら減量ダイエットは難しいと思います。成長期の子供は別として、成人が体重の増減を伴う食事は不健康とされます。
人間の体は、都合よく減らしたい部分だけを減らす事はできず、すべてが連動して生かされる仕組みになっています。
そこを色々考えながら、減量ダイエットの過程でフォローしていくのが難しいのですが。

筋トレは今週も予定通り

今週は、自転車のロングライドが2回ほどあったので、疲労と時間の関係で厳しかった日がありましたが、なんとか普段通りフィニッシュしました。
体重が減少傾向にある時の筋トレは、空腹と疲労と倦怠感との戦いなので、やるのが結構キツイです。
それでもやり続けられるのは、最低限コレだけは続けるという日課みたいになってるからだと思います。
そろそろ、ランニングをしたい気分です🏃

不整脈の原因特定

10月第3週ダイエットサマリーで書いたホルタ心電図の解析結果が病院に届いたので、再び来院しました。
結果は、運動誘発性不整脈。治療の必要の無い不整脈でした。ただ、運動時や運動後の心拍数が最大170bpmという時があり、そのために心拍数を下げる薬の処方を勧められました。しかし、私が副作用の懸念を伝えると、経過観察にして頂けました。
献血についても相談しましたが、そもそも論の部分で勧められず、これについては全ての健常者含めての話だったので自己判断にさせていただきました。
1度、運動中を含めた心拍数の変化や心電図って見てみたかったので、とても良い貴重な機会でした。

診察が終わった後、病院近くの魔女のコッペパンに寄って2つ買いました。中身は、大人のハムサラダと抹茶有機あんこです。
ふとGoogle Mapsのお店情報を見ると、8月に長期休暇していたために店じまいと勘違いされたのか閉業扱いになっていたので、申請して復活させていただきました。
2017年11月22日には、浦和駅東口の浦和パルコ地下1階にも出店されるとのことなので、自動車での来店でも買いやすくなるのでは無いか?と思います。

Raspberry Pi関連の事

前回の記事でご紹介した英Pimoroni BOSCH BME680ですが、試行錯誤の末にRaspbianにデーモン化して実装出来ました。
Pythonアプリを、ここまで大々的に書くのは初めてだったので骨が折れました。マルチスレッド化やデーモン化ってちょっと普通の書き方と違うので。 Githubで公開しようか迷ってて、そこで必要なマークダウンファイルの書き方を今探っていたりしています。
コードがとにかく汚いわりに、仕事はちゃんとしてるので出すかわかりませんけどね😅

今までサポート機で使っていたRaspberry Pi Zeroと、置き換えで余ったBME280を使って2階の計測をはじめました。
複数箇所のデータ計測を想定して作っていたので、サクッとできちゃいました🍪

Raspberry Pi Zero Wを買っちゃいました。
スイッチサイエンスの抽選販売に申し込んだら当選。
ちょうど病院にいた時にそれを知って、診察順を待ってる間に他のモノを見ながら散々悩み、何とか送料無料3000円分注文して2日後に届きました。
レビュー記事はまた後ほど。

久々に家電買っちゃいました

久々に家電を買っちゃったので、勝手に1コーナー新設😅
ツインバード工業 サイクロン スティック型クリーナー TC-EA35Wです。
以前書いた9月のシルバーウィークの旅で、宿泊先のお宅で掃除する時に使わせて頂いたのがコレだったのですが、とても使いやすい上に調べたら値段もお手頃だったので買っちゃいました。
同社のスティック型サイクロンクリーナーの中では吸引力が弱いほうなのですが、他社製のロングホースと違って本体と吸込口がとても近いのでロスが少なく良く吸ってくれるんです。
そして、コンパクトさゆえにダストボックス容量が少ないものの、紙パックを使わないのでマメに捨ててもフィルターが壊れない限り経済ロス資源ロスゼロ。
長い棒は脱着可能で、スイッチがこの棒にも本体にも付いてるので、コマメにスイッチのオンオフが可能。だから節電にも効果的。
音が大きいのが気になりますが、これだけ軽くてコンパクトだと楽にマメに掃除機かけられるので気に入りました。

今週のダイエットサマリーはおわり。
新しい掃除機で掃除してたら、無くしたと思っていたマイクロSDカードのレシートを見つけました。
このマイクロSDカード、長らくRaspberry Pi 2で使っていたのですが、再起動時にカーネルパニックが頻発して御役御免となり、他の用途で使ってみようかとCheck Flashで念のため調べたらエラーがいくつも出たので故障扱いにしました。
Silicon Power SP064GBSTXBU1V10SPという商品で、永久保証品だったのですが調べるとレシートや通販サイトの購入履歴が無いと保証を受けられないとの事。
それがヒョッコリ出てきたのでラッキーでした😁

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

2017年10月25日水曜日

英PimoroniからガスセンサーBOSCH BME680が届いたのでRaspberry Piで使ってみた

ついに発見!ガスセンサー BOSCH BME680

英PimoroniのTwitterで知ったBOSCH BME680ボードの発売。
自宅のエアーコンディションを調べてみたく、以前からガスセンサーを探していました。
アナログセンサーが有ることは知っていたのですが、それをRaspberry Piで利用するためには数値化するためのADコンバーターというのが必要になります。
その手間を惜しんで今まで保留にしていたのですが、I²C接続可能なコレの実装ボードが発売になったので即注文。
ちょっと高かったんですけどね😭

写真の右側が英Pimoroni BOSCH BME680ボード
左側は、次いでに注文したボタンを追加するButton SHIMボードです。

ヘッダーピンを取り付け

英Pimoroni BOSCH BME680ボードには2種類のヘッダーピンが付属していて、利用方法に応じて選択できます。
ただ、うちの場合はセンサーをアクリル板でサンドイッチして保護し、ボード横からケーブルを挿したいので、自前で用意したL型ヘッダーピンを使います。
I²Cで使うのは4ピンのみなのですが、Raspberry PiのGPIOに直刺し出来るよう、間にNCピンが追加されているので5ピン使います。

ピンを挿す穴が若干上下にズレているのですが、これは取り付けの際にピン動かないようにするためだと思われます。
だから、はんだ付けの前に差し込んで浮かしても落ちたりしません。
また、各ピンの印刷も両面に書かれているので、どちらから見てもひと目でわかります。
英Pimoroniのこういう細かい心遣いある作りは、地味にとても嬉しいです😁

1列5ピンのヘッダーピンははんだ付け楽でいいですね😅
コテ先にハンダを軽く付けて下準備し、コテ先をピンに当ててからハンダ線を当てて流し込んでいくイメージで。
今回も、我ながら上出来。テスターは当てず、ぶっつけ本番でいきます。

英Pimoroniで以前買ったRaspberry Pi Zeroと繋ぎます。
いつもなら、どれがI²CのSDAでSCLで、どこに電源とかグランドとか取る?と迷うのですが、直刺し想定のピン配列なので電源ピンさえ間違えなければ、あとは順番に挿してくだけなので楽です。
もちろん、NCピンをスキップするのも忘れずに。繋いでもいいですが使われないピンなので。

Raspberry Piでセンサー値を読み取る

今回は、ブログ用にこの段階で最新のリリースデート2017-09-07からSDカードにOSを書き込んで使いました。
今のOSイメージって便利なもので、I²C関連のコマンドやPython Libは最初から入っているので、raspi-configでI²Cを有効にするだけで使えちゃいます。
念のため、下記コマンドで有効になってるかを確認します。
sudo i2cdetect -l⏎
そして、オプションを変えて下記コマンドで接続されてるI²Cのスレーブ機器のアドレスを確認します。
sudo i2cdetect -y 1⏎
画像のように76という数字が出ていればOKです。出てないとRaspberry Piが認識していない事になります。
このアドレスはボードにも書かれていて通常はOKなのですが、もし0x76アドレスが接続されてる他のI²Cスレーブ機器と同じようなら、ボードのADDRをショートさせれば0x77にする事が出来ます、多分。
多分というのは確認してないからなのですが、一応BME680の仕様では可能なので多分出来ると思うのですが。

今回は、英PimoroniGitHubで公開されてるPython Libを使わせて頂きます。
Clone or Downloadのボタンを押してZIPファイルをDownloadし、フォルダ解凍します。今回は、/home/pi/Downloads/bme680-masterと便宜上します。
GitHubのBME680 Python Libトップページ下のインストール手順に従ってLibをPythonにインストールします。
libraryディレクトリ直下にあるsetup.pyにinstallのオプションを付けて実行するだけです。
sudo python setup.py install⏎
出来たら、examplesディレクトリ直下の3つのコマンドどれか実行すればセンサー値が表示されます。
まずは簡単な所で、温度・気圧・湿度の表示コマンドから。
python temp-press-hum.py⏎
画像のように、すごい勢いでズラーと表示されていくと思います。

次は、ガスセンサーも含んだすべてのセンサー値を表示してみます。
こちらも下記コマンドを実行するだけです。
python read-all.py⏎
最初にキャリブレーションデータとかイニシャルリーディングとか色々出ますが、まぁ気にしないでください。BME680のデータシートを読むと何となくわかると思いますが、全部英語で頭痛くなると思うので😅
temp-press-hum.pyを実行した時のように温度・気圧・湿度が表示され、その後ろにOhmsという数値がありますが、これがガスセンサー値でΩ(オーム、抵抗)です。
最初のうちは、このガスセンサー値が時々取得出来なくて飛び飛びになることがあります。
他のセンサーと違ってウォームアップのために値が安定するまでに時間がかかります。
その辺の話は次のコマンドで説明します。

3つのサンプルコマンドの最後の1つindoor-air-quality.pyを実行します。
python indoor-air-quality.py⏎
画像には「sec」の値がありますが、私自身で追加した項目です。
実行直後にコレクティング ガス レジスタンス バーンイン データ 5ミンって英語表示されますが、これがウォームアップの事で5分間センサーを動かし続けてガスセンサー値が安定するのを待ちます。

5分後にガスセンサー値の基準値と湿度の基準値(こっちは決め打ちで40%RH)が確定するので、それからズラズラとガスセンサー値と湿度、内部的に算出したエアークオリティ値とその数字に対する状態(この画像ではアベレージ、平均的)が表示されます。
これは、ISO16000-29 VOC検知器評価法に基づいたもので、揮発性有機化合物(VOC)の待機中の濃度から大気が綺麗かどうかを評価しています。

システムに組み込んでいて気がついた不便な点

あらかじめ用意していたPythonスクリプトが役に立たない事がわかり、1から作り直してなんとかBME280と置き換えられました。
しかし、問題点も見つかりました。それは、ガス値を読み取る時に今の方法だと毎回5分もかかるということ。
その解決案として、デーモン(Windowsでいうサービス)で起動時に立ち上げてBME680の初期化と取得を行ない、センサー値の欲しいアプリはそこに問い合わせて拾ってくる方式。

Twitterをお休みして、こちらに全力投球中なのですが前途多難です。

2017年6月26日月曜日

6月第3週ダイエットサマリー 停滞
今週のアウトドアツール
久々のRaspberry Piネタ
お料理アイテム

🚲サイクリングで榎本牧場へ🐮

今回2度目のサイクリング🚲 de 榎本牧場🐮にきました
住んでる春日部から片道20km以上ある道のりを1時間ちょっとかけてやってきました。
遠くもなく近くもなくの丁度よい距離と時間なので運動するのにいいんですよね😁

体重は停滞

ロカボ生活を再開してはじめての停滞期を迎えています。
前回と違い夕食をガッツリ摂っていて、最近よく走っているサイクリングの距離やコンディションによってかなり増減が激しいのでこういうグラフになるのはやむを得ずかと思っています。
また、第2週17日(土)に会食で串揚げを沢山食べたのでその影響も出ています。
減りはせずとも増えない戻さないが大切です。自分を信じて続けるのみですね。

今週も筋トレ完走

継続は力なり💪
今週も筋トレやり遂げました。メニューを変えることなく同じことの繰り返し。だけど、これがとても重要です。
もちろん高負荷かけ時間をかければ、それだけのリターンが筋肉にでます。
だけど、飽きて続かなかったら元も子もありません。
とにかく続けること。これが大切です。

今週のアウトドアツール

鹿番長のアレ買っちゃいました。
アレとはキャプテンスタッグ アルミ ロールテーブルのこと。あまりに有名すぎてブランド名にちなんで、キャプテン(=団体の長)とスタッグ(=雄鹿)をもじって鹿番長呼ばれ、そのアレだけで通じる有名商品。Amazonでも「鹿番長のアレ」で検索出来てしまう商品になってしまいました。
それをたまたま榎本牧場へのサイクリングに立ち寄ったリサイクルショップで540円(税込)で発見。即買いでした。
残念ながら付属の収納袋が無かったのですが、状態の良いものがホムセン価格の1/3程度だったので良い買い物でした。

アウトドアツールと呼べるかわかりませんが、ミリタリーショルダーバッグを買いました。
たまたまお手頃サイズお手頃価格で見つけたので即ポチり。10日間ぐらいで届きました。
Pouch Attachment Ladder System (=PALS:パルス)対応のバッグで、対応商品同士なら後付でポーチを取り付けたりほかのバッグにくくりつけたり出来るとても便利なバッグです。
スマホ収納ポーチやボトルポーチなんかもあるので、追々買い揃えて拡張していきたいですね。

久々にRaspberry Piネタ。Geekworm UPS HAT Board

長らく悩まされてきたトラブルが解決出来るかもしれません♪
Geekworm UPS HAT Boardを買いました。2000円ぐらいでした。
その名の通りRaspberry PiにUPS機能を追加するボードで、3.7V2500mAhというスマホ並の大容量リチウムイオン電池も付属してます。

バッテリーはオプション扱いで付けてもらいました。
ボードの仕様が謎めいていたのですが、調べてみるとMaxim Integrated MAX17048というマイクロパワー電流残量ゲージICが搭載されていて、独自のアルゴリズムで電池の状態を監視し電池残量を取得できるようでした。
今回付属したバッテリーは2500mAhというものでしたが、この容量は決め打ちではなくなんでもOKのようです。

早速取り付けてみたところ、今まで使っていたケースでは入らない事が判明。
外装を取っ払い下のトレイだけを残し、適当なケースが見つかるまでしばらく裸族で使う事にしました。
放熱面でも上部が塞がるとあまりよろしくないので、逆にこのほうが良いかもしれません。
適当なスペーサーが無かったのでしばらくピンヘッダに頑張ってもらおうと思いますが、バッテリーもそこそこ重いので早めに調達したいと思います。

使い方にクセがあって、UPS HAT側に通電しても充電が始まらず50%止まりでした。
Raspberry Pi本体側に電源ケーブルを挿しつつ、UPS HAT側から給電するとRaspberry Pi側の電流が0Aを示していたのでそのままバッテリー0%まで放電。
すると本体側の電源ケーブルの電流が以前の通りに戻りました。
再びUPS HAT側に電源ケーブルを挿して充電するも本体側の電流が0Aにならず不安に。
結局、UPS HATについてる電源ボタンの状態によって給電されたりされなかったりするようで、それがまだよく理解出来ていません。
もう少し使い倒したら別記事に起こしたいと思っています。

何気に便利なくっつくにくいアルミホイル

最近ミートローフ作りにハマっているのですが、はじめて作ったときに使った牛乳パックではくっついてしまって大変に。それじゃってんで家にあったアルミホイルを入れてみたらやっぱりくっつきます。
何か良い方法が無いか?と思って見つけた解決策の1つがコレでした。

ダイソー くっつきにくいホイル 108円(税込)
ノンスティック(テフロン)加工のフライパンと同じように、アルミホイルにノンスティックコーティングを施したモノです。
本当にくっつかなくて焼型から外すのも楽ちん。ノンスティック加工の耐熱温度は300℃程度と言われているので200℃のオーブンでも使えます。

Twitterではしばらくナイショにしていたのですが、出来栄えが綺麗だったのはこのおかげでした。
ノンスティック加工の焼型もあるので要検討なのですが、それまではしばらくこのアルミホイルと焼型で頑張ろうと思います。

ということで、今週のサマリーブログはコレでおしまい。
缶詰のラベルが無いだけでミリメシっぽく見える不思議。
これ、中身何か?というとランチョンミートです。ロカボとヤマメシを共存共栄すべく試している食材の1つです。
もうすぐ富士山🗻山開き。そしたら、新たに改築された郵便局のお引っ越しが始まり開局予定も発表になるでしょう。
私の人生はじめての富士山登山チャレンジの予定はそれから決めるつもりです。

<お詫び>
前週記事タイトルが6月第1週となっていましたが、6月第2週の間違いでした。
すでに訂正済みです。ごめんなさい🙇

2016年8月31日水曜日

Raspberry Pi+RaspbianでHTMLを画像化 する

Twitterは140文字の制限があるため、 URL分の23文字を消費するかわりにそれ以上の情報を画像として掲載する事があります
私のアカウントでも 自前のホームページ(HTML)を画像化して良く掲載するのですが、それをRaspberry Pi + Raspbianで作っています。
今回はその作り方を紹介します。

CutyCaptをインストール

まずCutyCaptをインストールします。

$ sudo apt-get install cutycapt⏎
インストールができたら試しに実行してみます。
$ cutycapt⏎
cutycapt: cannot connect to X server
するとこういうメッセージが出ます。X serverに接続できませんでしたというメッセージです。
このアプリはX Window Systemと呼ばれるLinuxではメジャーなGUIが使われている ため、CLIで実行するとこのようなエラーメッセージが表示されてしまいます。
このままでは使えないため、X Window System をCLIで仮想的に動かすソフトをインストールします。

Xvfbをインストール

X Window SystemをCLIで仮想環境を作り出すXvfbをインストールします。

$ sudo apt-get install xvfb⏎
インストールが完了したら試しに実行してみます。
$ xvfb-run --auto-servernum --server-args="-screen 0, 1024x768x24" cutycapt⏎
Xlib:  extension "RANDR" missing on display ":99".
 -----------------------------------------------------------------------------
 Usage: CutyCapt --url=http://www.example.org/ --out=localfile.png
 -----------------------------------------------------------------------------
  --help                         Print this help page and exit

〜 省略 〜

  --http-proxy=             Address for HTTP proxy server (default: none)
 -----------------------------------------------------------------------------
   is svg,ps,pdf,itext,html,rtree,png,jpeg,mng,tiff,gif,bmp,ppm,xbm,xpm
 -----------------------------------------------------------------------------
 http://cutycapt.sf.net - (c) 2003-2010 Bjoern Hoehrmann - bjoern@hoehrmann.de
こんな感じで表示されれば成功です。

HTMLを画像化してみる

まず、 画像化するためのホームページを用意します。
今回は 説明の便宜上、このホームページURLをhttp://localhost/weightview.phpとします。

下記コマンドを実行します。

$ xvfb-run --auto-servernum --server-args="-screen 0, 1024x768x24" cutycapt --url=http://localhost/weightview.php --out=out.png⏎
--url=が画像化するURL、--out=が出力する画像ファイル名です。

実行したディレクトリ直下にout.pngというファイルが出来ます。
もし、余白が気になるようならオプションで--min-width=が横幅 --min-height=が縦幅で指定すると縮める事が出来ます。

シェルスクリプトで簡単実行

Xvfb +cutycaptを毎回コマンドラインで 打つのは長いですよね。
そこで、それを簡単に使うためのシェルスクリプトを作ります。

$ nano html2png⏎
↓↓↓ 編集内容 ↓↓↓
#!/bin/bash
/usr/bin/xvfb-run --auto-servernum --server-args="-screen 0, 1024x768x24" \
/usr/bin/cutycapt --url=$1 --out=$2 --min-width=$3 --min-height=$4
↑↑↑ここまで↑↑↑
 $ chmod +x html2png⏎
これで出来上がり。
試しに実行してみます。
$ html2png http://localhost/weightview.php out.png 800 800⏎
これで画像が できたら完成です。

応用範囲が結構広い

今まではクライアントコンピュータのOSのスクリーンショット撮影機能で対応していたのですが、毎回それが手間 でした。
また、範囲指定もマウスでゴリゴリするので、微妙に差が ありました。

今回の仕組みを作ってからSNSへのアップロードも楽ちん♪
画像レイアウトも作ろうか検討中です。

2016年8月9日火曜日

Raspberry Pi 2+RaspbianでOpen JTalk Ver.1.09をコンパイルしインストール

前回Raspberry Pi 2+Raspbianをお話できるようにしましたにて 、Open JTalk Ver.1.07をインストールしました。
しかし、この バージョンでは音量オプション -gが使えません。

そこで、今回は最新版であるOpen JTalk Ver.1.09をコンパイル・インストールして使えるようにしてみたいと思います。
hts_engine APIをコンパイル
Open JTalkhts_engine API を使っています。
Open JTalkコンパイルに先立って、まずコレをコンパイルします。
ディレクトリをホームに戻します。
$ cd
ソースコードをダウンロードします。
$ wget http://downloads.sourceforge.net/hts-engine/hts_engine_API-1.10.tar.gz
そして、これを解凍します。
$ tar zxvf hts_engine_API-1.10.tar.gz
解凍が終わったら解凍したディレクトリに移動します。
$ cd hts_engine_API-1.10
コンパイルのための設定ファイルを作ります。
$ ./configure
できたらコンパイルします。
$ make
完了すると/home/pi/hts_engine_API-1.10に実行日の日付で新たなファイルが 追加されたりします。
作業が完了したら、次の作業のためにcd⏎でホームディレクトリに戻しておいてください。
Open JTalk Ver.1.09をコンパイル
Open JTalkのサイトからVer.1.09のソースファイルをダウンロードします。
$ wget http://downloads.sourceforge.net/open-jtalk/open_jtalk-1.09.tar.gz
解凍します。
$ tar zxvf open_jtalk-1.09.tar.gz
解凍先 のディレクトリに移動します。
$ cd open_jtalk-1.09
コンパイルのための設定ファイルを作ります。
下記コマンドは改行せず1行で入力してください。
もし、長すぎて改行したい場合は\(バックスラッシュ)を区切る行末に入れるとできます。
$ ./configure --with-charset=UTF-8 --with-hts-engine-header-path=/home/pi/hts_engine_API-1.10/include --with-hts-engine-library-path=/home/pi/hts_engine_API-1.10/lib
できたらコンパイルします。
$ make
動くかどうか確認してみます。正常な場合はVer.1.09の確認が出来ます。
$ ./bin/open_jtalk
root権限でインストールします。
$ sudo make install
動くかどうか確認してみます。 パスが通っていれば下記コマンドのみで実行可能なはずです。
通ってない場合はフルパス/usr/local/bin/open_jtalkで実行してみてください。
正常な場合はVer.1.09の確認が出来ます。
$ open_jtalk
作業が完了したら、次の作業のためにcd⏎でホームディレクトリに戻しておいてください。
Open JTalk 辞書ファイルをコピーする
Ver.1.07の辞書ファイルをそのまま使う事も可能ですが、Ver.1.09の辞書ファイルは若干容量が増えているので何らかの追加がされてるようです。
そこで、最新の辞書ファイルをコピーします。
Open JTalkのサイトからVer.1.09の辞書ファイルをダウンロードします。
$ wget http://tenet.dl.sourceforge.net/project/open-jtalk/Dictionary/open_jtalk_dic-1.09/open_jtalk_dic_utf_8-1.09.tar.gz
解凍します。
$ tar zxvf open_jtalk_dic_utf_8-1.09.tar.gz
root権限でコピーします。
$ sudo cp -r open_jtalk_dic_utf_8-1.09 /var/lib/mecab/dic
前回Raspberry Pi 2+Raspbianをお話できるようにしましたにて作成したjsayを書き換えます。
$ nano jsay
修正箇所は下記の赤字の箇所の部分
#!/bin/bash
tempfile=`tempfile`
echo "$1" | open_jtalk -m /usr/share/hts-voice/mei/mei_normal.htsvoice -x /var/lib/mecab/dic/open_jtalk_dic_utf_8-1.09 -ow $tempfile
aplay -q $tempfile
rm $tempfile
CTRL+X→Yで保存終了。
実行出来るかどうか確認してみます。
$ jsay 本日は晴天なり
特段これといった変化はないのですが、動作確認 の意味でやってみてください。
音量を変えてみる
Ver1.09で追加された音量オプション -gを試してみます。
jsayスクリプトに オプションを追加します。
$ nano jsay
修正箇所は下記の赤字の箇所の部分
#!/bin/bash
tempfile=`tempfile`
echo "$1" | open_jtalk -g $2 -m /usr/share/hts-voice/mei/mei_normal.htsvoice -x /var/lib/mecab/dic/open_jtalk_dic_utf_8-1.09 -ow $tempfile
aplay -q $tempfile
rm $tempfile
CTRL+X→Yで保存終了。
音量が変わるかどうか確認してみます。
音量が小さくなっていれば 成功です。
$ jsay 本日は晴天なり -20
音量は+数字で音量が大きくなり、-数字で小さくなります。
オマケでマスターボリュームの 変え方
マスターボリュームの変え方は2種類あります。
視覚的に変更する場合はこのコマンドで出来ます。
矢印キー↑↓で上げ下げできます。
$ alsamixer
次に、コマンドラインのみで直接変える方法です。
%の所の数字を大きくすると音量も大きくなり、小さくすると音量も小さくなります。
$ amixer cset numid=1 90%
なお、現在の 音量を確認したい場合は、%の数字を書かずに実行すると valuesの数字で確認できます。
表示になるminとmaxは%指定では なく数字で指定した場合の有効範囲です。
最後に
Open JTalkをRaspberry Pi+Raspbianにインストールする方法を解説した記事は他にもあります。
今回あえて執筆した理由は、バージョンアップによって音声定義 ファイルが.htsvoiceに変更になり、やり方が変わったため最新の手順ということで書きました。
ネット上には古いタイプの音声定義ファイルも残っていてそのままでは使用できません。
もし試してみたい場合は、.htsvoiceに変換する必要があります。
その手順に ついては、既存の記事で対応出来るようなので探して みてください。

2016年8月5日金曜日

Raspberry Pi 2+Raspbianをお話できるようにしました

Raspberry Piの処理結果を得る方法は色々考えられます。
その中から今回は音声合成を使った音の出力をしたいと思います。
準備
今回はRaspberry Pi 2を使います。
Raspberry Pi 2は、音声出力の方法としてHDMIとステレオミニジャックの2種類あります。
スピーカー内蔵モニタならHDMIを、音声のみならステレオミニジャックにスピーカーを接続すると良いでしょう。

ステレオミニジャックを使う場合、出力レベル(音量)がとても低く、イヤホンを使ってやっと聞ける程度です。
大きい音を出したい場合は、相応のスピーカーとアンプが別途必要になります。
接続したのは、100円ショップで購入したモノラルスピーカーx2台でステレオ化したモノとヘッドホンアンプ FiiO E5です。
家にあったものを流用しただけなので、新たに購入されるならアンプ内蔵のモノが安く売られてるのでそちらのほうが良いでしょう。
音声合成ソフト Open JTalk Ver.1.07をインストール
OSは標準的なRaspbianを使っています。
Open JTalkは、入力された文字を元に音声ファイル(wavファイル)を作る音声合成ソフトです。
インストールするパッケージ3つ
  • open-jtalk(Open JTalk本体)
  • open-jtalk-mecab-naist-jdic(辞書)
  • hts-voice-nitech-jp-atr503-m001(音声データ)
コマンドラインから下記をコピペしてインストールします。
$ sudo apt-get install open-jtalk open-jtalk-mecab-naist-jdic hts-voice-nitech-jp-atr503-m001
試しに実行
コマンドラインから下記をコピペして実行します。
$ echo "本日は晴天なり" | open_jtalk -m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice -x /var/lib/mecab/dic/open-jtalk/naist-jdic -ow test.wav
すると、実行した直下にtest.wavというファイルが出来ているはずです。
出来たファイルをパソコンで再生しても良いですし、Raspberry Piで再生する場合は下記のようにすると再生できます。
$ aplay test.wav
もし、再生した音量が小さい場合は調整してみてください。
$ amixer cset numid=1 100%
100%の部分を減らすと音量が下がり、増やすと音量が上がります。
視覚的に調整したい場合は下記コマンドでも出来ます
$ alsamixer
音声合成ファイル作成と再生をするシェルスクリプトを作る
コマンドラインで任意のテキストをお話させるシェルスクリプトを作ります。
スクリプト名はなんでも良いのですが、便宜上jsayとします。 エディタを起動します。
$ nano jsay
起動できたら下記のコードをコピペします。
#!/bin/bash
tempfile=`tempfile`
echo "$1" | open_jtalk -m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice -x /var/lib/mecab/dic/open-jtalk/naist-jdic -ow $tempfile
aplay -q $tempfile
rm $tempfile
コピペできたら、CTRL+X→Yで保存終了。
出来たシェルスクリプトに実行パーミッションを付加します。
$ chmod +x jsay
できたら試しに実行してみます。
$ jsay 本日は晴天なり
もし、お話させる文字列にスペースが入っていたりする場合はダブルコーテーション(")で括ってあげれば渡す事が出来ます。
女性の声に変えてみる
今度は女性の声で喋らせてみたいと思います。
MMDAgentのmeiという ボイスデータを使わせていただきます

まず、MMDAgentのサイトからSourceForge上に掲載されてるzipファイルをダウンロードします。
$ wget http://tenet.dl.sourceforge.net/project/mmdagent/MMDAgent_Example/MMDAgent_Example-1.6/MMDAgent_Example-1.6.zip
ダウンロードが完了したら 解凍します。
$ unzip MMDAgent_Example-1.6.zip
解凍したディレクトリMMDAgent_Example-1.6直下にある/Voice/meiディレクトリをまるごとrootオーナー/usr/share/hts-voiceにコピーします。
$ sudo cp -r ./MMDAgent_Example-1.6/Voice/mei /usr/share/hts-voice
jsayシェルスクリプトの-mオプションを変更します。
$ nano jsay
修正箇所は下記の赤字の箇所の部分
#!/bin/bash
tempfile=`tempfile`
echo "$1" | open_jtalk -m /usr/share/hts-voice/mei/mei_normal.htsvoice -x /var/lib/mecab/dic/open-jtalk/naist-jdic -ow $tempfile
aplay -q $tempfile
rm $tempfile
CTRL+X→Yで保存終了。
なお、実行パーミッションは変わらないのでそのままで大丈夫です。
できたら再び 試してみます。
$ jsay 本日は晴天なり
女性の声に変わりましたか?
meiの音声ファイルは今回変更したmei_normal.htsvoiceの他に、mei_angry.htsvoicemei_bashful.htsvoicemei_happy.htsvoicemei_sad.htsvoice などが あります。
-mの箇所を適宜変更して 聴き比べてみると良いでしょう。
気圧温度湿度センサー BME280の取得情報を 報告 させてみる
以前このブログで紹介した気圧温度湿度センサー BOSCH BME280で記録している情報をOpen JTalkで報告させてみました。



やり方は、センサーから読み取った 数字を喋らせたい定型文に埋め込み、それをjsayを使って喋らせています。
この要領で色々な活用方法が出来るでしょう。
音声合成ソフト Open JTalk Ver.1.07の 音量調整の難点
今回インストールしたOpen JTalk Ver.1.07 は古いバージョンで、最新はVer.1.09です。
単に喋らせるならば Ver.1.07でも問題なく使用できます。
それに対し、最新版のVer1.09には音量が調整できる-gオプションが追加になっています。
このオプションがあると他のアプリとの音量バランスの調整が可能になるため、 例えばBGM を再生中に強調した発声をさせてお知らせするような事が可能になります。
ただ、Ver.1.09は今回の インストールで使ったaptにはパッケージ登録されていないため 、自前で必要なファイルを用意してコンパイルしインストールする必要があります。

次回は、この手順について 書きたいと思います。

2016年7月7日木曜日

Raspberry Pi Zeroを使っていて気がついた事

2台目のRaspberry PiとなるZeroが届いて色々イジリ倒してるのですが、Raspbianを操作してる限りではRaspberry Pi 2との差をあまり感じません。
やはりサイズの小ささと価格が最大の魅力ですね♪
RaspbianからApache HTTP Serverが消えたわけ
Raspberry Pi 2で使っているRaspbianを最新バージョンのイメージファイルでクリーンインストールしなおし、そこに差分を当てる形でリフレッシュしました。
その作業で旧バージョンと異なる部分があったのですが、その中でも一番気になったのが

Apache HTTP Serverが入っていない

Apache HTTP Serverのドキュメントデフォルトディレクトリが/var/wwwから/var/www/htmlに変更されたり、セキュリティが見直されて動いていたものが動かなくなったりという事がありました。
また、大抵のサイトで解説してるapt-get update→apt-get upgradeというパッケージを最新状態にするコマンドもインストールされるライブラリの不整合で動かなくなる不具合があったので、環境が安定するまでアップデートを行わずに静観していました。
それが、OSのクリーンインストールではじめてデフォルト環境の変更を知ったので疑問に感じていたのです。

その疑問が解けたのがRaspberry Pi Zeroでした。
Raspberry Pi ZeroにはLANに繋ぐ手段が標準で付いていません。これはRaspberry Piシリーズの中でこの機種とCompute Moduleのみ。
Compute Moduleは用途が特殊なので例外として、低価格で入門用としても最適なRaspberry Pi Zeroの登場でハードウェア環境に合わせてOSのデフォルトインストール済パッケージも見直されたのだろうと、Raspberry Pi Zeroを触りだしてから気が付きました。
USB3.0 有線LANアダプタでも使える
Raspberry Pi Zeroに搭載されているUSBはUSB2.0です。
今回、Raspberry Pi Zeroで使ったアダプタはLogitec LAN-GTJU32という1000BASE-T対応のUSB3.0用を使いました。
普段はLenovo G580 26897JJで使っているのですが、使えたらラッキー程度で試しに接続してみたら特別な設定をする事なく使えました。
USB3.0の論理速度は5Gbps、USB2.0の論理速度は0.48Gbps。
100BASE-Tの論理速度は0.1Gbps、1000BASE-Tの論理速度は1Gbps。
早い話、USB2.0なら1000BASE-Tのほうが理論上は通信速度が速い事になります。
それじゃ実際どうなのか?ということで、Raspberry Pi 2+内蔵有線LANとRaspberry Pi Zero+Logitec LAN-GTJU32で、speedtest-cliを使って測定してみました。



シングルコアあたりの処理能力はほぼ同じRaspberry Pi ZeroとRaspberry Pi 2。
通信速度差はLANアダプタの差と思って良いでしょう。
Raspberry Pi 2は内蔵LANが100BASE-Tのため実測値として妥当な数字です。
一方、Raspberry Pi Zeroは1000BASE-TのアダプタをUSB2.0接続にしてるため最大論理値は480Mbpsとなります。
バックグラウンドで他のプロセスが実行されたシングルコアCPUにも関わらず、DLが100Mbpsを超えたのは大健闘でしょう。

スマホにもUSB3.1+USB TypeCコネクタの流れがきている今日このごろ。
Raspberry Piは、そんなスマホの発展によって成長した技術に支えられて低価格が実現したコンピュータです。
最新のRaspberry Pi 3は64ビットCPUや無線LAN&Bluetoothが搭載され益々スマホに近いスペックになっています。
今後の発展がとても楽しみです。

2016年7月5日火曜日

Raspberry Pi ZeroにOS Raspbianをセットアップ

前回までのトゥエンティー、、、ゲフン。
Raspberry Pi ZeroにGPIOのピンヘッダーをハンダ付けしてケースに組み付けた所までやりました。
ただ、このままだとSDカードが抜き挿し出来ないので、面倒ですがセットアップ中は一旦ケースから出して使いました。
ケーブルの取り付け
前回までに用意した変換コネクタやケーブル類、あと自宅にあるモノいくつか使って接続していきます。
HDMIはモニタ用のケーブル。microUSBコネクタは2つ付いてますが、真ん中のが周辺機器用でハジのが電源用です。

microUSBはそのままではタイプAと呼ばれる一般的なコネクタが物理的に挿せないので、microUSB変換ケーブル(OTGケーブル)を使って繋ぎます。
また、周辺機器用のコネクタが1つしかないのでUSBハブ経由となりますが、電流容量500mAが上限なので十中八九足りなくなります。
そのため、セルフパワータイプのUSBハブを使ったほうが無難でしょう。

今回取り付けたUSB機器はこちら
  • ワイヤレスキーボード
  • 有線マウス
  • 1000BASE-T有線LANアダプタ
microSDカードにOS Raspbianのイメージファイルを復元
今回もRaspberry Pi財団のRaspbianを使います。

まず、用意したSDカードをSD Formatterでフォーマットします。
これをする理由は、SDカードのチェックと不良セクタ(不良素子)を弾くのが狙い。
新規にイメージ展開する時も、バックアップイメージを展開する時も、この作業は必ずやったほうが良いです。

次に、ホームページからイメージファイルをダウンロードし、インストレーションガイドを参考にイメージファイルをSDカードに展開します。
展開し終わったらSDカードを本体に戻します。
目覚めよ!Raspberry Pi Zero!!
電源を入れてイザ起動!
もし、ここで運悪く接続漏れとか発覚して途中で電源を切ってしまうと、最悪SDカードに展開したイメージが破損します。
SDカードが物理的に壊れたわけではないので、その時はまた再セットアップしましょう

無事立ち上がるとGUIが立ち上がります。
初期設定では英語なので、左上のMenuをクリックしてPreferencesをクリック。
一番下のRaspberry Pi Configurationをクリックすると設定画面が開くので、上の右側にあるLocalisationタブをクリック。
そこで日本語設定します。

ただ、これだけだと文字化けするので、ターミナル(上にあるモニタみたいなアイコン)をクリックし、
$ sudo apt-get install ttf-kochi-gothic xfonts-intl-japanese xfonts-intl-japanese-big xfonts-kaname
と入力してフォントをインストール。再起動すると文字化けしなくなります。
コマンドラインも四角い文字で文字化けしますが、これはjfbtermというソフトをインストール・起動すると解決するのですが、そちらは別のサイトで解説されてるので検索して調べてみてください。
Raspbianを自分色に染め上げる
Raspberry Pi ZeroにRaspbianをセットアップして無事起動。
ただ、私は普段CLI(コマンドライン)しか使わないので、この後Configurationで起動時のモードをCLIにしたり、短縮コマンドのAliasを設定したり色々やります。
一通り済んだら念のためそこでイメージバックアップを取って作業終了。
今回は凝ったことしないお体なのであっさり終わりました。

一応、これでRaspberry Pi Zeroのスタートアップの話は終わりです。
次回は、作業中にわかったオマケ記事を書きたいと思います。

2016年7月3日日曜日

Raspberry Pi ZeroのGPIOにヘッダーピン立て

遠路はるばる海の向こうからやってきたRaspberry Pi Zero。

コストカットのためにGPIOにヘッダーピンが付いていません。
今回はそれの取り付け作業の話です。
取り付け準備
先日秋葉原で買ってきたピンヘッダーと本体を用意します。
ピンヘッダーは2.54mmピッチ 20ピンx2列=40ピン。
今回は標準的なサイズのオスピンを用意しましたが、ピンヘッダーにも色々な商品が出ていますので都合に合わせて選びましょう。

部品をRaspberry Pi Zeroの穴に差し込んでひっくり返し、動かないように養生テープのような粘着性の弱いテープで固定します。

段差もあるので工夫が必要なのですが、今回はかまぼこ板を3枚使ってうまく段差を作って固定しました。

写真では横置きにしていますが、ハンダ付け作業は縦置きのほうがやりやすかったです。
ハンダゴテを持つ利き手側にハンダ付けする列向けて取り付けていきます。
そのほうが余計な突起にコテ先が邪魔されず作業しやすかったです。

ひっくり返してSoC実装面を上に向ければ、見慣れたGPIOピンヘッダのついたRaspberry Piの姿になります。
このピンに様々な回路を接続してIoTしちゃいます。
ケースにIN!
ピン立てが完成したRaspberry Pi Zeroを一緒に買ったPibow Zero Case for Raspberry Pi Zero version 1.3に入れてみました。
綺麗なケースですよね。
ただこのケース、欠点があります。
本体を収納するとmicroSDカードの抜き差しが出来なくなります。
1度セットアップすれば当面は抜き挿ししなくなるので、大した問題にはならないとは思うのですが。
アクリル板をヤスリで少し削り、microSDカードに持ち手を付ければ抜き挿し出来るようになりそうですが。

形になってきたRaspberry Pi Zero。
次回はOSをセットアップして動かしてみたいと思います。