2016/12/09

コーヒーメーカーをハックした話

 この記事はCPS Lab Advent Calenderの9日目の記事です。
8日目: 研究室の Raspberry Pi (1才2ヶ月)に愛着が湧いている
10日目: 

はじめに
11階になぜコーヒーメーカーがあるか,まずそこからお話したいと思います.
わたしがラボに配属された2014年,その時は今のようにラボにはコーヒーを飲む文化がありませんでした.普段から家でコーヒーを飲んでいたわたしはラボに残留するようになってから,ラボでもコーヒーを飲みたいと思いコーヒーセットを持ち込んだのが始まりでした.

持ち込んだ当初は自腹を切ってコーヒー豆を買っていたのですが飲みたいという人が増えるようになり今でも続く20円課金システムが作られました.
システムが出来てうまく回るかのように見えたこの頃ひとつの問題が出てきました.それはわたし以外の人がうまくコーヒーを淹れられないという問題でした.

この問題を解決するためにハンドドリップを練習すればよかったものを,ちょうどこの頃セブンイレブンが100円のドリップコーヒーを始めたのもあり,均一な味を保証するためにコーヒーメーカーを買おうという流れになってしまい購入が決まりました.


コーヒーメーカー
買った当初は頻繁に使っていたコーヒーメーカーですが,アニメご注文はうさぎですか?の影響もありラボメンがハンドドリップの勉強をして淹れるようになったり,片付けと準備のめんどくささも相まって次第にホコリをかぶるようになっていきました.

ネットワークアタッチドコーヒーメーカー
コーヒーメーカーがホコリを被るようになって一年ほどたった頃日本でESP8266という激安wifiモジュールが流通をはじめました.これの習作として作ったのがネットワークアタッチドコーヒーメーカーです.

声に出してmaimaiに頼むと女の子の声で美味しいコーヒーを作ってくれるのでなかなか面白かった.
この頃はまだブレッドボードに実装されていたため先生がお客さんに「これすごいんですよー!」と言って説明するたびにどんどん壊れていってしまう大問題が起きていました.
そして壊れて誰も使わなくなった .


その後
ハックの影響でもともとあった物理ボタンが使えなくなったこともあり,誰も使えなくなってラボの片隅でホコリを被っているコーヒーメーカー,流石にオブジェとして置いておくのも邪魔なのでユニバーサル基板に実装し直してコーヒーメーカーにマウントさせるようにして復活させました.



・使い方
蓋をあけてドリッパーにコーヒーフィルターをセット
水タンクにの飲みたい量の水をセット
挽いたコーヒー豆を必要量フィルターにセット
大きな声で「OK maimai  コーヒー淹れて!」とmaimaiにお願いする
暫く待つとコーヒーの出来上がり

このコーヒーメーカー本当はコーヒーの好みに合わせて”うすい”,”ふつう”,”こい”の三種類の抽出方法が選べる仕様でしたがハックする際に手元にあったリレーの数の問題で”こい”しか選べないようになっています.これもmaimaiの愛嬌ととらえてもらえれば苦くても飲める!……はず

2016/12/04

スピーカーの電源を遠隔操作するIoT機器を作った話

この記事はCPS Lab Advent Calenderの2日目の記事です。
1日目:残留申請 Neo を作った
3日目: 岩井研残留日誌

日頃から残留したりラボのテレビを使ったりしたことがある人は,一度は使ったことや見たことがあると思うこの黒い箱についてのお話です.
アブソリュート・デュオのリモコン
まず,この黒い箱について説明する前に「アブソリュート・デュオ」システムに関してです


「アブソリュート・デュオ」システムとは
 このシステムはラボのネットワークとテレビの後ろにある 光る箱で構成されるシステムで,箱の中にはSpark CoreというWiFi接続可能なマイコンが入っていてこれが持っているAPIにアクセスすることでスピーカーの電源のON/OFFをしています.
テレビの裏の光る箱


どうしてスピーカーの電源を操作するのか
ラボのテレビには大迫力でコンテンツを楽しむためスピーカーが取り付けられています.
しかしこのスピーカーなぜか突然音が出なくなる時があります.そんなときに音が出るように戻すためにはこれまでの検証でわかっている方法は
1.テレビの音量をものすごく上げる
2.スピーカーの電源を入れ直す
の 2つがあります.1はテレビのリモコンが手元にあれば実践できますが音が戻ったときに大音量が流れてしまい下手したら近隣の研究室から苦情が来る可能性があるためあまりおすすめ出来る方法ではないです.
2はとても安全に行なえますが,わざわざスピーカーのもとまで歩いていかなければいけないためとっても面倒です.
そこで安全に音を出せる2を発展させて開発したのが「アブソリュート・デュオ」システムです.

