趣味の電子工作などの記録。時にLinuxへ行ったり、ガジェットに浮気したりするので、なかなかまとまらない。※サイト移転しました(tomono.eleho.net ⇒ tomono.tokyo)
RSS icon
  • Nexus7(2012)のファームウェアをLoliPopにアップデート

    投稿日 2016年 5月 21日 コメントはありません

    手元にあるNexu7(2012/3Gモデル)をAndroid 5.1.1(LoliPop)にアップデートしてみます。
    手順はFactory Images for Nexus Devicesに書かれているとおりです。下の方の使用条件に同意してチェックすると具体的なイメージやアップデートの方法が表示されます。

    下記にLinuxMint17(64bit)での手順を記載しておきます。言うまでもないことですが、ファームアップデートは自己責任で。

    1)ツールのインストール

    2)Android端末を開発者モードに変更する

    Android4.4.4ではUSBでPCに接続しても、PC側では認識されません。現在入っている
    設定→タブレット情報をタップして、タブレット情報を表示させ、ビルド番号を連打すると「開発者モードになりました」という表示がされ、設定メニューの中に「開発者向けオプション」が現れます。開発者向けオプションの中の「USBデバッグ」にチェックを入れてからPCに接続します。

    3)Android端末のUSBデバイスIDを確認する

    この場合、最初の18d1:d002がNexus7(2012)デバイスIDです。(18d1がベンダID、d002がデバイスID)

    4)udevルールを作成

    内容はこんな感じ

    5)パーミッションを変更して、udevを再起動

    6)イメージのダウンロードと検証

    以降は、公式サイトの手順の「Flashing instruction」に沿って進めていきます。

    まずはイメージのダウンロードと検証です。適当なディレクトリにイメージをダウンロードして、

    $ md5sum nakasig-lmy47v-factory-b2d44613.tgz
    c30e5d3bd7cef9edde38ce58bf741857 nakasig-lmy47v-factory-b2d44613.tgz

    としてファイルの正当性をチェックします。正しいファイルがダウンロードできたら、展開しておきます。

    7)イメージの書き込み

    Nexus7をPCに接続して、ターミナルから

    でリブートさせます。初回はNexus側にUSBデバッグを許可するか表示されますので、「常に許可する」のチェックボックスにチェックを入れてOKを押します。
    Nexus側にブートローダの画面が表示されますので、

    として、ブートローダをアンロックします。自分の場合は、以前5.0.2から4.4.4に戻した際にアンロックしてありましたので、上記のように「already unlocked」となりました。

    引き続きファームウェアアップデートに入ります。当然ですが、端末に保存されている情報はすべて消えてしまいますので、十分注意してください。また、不慮の事故等で端末が文鎮化するかもしれませんので、自己責任で。

    完了すると、勝手に再起動します。
    最初しばらくは倒れたドロイド君の上に赤三角内に「!」が表示されていて動きがないのでびっくりしますが、しばらくすると画面が変わって起動時の画面(Googleカラーのつぶつぶがぐるぐる廻る)に変わります。この状態が長く(5〜10分位?)続いた後、Welcome画面とともに言語選択する画面に遷移します。


  • 秋月の新しいGPSモジュールを試してみました

    投稿日 2016年 2月 22日 1つのコメント

    秋月の新しいGPSモジュール(単品ではなくキットの方)を試してみました。

    このキットはこのUSBシリアル変換基板と接続して使うことを初めから想定しているのか端子配置が合わせられています。・・・が、Androidでも使ってみたいと思っているので、今回はあえてPL-2303を使用したUSBシリアル変換モジュールと接続するケーブルを作成しました。

    まずは、aitendoのモジュールと同じ構成で中華Androidに接続、「You Are Here GPS」を起動するとしばらくして測位ができて座標が表示されました。GPSモジュール側でもLEDが1秒周期で明るく点滅するようになりました。さらに、中華AndroidのGoogle Mapsでも現在位置としては取得できたのですが、継続的にトラッキングしてはくれません(理由不明)。

    そこで、今度はLinuxMint13環境で動かしてみました。

    まずはwineとwine-geckoをインストールして、秋月のWebサイトに上がっているMiniGPS(GPSチップの製造元、MediaTekのソフトのようです)を動かしてみました。

    としてからMiniGPSをwineで実行します。実行したらCOM1を選択して9600bpsに設定。測位が完了すると無事にGPS衛星の掴み具合を表示してくれました。(なお、後述のgpsdをインストール後はCOMポートに接続できなくなりますので要注意)

    次にgpsdをsynapticでインストールしました。・・・が、これだけでは動いているんだかよくわかりません。せっかくGPSなのですから、マップ上に自分の場所を表示させてみたいものです。ググってみると、Vikingというのが定番みたいなので、Synapticでインストールしてみました。

    使い方がちょっとわからなかったのですが、ウインドウの左側がレイヤーになっているようなので、

    1. 左側の下の方の「+」ボタンを押して、「New Map Layer」でOpenStreetMap(MapQuest)を追加します。以下のダイアログが開くので、
      Screenshot-Layer-Properties-1「Autodownload maps」にチェックを入れてOKを押します。
    2. 次に、「New GPS Layer」でGPSを追加します。ダイアログで「GPSRealtime Tracking mode」を選択して、以下のように設定します。
      Screenshot-Layer Properties

    この状態だと現在位置はニューヨークのマンハッタンになっているのですが、追加したGPSを右クリックして「Start Realtime Tracking」を選択してしばらくすると、地図上に軌跡が描かれるようになりました。

    Screenshot-Untitled-Viking-1

    キャプチャ画面でもわかる通り、道路に沿って綺麗に軌跡を描いてくれます。

    ちなみにこのVikingですが、aitendoで購入したモジュールでも同じように動作しました。
    Linuxで動かすぶんにはPL-2303系のモジュールである必要はないと思うので、FT234Xのモジュールに変更して動かしてみようかと思います。


  • 64bit環境にMPLAB-Xをインストールする

    投稿日 2016年 2月 13日 コメントはありません

    故あって、Ubuntu17.1 MATE 64bit環境に16bitPICをターゲットとしてMPLAB-Xをインストールしました。

    ダウンロードしたMPLAB-Xのtarファイルを展開すると、シェルアーカイブがでてくるので、これをスーパーユーザー権限で実行しても、

    となって、32bitライブラリをインストールするよう要求されます。・・・が、ここで表示されているものを素直にapt-getでインストールしようとしてもダメなのです。

    じゃあ、どうしたらいいのかについては、こちらに記載があります。

    ということで、パッケージ名の後ろに「:i386」をつける必要があったようです。わかってしまえばなんと言うことはないのですが、わからないと困りますよねぇ・・・。

    ここをパスできれば、あとは再びシェルアーカイブを実行するとインストール完了です。併せて、XC16もダウンロードしたシェルアーカイブを実行してやると途中でライセンスファイル生成のためにNICのMACアドレスの確認ダイアログが出ますが、そのまま次へ進めてしまえばインストール完了です。


  • Raspbianにmoserialをインストール

    投稿日 2016年 1月 19日 コメントはありません

    なんだかんだで忙しくて、気づけば11月末から更新してないですね。

    それはそうと、忘れないようにメモです。

    Linux環境でシリアル通信をするものに対するテスト・デバッグではmoserialが便利だと思っているのですが、ポータブルな環境で扱おうと思ってRaspberry Pi2で動かすべく、Raspbianにインストールしてみました。

    RaspbianのSynapticで検索してもmoserialは出てこないので、ソースからコンパイルするしかなさそうです。

    まず、環境整備として、Synapticで

    • gnome-common
    • libglib2.0-dev
    • yelp-tools
    • libgtk-3-dev
    • valac

    (とその依存ファイル)をインストールします。順に、

    • gnome-autogen.shがない
    • glib-gettext >= 2.2.0が要る
    • yelp.m4がない
    • ‘gtk+-3.0’パッケージがない
    • valacコマンドがない

    の対策になります。パッケージをインストールしたら、

    でgitでソースコードを引っ張ってきて、コンパイル、インストール、実行になります。(実際には引っかかりながら必要なパッケージをインストールしていったのですが)

    Raspbian環境ではUARTはUSBに接続したいわゆるUSBシリアルしかでてこないようです。(ハードウェアピンにはなかったっけ?)

    もしmoserialをインストールする方がいて、その参考になれば、ということで残しておきます。


  • LinuxでコミュニティFMのストリーミング放送を聞く

    投稿日 2015年 9月 10日 コメントはありません

    ふとした事から、たくさんあるコミュニティFMが共同でストリーミングサービスを実施しているのに気づきました。

    こちらに放送局の一覧とクリックで聞けるリンクがあるのですが、Linux+Chromeブラウザでは残念ながらクリックしてもasfファイルを保存するかを問うダイアログがでるのみで、放送は聞けません。

    しかし、URLをクリップボードにコピーしてVLCに渡してやることで放送自体は聞くことができます。そのやり方をメモしておきます。

    Screenshot-16

    放送局の一覧から、聞きたい局を決めます。そして、その「音声を聞く」アイコン(赤丸部分)を右クリックして、「リンクアドレスをコピー」します。

    Screenshot-サイマルラジオ - Google Chrome

    リンクアドレスをクリップボードにコピーしたら、VLCメディアプレイヤーを開きます。

    Screenshot-VLCメディアプレイヤー

    URLを入力するダイアログが開くので、ここにクリップボードにコピーしたURLを貼り付けて「再生」を押します。

    Screenshot-URLを開く

    これで放送が聞けます。局によってはビデオストリーミングをやっているところもあるようで、その様子も同じ方法で見ることができます。


  • ESP8266を操作してみる

    投稿日 2015年 7月 10日 コメントはありません

    秋月のAE-UM232Rと三端子レギュレータを接続してブレッドボード上でESP8266を動かしてみました。使用したモジュールは手持ちのESP-12でプリント基板パターンアンテナを使用したFCC認証済みのモデルです。

    IMG_0413s

    接続回路図はHack a Dayの記事のままです。真ん中下がピッチ変換基板に載せたESP-12モジュール、左上がAE-UM232R、右上に3.3Vを生成する三端子レギュレータを配置しています。真ん中には電解コンデンサとフィルムコンデンサが付いているのですが、これは後述のとおりなかなか動作しなかったので、電源系の不安定さを疑って追加したものです。その右側にはF/W書き込みのためのスイッチもつけてあります。USBで接続する先のPCはLinuxMint17.1 MATE edition 64bit版です。

    USBケーブルを接続すると、ESP-12に搭載されている青いLEDが一瞬点滅します。購入直後であればこの状態でスマートフォンなどにWiFiの状態をみるツールを入れてやるとアクセスポイントとして見えます。

    次にPC側でターミナルプログラムとしてGtkTermを起動して、シリアルポートに/dev/ttyUSB0を選択し、通信速度を9600bpsに設定すると、入力した文字がエコーバックされるのがわかります。
    この状態ではATコマンドを受け付けるはずなので、

    AT[Enter]

    と入力してやると「OK」と返ってくるはずなのですが、返って来ません。
    グーグル先生に聞いてみると、電源不安定だと起きるのではないかとか、そんな話が見つかります。それで電解コンやらフィルムコンやら追加したりしたのですが、状況が変わる気配はありません。

    さらに調べてみると、「改行コードは”\r\n”でないと動作しない」という情報が出てきました。そこで、[Enter]の代わりにCTRL+M、CTRL+Jと入力したのですが動作しません。代わりに日本語入力モードになってしまいました。

    そこで、一時的にIBus+Anthyの動作を止めてやりATの後にCTRL+M、CTRL+Jと入力してやると無事にOKが返ってきました。同様にいくつかコマンドを打ってみました。

    というような感じで無事にアクセスができました。上記の例を見てもわかるとおり、アクセスポイントの検出もできていました。

    ※上記の動作確認は接続先のアクセスポイントを含め、シールドルーム内で実施しています。早く技適対応済みのモジュールが入手できるようになって欲しいものです。


  • 三項演算子の振る舞い

    投稿日 2015年 7月 7日 コメントはありません

    実は最近調子が悪く、療養中の身で最近記事をかけていません。(ESP8266関係も追っかけられていません)

    ただ、Webを彷徨っていたらこんな記事を見かけたので考えてみました。

    i%n==0?1:0
    ってどんな意味?

    との質問。演算子の優先順位から言って、((i%n)==0)?1:0 と等価で、iがnの倍数の時に1になる動きをするのでしょう。

    実際にいくつかの言語で試してみました。

    1.C言語

    となります。コンパイルと実行結果は、

    2.Java言語

    コンパイルと実行は、

    となります。

    3.JavaScript言語(Node.js 環境)

    実行は、

    4.JavaScript(ブラウザ環境)

    ブラウザでからのページを開いて、右クリックでJavaScriptコンソールを開いて、上記のプログラムをコピペしてリターンキーを押すと、結果がブラウザ側に表示されます。

    5.JavaScript(おまけ)

    サーバサイドで実行して、ブラウザで結果を見る場合です。

    これを foobar-server.js で保存して

    で実行し、ブラウザで http://localhost:8000/ を表示すると結果が見れます。
    firefoxではリロード毎にちゃんとnが1ずつ増えていくのですが、Chromeだと1から始まって2ずつ増えていきます。理由はわかりませんが、リロードの前に無駄な読み込みでもしているんでしょうか。それとも?


  • ESP8266対応のArduino IDEをビルドしてみた

    投稿日 2015年 4月 12日 コメントはありません

    先に紹介したESP8266対応のArduino IDEですが、GitHubにはなぜかLinuxの32bit版が存在しません。

    そこで、ビルドしてみました。
    環境は Ubuntu 14.04 LTS 32bit 版、CPUはCeleron847です。

    結論から言うと、ビルドするだけなら非常に簡単です。(ビルドするだけなら、ですけどね)
    手順は単にドキュメントに書かれているとおりです。

    まず、

    で、一式持ってきます。ここでダウンロードする量は1GBを超えるので、一体ビルドするのにどんなにかかるんだろう、と不安になります。

    でビルドします。1回目は「JDKがない」と言われて失敗してしまいました。
    そこで、synapticで「default-jdk」をインストールして、再度、

    としてみました。すると、何やらさらに大量にダウンロードしていますので、一晩二晩くらいビルドにかかるんだろうか、と放置して寝ました。

    しかし、起きてみると、最後に、

    として完了していました。表示を信じるなら10分弱で完了しています。

    いざ起動ですが、GitHubには起動方法は書かれていません。
    で、ぐぐってみると本家(?)のArduinoのビルド方法の説明が見つかりました。
    こちらを参考に、

    $ ant run

    とすると、少し経って arduino IDE が起動しました。

    ・・・が、ビルドしようとすると、g++が見つけられないようでエラーになってしまいます。しかし、すでにxtensa用のg++はビルド済みなので、

    としてリンクを張ってやるとコンパイルは通るようになりました。・・・が、こんどは esptools ディレクトリがないと言ってエラーになるので、

    として、リンクを張りました。・・・が、それでもまだエラーが出ます。

    切り分けるため、

    として起動してやると、ビルドが通りました。
    ・・・・が、通常起動ができなくなってしまいました。パーミッション周りでまだいろいろあるようです。

    とすると起動はできましたが、シンボリックリンクが消失しているのか、また振り出しに戻ってしまいます。

    まあ、ここまでやるんなら、素直にOSを64bit版Linuxにした方がいいような気がします(^^;


  • R言語で画像データハンドリング(EBImage)

    投稿日 2015年 4月 5日 コメントはありません

    R言語で画像データを取り扱う方法を調べています。
    代表的なのはEBImageのようですので、まず試してみました。
    とりあえず、

    としてインストールします。ルート権限で実行しないとパッケージのアップデートができない、と怒られます。なので、ルート権限で実行します。すると途中、他のパッケージのアップデートをするか聞いてくるので、アップデートしてやります。

    途中で「gfortranがない」と文句を言ってくるので、gfortran-4.8とlibgfortran-4.8-devをsynapticでインストールして、再度

    としたらとりあえずエラー無しにインストールできたようです。
    (あと、imagemagick、libtiff5-devもインストールしておいたほうが良さそうです)

    データを読み込んでみます。

    まず、小さく切り出したビットマップを読み込もうとしたのですが、GIMPで保存する際に圧縮がかかっているようです。そのために読み込めません。かといって、GIMPで切りだす前の巨大なビットマップを読もうとすると、読むことはできてもその後の処理が32bit版ではメモリ不足を起こすようです。

    仕方がないので、小さく切り出した画像を非圧縮のTIFで保存しなおしてみます。

    最初の「img <- readImage(“tate.tif”)」で画像を読み込みます。
    読み込んだ画像を確認するために「display(img)」で表示させて確認します。
    次の「bimg <- img*255」は読み込んだ画像は0〜255の画素値が0〜1に割付け直されるようですので、これを0〜255に割りつけ直すために各画素を255倍します。RGBそれぞれの画素値はimg[,,x]の3番目の添字で選べるようです。
    読み込んだ画像は「hist(bimg)」でヒストグラムを取ることができます。この場合、勝手に1枚のグラフにRGBそれぞれの値をプロットしてくれます。

    さらにEBImageをつかって画像をハンドリングする例がこちらにありました。そのうち試してみたいと思います。
    また、基本的な画像処理(明度、コントラスト、ガンマ、切り出し、2値化、回転、平行移動、反転など)についてはこちらでひと通りの紹介がされています。

    でも、直接巨大ビットマップを扱いたいんだよなぁ・・・。


  • 【すごい】ESP8266がArduino IDEでサポートされる

    投稿日 2015年 3月 30日 4個のコメント

    いつものように、Hack a Dayの記事から。

    タイトル(「ARDUINO IDE SUPPORT FOR THE ESP8266」)だけ見ると、ESP8266をEthernet Shieldとして使えるようになったのかな、と思ってしまうところですが、そんな当たり前の話じゃありません

    『ArduinoでESP8266がサポートされた』のではなく、『Arduino IDEでESP8266がサポートされた』のです。言い換えると、ESP8266単体で動かすIoTアプリケーションの開発がArduino IDEでできるようになったということなのです。(github上のサンプルプログラムにはIoTのプロトコルであるMQTTのサンプルも載っています)

    ESP8266の内部のXtensaプロセッサをArduino IDEがサポートするようになり、ESP8266モジュールだけでArduinoのpinMode(),digitalRead(),digitalWrite(),analogRead()が使える上に、WiFi機能をEthernet Shieldと同様に使えるようです。一方で、PWMはESP8266自体がハードウェアリソースを1chしか持っていないので制約があり、SPIとI2Cはまだ動作しないようです。

    すでに github から Linux(64bit)、Windows、OS X用のArduinoコンパチのIDEがダウンロードできるようになっていて、サポートしている機能の範囲も同じところに書かれています。(Linux版をダウンロードしてみたら70MB以上ありました・・・)

    ESP8266の書き換えは、Hack a Dayのこちらの記事にあるような簡単な回路でできるようです。

    IDEの安定性次第のところはあるかもしれませんが、安定して使えるようになればこれは間違いなく大ブレイクすると思います。これで無線や電子工作に詳しくない人でもArduinoでマイコン制御機器を作ってみるのと大して変わらない感覚で、ESP8266を使ったIoT機器を作ってみるということが可能になるのですから。

    おそらく、Espressif社はWiFiを使ったIoT機器用のチップとしては数量でNo.1になっていくのではないでしょうか。(ちょうど、BluetoothでCSR社が占めているような立ち位置になるんじゃないかと予想します)