2017年12月21日木曜日

TrueSTUDIOでLチカ

この記事はMice Advent Calendar 2017 - Adventarの21日目の記事です。
昨日はnanoさんの「quadceptはいいぞ」でした。

さて,今回はSTM32マイコンのIDEの一つであるTrue STUDIOについての記事です。

来年はSystem Workbench for STM32 (SW4STM32)
開発しようかな、なんて思っていたのですが、このニュースを見て
そんな気も吹き飛びました。

STMicroelectronicsがTrueSTUDIOを開発しているatollicを買収し
有料だったTrueSTUDIO Pro が近々無償で利用できるようになるとのことです。

というわけで,とりあえずTrueSTUDIOに慣れてみようと思い
インストールからLチカまでやってみました。

ちなみに今回はNUCLEO-F446REを使い、付属のST-LinkをJ-Link OB化して
J-Linkで書き込んでみます。

インストール

まずはatollicのサイトでTrue STUDIOのインストーラをダウンロードします。
インストーラを起動したら, どんどんポチポチと進めて行きます。
コンポーネントの選択をするように言われるので、
今回はST-LinkとJ-Linkのところにチェックを入れて進みます。
さらに、ポチポチ進めてインストールを完了させましょう。

CubeMXをTrueSTUDIOに導入

 TrueSTUDIOにコードジェネレータのCubeMXプラグインを入れます。
まずは以下のリンクからEclipse用プラグインのzipを入手します (要アカウント登録)。

ダウンロードが終わったら、TrueSTUDIOのメニューバーで
ヘルプ->新規ソフトウェアのインストール...
を開き、出てきたウィンドウにある作業対象の追加ボタンを押し、
リポジトリーを追加のダイアログを出します。

ダイアログの名前入力欄に任意の名前を入力し、
ロケーション欄はアーカイブボタンを押し、先ほどインストールしたzipを選択すればOK

あとは流れで進んでいき、インストール後再起動すればTrueSTUDIO上で
CubeMXが使えるようになります。

プロジェクトをつくる

まずはCubeMXでプロジェクトを作ります。
TrueSTUDIOの右上にある「パースペクティブを開く」ボタンを押し




出てきたダイアログにある 「STM32CubeMX」をクリックしCubeMXを開きます。
CubeMXが起動したら、New Projectをクリックしデバイス選択に進みます。

今回はNUCLEO-F446REを使うので、「Board Selector」タブから選択し
ダブルクリックで進みます。

進むと下のような画面に進みます。ここでピン設定やクロック設定ができます。
今回はLチカだけなのでいじらず進みます。
まずはプロジェクトの設定を行います。メニューバーから
 Project->Settings...
と進み、以下のように、Project Nameを適当に決め
Project Locationを好きな場所に設定し、Toolchain/IDEをTrueSTUDIOにすればOK
設定が終わったら
 Project->Generate Code
でプロジェクトを生成し、「Open Project」をクリックします。
 右上のボタンを押してCubeMXからC/C++パースペクティブに戻ります。
  
一度ビルドしてみてエラーが出ないか確かめておきます。

ST-LinkのJ-Link OB化

下記のリンクからSTLinkReflashをインストールします。
Converting ST-LINK On-Board Into a J-Link
 ST-LinkをPCに接続した状態でSTLinkReflash.exeを起動し
指示に従ってJ-Link OB化します。

デバッガの設定

TrueSTUDIOのデバッガをJ-Linkに設定します。メニューバーから
実行->デバッグの構成
を選択し、出てきたダイアログの左欄にある「(プロジェクト名).elf」を選択し
デバッガタブのデバッグプローブ欄を「SEGGER J-LINK」に設定します。
適用を押したらダイアログを閉じます。



Lチカのプログラムを書く

TrueSTUDIOのプロジェクト・エクスプローラーからSrcフォルダにあるmain.cを
開きます。main.c 内にはCubeMXで生成されたコードがすでにあります。

CubeMXで再度コード生成を行ったときに、自分が書いたコードが
消えないようにするには
/* USER CODE BEGIN */
/* USER CODE END */
のようなコメントの間に書いていきます。

今回はLチカなのでコード生成で用意されているwhile(1)ループを使います。
/* USER CODE BEGIN WHILE */
/* USER CODE END WHILE*/
の間に次のようにコードを書きます。

