Arduinoとかのwebサイト始めました

どうも、お久しぶりです。
本当にお久しぶりです。

最近いろいろありましたが、何より5月。
実は5月生まれなんです。

そんなこんながあって、嫁の弟さんに、誕生日プレゼントとしてATmega328やらArduinoのパーツ一式とか、USB-シリアルモジュールなんかを頂きました。

喜び勇んで作って、ブログにエントリを書こうと思ったのですが、ブログって古い記事は流れちゃうんだよなぁ、と思い、
新しくWebサイトとして、ちゃんと書いてみました。

http://midohaji.ryokuondokei.com/

になります。

昔バイトで作った量産君というテンプレートエンジンを記憶の底から呼び起こして、最小スペックでクローン作って作り上げました。
このへんも、おそらく記事にします。

結局はArduinoクローンの制作に一番力入ってますが、お暇でしたら是非。

arrows zのルート奪取とソニエリLiveView

どうも。お久しぶりです。
今回は話が話なので、わかる人のみに向けです。
自己責任が取れない人は真似しないでください。
最近、ひょんなことからソニエリのLiveViewなんかを手に入れまして。
腕時計型のガジェットで、Android端末と繋いで色々しちゃう、新着メールなんかも見ちゃうというスグレモノです。

ですがこいつ、一つ難点がありまして。
Bluetoothなんで、すぐに切断されます。

一応切断されたら、右側のボタンを押すことによって再リンクするんですが、こいつがたちがわるい、接続するたびに「ペア設定リクエスト」なんてAndroid側に出てきて、いちいちタップしないと繋がらないんですね。
最初は我慢して使ってたんですが、どうも、腕時計で確認したいのにAndroidを出さないと駄目だという本末転倒的なことにイライラしてきて、何でか確認してみました。

色々なサイトを見ると、AndroidのGingerbredからこうなるとか、ソニエリ端末ではまともに動くとかそういう情報とともに、原因が。

/data/misc/bluetoothd/yo:ur:de:vi:ce:ad/linkkeys

の中の記述が

li:ve:vi:ew:ad:dr xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4 -1

となってるんですね。これはおかしい。本来は、

li:ve:vi:ew:ad:dr xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0 4

でないといけない。

という事で、root取得から書き換えまで、解説込みで行こうと思います。

まず、Android SDKが要ります。適当にインストールして下さい。
その後、ArrowsZのADBドライバ入れて、adb shellできるようにして下さい。これが大前提。
adb出来てるものとして話を進めます。

PCと接続跡、adb shellでシェルへ。
この段階では$です。一般ユーザです。

で、

cd /data/local

をタイプ。
lsで、motion_activemass02.dbが存在することを確認してから、あれば

mv motion_activemass02.db motion_activemass02.db-

してください。自分の環境にはありました。つまりこれで、退避させます。
次に、

ln -s /data/local.prop motion_activemass02.db

をタイプ。シンボリックリンク作成。つまり、motion_activemass02.dbへの書き込みは/data/local.propへの書き込みとするわけです。
こうすることによって、motion_activemass02.dbを書くとき、その持ち主が、/data/local.propを作ってくれるわけですね。で、こいつはroot:rootでさらに、666なのです。素晴らしい。

この状態で、設定→自分からだ設定→ウォーキング/Exカウンタ利用設定から「歩数計利用」にチェック付けて、少し歩きます。実際はチェックつけるだけでいいかもしれないです。で、チェック外す。
この間、ADBは閉じずにokです。
そうすると、なんと、/data/local.propが出来てると思います。root:root 666で。
こうすればしめたものです。
必要があれば、mv motion_activemass02.db- motion_activemass02.db で、退避したものを戻します。

次に、

echo ro.kernel.qemu=1 > /data/local.prop

で、/data/local.propに書き込みます。
これは、adbdで接続されるときにrootになりますよという印。
ここでパーミッションで蹴られなければ、ctrl+Cでadb shell抜けてから、

adb reboot

で端末を再起動します。

瞬時に、DOS窓やらターミナルから、

adb wait-for-device

を叩いておきます。
繋がった瞬間(コマンド抜けた瞬間)、adb shell rm /data/local.prop
を叩いてください。こいつが残ってるとそれなりに面倒なことになります。

欲を言えば、MacやらLinuxのターミナルから

adb wait-for-device & adb shell rm /data/local.prop

をたたいておけば万全ですね。

