携帯電話のBluetoothが壊れる。

投稿日:

 愛用の携帯電話、SONYのSO-04E「Experia A」のBluetoothが接続できなくなってしまった。

 修理に持っていくと、運よく3年間の保証が利いており、無料で修理できる運びとなったが、データのバックアップや手続きに、窓口で2時間ほども要する始末であった。しかし、特に急いでいるわけでもなかったので、窓口のお兄さんと雑談して、昨今のドコモの新製品事情など、いろいろと聞いた。

 知らなかったのだが、「Nexus 5X」はドコモからも出しているという。Nexusは、以前は直販とイー・モバイルからしか出ていなかったが、ドコモも競争のためであろう、この5Xからラインナップに加えたものだそうな。

 代機を出してもらう。最近はおサイフケータイなども、機種変更手続きをすればクラウド経由でサクッと移行完了である。

 修理には10日ほどかかるという。

赤外線LEDでリモコンごっこ

投稿日:

IMG_3128 他の方のサイトでも、赤外線LEDを買ってきてArduinoで便利なリモコンを作る、ということをやっているので、私も真似したく、赤外線LEDを買ってきた。

 10個も入っていて100円である。

 受信機はこの前800円で買ったリモコンと受信モジュールのセットがあるから、これでよい。

 この赤外線LEDは50mA流す規格なので、20mAしか流せないArduinoで光らせるには少し大き過ぎる。1kΩばかり抵抗をつけて5mAくらいにする。暗くてリモコンが反応しないのじゃないかな、とも思ったが、受光部に近づければ大丈夫だ。しかし、デジカメで観察するとかなり暗い。もし、ちゃんとしたものを組み立てるのなら、FETなどでリレーして、他の電源から50mA流したほうがいいだろう。

 今回は遊びなので、5mAで光らせる。

 先達のサイトでは、スクラッチビルドのコードで市販のリモコンの信号を受信し、ミリ秒単位でオンオフ時間を計測して記録し、その通りに赤外線LEDを光らせてうまく行っている方が多いようだ。

 一方、Arduinoには、「IRremote」というライブラリをGitHubで公開しておられる方がいるので、これを使えば簡単である。

 GitHubのページからzip玉をもらって解凍し、できたディレクトリ(IRremote)をArduinoのインストールディレクトリの「libraries」の下にコピーすればよい。

 今日は私の家のリビングの扇風機のリモコンで試してみよう。

 リビングの扇風機のリモコン信号をコピーしてテストするには、ライブラリをインストールするとできるサンプルスケッチのうち、「IRrecord」というのを使う。コマンドメニューは「ファイル→スケッチの例→IRremote→IRrecord」と辿る。

 これは、「1回こっきりの学習リモコン」のスケッチだと思えばよい。市販のリモコンを受信して記憶し、次いでボタンを押すとそのままそっくり信号のコピーを赤外線LEDから送出するスケッチだ。

 赤外線LEDは1kΩの抵抗と直列にしてデジタル3番ピンに、受信機は11番ピンに、タクトボタンを12番ピンにつなぐ。タクトボタンの入力側は10kΩの抵抗できちんとプルダウンしておくのが行儀がいい。そうしないと、手を触れたくらいのことでスイッチが入ってしまう。

 ブレッドボードが出来たら、使いたいリモコンを受信機に近づけ、ボタンを押す。

 それから今度は、ブレッドボード上の赤外線LEDを電気製品に近づけ、タクトボタンを押す。

 そっくりコピーされた信号が送出され、扇風機が動く。

 これで、ハードウェアは正しく動くことが分かったので、今度は単純にデータをハードコーディングで配列に書き出し、これを送出して扇風機のスイッチをオンオフさせる。

 まず、データを記録する。それにはサンプルスケッチの「IRrecvDumpV2」を使う。今度は受信機を6番ピンにつなぎ換え、シリアルモニタを起動してデータを観測する。そうすると、そのまま使える形の配列の初期化定義の格好でダンプが出てくる。

 これをクリップボードにコピーして、今度はサンプルスケッチの「IRSendDemo」にペーストし、送出してやればよい。

 ところが、ここでハマッた、ハマッた。そのままではうまくいかないのである。

 はじめ、私の扇風機では、「IRrecvDumpV2」のダンプはこうなった。

