2014年12月23日火曜日

ATmega 1284PをArduino化したときのピンマッピング

個人的な備忘録。
Arduino on ATmega1284P より。
                      +---\/---+
           (D 0) PB0 1|        |40 PA0 (AI 0 / D24)
           (D 1) PB1 2|        |39 PA1 (AI 1 / D25)
      INT2 (D 2) PB2 3|        |38 PA2 (AI 2 / D26)
       PWM (D 3) PB3 4|        |37 PA3 (AI 3 / D27)
    PWM/SS (D 4) PB4 5|        |36 PA4 (AI 4 / D28)
      MOSI (D 5) PB5 6|        |35 PA5 (AI 5 / D29)
  PWM/MISO (D 6) PB6 7|        |34 PA6 (AI 6 / D30)
   PWM/SCK (D 7) PB7 8|        |33 PA7 (AI 7 / D31)
                 RST 9|        |32 AREF
                VCC 10|        |31 GND
                GND 11|        |30 AVCC
              XTAL2 12|        |29 PC7 (D 23)
              XTAL1 13|        |28 PC6 (D 22)
      RX0 (D 8) PD0 14|        |27 PC5 (D 21) TDI
      TX0 (D 9) PD1 15|        |26 PC4 (D 20) TDO
RX1/INT0 (D 10) PD2 16|        |25 PC3 (D 19) TMS
TX1/INT1 (D 11) PD3 17|        |24 PC2 (D 18) TCK
     PWM (D 12) PD4 18|        |23 PC1 (D 17) SDA
     PWM (D 13) PD5 19|        |22 PC0 (D 16) SCL
     PWM (D 14) PD6 20|        |21 PD7 (D 15) PWM
                      +--------+
                     ATmega 1284p
書き込みに使うのは、本家からfolkしたこちらがおススメ。 https://github.com/JChristensen/mighty-1284p

ATmega 328PをArduino化した時のピンマッピング

個人的な備忘録。
ATmega 328pをArduino化した時のピンアサイン。
    ┏━━━━┓
rst ┃1     28┃ a15
rxd ┃2     27┃ a14
txd ┃3     26┃ a13
d2  ┃4     25┃ a12
d3  ┃5     24┃ a11
d4  ┃6     23┃ a10
vcc ┃7     22┃ gnd
gnd ┃8     21┃ aref
xt1 ┃9     20┃ avcc
xt2 ┃10    19┃ d13
d5  ┃11    18┃ d12
d6  ┃12    17┃ d11
d7  ┃13    16┃ d10
d8  ┃14    15┃ d9
    ┗━━━━┛
    atmega 328p

FT232RLのISP端子

個人的な備忘録。
FT232RLを使ってArduinoのbootloaderを書き込むときの配線。

    ┏━━┓
CTS ┃・・┃ 5V
DSR ┃・・┃ DCD
RI  ┃・・┃ GND
    ┗━━┛
      ISP
            │ 1284p│ 328p 
──────┼───┼───
CTS → MISO │   7  │ 18
DSR → SCK  │   8  │ 19
RI  → RESET│   9  │  1
DCD → MOSI │   6  │ 17

2014年12月7日日曜日

Arduino Uno互換機

秋月電子でパーツセットを買ってきて組み立ててみました。


  • 「作って遊べるArduino互換機」パーツセット
  • UncomPatino基板
これは、もともと書籍の付録基板のパーツセットのようですが、書籍は買わなくても作れますし、Arduino互換機として使えます。


この互換機の良いところは、これ単体でBootloaderの書き込みができることだと思います。完全なクローンでは無いので厳密な互換性を求める方には不向きだと思いますが、Arduinoでちょっと遊びたい方には良いと思います。


組み立て自体は簡単です。
パーツの向きがあるのは、ATMEGA328P(のソケット)、FT232RL、LEDの3つだけ。部品の切り欠きを基板の切り欠きマークに合わせてはんだ付けすれば大丈夫です。 背の低い部品から背の高い部品の順にはんだ付けしていくと楽です。



FT232RLは普通のハンダと、ハンダ吸い取り線を使ってハンダづけしました。
初めに両面テープを使ってFT232RLを基板上に張り付けて位置決めをします。次に足をブリッジするようにはんだ付けした後に、はんだ吸い取り線を足の上に軽くおいてブリッジしたハンダを吸い取ります。足と足がショートしていないことを最後に確認しておしまい。


大変なのは、Bootloaderの書き込みです。以下のサイトなどを参考にさせていただきました。
基本的には、参考サイトにあるとおりで問題無いのですが、気を付けないといけない点が2点ありました。