で、このあと、adb shellを叩くと
#
で、特権になってると思います。おめでとう。
su入れたい人は、ここで入れてくださいい。ただ、arrowsは/usr/xbin/suがあると起動しないので、su以外のファイル名にしてください。

次にLiveViewの設定。

cd /data/misc/bluetoothd

で、ディレクトリを移動して、

ls

を叩いてください。
あなたの端末のBluetoothMACアドレスで、

yo:ur:de:vi:ce:ad

があるはずです。
そのまま、

cat /data/misc/bluetoothd/yo:ur:de:vi:ce:ad/linkkeys

を叩くと、

li:ve:vi:ew:ad:dr xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 4 -1

と出るはずです。出なければ、ちゃんとAndroidとLiveViewが繋がってるか再確認してから、再度頭から手順を繰り返してください
(おそらくこの状態で設定のBluetoothは開けないはずです)
出れば、表示されたものを「li:ve:vi:ew:ad:dr xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx」までコピーし、

echo li:ve:vi:ew:ad:dr xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0 4 > cat /data/misc/bluetoothd/yo:ur:de:vi:ce:ad/linkkeys

と叩いて、adb shellを抜けて、

adb reboot

で、すべてがうまくいくと思います。
何の保障もしませんが、今のところ全アップデートかけてもこれで動いてます。

Android はじめました

 さて年始早々の電話のトラブルやらあれやらこれやらで、Android始めました。
 auのARROWS Zとやらです。店で決めました。2ch見たらスレが燃え上がっててワロタ。

 (以前のiPhoneは、電話のみ生きてて、持ってはいます。電源ボタンがひどく渋いのと電池の減りがひどい感じです。あと数ヶ月は多分出るのは出れます)
 アドレス帳もひどくタイムスリップしてしまっているので、もし連絡来てないよ!って人がいましたら前の携帯に送ってください。

 で、いきなりAndroidの壁に当たる。
 ……電池持たない。


 ということで、まず遊んだりメモとかまとめるアプリとか入れる前にTaskerを入れました。
 これがすごい。
 簡単に言うと、電話の設定変更や「状態変更」、メッセージやら着信やらの「イベント」等に対して、一連の作業を「タスク」として行うアプリです。

 要は、
 ★画面OFFになった
  →データ通信OFF,自動シンクロOFF
 ★画面ONになった
  →データ通信ON,自動シンクロON
 なんて感じの事ができます。

 これで、色々設定したところ、ちゃんと一日電池が持つようになりました。
 せっかくなので、作ったものを公開します。


画面OFF後2分でデータ通信OFF
 2分のゆえんは画面OFFしていきなりデータ通信がOFFになると、メール送信中でぽちっと画面を消したりしたときに困る。
 ので、コネコネしてあります。

Profile: 省電力スリープ
 [Context]
	Event: Display Off
	State: Not Power [ Source:Any ]
	State: Not Variable Value [ Name:%NOECO Op:Maths: Equals Value:1 ]
  [Enter]
	A1: Perform Task [ Name:savestate Stop:Off Priority:5 %par1: %par2: Return Value Variable: ] 
	A2: Perform Task [ Name:offdelay Stop:On Priority:5 %par1: %par2: Return Value Variable: ] 

サブルーチン
BlueTooth,Wifi,WiMAXの状態を保存。

 [Task]savestate
	A1: Variable Set [ Name:%ZBLUE To:%BLUE Do Maths:Off Append:Off ] 
	A2: Variable Set [ Name:%ZWIFI To:%WIFI Do Maths:Off Append:Off ] 
	A3: Variable Set [ Name:%ZWIMAX To:%WIMAX Do Maths:Off Append:Off ] 

2分待って、モバイルデータ通信をOFFにして、さらに全Bluetooth,WiFi,WiMAXをOFF。

 [Task]offdelay
	Abort Existing Task
	A1: Stop [ With Error:Off ] If [ %par1 ~ stop ]
	A2: Wait [ MS:0 Seconds:0 Minutes:2 Hours:0 Days:0 ] 
	A3: Perform Task [ Name:moboff Stop:Off Priority:5 %par1: %par2: Return Value Variable: ] 
	A4: Perform Task [ Name:alloff Stop:Off Priority:5 %par1: %par2: Return Value Variable: ] 

さらなるサブルーチン
モバイルデータ通信OFF

 [Task]moboff
	A1: Mobile Data [ Set:Off ] 

全部OFF

 [Task]alloff
	A1: Bluetooth [ Set:Off ] 
	A2: WiFi [ Set:Off ] 
	A3: WiMax [ Set:Off ] 

