このブログを検索

2015-12-27

iOS用Wi2 300のオプションエリア以外のWi-Fiプロファイル

ビックカメラ経由でIIJmioの格安SIMに加入すると無料の公衆無線LANサービスが付いてくる。
この無料プランでは接続できるアクセスポイントと追加料金が必要なアクセスポイントがある。

ところが、iOS用の公式アプリで公開されているiOS用のWi-Fiプロファイルが、全部のアクセスポイントをいっしょくたに登録するため、使えないアクセスポイントにまで接続しに行ってしまう。

そこで、プロファイルをダウンロードして、有料アクセスポイントを削除したプロファイルを作ってみた。これを使えば無料のアクセスポイントにだけ接続に行くようになる。iOSのブラウザでこのページにアクセスして下記のプロファイルをダウンロードしてください。

2015-11-29

Windows8/Windows8.1でブリーフケースを新規作成

ブリーフケースはWindows8以降では普通には新規作成できなくなっているようで、マイクロソフトフォーラムでも「できない」と言われているが、作る方法を見つけた。フォルダを新規作成してファイル名を下記に変更すると作成できる。

新規ブリーフケース.{85BBD920-42A0-1069-A2E4-08002B30309D}

Windows10ではどうだろう。

2015-09-27

フィットGD1にレーダー探知機設置した

そこそこ気合を入れて配線した。ブツはComtecのZERO 94VSというもの。これにOBD2ケーブルが付属しているものを購入。

配線のためにまずAピラーのカバーを外した。上から内貼りはがしを差し込むと簡単に外れる。

フィットGD1のOBD2端子は運転席の左膝のあたりにあるので、インパネの中に配線を通してみる。買っておいた配線ガイドを通す。こんな感じ。


これでインパネ内の経路を確保したので、あとはわっかになっているほうに配線を巻き付けて引っ張り上げると、配線が通せる。インパネの継ぎ目はギリギリしかなく、ケーブルを通す空間がないため、適当にニッパーで切って空間を作る。赤丸のところが切った部分。


あとはインパネを戻してレーダー探知機を設置する。正面からはケーブルがほとんど確認できない仕上がり。

反射して見にくいけど、裏からはこんな感じ。


2015-09-20

VWのディーゼルエンジンハックの話

VWのディーゼルエンジンハックの話、なんとなく何やったのか見えてきた。

このスレに「適合屋」を名乗る人の書き込みがある。

http://himasoku.com/archives/51920622.html

===
228:風吹けば名無し@\(^o^)/:2015/09/19(土) 16:33:11.97 ID:zFUorxMx0.net
ワイディーゼルエンジン適合屋
VWに限らず欧州車はモード走行中以外は
すぐEGRオフ(Nox爆発)することを知っていた模様

だから欧州でもディーゼル締め出しの流れなわけよ

その点日本メーカーはまだ真面目よ
===

適合屋さんとは何かというと、自動車メーカーが開発したエンジンや完成車を、現地の法規制に「適合」させるのをやっている会社。世界各地の法規制は場所によって微妙に違ったり専門知識が必要だったりするのを、現地の人間を使ってやってくれる。「人とくるまのテクノロジー展」で元ホンダの人が話していたが、いまの完成車メーカーではこの適合を自分でやるのは相当困難になっていて、技術的にもかなり依存していると言っていた。

自動車業界以外の人が「適合屋」を知っているとは思えないので、この書き込みはある程度信用できると思われる。

では「EGRオフ」とはなにか。

EGRとは排気再循環(Exhaust Gas Recirculation)というエンジン技術で、
https://ja.wikipedia.org/wiki/%E6%8E%92%E6%B0%97%E5%86%8D%E5%BE%AA%E7%92%B0

エンジンの排気を再度吸気側に回すというのをやる。
エンジンの排気というのは、エンジン内で燃焼した残りの気体なので、酸素は使われ尽くしている。これにより、Wikipediaの記載によると「大気より酸素濃度が低い状態での燃焼により、その(ピーク)燃焼温度が低下する。これによりNOxの発生が抑制される。」とある。