Encoding  : UNKNOWN
Code      : 1FB3782D (32 bits)
Timing[68]: 
     -22598
     +4500, -2150     + 650, - 500     + 600, - 500     + 500, - 600
     + 550, - 550     + 650, -1600     + 600, -1600     + 550, -1700
     + 600, - 500     + 550, -1700     + 600, -1600     + 600, -1650
     + 550, - 550     + 600, -1600     + 600, - 500     + 650, - 500
     + 600, - 500     + 600, -1600     + 650, - 500     + 600, - 500
     + 600, - 500     + 600, - 500     + 600, - 500     + 650, -1600
     + 600, - 500     + 600, - 500     + 550, - 600     + 600, -1600
     + 600, -1600     + 550, -1700     + 600, -1600     + 650, - 500
     + 500, - 600     + 550, 
unsigned int  rawData[69] = {9627, 90,43, 13,10, 12,10, 10,12, 11,11, 13,32, 12,32, 11,34, 12,10, 11,34, 12,32, 12,33, 11,11, 12,32, 12,10, 13,10, 12,10, 12,32, 13,10, 12,10, 12,10, 12,10, 12,10, 13,32, 12,10, 12,10, 11,12, 12,32, 12,32, 11,34, 12,32, 13,10, 10,12, 11,0};  // UNKNOWN 1FB3782D

そこで私は、この「rawData[69]」をコピペし、次のようにした。

#include <IRremote.h>

IRsend irsend;

void setup()
{
  Serial.begin(9600);
}

void loop() {
  static unsigned int  rawData[] = {9627, 90,43, 13,10, 12,10, 10,12, 11,11, 13,32, 12,32, 11,34, 12,10, 11,34, 12,32, 12,33, 11,11, 12,32, 12,10, 13,10, 12,10, 12,32, 13,10, 12,10, 12,10, 12,10, 12,10, 13,32, 12,10, 12,10, 11,12, 12,32, 12,32, 11,34, 12,32, 13,10, 10,12, 11,0};  // UNKNOWN 1FB3782D
  if (Serial.read() != -1) {
    for (int i = 0; i < 3; i++) {
      irsend.sendRaw(rawData,sizeof(rawData) / sizeof(rawData[0]), 38); // Sony TV power code
      delay(40);
    }
  }
}

 ところが、これではまったくダメなのである。

 最初は赤外線LEDの電流が足りないのかなあ、などと思い、半日ほどあっちこっちをいじくりまわして、ダメだった。

 「IRrecord」での丸ごと信号コピーはうまく行っているのだから、電流が足りないわけではないらしい。

 そこで、「IRrecord」のダンプ部分にコードを書き足し、「sendRaw()」関数にどんな値を渡しているかを見てみた。

  else if (codeType == UNKNOWN /* i.e. raw */) {
    // Assume 38 KHz
    irsend.sendRaw(rawCodes, codeLen, 38);
    Serial.println("Sent raw");
    Serial.println(codeLen);
    for(int cnt = 0; cnt <= codeLen; cnt++){
      Serial.print(rawCodes[cnt]);
      Serial.print(",");
    }
    Serial.println("\n");
  }

 そうしたら、どうも、ダンプされた値の50倍が渡されているらしい。

4400,2250,550,600,500,600,500,600,500,600,550,1700,500,1700,500,1750,500,600,400,1800,550,1700,500,1650,550,600,550,1700,500,600,500,600,550,600,500,1700,550,550,450,650,550,600,500,600,500,600,450,1800,550,550,550,550,550,600,500,1700,550,1650,550,1700,500,1700,650,500,500,600,500,0,

 そこで、「IRrecvDumpV2」のダンプ出力部分を次のようにカスタマイズした。

  // Dump data
  for (int i = 0;  i < results->rawlen;  i++) {
//    Serial.print(results->rawbuf[i], DEC);
    Serial.print(results->rawbuf[i] * 50, DEC);
    Serial.print(",");
    if (!(i&1))  Serial.print(" ");
  }

 そうすると、ダンプは……