スリープから復帰(Unlock)
 ・復帰時、スリープ時の状態を(できるだけ)再現する。
 ・復帰時、一部データのSyncを行う。

Profile: スリープオフ
 [Context]
	Event: Display Unlocked
	State: Not Power [ Source:Any ]
 [Enter]
	A1: Perform Task [ Name:loadstate Stop:Off Priority:5 %par1: %par2: Return Value Variable: ] 
	A2: Perform Task [ Name:execsync Stop:Off Priority:5 %par1: %par2: Return Value Variable: ] 

・サブルーチン

 [Task]loadstate
	Abort Existing Task
	A1: Perform Task [ Name:offdelay Stop:Off Priority:5 %par1:stop %par2: Return Value Variable: ] 
	A2: WiFi [ Set:Toggle ] If [ %ZWIFI !~ %WIFI ]
	A3: WiMax [ Set:Toggle ] If [ %ZWIMAX !~ off ]
	A4: Bluetooth [ Set:Toggle ] If [ %ZBLUE !~ off ]
 [Task]execsync
	A1: Perform Task [ Name:mobon Stop:Off Priority:5 %par1: %par2: Return Value Variable: ] 
	A2: Wait [ MS:0 Seconds:10 Minutes:0 Hours:0 Days:0 ] 
	A3: Synker [ Configuration:Synchronize 3 providers. Continue Task After Error:On ] 
	A4: Perform Task [ Name:moboff Stop:Off Priority:5 %par1: %par2: Return Value Variable: ] If [ %RUN+%ACC = 0 ]
 [Task]mobon
	Abort Existing Task
	A1: Mobile Data [ Set:On ] 

 これで、画面OFF時に3分まってMobileDataをOFFに。
 アンロック時にMobileDataをONにするような感じです。
 画面OFFして、3分待っている間にアンロックされたときのために、synkoffdelayに再突入時、前回タスクを終わるようにAbort Existing Taskをしておいて、引数がstopの場合はそのまま終了(つまり前回タスクをキャンセルするのみ)するようにしてあります。

 後は、アプリ起動時に通信が無いと困る物に関して、Enter・Exitでmobon,moboffする物とかあります。(その時に%RUNに1入れます)

 最後にちょっと便利なタスクも作ったり。

・不在着信があった時、番号とその場所をGoogleカレンダーに記録する