詳細な仕組みはこの記事が詳しいのでは。。。と思う。
http://carview.yahoo.co.jp/ncar/catalog/bmw/x3/chiebukuro/detail/?qid=14133183174

これでわかるのは、「EGRをやればNOxは減らせるがやらなければNOxは減らすことができない」ということである。

次に、アメリカのディーゼルエンジンの規制がどうなのかを見てみる。

この書き込みを参照すると、アメリカのディーゼル規制はEUや日本より厳しいことが分かる。NOxは欧州や日本より半分にしなければいけない。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11136921276

===
規制値
欧州(Euro6):NOx<0.08g/km,PM<0.005g/km
日本(ポスト新長期):NOx<0.08g/km,PM<0.005g/km … 数値はEuro6と同じ
米国(TierⅡ-Bin5):NOx<0.04g/km,PM<0.006g/km

●米国規制の何が厳しいか?
NOx(窒素酸化物)です。これが日欧の半分という厳しい規制値のためクリアが難しいのです。
===


VWの車は最初EUで開発されて、アメリカに持っていくはずだ。
そうすると、EUのときはそんなにキツクなかった規制だが、アメリカで売るにはキツイ規制に整合させないといけない。
そのためには、何かしらのエンジン改良をしないといけない。
NOx対策を過剰にすると、エンジン出力が低下するなどのデメリットがあるといわれる。

マツダはそれが難しいのでアメリカでディーゼルを売るのを延期しているとのことだ。
下記の記事では、マツダに電話してアメリカでディーゼルが出せない理由を聞いたところ、「北米の規制をクリアすることは技術的に可能ですが、その場合、現時点ではマツダらしい走りと燃費性能の両立を、マツダが目指す水準で維持できない」状態らしい。
http://blog.livedoor.jp/ganbaremmc/archives/39870564.html


VWが何をやったのか予想

上記のことから、VWはディーゼルをアメリカで売るにあたり、真正面からエンジンを改良して問題に対処するのではなく、ハックして乗り切ろうとしたのであろう。検査状態さえ検出できれば、そのときはEGRを有効にし、出力は低下するが排気の問題はクリアできるという寸法。そして、エンドユーザーの使用時にはEGRを無効にし、排ガスが汚いが(おそらくEUで売っているエンジンと同等)、パワーは出る。


そもそも、EGRによる排ガス対策はユーザーの実使用ではまともに動作してないのでは、という疑惑は前からあったようである。

この記事では、実走行ではスペックの7倍のNOxが排出されていると指摘している。2chの適合屋さんの話もこれから来ているのではと思われる。
http://news.livedoor.com/article/detail/10029221/

日本でも、下記の論文では一部の車両でEGRが実使用で無効化されていると指摘している。
http://www.tokyokankyo.jp/kankyoken_contents/research-meeting/h23-01/2304-youshi.pdf


なんとなく、この事件は乗用車のディーゼルエンジン終了のお知らせになるのではという気がする。
真面目にやっていたであろうマツダがかわいそうとも。。。

2015-02-24

Raspberry Pi 2 Model BにUHS-1対応の高速microSDは無意味

Raspberry Pi 2 Model Bのために、高速なmicroSDを購入してみたのだが結果的に無意味ということが分かった。UHS-1以前のインターフェースしか持っていないようである。

使用したSDカードはこれ(TOSHIBA EXCERIA read 95MB/s write 30MB/s)

結果として、UHS-1でないSDの上限、20MB/sで頭打ちのようなので、UHS-1の高性能モデルを使う意味はない。

fioの実行結果

Run status group 0 (all jobs):
   READ: io=1024.0MB, aggrb=18909KB/s, minb=18909KB/s, maxb=18909KB/s, mint=55453msec, maxt=55453msec

Run status group 1 (all jobs):
  WRITE: io=835584KB, aggrb=13920KB/s, minb=13920KB/s, maxb=13920KB/s, mint=60024msec, maxt=60024msec

Run status group 2 (all jobs):
   READ: io=1024.0MB, aggrb=18712KB/s, minb=18712KB/s, maxb=18712KB/s, mint=56037msec, maxt=56037msec

