HC-SR04で距離をはかってみる
買ったはいいものの、また積んでいた超音波センサ。動かしてみた
こちらを参考に。
ソースはこんな感じ。
そのうち温度補正いれるかもなのと、キー入力で動作、停止をいれた。
#define echoPin 2 // Echo Pin #define trigPin 3 // Trigger Pin char op_mode = 0; char key_in = 0; double period = 0.0; double dist = 0.0; double temp = 25.0; double spd = 340.0; void setup() { // put your setup code here, to run once: Serial.begin( 9600 ); pinMode( echoPin, INPUT ); pinMode( trigPin, OUTPUT ); Serial.println("a: start, s: stop"); } void loop() { // put your main code here, to run repeatedly: key_in = Serial.read(); switch(key_in){ case 'a': op_mode = 1; break; case 's': op_mode = 0; break; default: break; } if(op_mode){ spd = 331.5 + 0.6 * temp; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite( trigPin, HIGH ); //超音波を出力 delayMicroseconds( 10 ); // digitalWrite( trigPin, LOW ); period = pulseIn( echoPin, HIGH ) / 2.0; // us if (period > 0) { dist = spd * period / 1000000; // m Serial.print("dist: "); Serial.print(dist); Serial.println(" m"); } } else{} delay(500); }
できたのがこれ。ジャンパー線をぶっ刺すだけの簡単設計。
ロボットに載せたらなんかできるかな。
Arty Z7-20 の立ち上げめも(Boot Imageの作り方)
■FSBL(First Stage Bootloader)プロジェクトの作成
Vivadoで作成したSDKを起動
File->New->Application Project
Project nameに適当な名前「xxx_FSBL」を入れてNext
Zynq FSBLを選択してFinish
■デバッグオプションの設定(オプション:起動確認用UART出力)
上記作成したブートローダープロジェクト「xxx_FSBL」で右クリック -> Properties
C/C++ Build -> Settings -> ARM gcc compiler -> Symbols
FSBL_DEBUG_INFOを追加
■FSBLのコンパイル
「xxx_FSBL」で右クリック -> Build Configurations->Set Active->2. Release
「xxx_FSBL」で右クリック -> Build Project
■Boot Image(Boot.bin)の作成
アプリケーションプロジェクトを右クリック -> Create Boot Image -> Crate Image
sdk\PWM_AXI_tutorial\bootimage に BOOT.bin が作成される
■QSPIに書込み
Arty Z7の電源を入れる
SDK -> Xilinx -> Program Flash
Image File -> BOOT.bin (上記で作成したもの)
Flash Type -> qspi_single
FSBL File -> PWM_AXI_FSBL.elf (FSBLプロジェクトで作成したもの)
Program
(QSPI起動になってなかったら)
Arty Z7の電源を切る
JP4 -> QSPI にする
Arty Z7の電源を入れる
Arty Z7-20 の立ち上げめも(IPの作り方)
■IP(Vivado)プロジェクトの作成
Vivadoを起動(IPを使用するprj)
Tools -> Create and Package IP
Create a new AXI4 peripheral
Nameに好きなIP名を入力する
Edit IP -> Finish
■HDLの編集
(IP名)_S00_AXI.v を開いて編集する(2箇所)
// Users to add ports here
output wire [3 : 0] pwm,
// Add user logic here
assign LEDs_out = slv_reg0[3 : 0];
保存する(ctrl + s)
(IP名).v を開いて編集する(2箇所)
// Users to add ports here
output wire [3 : 0] pwm,
) pwm_v1_0_S00_AXI_inst (
.PWM(pwm),
保存する(ctrl + s)
■(必要なら)ファイルを追加する
ソースファイル
Sources -> + (Add Sources) -> Add or create design sources -> Add Files -> Finish
■IPのパッケージ化
Package IP -> File Groups -> Merge changes
Package IP -> Customization Parameters -> Merge changes
Package IP -> Ports and Interfaces で編集したポートが反映されていることを確認する
Package IP -> Reviea and Package -> Edit packageing settings
OK -> Repackage IP
arduinoで相補PWMをだしてみる(再び)
タイマについて聞かれて、前のソースみたらちょっと使いづらかったので修正。
わかりやすく、スイッチング周波数とDuty入れるようにした。
ISR (TIMER1_OVF_vect)は空っぽでも、ないと変になるので注意。
波形はこんな感じ。デッドタイムの500nsもちゃんと入ってる。
タミヤのカムプログラムロボット
前に欲しくって買えなかった、カムプログラムロボットが再販されてると聞いて。
確かに売ってた。ヨドバシドットコムにもあった。早速買った。
どーん。
開けたらこんな感じ。
ここでプラモだったことに気づいて、1日寝かす。(SSDの換装で疲れてた。。)
よし、作ろう。
あのロボット系列なので、ギアボックスがでてくる。ちょっと面倒だけどがんばる。
なんとなく形になってきた。モータは2つ。
できたー。顔ついてる。かわいい。
アームもうごくよ。
ここで作るときの注意点。(つまりミスったとこ。)
4.ギヤケース組み立て
ブッシュは長だよ。短い方は使わないよ。よく見てね。
6.ステアリングレッグの組み立て
ワッシャーは2mmだよ。3mmの方を使っちゃうとあとで泣くよ。
あとブーツ。Bなら使わずに作るよ。うっかりつけるとうまく動かなくなるよ。
最後のページのパーツリスト。
使わない部品が書いてあるから、途中気になったら見たほうがいい。
おまけ(別売りのリモコンつけてみた)
さて、arduino載せないと。
HP Pavilion 15-p256TX のHDDをSSDに換装する
2015年2月に家族用に買ったHPのノートPC。
水色でCore i7(5500U)が入っててかっこいい。
ただ如何せん遅い。
買ったときはそこそこ速かった気がするけど、Windows10入れたせいか、いろいろアプリいれたからか徐々に我慢できないくらい遅く。
タスクマネージャみると、大体ディスクアクセスが100%になってる。
ウイルス対策ソフト切っても、WindowsUpdate切ってもだめ。
ベンチはこんな感じ。1MB/s切ってるし。ひどい。
なので、もうSSDに替えてみた。gramもSSDでめっちゃ速いし。
買ったのはcrucialのMX500 CT500MX500SSD1/JP。だいぶ定番っぽい。
事前にcrucialのwebからツールをダウンロードして、HDDからSSDにクローンしておく。
Acronis True Imageっていうやつ。
SSDは別途買っておいたUSBケースに入れてつなぐ。
実はこのクローン2回失敗した。リカバリー領域がクローンできなかった。
起動領域はクローンできてるっぽかったので、もう強行した。結果は今のところ問題ない。
では、早速分解していく。
まず見えるネジを全部外す。
長丸シールの下と、長四角ゴム足の下を忘れないように。
ネジを外すと、DVDドライブは引っ張るだけで抜ける。
キーボードの下らへんからパキパキとフタを開けていく。
開くとこんな感じ。
フレキがつながってるので注意。干渉しそうなのはこの時に外しておく。
ツメを起こすだけなので簡単。
買ってきたcrucialのMX500と入れ替える。
フタをしてネジを止めたら完成。
そしてこれが換装後のベンチ結果だ!
速っ!!
もうこれは別物みたい。起動もシャットダウンも何もかも速い。
これでストレスなく作業できる。SSD偉大だねー。
windows10でSplatoon2のドット打ち環境を構築する
前にmacでやったけど、gram買ったのでwindowsでも同じような環境を入れたい。
ここを参考に、arduinoを元の状態に戻していく。
突然だけどWSLのubuntuでデバイス認識できなかった(後述)ので、windowsでやることにする。
まずここにあるwindows用のdfu-programmerをダウンロードする。
https://sourceforge.net/projects/dfu-programmer/?source=typ_redirect
atmega16u2のファームウェアを拾ってくる。
arduinoにジャンパーを刺してから、USBをPCにつなぐ。
ジャンパーを抜く。USB近くの赤いジャンパーのとこね。
windowsで不明なデバイスとして認識されるので、さっきダウンロードしたdfu-programmerに入ってるATmega16U2のドライバ(atmel_usb_dfu.inf)を入れる。
cmd.exeで、ファームを書き込む。
うまく書けたら、USBを抜き差しする。COMポートで認識される。
これで元に戻った。
以下、ubuntuでやったけどデバイスが認識しなかった。一応めも。
たぶんWSLだとusbが認識しないんだと思う。
---------------------------------------------------------------------------------------------------
ubuntuはストアから入れたので省略。ものすごく簡単。
ubuntuを起動したら、まずはapt-getを最新にする。
updateは早いけど、upgradeはだいぶ時間かかるので、ぼーっと待つ。
まずはdfu-programmerを入れる。
ファームを書き込む。ここでデバイスが認識されていなくて詰む。lsusbでも何もいない。
うまくいけばあとは前と同じだけど、環境汚したくないので、以下WSLでやろうと思う。