これをビルドしてエラーが出なければOK。あとはJ-Linkで書き込むだけです。

書き込み

 ツールバーの虫アイコンをクリックすることでデバッグのパースペクティブが開き
デバッグが開始されます。
 ツールバーの再開ボタンを押してみるとNucleoボード上のLEDがチカチカと
輝き始めます。

まとめ

SW4STM32に比べて環境構築がらくちん



明日のMice Advent Calendar 2017
アブノーマルくんの「elecrowでクリスマスツリー【2年目】」です。

2017年1月1日日曜日

POMを染めよう!!!

 POM(ポリアセタール,ジュラコンとも)等の樹脂を染めて
にしたい方向けの記事でございます

準備するもの
・樹脂製のパーツ
・鍋(今回は百均のボウルで代用しました)
・染料(ダイロンマルチまたは樹脂着色用染料SDN)

 以上!簡単ですね

 染料について説明しておくと

ダイロンマルチ
サイト:www.dylon.co.jp/catalog/dylonmulti.html
価格:約500円
本来衣料用染料のようですがPOMも染められるとの情報があったので使ってみました.
粉末の染料で水に溶かして使います.様々な色があり混色も可能なようです.
内容量は約5gです.小鍋に入る程度のパーツであれば3,4回は使える量です.
今回は32番スカーレットを使ってみました.
 使用済み希釈溶液をもう一度使ってみましたが色が汚くなったので
一度使ったら廃棄したほうがよさそうです

樹脂着色用染料SDN
サイト:www.osaka-kaseihin.co.jp/sdn.htm
価格:約800円
POMを染色するのにはメジャーな染料のようです.
液体の染料です.水で5%に希釈して使います.刺激的な香りがするので換気扇を回しましょう.
こちらもダイロンマルチ程ではありませんが多くの色があり混色可能です.
内容量は70gとなかなか使いきれそうにない量です.
一度使った希釈溶液は再利用可能です.
今回は黒を使ってみました.

2つの染料を紹介しましたが,基本的にやることは同じです.

染料を水で薄める

希釈した染料とパーツを鍋に入れとろ火で煮込む
(溶液の量が減ってきたら水を継ぎ足す)

ちょうどいい色になったらパーツを取り出す