1点目は、書き込むBootloaderのファイル。
optiboot_atmega328.hex を使う必要があります。書き込むファイルを間違えると、Arduino IDEでArduino Unoとして認識してくれず、作ったプログラムのマイコンボードの書き込み時に失敗します。

2点目は、Bootloaderの書き込み時の待ち時間。
書き込みには40分程度かかりました。avrdude-GUIが応答無しの状態となっても、基板のLEDがチカチカしている間は辛抱強く待つ必要があるようです。avrdude-GUIの問題だと思いますので、私はコマンドプロンプトから以下のとおり直接avrdude.exeを実行しました。
avrdude.exe -c diecimila -P COM3 -p m328p -P ft0  -u -e -U flash:w:optiboot_atmega328.hex

これだと、進捗が見えますので安心です。

補足)
単純ミスでした。Command line Optionに "B 115200" を追加したら一瞬で書き込むことができました。Arduinoをインストールしたフォルダの中にある/hardware/arduino/boards.txtの中に、書き込み時に指定すべきパラメーターが書かれています。

  • uno.upload.speed=115200
  • uno.bootloader.low_fuses=0xff
  • uno.bootloader.high_fuses=0xde
  • uno.bootloader.extended_fuses=0x05
  • uno.bootloader.file=optiboot_atmega328.hex
  • uno.bootloader.lock_bits=0x0F



2014年6月8日日曜日

算数のゲーム

さんすう(たしざん、ひきざん、かけざん、わりざん)の練習をするゲームを作りました。

スマートフォンの場合、ここをクリックしてください。(別ウィンドウで表示されます)



もちろん無料です。ご自由にどうぞ。

2014年5月5日月曜日

RX-8の燃費改善

RX-8 前期型 Type-S (6速MT)にELM327を付けて燃費を計測してみました。

ELM327とは、クルマのOBD2コネクターに接続する機械で、対応するAndroidアプリを使うことでクルマの燃費のほかにもエンジン負荷率やクーラント温度などの情報をみることができるようになります。




私が購入したときには800円前後でした。RX-8の場合、1回の満タン給油で9000円程度ですので(ハイオク170円/L、満タン給油で約50L)、上手くこの機械を活用できて燃費が1割改善できれば1回の給油だけで元が取れることになります。

RX-8の場合、OBD2コネクタはハンドルの下にあります。下の写真はELM327をOBD2コネクタに差し込んだ状態の写真です。ELM327はスマートフォンとほぼ同じ大きさなのですが、運転の邪魔にはなりません。


AndroidとELM327の間はBluetoothで接続するため配線は不要ですが、あらかじめスマートフォン側でBluetoothの設定をしておく必要があります。


車種によってはうまくデータが取得できないことがあるようですが、全く問題ありませんでした。Androidアプリは、TorqueのLite版(無料版)を使っています。

で、結局のところ、RX-8の場合はどういう運転が燃費が良いかというと、

  • 時速と燃費はあまり関係がない。エンジンの回転数が重要。
    • ゆっくりと走っても、燃費がよくなるとは限らない。
    • 速度は気にせず、適度な速度で走ればよい。
  • 燃費は、アクセルを踏み込んだ量と踏み込んでいる時間で決まる。
    • アクセルを踏む量と踏み込む時間を如何に短くするかがポイント。
  • 加速が苦手なクルマなので、加速は低いギアで一気に。
    • 加速中はアクセルを踏み込んでも良いので、加速の時間を短くすることを意識。
    • 加速中はギアをこまめに切り替えるより、低いギアで高回転まで回して一気に加速する感じ。
  • 2000rpm前後がもっとも燃費が良い。2000rpm前後の一定回転数で巡航することを意識。
    • 30km/hで巡航 → 3速で巡航、40㎞/hで巡航 → 4速で巡航、50km/hで巡航 → 5速で巡航。
    • 巡航中はギアをこまめに切り替えて、2000rpmをキープすることを意識。

こんな感じだと思います。
ともかく、アクセルの踏み込み量と踏み込み時間をだけ意識。他は無意味。
当たり前といえば当たり前のことなんですけどね。

瞬間燃費を見ている限り、RX-8の理論上の最高燃費は12km/L程度だと思います。現実的な最高燃費は10km/L程度でしょうね。街乗りの燃費は、信号待ちがどれくらいあるかで大きく変わってくるので、あまり気にしても仕方ないと思います。首都圏で8㎞/Lまでいけたら良いほうじゃないかな。。

2014年3月21日金曜日

BeagleBone Black向けのAndroidをビルドして触ってみた

JellybeanOnBeaglebone_WithSGXを参考にBeagleBone Black向けのAndroid4.2をビルドしてみました。最後、SDカードに書き込む際にロケールを変更することを忘れずに。