Run status group 3 (all jobs):
  WRITE: io=148480KB, aggrb=2471KB/s, minb=2471KB/s, maxb=2471KB/s, mint=60069msec, maxt=60069msec

Run status group 4 (all jobs):
   READ: io=312044KB, aggrb=5200KB/s, minb=5200KB/s, maxb=5200KB/s, mint=60001msec, maxt=60001msec

Run status group 5 (all jobs):
  WRITE: io=17260KB, aggrb=287KB/s, minb=287KB/s, maxb=287KB/s, mint=60007msec, maxt=60007msec

Run status group 6 (all jobs):
   READ: io=569644KB, aggrb=9491KB/s, minb=9491KB/s, maxb=9491KB/s, mint=60015msec, maxt=60015msec

Run status group 7 (all jobs):
  WRITE: io=14596KB, aggrb=242KB/s, minb=242KB/s, maxb=242KB/s, mint=60170msec, maxt=60170msec

Disk stats (read/write):
  mmcblk0: ios=224446/9956, merge=72/48, ticks=2098830/2093370, in_queue=4195210, util=97.66%

hdparmの実行結果

pi@raspberrypi ~ $ sudo hdparm -t /dev/mmcblk0p1
/dev/mmcblk0p1:
 Timing buffered disk reads:  56 MB in  3.04 seconds =  18.40 MB/sec

その他

fioのインストール等にあたっては下記のページを参照した。

2015-02-14

AliExpressに注文した結果(到着日数編 Ver.2)

前回から引き続き、Arduino関係のパーツなど電子工作パーツを注文しているので、オーダーから注文までの所要日数をまとめてみる。

オーダー日 到着日 日数 手段 その他
2015/01/14 2015/01/26 12日 国際書留
2015/01/18 2015/01/30 12日 国際書留
2015/01/18 2015/02/05または数日前 約18日 定形外郵便 送り間違えたとのことで再送されているため、実質2週間程度で届いていると思われる。
2015/01/31 2015/02/13または数日前 約14日 定形外郵便 2/9時点で日本の空港には到着していたようなので、確認した2/13より早く到着してたかもしれない。
2015/01/31 1個目:2015/02/14
2個目:2015/02/26
3個目:2015/02/14
15日
27日
定形外郵便 3点がそれぞれ別便で発送されている。
1点だけ遅いのは「flytexpress」を使って送られたもの。
2015/02/03 2015/02/15 12日 国際書留
2015/02/03 2015/02/16 13日 国際書留 追跡すると同じ02/03にオーダーしたものと同じように日本に到着してたのに、なぜか日本郵政の都合で配達が1日後回しになっていた。

まとめ

  • 書留系で送られると処理が早いのか12日できっちり届く。
  • 定形外郵便の場合は、先方の業者がまちまちなこともあり所要日数にばらつきがある。
  • とはいえ、2週間あればだいたい届く模様。
  • 基本的に同じ業者に注文するとまとめて発送されるが、そうではない業者もある模様(しかもそれぞれ別の配送業者に出しているようだ)。おそらく代理店的なことしかしていないのだろう。。。
  • flytexpressを使う業者の配送だけ非常に遅い。いろいろ検索すると評判が悪い配送業者のようだ。発注するときにコメントで「flytexpressはやめて」と書くべきかも。

備考

  • 書留の場合、手渡しになるため平日に受け取るのは困難。不在票が投函された日を到着日としている。
  • 定形外の場合、基本的に追跡できずいつの間にかポストに入っているため、正確な到着日が不明な場合がある。

2015-02-03

ショートカット専用キーボード:完成

USBケーブルを引き込む穴を開けた。
前回の経験が生きているのか、穴が小さいから制御しやすいのか、ボタンの穴をあけたときに比べると格段にきれいにできた。

USBケーブルを通してそのままだと見た目が良くないので、買っておいたゴムブッシュを装着。


内部ではループを作り抜け止めし、AliExpressで輸入したPro Micro互換機に接続。



Pro Microには最小限必要なL字のピンヘッダをはんだ付けしてある。ボタンからのピンソケットを接続。


ふたを閉じると完成。特に基盤を固定とかしていないが、ケーブルのテンション対策・短絡対策はしてあるので特に問題ないだろうと判断した。