ncoding  : UNKNOWN
Code      : FBB100E8 (32 bits)
Timing[68]: 
     -24324
     +4550, -2150     + 650, - 450     + 650, - 450     + 650, - 500
     + 650, - 450     + 650, -1550     + 650, -1600     + 650, -1550
     + 650, - 450     + 650, -1600     + 650, -1550     + 700, -1550
     + 650, - 450     + 650, -1550     + 650, - 500     + 650, - 450
     + 650, - 450     + 650, -1600     + 600, - 500     + 650, - 450
     + 650, - 500     + 600, - 450     + 700, - 450     + 650, -1550
     + 650, - 500     + 650, - 450     + 650, - 450     + 650, -1600
     + 600, -1600     + 650, -1550     + 650, -1600     + 650, - 450
     + 650, - 450     + 650, 
unsigned int  rawData[69] = {24324, 4550,2150, 650,450, 650,450, 650,500, 650,450, 650,1550, 650,1600, 650,1550, 650,450, 650,1600, 650,1550, 700,1550, 650,450, 650,1550, 650,500, 650,450, 650,450, 650,1600, 600,500, 650,450, 650,500, 600,450, 700,450, 650,1550, 650,500, 650,450, 650,450, 650,1600, 600,1600, 650,1550, 650,1600, 650,450, 650,450, 650,0};  // UNKNOWN FBB100E8

……となる。

 で、この先頭の「24324」は送信前の空き時間なので、捨ててよいようだ。「IRsendDemo」のほうにこれをコピペし、先頭の24324は消す。

#include <IRremote.h>

IRsend irsend;

void setup()
{
  Serial.begin(9600);
}

void loop() {
  static unsigned int  rawData[] = {4550,2150, 650,450, 650,450, 650,500, 650,450, 650,1550, 650,1600, 650,1550, 650,450, 650,1600, 650,1550, 700,1550, 650,450, 650,1550, 650,500, 650,450, 650,450, 650,1600, 600,500, 650,450, 650,500, 600,450, 700,450, 650,1550, 650,500, 650,450, 650,450, 650,1600, 600,1600, 650,1550, 650,1600, 650,450, 650,450, 650,0};  // UNKNOWN 1FB3782D
  if (Serial.read() != -1) {
    for (int i = 0; i < 3; i++) {
      irsend.sendRaw(rawData,sizeof(rawData) / sizeof(rawData[0]), 38); // Sony TV power code
      delay(40);
    }
  }
}

 これで、赤外線LEDを扇風機に近づけ、シリアルモニタの「送信」ボタンをクリックすると、扇風機がオン・オフされる。

IMG_3129 ブレッドボードは結局、最後はこんな感じ。

秋葉原ヨドバシとiPhone

投稿日:

 秋葉原ヨドバシ1階のスマートフォン売り場、その中でも特にカバーや充電器類などのアクセサリー売り場を見て歩くと、スマホのシェアが機種ごとの面積比となって露骨なくらいに現れていることが見て取れる。ヨドバシという大きな企業の市場調査の結果を立体図として体感し、かつまた拝借できるので、私はよくここを訪れる。

 秋葉原ヨドバシオープンから5、6年このかた、それは間接的に、学ぶべきプログラミングの属性にさえも多大なる示唆を与えていて興味深い。スマホのシェアとプログラミングは、一見無関係なようでいて、実はかなり強く関係している。

 フィーチャーフォンのアクセサリやフィルム、カバーを満艦飾に陳列してあったこの売り場が、突如としてスマートフォン関係8割という占有率になった頃のことを思い出す。5年くらい前だろうか。それと見るや、予感のとおり私の手元にも、Android、Javaテクノロジ周辺、Eclipse、IA以外アーキテクチャと言った関連物の調査の仕事が舞い込んだものだ。おかげで、予感にしたがって多少の準備もしていた私は、少しばかり上司の覚えもめでたくなったものだった。当時手がけていた研究の一環として、私もみずから幾つかのプログラムを書き、私物の電話もAndroidに変えるなどした。

 今、このスマートフォンのケースやカバー類の売り場の、ざっと6割以上はiPhone用で埋め尽くされている。タブレットのアクセサリも同じで、iPadが過半である。Android勢で元気なのはSONYのXperiaシリーズ、タブレットで台湾ASUSがNexus 7メーカーとして頑張っている程度のもので、あとはジリ貧だ。Androidの売り場はどんどん狭くなっている。

 これまでどおりであるなら、さっさとiPhone流のObjective Cのプログラミングを体験するなり身につけるなりすればいいようなものだが、私は日本語の参考書で自由に楽しくプログラムを書きたいと思っている変なおっさんであり、こうしたiPhoneの天下を苦々しく感じている一人でもある。なかなかどうして、Apple派になれるものではない。「野球は巨人、お笑いは吉本、戦争はアメリカ、電話はiPhone」て、なんでもかんでもそんな、一番モノばっかりって、なんっか、腹立つじゃないですか(笑)。