Profile: 不在着信記録
	Event: Missed Call [ Caller:* ]
 [Enter]
	A1: Get Location [ Source:Net Timeout (Seconds):80 Continue Task Immediately:Off Continue Task After Error:On ] 
	A2: Get Location [ Source:GPS Timeout (Seconds):90 Continue Task Immediately:Off Continue Task After Error:On ] 
	A3: Calendar Insert [ In / For (Minutes): Calendar:Google:プライベート Title:不在着信 %CONUM at %LOC(%LOCN) Description:GPS https://maps.google.co.jp/maps?q=%LOC
Net https://maps.google.co.jp/maps?q=%LOCN Location: Available:Off ] 
	A4: Mobile Data [ Set:On ] 
	A5: Synker [ Configuration:Synchronize 1 providers. ] 

 落としたときにも役立ちそうですが、役立たせたくないですね。
 あと、TaskerからBackupで取り出したまま載せればよかったんですが、あまりに雑念としていたので少しまとめていると、中途半端になってしまいました

Arduinoを引き続き遊んでたり

年の瀬の買い物とか終わって、帰ってきてから今日もちょっと遊びました。

昨日はtoneで和音が出ないことにびっくりしましたが、まぁ
マイコンなら当たり前」
というところで、今日適当に作ってみました。

和音出してる部分のスケッチはこちら。
http://codr.cc/s/fd0506ff/cpp
デューティー比は同時発音数で変わります。聞こえる感じに。
周波数から今のマイクロ秒を基準に今発声しているべきかしていないべきか決めて、
全部の音数ぶん足して、前回と違ったら出力してるだけです。
いかにもマイコンらしくないものになりました。

なんで全部10倍なんだろう。とかあんまり気にしないでください。

で、作った後に何作ろうか悩んでて。
どうせなら入力があったら音を出す、とかそんな感じがいいかな、とか。
悩んだ結果、これになっちゃいました。

Arduinoをはじめてみました。

先日、母親から学研「大人の科学」を二冊いただきました。
付録つきの。「電子ブロックmini」と「4Bitマイコン GMC-4」です。
かなり没頭してしまいました。特にマイコンのほうに。
ハンドアセンブルとか何年ぶりにやったんだろう、と思いながら、結局アセンブラエミュレータを書きました。
もうちょっと綺麗にしたら公開します。


と、同時期に自分用人生初のマイコンArduino買いました。3200円です。
正直言って、かなり期待してたんですが、予想以上でした。


とりあえず、マイコンといえばLEDだよな。と思って、定番ナイトライダーを作成。
最初はdigitalWriteとやらで順番に光らせてたんですが、これじゃTTLでも出来るよな、と思って。
ちょっと頑張ってみよう……

と思ってたら、ほとんど頑張らずにPWMで調光できました。ただ単純にanalogWriteするだけ。
これに完全にテンション上がっちゃって、スケッチを公開しつつ動画撮っちゃいました。

スケッチはこちら。http://codr.cc/s/3270ec7d/cpp

スケッチを見ての通り、三角関数なんかも使ってます。
sinテーブルを自分で用意して、端数は線形補間……なんてことはしなくても大丈夫です。
っていうか、各LEDの状態を式で書けるとか凄い。
PICは全部アセンブラだったんで、こう書けるとやっぱり便利ですね。


今後、多分何か作るとすると、ATmega328で作ると思います。楽なんで。


で、先に経験しとこう、と思ってひとつ余分にATmega328と、最低限必要な部品を買っておきました。
ブートローダー書き込み済みなんてのが売ってるんですね。ちなみに全部で1000円ちょいです。


「だがしかし、この家には5Vの電源なんていうものは無い」


って事で、それもついでに作ることに。

とりあえず電源の回路図と材料。これぐらいは普段適当にやっちゃいますが、Twitterにつぶやくときに書きました。
基本的に材料あわせです。コンデンサなんか露骨に使い古しです。

・100μF 電解コンデンサ2個
・0.1μF 積層コンデンサ2個
・LM7805 一個。
・シリコンハウス共立で買った謎の電源アダプタ(8V 500mA)

ざくざくっと、でも電源なんである程度丁寧に作って。

負荷かけて電圧測定。

いい感じです。

完成後、ATmega328を単体で使うために……と、外してブレッドボードに組んでみました。
抜くときピンを曲げそうになってあぶなかったのと、交換用のATmegaを押し込みすぎて危なかったのは秘密です。
回路図はそこかしこに載ってるので省略。
(Vcc,GND,AVcc,もういっこのGNDを結線,X1とX2間に1MΩ、クリスタル、両端から22pFでグランドへ繋いだぐらいです)

部品的には
・単線のワイヤを数本と、ジャンパワイヤ
・16MHzのクリスタル
・抵抗 1MΩ
コンデンサ 22pFを2個、0.1μF一個(パスコンです)

どうせ怪現象で動かないとか、壊しちゃうとかするんだろうなぁと思ってたんですが、これがあっさり動いちゃいました。

ここまでやって、あまりにとっ散らかってたので一旦撤収。

片付けた後、寝る前に最後のだけ作って、初日は終了としました。

電子ブロックと繋いで、おっさんホイホイです。
イントロは最初作るつもり無くて、付点音符の処理を完全に考えてなかったので無理してます。

これも稚拙ながらスケッチを上げておきます。http://codr.cc/s/48c20c63/cpp


動画は全部iPhoneです。これも初めてyoutubeにアップしたりしましたが、滅茶苦茶楽でした。
改めて、凄い時代。
その後GMC-4を触ると、また不思議な気持ちになります。

RV125Efi オイル交換

 今日は以前からずっと言っていた、オイル交換をやっとこさ行いました。
 用意した物は以下。
 オイル
  スクーター用1Lという安い物がホームセンターにありました。これで。
 工具
  15mmのレンチです。
 オイル受け
  オイルの容量が800mlなので、手近なもので代用。
  インスタント焼きそばのカップに、ビニール袋敷いて、ティッシュを一巻きほどほどいて入れます。

 で、とりあえず古いオイルを抜きます。
 ドレンボルトはエンジン左側、このボルトです。

 下にオイル受けを(飛び出てくる事を予期した位置に)置いて、ドレンボルトを外します。


 出てきたオイルは真っ黒でしたw
 ここでヤバい、と思う事態が。
 800ml最初に焼きそばのカップに入れてみたらよかったのに……
 なみなみ入ってしまいました

 で、ドレンボルトをもう一度締めてから、反対側の口からオイルを入れます。
 少なめに入れて、キャップに付いてるオイルレベルゲージで確認。
 先っぽから段差の間に来たら、そこでokです。
 オイルレベルゲージは、油量の確認時はねじ込まないように。


 所要時間、あたふたして約30分。
 慣れると15分ぐらいで出来そうな感じです。

 肝心の調子はあまり体感は感じませんが、まぁ気持ちはいいですよね。
 ただ、少し吹けないような、という感じです。何故……
 

RV125 クラッチ・ブレーキ

 先日、RV125で笠置まで行こうと走っていたのですが、突然、車のクリープ現象のような感じでクラッチが切れずジワジワ進むようになりました。
 これはまずい、とバイク屋に見てもらったところ、「クラッチのスプリング割れてるんじゃ?」との一言。


 テール下と車体左後半分のカウルを外して、ボルトを外し、クラッチ露出。
 インパクトレンチでバインと外したところ。


「あー、これなんでこんなになっちゃうまで……」


 そもそもクラッチのシュー部分が全く残っておらず、金属で噛んでる状態。さらに案の定スプリング割れ。

「とりあえずスプリングはこれ(廃材のスプリング)はめとくから、とりあえず自走で帰って、どっかでクラッチシュー手に入れておいで。残ってれば中古でも良いぐらい。うちは取り寄せ出来ないから」


 との事で帰宅。
 さらに帰宅中、ブレーキまで鳴き出す始末。


 インターネットで色々探してみたのですが、ブレーキパッドはすぐに見つかったものの、クラッチが全然見つからない。

 最終手段、ヤフーオークションで落札しました(新品)。

 ブレーキパッド
  KN企画様、FA-305SX(リア)BP-192SX(フロント)、各\1900
 クラッチシュー
  K&S SYM RV150(型番不明)\4800
  ↑商品説明に、RV180,150,125共通とあったので。

 以上を注文し、本日到着。勇んでまたバイク屋に行きました。

「お昼休み見てあげるから、とりあえず先にバラしといてw」

 とドライバーをレンチを渡されたので、言われるがままに分解。


 とりあえずブレーキパッド。
 フロントブレーキのキャリパーは簡単に外れたものの、リアのキャリパーが、社外マフラーの裏にあるので、開けにくい。
「ラチェットレンチとか使わないほうがいいですよねぇ」
「どれ……別にここはいいよ」
 との一声で分解。
 ブレーキパッドはまぁ、無難に交換できました。
 若干、リアが、残ってるのに鳴いて効かず、と怪現象も起こっていたものの、少し硬くなってるだけだとのこと。すぐに直りました。
 それより、フロントがあとほんの少ししか無かったのに驚き。


 次はクラッチシューです。
 とりあえず開ける。

 新しいのは、Assyなので、外して付けるだけでいい。

 で、はめる。

 これでOk!

と思ったのですが……

「ありゃ……アウター入らないw」
「マジすか!!」


 微妙に大きいよう……。


「うーん、まぁ大丈夫」
 アウターを持って奥に入る店員さん。


『チュイイイ』←多分グラインダーの音

「口のところの盛り上がりに引っかかってたから」


 綺麗に削いで来てくれました。有難い。

 という事で、再度挑戦。


 で、入った上、ちゃんとタイヤが回るようにはなったのですが。
 真ん中のボルトを止めると駄目w少し回る。


「あー、太いんじゃなくて、分厚いんだね、少し。
 そのうち削れるだろうから、まぁしばらく様子見よう」

 ってことで、完了。
 磨り減った部品たちよ、今までありがとう。

 皆様ご注意ください。
「使える」=「ポン付け可能」では無いようです。
 あと1000円出せば純正部品買えたのになぁ。


 そのまま、神戸まで慣らし運転。
 本当にすぐに、アイドリングでクラッチは切れるようになったものの、少しスロットルを開けるとすぐに繋がるように。超低速回転で発進、止まるときも最後の最後までエンブレがかかるように。
 インジェクションだからか、レスポンスが凄く良くて、スロットル開けると繋がる、ちょっと戻すとつんのめる感じで、しばらくは気を使って運転しないとベルトに悪そうです。ガツンと開ければ後は無段階変速、という雑な感じじゃないような。


 が、なんと燃費が今のところ40Km/L以上っぽいです。二人乗りで。
 丁寧な運転での燃費向上以上に、多分今までクラッチがかなり滑ってたんじゃないかなぁ、と。
 走ってる感じも全然違うし。です。
 次の給油が楽しみ。
 逆に純正じゃなくて、こういう特性だと思って乗るとこれはこれで面白くなってきました。


 神戸ハーバーランドにて。