特にパイロットランプ等は用意しなかったが、ボタンが透明なプラスチックなので内部のLED発光が見える誤算。

赤いボタンでWindowsのロック、白いボタンで全ウインドウ最小化ができる。


ショートカット専用キーボード:ボタンの配線完了

ボタンの配線を作り終わった。
ピンソケットケーブルを切断し、反対側に110の平型端子を圧着してケーブルを制作。
110の平型端子は、計画通りボタンの端子に適合。
全体的にきれいにできたと自画自賛できる。




次はUSBケーブルを導入するための穴をあける。
マイクロUSB端子を通すためには結構大きな穴が必要になるので、見た目をよくするためにゴムブッシュを入れる予定。

これまでの記事

  • ショートカット専用キーボード:ケースへボタン装着が完了
    • http://blog.okamoto.ws/2015/01/blog-post.html
  • Arduino Micro買ってみた
    • http://blog.okamoto.ws/2015/01/arduino-micro.html

2015-02-01

AliExpress購入レビュー:Arduino Uno互換機

買ったのはこれ
Blinkデモは問題なく動作。
シリアル変換チップはCH340で、aitendoのびんぼうでいいのと同じ。
こいつは不良が多いっぽい(実際、以前買ったびんぼうでいいのは同じ症状だった。。。)ので気になるところだが。。。

A0-A5のピンソケットが曲がってハンダ付けされている。基板の裏もなんか汚れている。シルクは問題なし。



  • 基板の品質:★★☆☆☆(ピンソケットが曲がっている)
  • コネクタの品質:★★★★★(問題なし)
  • 包装の品質:★★★★☆(プラバッグ密閉。乾燥剤なし。箱はないが、ダメージを受けそうな部分はない)
  • 動作:問題なし
  • 価格:送料込みで5ドルくらい。
  • その他:ピンは曲がってるが、シールドはなんとか装着できた。

AliExpress購入レビュー:Prototype Shield v.5

買ったのはこれ。モノはAdafruitのクローン
写真とは異なりブレッドボードは装着されておらず、自分で貼り付ける必要がある。

サインスマート(SainSmart) プロトタイプ シールド ミニブレッドボード for arduino UNO
サインスマート(SainSmart)
売り上げランキング: 10,060

スイッチ・LED・抵抗などテスト用の部材が付いているが、ピンソケットとかはないので適当な接触で使う必要がある。

ピンヘッダがちょっと揃ってない。ピンソケットもちょっと曲がってる感じがするが、全般的に大きな品質問題はなし。



  • 基板の品質:★★★☆☆(ピンヘッダ不揃い)
  • コネクタの品質:NA
  • 包装の品質:★★★☆☆(プラバッグ密閉。乾燥剤なし。ピンヘッダ保護材なし)
  • 動作:問題なし
  • 価格:送料込みで7ドルくらい。探せば送料無料のもあるはず。
  • その他:電池が別体で付属

AliExpress購入レビュー:Data Logging Shield

買ったのはこれ。ベンダーはDeek Robotというところ。モノとしてはAdafruitのクローン
電池付きですぐ使える。
RTCの動作確認はOKだった。SDは面倒なのでやってない。
基板の品質はほぼ問題なし。シルクがややかすれているが読めないほどではない。




  • 基板の品質:★★★★☆(シルクかすれ)
  • コネクタの品質:NA
  • 包装の品質:★★★☆☆(プラバッグをセロテープどめで非密閉。ピンヘッダ保護部材あり)
  • 動作:問題なし
  • 価格:送料込みで5ドルくらい。探せば送料無料のもあるはず。
  • その他:特になし。普通に使える

AliExpress購入レビュー:Pro Micro(ATmega32U4採用のArduino互換機)

買ったのはこれだが、基本的にAliExpressで売っているものは同じはず。
正体はsparkfunの互換機。概要のページはこちら。電源電圧・動作周波数で2種類あるが、速い方を購入した。
Leonardo互換のファームウェアが搭載されているので、事実上Arduino Micro(=純正のLeonardo小型版)として使える。