動かしてみた感想ですが、もっさりでした。
実用的ではないですけど、遊びとして試してみるのが良いと思います。

  • 前提条件
    • 2014年3月時点での手順です。
    • ビルド環境は、以下の環境です。
      • Lenovo U310 (CPU:Corei5、Mem:4GB)
      • Windows8.1
  • Ubuntu 12.04(64bit)のインストール
    • 13.xx系ではダメ。12.04を使う必要があります。
    • 32bitではダメ。64bit版を使う必要があります。
    • 仮想マシンはVirtualBoxを利用しました。
      • 仮想マシンを作成する際は、Ubuntu(64bit)を選択。64bitが選択できない場合、BIOSの設定を確認し、Virtualization technologyをenableに変更する。
      • 仮想ディスクのサイズを100GBに設定。(デフォルトでは8GBとなっている。忘れずにサイズを変更しておく必要があり。)
      • メモリは1500MBを割り当てました。
  • SSHのインストール
    • teratermなどを使ってSSH経由で作業をしたい場合のみ必要です。
      • sudo apt-get install ssh
      • start ssh
  • 必要となるパッケージの追加
    • 以下のコマンドを実行して、必要となるパッケージを追加します。
      • sudo apt-get install minicom tftpd uboot-mkimage expect
      • sudo apt-get install git-core gnupg flex bison gperf build-essential   zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs   x11proto-core-dev libx11-dev lib32readline-gplv2-dev lib32z-dev   libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown   libxml2-utils xsltproc
  • Java SE Development Kit 6のインストール
    • 2014年3月現在、jdk1.7には対応していません。makeのチェックでエラーとなります。
    • Oracleのサイトから、Linux x64のbin(jdk-6u45-linux-x64.bin)をダウンロードします。
    • ダウンロードしたファイルをホーム(~/)にコピーして、以下のコマンドを実行します。
      • chmod a+x jdk-6u45-linux-x64.bin
      • ./jdk-6u45-linux-x64.bin
      • export PATH="$HOME/jdk1.6.0_45/bin:$PATH"
  • repoのインストール
    • ソース一式を取得するため、repoをインストールします。
    • 端末を起動し、以下のコマンドを実行します。
      • mkdir ~/bin
      • curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
      • chmod a+x ~/bin/repo
      • source .profile
  • ソースのリポジトリ作成
    • 以下のコマンドを実行して、ソースの取得先を作成します。
      • mkdir ~/rowboat-android
      • cd ~/rowboat-android
      • repo init -u git://gitorious.org/rowboat/manifest.git -m rowboat-jb-am335x.xml
    • 以下のコマンドを実行して、ソースを取得します。時間がかかります。
      • repo sync
  • ビルド
    • 以下のコマンドを実行してtoolへのパスを設定します。
      • export PATH=~/rowboat-android/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin:$PATH
    • 以下のコマンドを事項して、Boot Loaderをビルドします。
      • cd ~/rowboat-android/u-boot
      • make CROSS_COMPILE=arm-eabi- distclean
      • make CROSS_COMPILE=arm-eabi- am335x_evm_config
      • make CROSS_COMPILE=arm-eabi- 
    • 以下のコマンドを実行して、Androidをビルドします。すごく時間がかかります。
      • cd ~/rowboat-android/
      • make TARGET_PRODUCT=beagleboneblack OMAPES=4.x
  • SDカードへのインストール
    • 以下のコマンドを実行して、imageを作成します。
      • mkdir ~/image_folder
      • cp ~/rowboat-android/kernel/arch/arm/boot/uImage ~/image_folder
      • cp ~/rowboat-android/u-boot/MLO ~/image_folder
      • cp ~/rowboat-android/u-boot/u-boot.img ~/image_folder
      • cp ~/rowboat-android/external/ti_android_utilities/am335x/u-boot-env/uEnv_beagleboneblack.txt ~/image_folder
      • cp ~/rowboat-android/out/target/product/beagleboneblack/rootfs.tar.bz2 ~/image_folder
      • cp ~/rowboat-android/external/ti_android_utilities/am335x/mk-mmc/mkmmc-android.sh ~/image_folder
    • 以下のコマンドを実行して、ロケールを変更します。(必須)
      • export LANG=C
    • 以下のコマンドを実行して、SDカードのデバイス名を確認します。
      • sudo fdisk -l
    • 以下のコマンドを実行して、SDカードに書き込みます。(SDカードのデバイス名が/dev/sdbの場合)
      • cd ~/image_folder
      • sudo./mkmmc-android.sh /dev/sdb MLO u-boot.img uImage uEnv_beagleboneblack.txt rootfs.tar.bz2
    • 正常に終了したら、以下のコマンドを実行してロケールを戻します。
      • export LANG=ja_JP.UTF-8