黒い箱はなんなのか
3Dプリンタで出力された黒い箱,あれの中にはTwe-Lite(トワイライト)という超低消費電力で動作できる無線モジュールが入っています.
Twe-Lite
箱についているスイッチが押されると,これが無線を飛ばしてSpark Coreを操作……としたいところですがあいにくTwe-Liteが扱える無線はWiFiではないのでAPIを叩くことが出来ません.そこで一度RaspberryPiに受け取らせてそこからAPIを叩くようにしています.現在はmaimaiを運用しているRaspberryPiに電波受信用のTwe-Liteをつけてそこと通信しています.

クライアントいろいろ
このシステムは最初に説明した通りAPIを叩くことで動作します.なのでラボ内のネットワークにつなぐことが出来る端末ならなんでもアクセス可能なため,この黒い箱以外にもmaimaiやAndroidアプリ,Webアプリと行ったクライアントが存在しています.
ハードウェアのAPIを叩くのがIoTデバイス作成の大きな一歩になると思うので興味のあるB3生は是非クライアント開発やってみてください


2016/02/14

win10でログイン時にbluetoothキーボードを使う

すっごく久しぶりの投稿

年も明けて,新しくwin10のデスクトップマシンを組みました.
ケーブルばっかりのデスク周りをすっきりさせようと思い,bluetoothキーボードを購入しました.

これまで専用のドングルを使う無線キーボードを使ったことはあったのですがbluetoothキーボードの使用は初めてになります.

使ってみてしばらくして問題が発生......なんとログイン画面ではペアリングが行われていないためパスワードを入力するには,USBキーボードを使うかスクリーンキーボードで入力するかの方法しかない.

これだとせっかく無線化してデスクをすっきりさせる計画が台無しなのでいろいろ試行錯誤して解決しました.


やったことはbluetoothのペアリングを行うタスクの起動タイミングの調整です.

タスクスケジューラを起動して右側のウィンドウで[タスクスケジューラライブラリ]→ [Microsoft]→[Windows]→[Bluetooth]と移動




そこに出てくる”UninstallDev...”を右クリックでプロパティを表示
トリガータブに移動して新規追加











タスクの開始を”スタートアップ時”に設定してOK



これでリブートしてうまくログイン時にペアリングきていれば成功

元から存在しているタスクをいじるのでもしかしたら問題が発生するかもしれません.
ここに書いてあることを実行する場合は自己責任でお願いします.

2015/09/23

Twe−Liteでのファームウェア開発

最近ラボの実験で東京コスモス社から出ている無線モジュールのTwe−Liteでのファームウェア開発を行っています.
これの開発を行うまでの敷居が自分にはかなり高く最初いくつか躓いたところがあったので,実験が終わったらその部分を書き残していこうと思います.

2015/09/06

zsh_historyがおかしい

何らかの原因でシェルでコマンドを打つと
zsh: corrupt history file /home/pi/.zsh_history
と表示されるようになってしまった

zsh_historyを見てみるとおかしな行があった


150行目が明らかにおかしい
ここを修正したら元通りに使えるようになった

2015/08/26

RaspberryPi2のセットアップ2

以前無事に起動用のSDカードを作ったので次は起動して初期設定

まずはラズパイにwifiドングルとキーボードを挿してHDMI接続してログイン
ログインすると raspi-configが立ち上がる
まずはここで expand_rootfsの設定変更  これでSDカードの全容量を使用することが出来る
 
raspi-configを抜けだしたらstartxでデスクトップ環境を立ち上げる

ちなみに使用したwifiドングルはこれ↓
PLANEX 無線LAN子機 (USBアダプター型) 11n/g/b 150Mbps MacOS X10.10対応 GW-USNANO2A (FFP)
プラネックス (2013-09-06)
売り上げランキング: 341
デスクトップ環境で右上にあるアイコンをクリックして適当に自分のwifi環境を設定する


これができたらSHHするためにifconfigコマンドを叩いて自分のIPアドレスを調べる
デスクトップ環境での設定はひとまずこれだけ

自分のメインマシンからのほうが環境構築がしやすいのでSSHしながらシェルの設定gitの設定を進めていく

しばらくSSHしながら設定していくときにどうも反応が遅いことに気がついたためしにラズパイにpingを投げてみると平均50ms以上......遅い時には100ms以上かかるときもある