(この文章は、当時Facebookのストーリーに書いたものです。(そのストーリー))

SONYからこういう返事が来た。

投稿日:

平素は、ソニー製品をご愛用いただき誠にありがとうございます。
この度は、弊社製品 の件でご迷惑をおかけいたしまして、誠に申し訳ございません。お詫び申し上げます。
 
「ご使用中止」につきまして大変ご迷惑をおかけしますが、事故の防止および安全性確保のため、お客様にご協力いただくようお願い申し上げます。

廃棄の際に新しいテレビをご購入する予定があれば、販売店様にご相談ください。今でしたら、エコポイントの対象製品に買い替えをしてリサイクルを行う場合は、家電エコポイント数にリサイクルの3000ポイント数が加算されます。
(2010年12月31日まで)

ご愛用いただいていた佐藤様には、ご不便、ご迷惑をお掛けいたしますことを深くお詫び申し上げます。今後より一層の品質向上に努めてまいりますので、なにとぞご理解賜りますよう、よろしくお願い申し上げます。

SONYに文句をこのように書いた。

投稿日:

今日、ニュースなど見ておりましたところ、私の所有するテレビ「KV-14GR2」について、「発火するので、廃棄すること」との御社の通知があることを知りました。
安全のために、ともかくも早期の周知徹底に努力しておられることを、立派な事と評価しています。
ですが、これはどうも、拙速に過ぎるのではないでしょうか。私のテレビは、古い物とは言え、若い頃、今とは違う物価高の時に高いお金を払って買った品物で、れっきとした私の所有物です。今も現役で作動しており、さすがは品質重視をもってなったかつてのソニーと、毎日感心しておりました。ですが、それを、「ウチの落ち度で燃えるから、すぐ捨てろ」とだけ言われて、従えるでしょうか。
よく見聞きする「リコール」というものとも、今回の件は違うようです。単に「捨てろ」というだけの事しか、御社はアナウンスしておられません。
「代わりのテレビをよこせ」などと、子供ではないのですから、そんなことを言うのではありません。ですが、せめて、代わりのテレビを購入するための補助や割引ぐらいのことが、御社には出来ないのでしょうか。

NTTドコモ携帯電話 Primeシリーズ「SH-03A」のこと