LeonardoはほかのArduinoと違って、チップ自体がUSB-UARTを持っているのでスケッチ書き込み時に癖があり(動作中はスケッチ書き込みできなかったりする)、この対策のために書き込み前にリセットボタンを押さないといけない。(この操作により、ブートローダーが見せるUARTが見えるようになり、そこから書き込みできるようになる)

が、こいつはリセットボタンがないので、RSTとGNDを短絡させないといけない。これが面倒。ただし、簡単に押せない対策に、sparkfunのファームウェアは2連続でリセットすると8秒間ブートローダー状態にしてくれるとのこと。

また、ハードウェアプロファイルは純正Arduinoと違うものになるため、このページの手順を元にハードウェアプロファイルをArduino IDEにインストールする必要がある。

とりあえずsparkfunが公開しているLチカは動いたので、動作確認はOK。


  • 基板の品質:★★★★★(ほぼすべて表面実装のため品質に問題はなさそう)
  • コネクタの品質:★★☆☆☆(MicroUSBケーブルが抜けにくい)
  • 動作:問題なし
  • 価格:送料込みで5ドルくらい。
  • その他:組み込み用途には至適なのでバルクで買いたい。

AliExpress購入レビュー:Ethernet Shield (W5100 chip)

買ったのはこれ。モノは純正品のクローン。
8bitマイコンのArduinoではTCP/IPを処理するのは荷が重いが、こいつには通信をハード処理するチップが付いているのでまともに通信できる。
Arduino IDEに付属のサンプルがそのまま動いた。
基板は高級感がある。シルクも謎の塗りつぶしがある以外は良好。裏側にちょっと汚れがあったのが残念ポイント。


  • 基板の品質:★★★★☆(高級感あるが、裏側に汚れ)
  • コネクタの品質:★★★★★(特段の問題なし)
  • 包装の品質:★★★★☆(プラバッグ密閉、乾燥剤なし。ピンヘッダ保護部材あり)
  • 動作:問題なし
  • 価格:送料込みで8.5ドルくらい。探せば送料無料のもあるはず。
  • その他:全体的に高品質だと思う



2015-01-31

AliExpressに注文した結果(到着日数編)


2015/02/14追記:さらに注文した結果どのくらいで届くかをこちらにまとめた。

Arduino関係のパーツはAliExpressで買うのが安いことがわかり、いくつか注文してみた結果。
「国際特殊通常書留」なるもので発送してくれた業者は、だいたい12日で到着することがわかった。

例1

2015/01/14にオーダー

2015/01/26に到着
(到着に要した日数:12日)

例2

2015/01/18にオーダー

2015/01/30に到着
(到着に要した日数:12日)

ただし、どれも書留なので平日に受け取るのは困難。実は、現時点ではどっちも受け取ってなくて不在票が投函された日を到着日としている。実物は週末受領予定。

2015-01-24

秋月のHDC1000(温度湿度デジタルセンサー)を動かしてみた

これを秋葉原で見つけたので買ってみた。
もともとVSTONEで間違えて買ったDHT11という温度湿度センサーでちょっと遊んでいたが、単線シリアルのよくわからないインターフェースだし、精度も良くないらしい

その点、HDC1000とやらはTI製なのでなんとなく安心感がある。

最初は自力でコードを書いてみたがまともに動かず、Google先生に聞いてみたところ中国だがサンプルコードを見つけた

このセンサーはI2C接続で、I2Cアドレスが秋月と違う以外はそのまま動いた。値を見る限り、湿度は問題なさそうだが温度は高めに出てる気がする。


//Copy from  http://will-123456.blogspot.jp/2014/12/hdc1000-arduino.html

#include <Wire.h>

#define addr 0x40
uint16_t readingT,readingH;
void setup()
{
  Wire.begin();

  Serial.begin(9600);
  Serial.println("HDC1000 Test");
  sethdc();
}

void loop()
{
  readhdc();
  delay(1000);
}