これだけです.本当は指定された濃度と温度で染めた方がよいのでしょうが
面倒だったので目分量&煮込むという雑な感じでやってしまいました(おい

今回の染色では鍋ではなく百均で買ってきたボールとざるを使いました.
下の写真のような感じでぐつぐつと30分ほど煮込みました.




染色した結果,下の写真のような感じに染まりました.思ったよりもきれいに染まって満足です.


一方のSDNで染めた方もしっかりと黒に染まってます.



長くなりましたが,樹脂には塗装だけでなく染色するという選択肢があることがわかっていただけたと思います.
 ぜひ皆さんも染色にトライしてなライフを!!!

2016年12月31日土曜日

全日本マイクロマウス大会2016

全日本マイクロマウス大会終わってしまいましたね...

という訳で今更ですがブログ書きます.

-大会前日-
あまりの体のだるさに試走会に行かず,家で調整(迷路板作っておいてよかった)

探索があまりに不安定なのでターンを確認してみると,かなりずれている…!?

とりあえず探索用ターンの調整後,壁制御なしでの探索をしてみると,
何故かきれいに探索できるときと,かなりずれるときの2パターンが存在する…
どうにも深刻なバグが存在する香りを感じつつ見なかったことに
最短用のターンを調整していると大会に向かう時間になっていました
-1日目-
午前に運営の手伝いがあったので,会場に入ってすぐに調整用の小さい迷路へ向かいました.
割と無難に走っていたので安心して手伝いへ.
フレッシュマンの人たちも無事予選突破できたようで安心していると,
エキスパート予選で自分の番になりました.
探索の調整が案の定甘く,1,2走ともスラロームのずれがたまり完走できませんでした.3走目で何とかギリギリ片道探索が成功し,4走目の最短走行を決めて決勝進出することができました.

-2日目-
何とか決勝に進むことができたのはいいものの,前日から一切調整せずに決勝に臨むことになりました.1走目の探索では調子よく進んでいたものの,ゴール前の櫛で前壁を読んでしまい迷路情報が壊れ,2走目も同様に櫛にやられ,3走目でタイムアップ.調整の甘さがでた結果でした.海外勢の速く正確な探索を見習いたいですね.


こうして,今年最後の大会もあっという間に終わってしましいました.
今年は部室でおしゃべりしていたらあっという間に過ぎ去っていってしまった感じがします.
今年作った機体はまだまだ性能を出し切れていないのでこのままソフトの開発を続けたいと思います.

 



2016年10月16日日曜日

東北地区大会

今年も東北地区大会に行ってきたので遅ればせながらのレポート.
道すがらゴリラ村によったり, おいしいものを食べたりしながらいつもの地へ向かいました.(運転手の皆様,本当にありがとうございました)
ゴリラ村

東日本地区大会ではサーキットに出場するも壁制御未実装だったため完走することもできず不甲斐ない結果になってしまったので,東北地区大会では探索と最短の成功を目指して,通称「精神と時の部屋」でプログラムを書いていました.成果は動画でご覧ください.


精神と時の部屋では調子よく走っていたものの,いざ大会で走らせるとセンサーの閾値がずれているせいなのか5走とも同じところで壁の読み違いが発生し,探索さえ成功できずに終わってしまいました(残念!!).

大会後は懇親会で芋煮を存分に味わいました(毎年,ありがとうございます).


次回の大会では斜め入り最短走行でゴールを目標に頑張っていこうと思います.

2016年7月5日火曜日

モータドライバの発熱

ああ~あつい
確かに外は暑いがそのことではない
1717とモータドライバが熱い
「ハードはほとんど出来たしモータ回してみるか」
そんな軽い気持ちで回してみたら見事に熱い(デューティ比:50%)
1717はほんのり温かい程度で済んでいるが,モータドライバは燃えだしそうなほど熱い
原因を探るべくパッドをぼろぼろにしながら隅々までいじくってみたが全く見当がつかない
新しく基板を発注しようにも熱くなっている原因が判らなければ出来ないしどうしたものか…
とりあえず,まだ使えてないジャイロとエンコーダを使えるようにしてから考えよう…
-追記-
原因はモータドライバに入力するPWMの周波数が小さ過ぎることでした.12kHzから200kHzにしたところ発熱しなくなりました.アドバイスしてくださった方々ありがとうございました.

2016年1月30日土曜日

今期を振り返って(2014-2015) ソフトウェア(+大会)編

4月

モータを回すプログラムを書いたものの,ハードトラブルで2週間程モーターを回せない日々が続きました.それ故,まともに2つのタイヤが回ったときはかなり興奮しました.次に台形加速するプログラムを書きはじめましたが,ワークショップに出ていないこともあり,いまいち台形加速のプログラムのイメージを描けないままに何日も過ぎていきました(ワークショップに出ることをお勧めします).なんとか,台形加速ができるようになったころには4月も終わりかけていたと思います.

5月

台形加速も一段落し,超信地旋回のプログラムを書き始めました.超信地旋回は台形加速の関数を利用するだけだったのですぐにできるようになりました.その後壁制御のプログラムを書き始めたのですがセンサー値の取り方によって値が大きく変わるため調整が難しく時間がかかりました.(この時点ではセンサー値の取り方に大きなバグが潜んでいました)

6月

理科大主催のプチ大会で何とかゴールできるようにと,左手法を書き始めました.左手法のアルゴリズムはすぐにできたのですが,それと走行用の関数を組み合わせることに苦労しました.なんとかプチ大会までには区画ごとに止まる左手法を完成させることができました.座標管理もこの頃に導入しました.

7月

6月の終わりごろから7月にかけては区画ごとに止まらない左手法の導入に取り組んでいました.加減速周辺のバグで区画がずれたり,ゴールで壁にぶち当たったりしてました.テスト前には区画ごとに止まらない左手法は導入できました.このころからクロソイド曲線の軌道をExcelで書いたりしてスラロームの準備をしていました.

8月

夏休みが始まり部室にちょくちょく顔を出しながらプログラムを書いていましたが進捗はあまり出ていませんでした.この頃DxLibを使ってスラロームの軌道シミュレータを作りました.

9月

夏合宿ではスラロームに取り組みました.90度曲がるつもりのプログラムがクロソイド曲線のような軌道になったりと中々上手くいきませんでした.原因は度数法と弧度法の変換ミスだったり,何故か自作シミュレータのパラメータを信じず適当に入れていた等のくだらない事でした.そんなこんなで何とかスラロームもできるようになりました.この後,足立法を入れるためにTera Termでマップを表示する機能だったり,壁情報を保存するプログラムを作りました.9月が終わるころには何とかだましだましの足立法ができるようになっていました.

10月

10月になり大会シーズンが始まりました.このころは足立法で歩数マップを展開するときの時間を考えたプログラムができておらず,探索中の直進のずれなどで悩んだりしていました.
-東日本地区大会-
足立法が何とかできる程度の段階でした.何とか完走させようと徹夜で大会用のプログラムを書いて挑みました.自分の番を待つ間,マウスを持ちながら座っていると徹夜の疲れからか寝てしまいマウスを落下させるというアホみたいなミスをしてしまいました.このときに電源スイッチがはじけ飛んでしまいました.幸いはんだごてを持っていらっしゃった団体の方に貸していただきその場しのぎの修理はできたのですが,落下時にコネクタが半差しになったことに気が付かなかったために,いざ走らせようとすると変な挙動をして止まってしまい未完走という苦い結果で終わってしまいました.
-東北地区大会-
東日本での失敗をバネに調整を重ねある程度走れるようになっていましたが,最短走行での大回りカーブに壁切れ判定を入れておらず調整も甘かった為,最短走行は中々安定しませんでした.大会前日に徹夜で壁切れ判定を導入し,何とか最短もそれなりに走れるようになりました.結果,全走行でリタイアすることなく,フレッシュマンクラス優勝することができました.

11月

 この頃には斜め入りの最短パス生成,探索シミュレーターなども出来上がり,ターンの調整にほとんどの時間を費やしていました.
-全日本学生大会- 
 学生大会の準備に追われあまり調整ができないままだったので(準備がなくても無理だった気がするが)難易度の高い迷路にやられ完走できませんでした.原因の大部分は調整の甘さだったと思います.また,調整の甘さをカバーする壁切れ補正などを入れていなかったのも大きかったですね.それまでのフレッシュマンクラスレベルの迷路であれば,なんだかんだで走れていたのでそれらの要素を軽んじていたのがいけなかったように思います.
-全日本大会-
シーズン最後の大会.フレッシュマンクラスはそこまで難易度の高い迷路ではなかったこともあり,一往復で最短経路を導出できたため,最短走行を4回する機会が得られました.最短1回目はMaxパラメータ(斜めなし)の一つ下のもので走行し無難にゴール,2回目はMaxパラメータ(斜めなし)でゴール,3回目は斜めありのMaxパラメータで走らせましたが,最初の斜めで引っかかりリタイア,最後の4回目は斜めありとなしで悩みましたが,「勝負したほうがいいのでは」との審査員の方からのアドバイスで斜めありMaxパラメータで走らせたところ運よくゴールできたためフレッシュマンクラス準優勝することができました.

今期を振り返って(2014-2015) ハードウェア編

10月

10月上旬あたりからどのような機体にするか具体的に考えはじめました.先輩方の機体をいろいろと見させていただきイメージが固まっていったように思います.結果として,発色の良いユニバーサル基板に大きなサイズがない,見た目がいいといった理由からモータをケーブルでまたいだ前後分離型にすることに決めました.ただ,どこから具体的な機体の設計を始めたらいいかはっきりとはわかっていませんでした.


11月

具体的な機体の設計はモーターを起点に始めればよいと分かってからはハードの設計は割とすぐに進みました.また,2D CADの扱いにも慣れ始め大分具体的な形が見えてきました.


12月

このころには,おそらく実体配線図を書いていたと思います.2D CADで実際のユニバーサル基板の外形,穴と同じになるように図を作って印刷し,手書きで素子を書きこみ,どう配置していくかを決めていきました.実体配線図が8割くらい出来上がった段階で基板に素子を実装し始めました.


1月

期末試験に恐れをなし,進捗ゼロでした.

2月

再試も終わりテスト勉強から解放され,再びハード製作に取り掛かりました.2月下旬にはハードは8割完成していました.


3月

ハードは下板を残すのみとなっていたのですが,kitmillで下板を削ろうとすると小さく出力されてしまうという現象がなかなか解決できず1,2週間ぐらい進捗がありませんでした(パラメータが正しく入力されていないことが原因でした).下板も3月の終わりにはでき,ハードウェアはめでたく完成となりました.



ソフトウェア編へつづく