北の国から

忘れたことを思い出す為の記録

stmでc++のプロジェクト

イントロ

stm32でマイクロマウスを作るに際して,プログラムはC++でやりたいなぁと思いたった私は,
インターネッツの海にもまれながらCubeMXが吐き出すmakefileをいじりました.

やることといえばディレクトリの指定とgccをg++にする程度ですが.

以下のリポジトリに置いてあります.
多分しばらくはdevelopが最新です.

リポジトリ

github.com

buildとかそこら辺のフォルダはgitでは管理していないのであしからず.(したほうがいいのかな)

ライブラリ

C++で開発する理由は,ロボットの機能をクラス単位にしてまとめていくやり方が今のところ一番しっくりきているためです.
ただ単にHALのwrapperなライブラリとなっていますが,その分ほかのSTMにも適用できるからよしとします.

少しずつ必要な機能を書いていきます.
7月中には使う機能は全部書き終えたい...

現状では,GPIO,QEIが書けてます.(実機がないのでテストはしてない)
(6/25)PWM output 追加

もし,「もっといいライブラリのやり方あるよ」って人がいたら教えてほしいです !

参考にしたサイト

blog.taniho.net

makefileのインクルードディレクトリの指定(ワイルドカードのところ)を参考にしました.

修正基板の発注

初めに

お久しぶりです.
るるです.

学生ロボコンも終わったため,マイクロマウスや研究活動に本腰を入れ始めます.

去年の9月から一切更新してなかったのでこれからは更新の頻度と内容の質を上げていけたらな...と思います.

さて,本題に移ります.

前回の基板の失敗点

前回の基板にはいくつか失敗した点がありました.

  • 素子間が狭すぎてはんだ付けがしにくい
  • マイコンの電源周りの配線が間違っていた
  • ビアが少ない

1つ目:素子間が狭すぎてはんだ付けがしにくい

これは前回の設計時に「これくらいいけるやろ~」って思ってやったのが無理があったって感じです.

特にジャイロ(MPU6050)周りのはんだ付けが鬼難しかったのでここはMPUの基板が直で乗っかるように変更しました.

2つ目:マイコンの電源周りの配線が間違っていた

当時の僕が何をみてライブラリを作ったのかわからないのですが,
VCAPVSSと表記していたために直でVSSにつながっていました.(キレそう)

おそらくこれが原因でマイコンが起動せず,書き込みが不可能になっていたっぽいです

ライブラリがちゃんとしてないと動かない(あたりまえ体操)

3つ目:ビアが少ない

直接的にこれが悪さしたわけではないですが,見返すとビア少ないなぁって思いますね.
バランスよくたくさん増やしました.

以前の基板

f:id:r_u__r_u:20190622031823p:plain
以前の基板

新規基板

f:id:r_u__r_u:20190622031826p:plain
新規基板

発注先はelecrowです.
0.99$で作ってくれるキャンペーンで安く作れました.(と思ったら前の発注の方が安かったっぽい)
発注して1週間で基板が届くなんて便利な世の中ですね

上側にたくさん穴があるのには理由があります.

  • 軽量化
  • 重心測定
  • おしゃれ

前回の基板でうまくいっていたところ

電源周り(基板下部)の回路はうまく動作していました.(スイッチとか)

前回の基板に無かったもの

前回の基板にはUARTの出力が無かった(アホ)ので追加しました.
また,LEDもたくさん乗っけてます.

まとめ

月曜に基板が届くのでそれまでにソフト周りを整備したいなぁ
みつを

Pythonにおけるリスト内包表記のメモ

C言語では

int i,sum;
for(i=0;i<10;i++){
  sum += i;
}
printf("%d",sum);

みたいに書く処理も

Pythonなら

tmp=[ i for i in range(10) ]
print sum(tmp)

で終わる.

csvデータを受け取るときも

import csv
f = open(filename,"r")
csvData = [map(float,data) for data in csv.reader(f,delimiter=",",lineterminator="\r\n")]

csvDataにlist型で格納できる

メモリの処理が減って速度が上がるらしいので積極的に使っていきたい.