void sethdc(){

  Wire.beginTransmission(addr);
  Wire.write(0x02);
  Wire.write(0x10);   //14 bit 14bit
  Wire.write(0x00);   //14 bit 14bit
  Wire.endTransmission();
  Wire.beginTransmission(addr);
  Wire.write(0x02);
  Wire.endTransmission();
  Wire.requestFrom(addr, 2);
  if(2 <= Wire.available())   
  {       
    readingT=0;
    readingT = Wire.read(); 
    readingT = readingT << 8;   
    Serial.print(" Config:");
    Serial.println(readingT,BIN);   
  }
  Wire.beginTransmission(addr);
  Wire.write(0xFB);
  Wire.endTransmission();
  Wire.requestFrom(addr, 3);
  if(3 <= Wire.available())   
  {       
    readingT=0;
    readingT = Wire.read(); 
    readingT = readingT << 8;   
    Serial.print(" ID:");
    Serial.print(readingT,BIN);
    Serial.println( Wire.read(),BIN);
  }

}


void readhdc(){
  Wire.beginTransmission(addr);
  Wire.write(0x00);
  Wire.write(0x00); 
  Wire.endTransmission();
  delay(20);

  Wire.requestFrom(addr, 4);
  if(4 <= Wire.available())   
  {       
    readingT=0;
    readingH = 0;
    readingT = (Wire.read()<<8);
    readingT+=Wire.read(); 
    readingH = (Wire.read()<<8);
    readingH+=Wire.read();
    Serial.print(" Temp:");
    Serial.print(readingT);
    Serial.print(" =>");
    Serial.print(readingT/65536.0*165.0-40.0);   
    Serial.print("  RH:");
    Serial.print(readingH);
    Serial.print(" =>");
    Serial.println(readingH/65536.0*100.0); 
  }



}



2015-01-20

HC-SR04(超音波センサー)の使い方を間違えると壊れる?

Amazonとかaitendoで安く売ってるを買ったが、速攻で壊した。
最初サンプルコードは動いていたが...
高サイクルで読みだすように変更するとお亡くなりに。
おそらく超音波の送信側スピーカーが、長時間超音波を出し続けるのに対応していないと思われる。

↓のサンプルコードを見る限り50msの間隔をあけて使ってる。それくらいだと壊れないのか??
https://code.google.com/p/arduino-new-ping/wiki/Simple_NewPing_Example

2015-01-19

ショートカット専用キーボード:ケースへボタン装着が完了

ボタンを装着するための箱の加工が完了。こんな感じです。
まあ素人レベルとしてはきれいにできたのでは。リーマーではなく切削で開けたので穴の円はいびつですが、ボタンの縁取りがいい感じに隠してくれる。


ボタンへの結線は、そのままはんだ付けしてやろうかと思っていたが、よくよく見ると110の平型端子のサイズっぽいので、圧着端子にしてみようと思う。挿抜できれば保守性も上がるし。


この穴あけには予想以上に時間がかかった。

  1. このケースはOP-125というやつだが、図面が公開されてるのでそれをもとに穴あけの図面を作って会社で印刷してそれを下地に使うつもりだったが、印刷して実物と合わせてみると全然サイズが合わないのである。たとえばこのケースは図面上横幅が125あるが、実際に定規を当ててみると123くらいしかない。それを印刷倍率で補正したりしながら作った。
  2. また、穴の径を適当に3cmとしたがこの縮小処理とそもそも小さ目だったせいで少しずつ広げていく必要があった。

ケースの加工は、あとUSBケーブルを引き込む穴あけが残っている。

2015-01-14

Arduino Uno互換機の値段

AliExpressだとすごい値段で売ってる
送料込みでも$5.27 (約645円)。いろいろワナがありそうだがとりあえず注文してみてもいいかと思う値段。


2015-01-10

死蔵してたXBee開発キットを引っ張り出してきた

Arduinoの"ゆめがひろがりんぐ"っぷりに感化されて、昔買うだけで満足して死蔵していたXBee開発キットを使ってみることにした。

同梱されてる説明の紙は「2006.04.28」と書いてある。。。 9年寝かせた基板、果たしてどうなっているか。。。 手持ちのキットは一番下の「XBee Starter Kit」。

PCと接続してみたところ。この開発キットには、シリアル接続用とUSB接続用、2種類のインターフェースボードが同梱されている。USBのもので接続し、開発キットやドライバをインストールしたところ、正しく動いていることを確認した。

