2014年10月28日火曜日

[エレコン]Arduino IDEとLeonardoでAVRマイコンに書き込み


こんにちは。
この度、AVRマイコン(ATMEGA328P,ATtiny2313,ATtiny13A)を買ったり買ってもらったりして、どのように使っていこうか考えていました。

【ことのいきさつ】
Arduinoを使って書き込む方法があると知る
KosakaLab
  探すとここに行き当たる。丁寧な解説つきでとてもありがたい。
  でもどこの説明もArduino UNOでやってる。

僕のArduino UNOは現在故障中で使えない
 スイッチサイエンスの永久保障
  Arduino UNO R3の永久保障の内容が最強。みんなここで買うべきっしょ。
(はやく直してもらえばいいのに)

Arduino Leonardoは元気に使える
  Arduino LeonardoはUNOとほぼ同等なボード。
使ってる人はUNOより少ない。ちょっと安い。

Arduino Leonardoでやってるページを見つける
 G2SS Diary: LeonardoでAttiny85にスケッチを書き込んでみた http://g2ss.blogspot.jp/2013/01/leonardoattiny85.html
  できないことはないけど、一手間必要なんだなと知る。

Arduino Leonardoでやる詳細のページも見つける
 Arduino Leonardo as ISP
  英語だけど絵がいっぱいで一番くわしくわかりやすい

できた!

というわけで僕もG2SS Diaryさん同様、やり方の手順を公開します。

0. 準備 用意するもの

・Arduino Leonardo USBケーブル
・AVRマイコン(上記3つで動作を確認)
・ブレッドボードとジャンパ線
・確認用LEDと抵抗

・パソコン(OSはMacOSX、Windows7で確認)
・Arduino IDE1.0.6 (1.5.8 BETAではうまくいかない)

1. Leonardoを書き込み装置にしよう

