ともの技術メモ

趣味の電子工作などの記録。時にLinuxへ行ったり、ガジェットに浮気したりするので、なかなかまとまらない。
RSS icon
  • ESP8285が登場!?

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

    例によってHack a Dayの記事から。

    EspressifからESP8266の後継チップが登場しているようです。その名もESP8285。データシートによると、一言で言えば、ESP8266では外付けだったSPI Flash(8Mbit)が内蔵になっていて、より小さなモジュールが作れる、というところでしょう。

    公式かどうかわかりませんが、開発用のボードもすでにあるようです。

    Hack a Dayの記事には小さな小さなモジュールの写真が載っています。小さいことだけはわかるのですが、1元硬貨との比較ではサイズがよくわかりません。やっぱり比較は25セント硬貨とじゃないと・・・。
    で、1元硬貨のサイズは直径25mmで、500円硬貨は直径26.5mmなので、ほぼ500円硬貨くらいのようです。となると、モジュールのサイズは9mm角くらいでしょうか。アンテナがないので、アンテナ付きだともう少し大きくなるでしょうが。


  • Windows7のMBRを復旧させる

    投稿日 2016年 6月 12日 2個のコメント

    lenovoのノートPCをWindows7とUbuntu17.1のデュアルブート(増設したmSATAのSSDにUbuntuをインストール)で使っているのですが、そろそろWindows10へのアップグレードをやるか、ということでアップグレードをトライ・・・してみたものの、うまく行きません。

    そこで、mSATAのSSDを外してみたものの、grubのコマンドプロンプトが出るばかりでWindows7が起動しなくなってしまいました。

    ・・・・で、ぐぐってみたところ、MBRの書き戻し(修復)が必要な模様。

    検索すると出てくるのは

    1. Windowsの起動ディスクやリカバリディスクで起動して、bootrecコマンドで修復する
    2. UbuntuのライブDVDで起動して、ms-sysコマンドで互換MBRを書き込む

    という方法でした。

    前者はディスク探すのが面倒、後者はわざわざライブDVD(USBでもいいんだろうけど)作るのが面倒だなぁ、と思ってどうしたものかと考えていたところ、

    SystemRescueCDに含まれてんじゃない?

    と思ってSystemRescueCDで起動してみたら、案の定ありました。

    $ ms-sys -7 /dev/sda

    で復旧完了。Windows7で起動してくれるようになりました。
    真似するときは、ちゃんとms-sysのドキュメントを読んでくださいね。

    <追伸>
    無事にWindows10へのアップグレードも成功しました\(^o^)/


  • Nexus7(2012)のファームウェアをLoliPopにアップデート

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

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

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

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

    $ sudo apt-get update
    $ sudo apt-get install android-tools-adb
    $ sudo apt-get install android-tools-fastboot

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

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

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

    $ lsusb
    Bus 002 Device 091: ID 18d1:d002 Google Inc. 
    Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
    Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 001 Device 004: ID 05e3:0605 Genesys Logic, Inc. USB 2.0 Hub
    Bus 001 Device 007: ID 2101:1406 ActionStar 
    Bus 001 Device 006: ID 046d:c534 Logitech, Inc. Unifying Receiver
    Bus 001 Device 003: ID 05e3:0608 Genesys Logic, Inc. Hub
    Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

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

    4)udevルールを作成

    $ sudo vi /etc/udev/rules.d/51-android.rules

    内容はこんな感じ

    SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", MODE="0666", GROUP="plugdev"

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

    $ chmod 644 /etc/udev/rules.d/51-android.rules
    $ sudo /etc/init.d/udev restart

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

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

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

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

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

    7)イメージの書き込み

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

    $ adb reboot bootloader

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

    $ fastboot oem unlock
    ...
    (bootloader) Bootloader is already unlocked
    OKAY [ 0.020s]
    finished. total time: 0.020s

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

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

    ~/ダウンロード $ cd nakasig-lmy47v
    ~/ダウンロード/nakasig-lmy47v $ ./flash-all.sh 
    ...
    (bootloader) Bootloader is already unlocked
    OKAY [ 0.020s]
    finished. total time: 0.020s
    erasing 'boot'...
    OKAY [ 0.035s]
    finished. total time: 0.035s
    ******** Did you mean to fastboot format this partition?
    erasing 'cache'...
    OKAY [ 0.174s]
    finished. total time: 0.174s
    erasing 'recovery'...
    OKAY [ 0.035s]
    finished. total time: 0.036s
    ******** Did you mean to fastboot format this partition?
    erasing 'system'...
    OKAY [ 0.370s]
    finished. total time: 0.370s
    ******** Did you mean to fastboot format this partition?
    erasing 'userdata'...
    OKAY [ 12.177s]
    finished. total time: 12.177s
    sending 'bootloader' (2100 KB)...
    OKAY [ 0.270s]
    writing 'bootloader'...
    OKAY [ 1.225s]
    finished. total time: 1.495s
    rebooting into bootloader...
    OKAY [ 0.020s]
    finished. total time: 0.020s
    sending 'radio' (16384 KB)...
    OKAY [ 1.973s]
    writing 'radio'...
    OKAY [ 0.673s]
    finished. total time: 2.646s
    rebooting into bootloader...
    OKAY [ 0.020s]
    finished. total time: 0.020s
    archive does not contain 'boot.sig'
    archive does not contain 'recovery.sig'
    archive does not contain 'system.sig'
    --------------------------------------------
    Bootloader Version...: 4.23
    Baseband Version.....: 1231_0.18.0_0409
    Serial Number........: xxxxxxxxxxxxxxxx
    --------------------------------------------
    checking product...
    OKAY [ 0.040s]
    checking version-bootloader...
    OKAY [ 0.023s]
    checking version-baseband...
    OKAY [ 0.030s]
    sending 'boot' (5186 KB)...
    OKAY [ 0.642s]
    writing 'boot'...
    OKAY [ 0.253s]
    sending 'recovery' (5740 KB)...
    OKAY [ 0.706s]
    writing 'recovery'...
    OKAY [ 0.237s]
    erasing 'system'...
    OKAY [ 0.109s]
    sending 'system' (650039 KB)...
    OKAY [ 77.868s]
    writing 'system'...
    OKAY [ 36.357s]
    erasing 'userdata'...
    OKAY [ 4.903s]
    formatting 'userdata' partition...
    Creating filesystem with parameters:
     Size: 30063722496
     Block size: 4096
     Blocks per group: 32768
     Inodes per group: 8192
     Inode size: 256
     Journal blocks: 32768
     Label: 
     Blocks: 7339776
     Block groups: 224
     Reserved block group size: 1024
    Created filesystem with 11/1835008 inodes and 159204/7339776 blocks
    sending 'userdata' (139157 KB)...
    writing 'userdata'...
    OKAY [ 29.779s]
    erasing 'cache'...
    OKAY [ 0.088s]
    formatting 'cache' partition...
    Creating filesystem with parameters:
     Size: 464519168
     Block size: 4096
     Blocks per group: 32768
     Inodes per group: 7088
     Inode size: 256
     Journal blocks: 1772
     Label: 
     Blocks: 113408
     Block groups: 4
     Reserved block group size: 31
    Created filesystem with 11/28352 inodes and 3654/113408 blocks
    sending 'cache' (9052 KB)...
    writing 'cache'...
    OKAY [ 1.733s]
    rebooting...
    
    finished. total time: 152.918s

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


  • Raspberry Pi 3にAndroidから接続する

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

    Raspberry Pi 3はWiFiを標準で搭載しているのでモバイルルータとAndroid端末があれば、どこでも結線なしでAndroidから接続することができます。(もちろん、Raspberry Pi 3には電源供給してやらなければなりませんが・・・)

    アクセスには適当なSSHクライアントとキーボードアプリ(標準のキーボードだとさすがにストレス溜まります)を使えば、簡単です。自分はConnectBotとHackers Keyboardを使っています。

    ただし、AndroidはmDNS/Avahi/Bonjourに対応していないのでIPアドレスを直打ちしなければなりません。できればRaspberry Pi 3側はDHCPのままにしたいところ。

    そこで、mDNS/Avahi/Bonjourでサービスを探してくれるアプリも必要になります。自分はBonjour Browserというのを使っています。

    手順を纏めると、こんな感じです。(Raspberry Pi 3側のWiFi設定はできている前提です)

    1. モバイルルータ、Raspberry Pi 3の電源を投入。
    2. Android側でBonjuor BrowserでRaspberry Pi 3のIPアドレスを調べる
    3. ConnectBotでRaspberry Pi 3にSSHログインする
    4. キーボードをHackers Keyboardに切り替える

    これでいつでもどこでもCUIベースの作業ができますw

    GUIベースもxrdp(Raspberry Pi側)とaFreeRDP(Android側)で一応接続できているけど、使い勝手はイマイチっぽい感じです。もっとよい組み合わせがあれば知りたいところ。


  • Raspberry Pi 3をセットアップ

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

    しばらく前に買ったけど動かしてなかったRaspberry Pi 3をセットアップしてみました。

    1.ハマったポイント

    Raspbianを使ってみたのだけど、32GBのMicroSDだと起動途中にパニックを起こす。2枚のMicroSDで同じ結果。結局、8GBのMicroSDだと問題なさそう。

     

    2.設定した箇所

     

    1)初期設定

    起動すると自動的にグラフィカルログインした状態になるので、コンソールを開いて

    $ sudo raspi-config

    でコンフィギュレーション設定する。Expand FilesystemでファイルシステムをMicroSDカードいっぱいまで拡大、Change User Passwordでパスワード設定、Internationalization Optionsでロケールの設定、タイムゾーンの設定、WiFiの国設定を実施して終了する。再起動すると、ファイルシステム拡大が実行される。

    デスクトップ環境のMenu→Preference→Raspberry Pi ConfigurationのLocalizetionで日本語キーボードを設定。

    パスワードの設定が終われば、リモートログインできる。ネットワークにつないであれば、mDNSとsshデーモンが動いているので、リモートから

    $ ssh pi@raspberrypi.local

    とやると、sshでログインできる。(パスワード変更していない場合、初期パスワードはraspberry)

    2)画面サイズ

    画面サイズがVGAくらいのサイズをFullHDに拡大表示しかされなかったので、HDMIを強制的に表示させることにする。/boot/config.txtを修正。

    hdmi_group=1
    hdmi_mode=16

    さらに、オーバースキャン表示を想定しているため、画面周囲が黒枠になって実質的なデスクトップが狭い。液晶モニタでは関係ないので、オーバースキャン対応を禁止する。同じファイルのdisable_overscanのコメントを外す。

    disable_overscan=1

    これでFullHDにピクセルバイピクセルで等倍表示されるようになった。

    3)日本語化

    $ sudo apt-get install fonts-vlgothic ttf-kochi-gothic xfonts-intl-japanese xfonts-intl-japanese-big xfonts-kaname

    で日本語フォントをインストール。インストール後、デスクトップ環境のMenu→Preference→Raspberry Pi ConfigurationのLocalizetionでLocaleをLanguageをja、CountryをJP、Character SetをUTF-8に設定。OKを押していくと再起動を要求されるので再起動すると日本語になっている。

    次の項のアップデート後、

    $ sudo apt-get install ibus-anthy

    として日本語入力をインストールする。再起動後、右上の「US」を左クリックして「日本語 – Anthy」にすると日本語入力ができる。

    4)その他

    $ sudo apt-get update
    $ sudo apt-get upgrade

    でアップデートをかけておくと基本的には完了。

    $ sudo install synaptic

    でsynapticパッケージマネージャをインストールして、Synapticから好きなソフトをインストールすればOK。
    WebブラウザはFirefoxベースのiceweaselとその日本語言語パックのiceweasel-l10n-jaをインストールしました。

    ブラウザとしては十分に動きます。Youtubeも720pのビデオも一応再生できるようになりました。さすがにコマ落ちが激しいのと、16bitカラーになっているのか、グラデーション部分にマッハバンドが出ますが。


  • Raspberry Pi 3が秋月・千石に登場

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

    すでに皆さんご存知のRaspberry Pi 3。無線(WiFi、BT)が載った関係で日本での発売が遅れていたようですが、秋月と千石に登場しました。

    Screenshot from 2016-03-27 11:44:50

    価格はどちらも税込み6200円。$35だと今のレートだと¥4,000くらい。秋月のRaspberry Pi 2の販売価格は¥5,600。Raspberry Pi 2より高いのは初物だからなのか、TELECの認証費用が割掛けされてるからなんでしょうかね。秋月の方はすでに在庫切れですが、千石の方は在庫切れではないようなのでポチッと注文してみました。いつ来るかな〜?

    Raspberry Pi 2よりも倍速いって書いてあったような気がするので、ブラウザが中心ならPC代替として結構使えるようになるかもしれませんね。


  • 秋月の新しい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のソフトのようです)を動かしてみました。

    $ cd ~/.wine/dosdevices
    $ ln -s /dev/ttyUSB0 com1

    としてから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ファイルを展開すると、シェルアーカイブがでてくるので、これをスーパーユーザー権限で実行しても、

    ~$ sudo ./MPLABX-v3.20-linux-installer.sh
    64 Bit, check libraries
    Check for 32 Bit libraries
    These 32 bit libraries were not found and are needed for MPLAB X to run:
    libexpat.so
    libX11.so
    libXext.so

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

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

    ~$ sudo apt-get install libc6:i386 libx11-6:i386 libxext6:i386 libstdc++6:i386 libexpat1:i386
    パッケージリストを読み込んでいます... 完了
    依存関係ツリーを作成しています                
    状態情報を読み取っています... 完了
    以下の特別パッケージがインストールされます:
      gcc-4.8-base:i386 gcc-4.9-base:i386 libgcc1:i386 libxau6:i386 libxcb1:i386
      libxdmcp6:i386
    提案パッケージ:
      glibc-doc:i386 locales:i386
    以下のパッケージが新たにインストールされます:
      gcc-4.8-base:i386 gcc-4.9-base:i386 libc6:i386 libexpat1:i386 libgcc1:i386
      libstdc++6:i386 libx11-6:i386 libxau6:i386 libxcb1:i386 libxdmcp6:i386
      libxext6:i386
    アップグレード: 0 個、新規インストール: 11 個、削除: 0 個、保留: 12 個。
    5,061 kB のアーカイブを取得する必要があります。
    この操作後に追加で 13.7 MB のディスク容量が消費されます。
    続行しますか? [Y/n] 
    (以下略)

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

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


  • スマートフォン用タッチペン

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

    とあるアプリケーションが指では操作しにくく困っていた時に、知り合いからタッチペンを借りたらなかなか良かったので購入してみようと思いました。

    ・・・が、電気屋さんで売っているタッチペンは1,500円〜4,000円くらいもするのでおいそれと手が出ません。そこでまず100円ショップのタッチペンを何本か購入して比較してみることにしました。

    比較対象は以下の4点。

    ダイソータッチペン4種

    いずれもダイソーで売っているものです。左から順に、

    • 「タッチペンボールペン付」
      細めのベールペンの後ろ側がタッチペンになっているものです。パッと見のデザインはなかなかいい感じ。ボールペンは黒一色でボール径1ミリ。
    • 「導電繊維使用タッチペン&2色ボールペン」
      1つ目より一回り大きい外観に2色ボールペンが入っています。1つ目同様に後ろ側がタッチペンになっていて、ここに導電繊維を使っているので「なめらかなペン滑り」というのが売りのようです。ペン本体もパール調の塗装が施されていてなかなかです。
    • 「タッチ&ボールペン」
      これは先端部分がタッチペンになっているのですが、穴が開いていて、ノック式のボールペンがそこから出てきます。これだけはダイソーの完全なプライベートブランド商品ではなくプラチナ万年筆株式会社の社名がパッケージに入っています。
    • 「スマートフォンストラップタッチペン」
      イヤホンジャックに挿して持ち運べるタイプのタッチペンです。見るからにチャちいです。

    タッチペンとしてのファーストインプレッションは、「導電繊維使用タッチペン&2色ボールペン」はタッチすると2点に認識されるケースがあるのか、かなりの頻度でズームしてしまいます。他の3点はタッチペンとしては基本的には使えそうです。もっとも、2台で試してみるとペン同士の差よりも2台での違いのほうが大きいかも?と感じます。もう少し使い込んでみて、感想を追加しようかと思います。また、外で手袋をした状態だとどうかというのも試してみたいと思います。

    <追伸>

    結局、使いやすさでは三番目の「タッチ&ボールペン」が一番かと思います。通常のボールペンと同じ持ち方でタッチできるのが意外にいい感じです。他のものは後端がタッチペンになっているので、結構違和感があります。さすがプラチナ万年筆株式会社の社名がパッケージに入っているだけのことはあるという感じでしょうか。


  • GPS動かず・・・

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

    室内だったため測位できなかったと思われたGPSモジュールを外に連れだしてみました。

    IMG_3106s

    こんな感じで車のダッシュボード上に置いてみたのですが、結局測位できず・・・。アンテナが悪いのか、モジュールが悪いのかわかりませんが、ダメでした・・・。

    <追伸>

    よくみると、GPSのアンテナの裏側がシールドされています。パッシブアンテナでもシールドが要るもんなんだろうか?ひょっとして、アクティブアンテナなんじゃなかろうか?
    ・・・・ということで、3.3Vを47uHのマイクロインダクタを通してアンテナの芯線に供給してみました。結果、多少表示が変わりましたが、測位には至らず。外は寒いので手早くやってしまったので、もう少し放置すると変わるのかもしれません。

    <さらに追伸2/21>

    あらためて、車のダッシュボード上でしばらく放置していたら測位できました。インダクタの効果かどうかはわかりませんが・・・。