開発キットの画面。とりあえず、2枚のモジュールのリンクが確立すていることがわかる。
ファームアップを試してみたところ、正常に成功した。激古のモジュールだが、いまでもちゃんとサポートされてるみたい。

シリアル基板側にデータを送れる人を接続したら、データの送受信も確認できるが、そういうのがないのでとりあえずはここまで。

Arduinoに接続してみようとしたが。。。 ブレッドボードとピンピッチが合ってない!
XBee接続対応しているシールドを買うか、ピンピッチ変換のボードを入手する必要がある。。。


追記:適当なデータを投げると受信側の基板のLEDが点灯するので、どうやら正しくデータは到達しているっぽい。

2015-01-05

Arduino Micro買ってみた

masaruさんがいろいろやってたのに触発されてみた。作りたいものはキーボードショートカットを一発入力する専用キーボード。




買ったもの(@VSTONE ROBOT CENTER):

買ったもの(@千石電商)

いろいろ試してみたところ、いくつか購入品に失敗があったが所望のソフトウェア設計は一瞬でできた。Arduino恐るべし。ただ複雑なモノの設計は逆に難しそうな感じはした。しかし、これだけ簡単にできると、人間側のアイデアの有無が露骨に問われる感じ。

失敗した点は以下
  • LED Brickと間違えて温湿度計を買ってしまった
  • OctopusのBrickは3ピンのケーブル接続が標準になっているが、Microにはそれに対応するピンがないので簡単接続できない。ブレッドボードとジャンパピンで接続するしかない
  • ADキーとかボタンスイッチとかは不要だった。Arduino側に内蔵プルアップ抵抗があるので、短絡するだけでキーが実現できる
とりあえず下記のような感じでコードを設計。ループ毎にウエイトが入っているのは、デジタル入力にチャタが生じてしまうため。

/*
 Shortcut Keyboard for Arduino Leonaldo/Micro
 written by Keiji Okamoto
 
 Based on following sample:
 http://www.arduino.cc/en/Tutorial/InputPullupSerial
 */

void setup(){
  //start serial connection
  Serial.begin(9600);
  //configure pin2 as an input and enable the internal pull-up resistor
  pinMode(2, INPUT_PULLUP);
  pinMode(3, INPUT_PULLUP);
  pinMode(13, OUTPUT);
  //initialize keyboard
  Keyboard.begin();
}

void loop(){
  //read the pushbutton value into a variable
  int firstkey = digitalRead(2);
  static int last_first_key = -1;

  int secondkey = digitalRead(3);
  static int last_second_key = -1;

  //print out the value of the pushbutton
  
  // Keep in mind the pullup means the pushbutton's
  // logic is inverted. It goes HIGH when it's open,
  // and LOW when it's pressed. Turn on pin 13 when the 
  // button's pressed, and off when it's not:
  if (firstkey == HIGH && last_first_key != firstkey) {
    //key released
    digitalWrite(13, LOW);
    Keyboard.releaseAll();
    last_first_key = firstkey;
    
    Serial.print(F("FirstKey="));
    Serial.println(firstkey);
  } 
  else if(firstkey == LOW && last_first_key != firstkey) {
    digitalWrite(13, HIGH);
    Keyboard.press(KEY_LEFT_GUI);
    Keyboard.press('m');
    last_first_key = firstkey;

    Serial.print(F("FirstKey="));
    Serial.println(firstkey);
  }

  if (secondkey == HIGH && last_second_key != secondkey) {
    //key released
    digitalWrite(13, LOW);
    Keyboard.releaseAll();
    last_second_key = secondkey;

    Serial.print(F("SecondKey="));
    Serial.println(secondkey);
  } 
  else if(secondkey == LOW && last_second_key != secondkey) {
    digitalWrite(13, HIGH);
    Keyboard.press(KEY_LEFT_GUI);
    Keyboard.press('l');
    last_second_key = secondkey;

    Serial.print(F("SecondKey="));
    Serial.println(secondkey);
  }
  
  delay(33);
}
ソフトはこれくらいでいいので、次はハードの加工(ケースを加工してボタンを入れる)に取り組む予定。