原因を探ってみると 無線LANのUSBアダプタのパワーマネジメント機能という物のせいだとわかった
このサイト(http://denshikousaku.net/fix-sluggish-response-of-raspberry-pi-wifi-adaptor)を参考にパーワーマネジメント機能の切り方3を試したら応答速度が劇的に改善された

パワーマネジメント機能はwifiネットワークがしばらく使われていないと自動的にセーフモードになる機能らしい.SSHしてしばらく考え込んでいるとすぐにこのモードに入ってしまうので再立ち上げまでに時間がかかって反応が悪かったみたいだ

今回このパワーマネジメント機能をオフにしたがラズパイの消費電力は5Wほどとたいして多くないので ,24時間一ヶ月稼働させていたとしても100円かからないくらいなのであまり気にしない方向でいこうと思う

2015/08/16

RaspberryPi2のセットアップ1

MacでRaspberryPi2のセットアップをしました.
2といってもやることはこれまでのラズパイと同様で起動用のSDカードを作るだけ.
ただ久しぶりにやったら書き込みのところですこしつまってしまった.



手順としては,最初にここから最新版のrasbianイメージをダウンロード
https://www.raspberrypi.org/downloads/

次にそのイメージをddコマンドでSDカードに書き込むだけなのだが二度も失敗した...ヽ(`Д´#)ノ

ddコマンドで書き込む前にSDカードをFATでフォーマットする





ディスクユーティリティでRASPIと名づけてフォーマット


%df -h
Filesystem      Size   Used  Avail Capacity  iused    ifree %iused  Mounted on
/dev/disk1     373Gi  118Gi  254Gi    32% 30974348 66681898   32%   /
devfs          189Ki  189Ki    0Bi   100%      655        0  100%   /dev
/dev/disk0s4    92Gi   77Gi   15Gi    84%   368543 16000081    2%   /Volumes/BOOTCAMP
map -hosts       0Bi    0Bi    0Bi   100%        0        0  100%   /net
map auto_home    0Bi    0Bi    0Bi   100%        0        0  100%   /home
/dev/disk2s1    15Gi  2.3Mi   15Gi     1%        0        0  100%   /Volumes/RASPI 

dfコマンドで先ほど作ったディスクのデバイスの場所を確認
disk2s1と書いてあるがこれが罠だった(# ゚Д゚)
どうやらこのdisk2s1はSDカード内のパーティションを表しているらしい
なのでddコマンドでここに書き込むとラズパイに正しく認識されない

正しいコマンドは

%sudo diskutil unmount disk2s1
%sudo dd bs=1m if=2015-05-05-raspbian-wheezy.img of=/dev/disk2

になる
ddはifで書き込み対象のイメージofで書き込み先のディスクを指定している
bsオプションは書き込みを早くするためのおまじない
これで作られたディスクがちゃんとMacに認識されていれば成功だ
自分の環境だとbootという名で認識されていた

2015/08/15

iterm2の終了設定

わたしは,Macのターミナルソフトとしてiterm2を使っています
このiterm2の良さはショートカットキーを押せばいつでもどこでもターミナルを呼び出せるところにあります.が,ショートカットキーで呼び出すためにはiterm2を起動しておく必要があります.そのためにMac起動時にiterm2も起動するように設定しています.

ただデフォルトだとこのiterm2は終了するときに


このようなダイアログボックスが出てきます.
このダイアログボックス何が問題かというと,Macのシステムを終了しようとした時にも出てきてOKを押すまでシステムが終了できないというところに個人的に不便さを感じています.しかもこのダイアログボックスがウインドウのかなり下の方に埋まっていることが多いです.

そこで設定を変えました.⌘+,で設定画面を呼び出して


Closing項目にある Confirm "Quit iTerm2 (⌘Q)" command のチェックを外します.
これで個人的に不便さを感じていたところが解消出来ました.

2015/08/13

ダイソーのLEDライトを分解

近くにパーツショップがない状態で急きょLEDが欲しくなったのでダイソーで「ショートランチャー9LED」という名前のLEDライトを購入した.





これを分解するときにちょっとコツが必要だった

まず最初に下部をひねって電池を取り出す


するとこんな感じでLEDが乗ってる基板が見える

そこで,これの外し方だが手前に引っ張っても外せない
なのでマイナスドライバーと木槌を使って基板の四隅を叩いて押し出す


そうすることで,まず表についてるクリアパーツががずれて,次に銀色のパーツが外れ,最後に基板が出てくる.

今回はLEDだけが欲しかったので基板を壊す覚悟でマイナスドラーバーを使って押し出したがすべてのパーツで破損場所を出すことなく取り出すことができた.

2015/07/22

macの外付けキーボードの設定

最近MacBook Airの英字配列キーボードに慣れてしまったせいで別で使っているノートPCでも英字配列のThinkPadキーボードを使うようになった。

このキーボードをMacBook Airで使おうと思ったときに組み込みキーボードで変更していた設定が適応されていないことに気がつたのでその解決法を


まずは環境設定を開いてキーボードの項目を開く

その中の修飾キーの項目を開く


 キーボードを選択のプルダウンメニューを組み込みキーボードから外付けキーボドに変更
今回はCapsLockをつぶしてControl に変えたかったのでそこだけ設定を変更

特に設定しないでもWinキーはComandキーとして動作する…がこのキーボードにはWinキーがひとつしかついていない。普段は右Control空打ちでカナ、左Control空打ちで英字の切り替えをしている。この設定が物理的に使えない

そこでKarabinerのForJapaneseの中にあるFor Unix Usersの設定を追加した