あとは、BlackBone BlackにSDカードを刺して電源を入れれば起動します。
初回起動時のみ5分程度かかりますが、2回目以降は1分程度で起動します。

起動中はAndroidのロゴが表示されるはずです。
つなぐTVによっては解像度が対応しておらず、画面が写らないかもしれません。
画面が写らなかったらTVを変えて試してみると良いとおもいます。

2014年3月19日水曜日

BeagleBone Black 入門 その1

BeagleBone Blackを購入しました。
カードサイズのLinuxが動くコンピューターです。

ちょっとマイナーな感じはしますけど、RasberryPiとArduinoの良いところ取りをした感じで扱いやすいですし、標準でなんでも使える(HDMI、USB、SDカード、LAN)のでお奨めです。

■BeagleBone Blackの良いところ
  • Linuxが動く
    • 無線LAN、カードリーダーなどのUSB接続周辺機器が動作します。
    • 同時に複数のプログラムを動かせるのもメリット。
  • Arduino的な使い方もできる
    • プログラミングは簡単です。
    • RasberryPiと比べて圧倒的にI/Oピンが多いので、いろいろつなげたい時も安心。
  • HDMI出力がある
    • テレビに接続すれば画面が写ります。PC無しでもプログラミングとか動作確認ができます。
  • ネットワークポートが付いている
    • インターネットと連携したプログラムが簡単に作れます。
■BeagleBone Blackの悪いところ
  • 起動が遅い
    • Linuxが起動するのにそれなりに時間が掛かります。
    • Arduinoのように、電源ONで即実行とはいかないです。
  • リアルタイム処理は(たぶん)苦手
    • Linuxの上で動くので、リアルタイム処理は難しいと思います。

■始めるのに最低限必要なもの
  • BeagleBone Black本体
    • 秋月で購入しました。
  • HDMI入力に対応したテレビ
    • 無くても動きますけど、あればPCが無くてもプログラミングや動作確認ができます。
  • mini-HDMIケーブル
    • テレビにつなぎたい場合、必要になります。
  • USB接続に対応したキーボード、マウス
    • PC用の普通のUSBキーボード、マウスならなんでも大丈夫だと思います。
    • USBポートが1つしかないのでマウス機能付きのキーボードが良いと思います。

■購入しなくても良いもの、あったら便利なもの
  • USBケーブル
    • 本体に同梱されているので不要です。
  • ACアダプター (5V 1A)
    • USBから電源が取れますので、ACアダプターは不要です。本体に同梱されているUSBケーブルをテレビやPC、スマフォの充電器などにつなげばOK。
    • ACアダプターは必要になった時にあとから購入で良いです。
    • 周辺機器をつなぐ場合はACアダプタが必須になると思います。周辺機器によっては、周辺機器をつないだ状態では本体の電源が入らないものがありました。
    • ACアダプターを接続する場合、電圧が高すぎると電源が入らないようです。電源が入らない場合はACアダプタではなく、USBから電源をとってみると良いと思います。
  • USBハブ
    • USBポートが1つしかないため、マウスやキーボードなどの周辺機器を複数つなげたい場合に必要になります。
    • ACアダプターが付属のものをお勧めします。
  • ケース
    • カードサイズコンピューターなので、名刺入れのプラスチックケースなどが使えると思います。

2014年3月1日土曜日

Lenovo U310のBIOSアップデート&設定変更

Lenovo U310のBIOS設定変更に苦労したのでメモ。

通常の状態であれば、電源を切った状態で電源ボタンの左横にある小さな丸いボタンを押して起動すると起動メニューが表示されるのでそこからBIOSの設定変更画面に入れます。

しかし、SSD換装などに失敗するとBIOSが壊れた状態となるようで、メニューからBIOS設定変更を選択しても通常のWindows起動がはじまってしまいます。

BIOSを更新すれば治りますが、2014年1月現在にLenovoの公式サイトで公開されているBIOSアップデートはWindows7用であり標準でWindows8が入っているU310では動作しません。

BIOS アップデート Windows 7 (32bit, 64bit) - IdeaPad U310, U410
(65cn21ww)

非公式ですが、以下を使うとBIOSが更新できて、BIOS設定変更もできるようになりました。
BIOS Update for Windows 8 (32-bit, 64-bit) – IdeaPad U310, U410
(65cn99ww)

非公式ですので、何があるかわかりません。
自己責任でお願いします。