投稿日:

 暮れに、訳あって大金を投じ、携帯電話をNTTドコモの最新シリーズ「Prime」の、「SH-03A」に換えた。快適であり、おおむね満足している。だが、2~3の不満足な点もある。良し悪しを綯い混ぜて、ここに書き留めておきたい。

  •  電子メールを書いている最中に、写真を撮って添付したくなることがままある。前の「D901is」だと、添付ファイルをつけるときに「新規に写真を撮って添付する」という選択肢が出て、手軽にこれができた。だが、今度のSH-03Aはそのへんは簡単ではない。マルチタスク機能を使ってやることになり、少々煩雑だ。×。(よく見るとできることがあとでわかったので訂正。2008年2月7日)今度のSH-03Aもそれはできるのだが、選択肢がサブメニューの後ろのほうにあるため、メニューを1ページ送らなければならない。ともすれば「その機能がないのではないか?」と勘違いしてしまう。サブメニューのよく使う機能は前のほうに送られてくるなどの工夫はなかったものか。
  •  ブルートゥースが組み込まれており、ワイヤレスヘッドフォンとの相性は抜群である。満員電車で通勤していると、不快を紛らわすのに音楽は卓効があるが、ヘッドフォンのコードがあっちこっちにひっかかったりしてややこしい。私はソニーのBRC-BT15というハンズフリー通話機能つきのブルートゥースレシーバーを秋葉原のヨドバシカメラで8900円ほどで買った。
    SONY ワイヤレスオーディオレシーバー BT15 ブラック DRC-BT15 B SONY ワイヤレスオーディオレシーバー BT15 ブラック DRC-BT15 B
    価格:(税込)
    発売日:

    これは実に快適なもので、この小さく軽いレシーバーのスイッチを入れると、携帯電話の音楽プレーヤーが連動して立ち上がり、前回スイッチを切ったところから続きの音楽再生が始まる。電話がかかってくれば、側面にある小さなボタンを押せば良い。内蔵マイクで快適な通話ができる。人ごみで突然、ポケットに手を突っ込んだままハンズフリー通話をすると、さすがに周りの人が引きますがね(笑)。

 普通、ヘッドフォンを携帯に接続するにはいわゆる「平形」のコネクタでつなぐものだが、平形コネクタは繊細なつくりで、強度はあまりない。ポケットなどに無造作に入れておくと、ともすれば折れてしまう。その点でも、このブルートゥースレシーバーは実にオススメで、ワイヤレスであるから、脆弱なコネクタ類が出っ張るということもなく、携帯を壊すことがない。

 また、どうしたわけか、FOMAの以前の「平形ヘッドフォンコネクタ」はなくなってしまっており、以前に買ったコネクタは使えなくなっている。このシリーズでは、ヘッドフォンをつなぐところは、充電のコネクタと一緒になってしまっているのだ。したがって、別売りの「充電スタンド」を使わないと、充電しながら音楽を聴くことはできない。だが、このブルートゥースレシーバーを使えば、充電しながら支障なく音楽が聴ける。充電スタンドにセットした状態でも、ブルートゥースは5メートルや6メートルはまったく問題なく飛ぶから、同じ部屋の中であれば大丈夫である。

  • Img_0668_3 この機種の音楽機能はピアノとベストマッチである。 前述のブルートゥースレシーバーを愛用のデジタルピアノ「Roland FP-7」のヘッドフォンステレオ用端子にステレオミニプラグで接続し、携帯でアシュケナージのショパンなどを再生して聞けば、FP-7とSH-03Aは実に文句なしのステレオ装置に早変わりする。色を黒で統一したのは意識したわけではなかったのだが、こうして組み合わせてみると実に良い。
  •  音楽機能はWindows Media Playerと非常によくリンクし、音楽データの転送も簡単である。
  •  音楽機能の不満点がひとつある。8GBのmicroSDを入れれば、我が家にある全てのCDを飲み込んでまだ余りあるほどの容量があるのだが、残念ながら曲の数は1000曲が上限である。説明書には1000曲とあるが、999曲でエラーが出る。1000曲というのは意外とすぐにいっぱいになってしまうものなのだが、上限が1000曲までという説明もわかりにくいところにある。しかも、1000曲を超えたときに表示されるエラーは「1000曲でいっぱいです」という意味のものではなく、ただ「失敗しました」とだけパソコン側に表示されるので、なぜ失敗したのかがわからない。少々改善の余地が感じられる。
  •  タダで地図アプリが最初からついており、ナビゲーション機能もある。徒歩や電車移動時の道案内は、「次の交差点を右へ曲がれ」等と音声で教えてくれ、実に快適だ。地図はネットの向こうから最新のものをそのつど持ってきて表示してくれる。だが、「パケホーダイ」等の契約をしないで、ナビゲーションしながら電車などに乗ってしまうと、大変な量の地図をスクロールしつつネットの向こうから持ってくるので、莫大なパケット代がかかる。要注意である。私はそんなことにならないよう、しっかりと「パケホーダイダブル」を契約しておいた。
  •  カメラは高機能だが、反応はデジカメほどには速くないので、それほど期待はしないほうがいいと思う。
  •  標準でついているフルブラウザは、一度使うとやめられませんというくらいのすばらしい出来である。だが、これでYouTubeなど見るとき、ブルートゥースに音が出力されないのはメーカーの千慮の一失といえ、残念である。