[ファイル]->[スケッチの例]->[Arduino ISP] を開く。
  内容を書き換える。(SS->10 , 9->13)
  [Arduino ISP Leonardo]とか別名で保存しておくといい。

  
  hardware.zipをダウンロード&解凍&[Arduino]ディレクトリの中に置いておく。
   (http://make.kosakalab.com/arduino/use/source/hardware.zip)
  Arduino IDEを再起動して[ツール]->[マイコンボード]でなにやらたくさん出てきたらオッケー。


  [hardware]ディレクトリの中に[leofix]というディレクトリをつくります。
  [leofix]ディレクトリの中に[programmers.txt]というテキストファイルをつくります。
  テキストファイルには以下の4行を書いておく。
arduinoispleo.name=Arduino as ISP (Leonardo)
arduinoispleo.communication=serial
arduinoispleo.protocol=arduino
arduinoispleo.speed=19200

再起動すると[ツール]->[書き込み装置]に[Arduino as ISP (Leonardo)]がある。



2. マイコンと配線しよう

  Arduino Leonardo側 <ーーー> マイコン
        SCK      <-->    SCK
        MISO    <-->    MISO
        MOSI    <-->    MOSI
        10     <-->   RESET
        5V     <-->   VCC
        GND    <-->   GND
        0(RX1)   <-->   RX (必要ないかも)
        1(TX1)   <-->   TX (必要ないかも)
(参考画像)


3. Arduino IDEをつかって書き込もう

 まず、前述のArduinoISPLeonardoをLeonardoに書き込む
 設定は マイコンボード:Arduino Leonardo
     ポート:Leonardoを認識してるポート
     書き込み装置:AVRISP mkII
 
 次に、前述のLEDチカチカスケッチをマイコンに書き込む
 設定は マイコンボード:ATtiny2313 (internal 8MHz clock) <-- 自分の使うマイコン
     ポート:Leonardoを認識してるポート
     書き込み装置:Arduino as ISP (Leonardo)

 LEDチカチカスケッチ
 void setup( ) {
   pinMode(2, OUTPUT);
 }
 void loop( ) {
  digitalWrite(2, HIGH);
    delay(125);
    digitalWrite(2, LOW);
    delay(125);
  }
ピンで2番を指定しているので、RXD,TXD,の隣くらいのピンにLEDを刺しておくと光る


という感じで僕はできました。
Arduinoの関数とかがどの程度使えるのか分からないので、今後検証していきたいと思います。

以上、Arduino IDEとLeonardoでマイコンに書き込みしてみようのコーナーでした。












2014年10月19日日曜日

[GPSRCC]GPSロボットカーコンテスト2014が終わりました!

GPS・GNSSロボットカーコンテスト2014に出場してきました。
結果は
ダブルパイロンレース:棄権
QZスクランブル:災害通知の受信をできずリタイア
でした。

くやしい結果ですが機体としてはいいものができて満足です。
GarlicToastでいい結果を残せたら新しい機体を作る事を考えていましたが、この現状では今後もGarlicToastで調整を進めることにします。本来ならハードウェア的な問題点を作り直す必要があるのですが、今回は満足しているので基本の枠組みは変えずに続投です。

ちょっとリベンジしたい気持ちもあるので、来年も使えるレベルに手直ししてから封印するつもりです。
また来年もよろしくお願いします

以降反省です。
【ハードウェア】
・最終的には満足のいくものができてよかった。(もう少し早くできていれば・・。)
・インホイールモーターは期待通りに動いてよかった。
・分解組み立てが少々面倒なところが難点。
・電圧最大でストールすると配線が電流を許容できなさそう。
・キガタメール(木固め剤)については今後の経過を見て評価。
・ギア比をあげればもっと電流を抑えて同じ挙動ができるかもしれない。

【回路】
・今後の課題が一番多い部分
・安価なモータードライバICではパワーが足りずにMOS-FETを使ったが今後はそれでいい。(逆転はできない仕様はローバーの機構上問題はない)
・大電流を許容できる配線、基板を作成する。
  今後は基板発注,電源の完全な分離をおこなう
・基板間の配線をちゃんとまとめる。RasberryPi<-->モータドライバ基板間は一本にまとめる。
・モータードライブ用にマイコンがあっても良いかもしれない。
・確実な無線通信をできるようにする

【ソフトウェア】
・Pythonでの記述に慣れることができた。
・マルチプロセスは強い。今までにない制御周期を実現できた。
・プログラムをモジュール化しすぎてデバッグが大変になってしまった。
  一斉実行するためのプログラムが必要
・プログラム間通信を何か考えないといけない。
・簡単にパラメータを変更できる仕組みも必要
・欲を言えばグラフィカルに挙動を確認したい。

【しまう前にしておくべき手直し】
・電源回路の修復
・プログラムの簡略化・自動実行できるように
・QZスクランブルの通知信号の受信問題の解決
・通信をもっと楽に行う

【おまけ】
今回のタイヤのスポンジはこれ。これで100円は去年のウレタンフォームより安い。


前日の試走会にも行ってきました。このときはバッテリーやらの問題でうまく走らず。


2014年10月11日土曜日

[GPSRCC]ピンチと打開策

ご覧のように完成しました!
室内でゴロゴロ走るのを確かめたので今日は屋外テストをしてきました。


そしたらなんと、走らない!
比較的平坦なコンクリートの上ならゆっくり走るのですが砂利道やオフロードではうんともすんとも。
完全にパワー不足です。
無負荷での回転数が結構速いので減速不足というのが正しいかもしれません。

今日家の近所の公園で走行テストして、明日は芝生のある公園でのGPS誘導のテストを想定してたので、予定がだいぶ狂いました。

いやはや大会1週間前にしてこの現状。
しかも来週は台風が来ることなので早めに行動しなくては。

こんなときに考えられる対策はこんなもんでしょうね。
・モーターを出力の大きいものに変更(購入とタイヤ丸ごとの再設計が必要)
・モーターの連装数を増やす(購入とモーターマウントの設計が必要)
・減速比をあげる(ギアの歯数を増やす/減速の段数を増やす)
・機体を軽くする
・タイヤの径を小さくする

最後の2つでも対応できるのですが、そんなに変わらないでしょうね。
減速比については構造上難しいものがあります。
確実に状況を打開するためにはタイヤの変更が必要そうです。

という訳で、モーター変更/タイヤ再設計によるパワーアップ作戦を選びます。
(現在1.6kg程あるのが更に重くなる・・)