[[作業日誌]] 目次 #contents(); **コメント [#f49b65dd] //ラジオボックスがうざいっていう人は、replyを消してみて下さい。 #pcomment(reply); *1月12日(水) [#cb941d1c] **車体(回路) [#se6f4d3c] 先週までは車体側は全て3.3Vで動作していたが、電池で駆動させるため、三端子レギュレータを新たに載せ、モータドライバには5V、回路には3.3Vを与えるようにした。電源にはeneloopを4本(=4.8V)使用。 なぜか頻繁に無線通信が途切れるため、モータからのノイズと予想してモータにコンデンサを付けた。これにより通信が失敗することが無くなった。 **車体(プログラム) [#d603979b] 通信失敗時に備えて一定時間以上正しいデータが受信されなかった場合に無線モジュールをリセットして再接続するようにした。 複数コントローラによる操作やPWMを使ってモータから音を出すなどの機能の実装はできなかったが、目標であったラジコンを完成させることができた。 *1月7日(金) [#ac8b2244] 車体側のプログラムを作成し、無事動作したためPSコントローラによるラジコンの最低限の機能は完成した。しかし電源はまだ有線で取っているので、次回はバッテリ駆動させたり複数コントローラ対応などの機能追加を行いたい。 #ref(IMG_1026.JPG) *12月17日(金) [#ef6a9c70] **プログラム [#t3aa71a5] プログラムを全体的に整理。コントローラとの通信を関数化したり受信データを構造体に入れるようにした。 **車体 [#w68c44dc] ラジコンを作るに当たって車体はレゴブロックを使ったものにした。モータが搭載されており、モータドライバTA7291Pで制御。 車体用の基板作製を始めた。 *12月10日(金) [#ufac8290] **基板 [#o9965055] ACアダプタジャック、無線モジュール端子、PSoC-USB変換器・PSoc-無線モジュール切り替えジャンパーピンを設置した。 **PSコントローラ [#l2f1a9a8] 3.3Vでの正常動作を確認した。 **無線モジュール [#xdc52e42] 57600bpsにてPCとシリアル接続し、TeraTermを使ってボーレートと通信対象の設定を行った。 その後通信を試したところ問題なく通信できた。PSoCとの通信のボーレートは9600bpsに設定。 **メモ [#tdf91d65] PSoc miniprog 3.3V版での書き込み失敗(PC上からの認識失敗?)は電流の供給不足によるものかもしれない。 **今後の予定 [#z077d3b1] ・サーボ、モータの制御をしてみたい ・複数のPSコントローラからの値読み出しと平均出力 *12月3日(金) [#a240b9ee] **回路 [#i589ee9e] UARTでデータが取れるようにモジュールを追加し、基板の配線を行った。 Acknowrichを導入。 使い方 : ソフト起動→ファイル→シリアルデバイスを開く→COMx 自分の環境ではCOM7に割り当てられた。 初回起動時にはボーレートやビット数の設定が合っていなかったため、下に表示されている各パラメータを右クリックすると選択肢が出てきて変更可能。 今回は9,600bpsにて通信を行った。 データを数バイトずつまとめて送ったため、表示が少しおかしかった。おそらく改行コードの問題。そのため今日はTeraTermにて、受信改行コードをLFに設定してデータを読み取った。 #ref(USB-UART.png) ピン配置 **PSコントローラ [#o5b992d3] 前回最初の2byteの通信ができたため、今日は各ボタン・アナログスティックの値を読み取るための変更を行い、ちゃんと取得できた。 アナログスティックを使用する場合はコントローラのANALOGボタンを押してランプを点灯させる。こうすると全受信データが9byteになる。最後の4byteがアナログスティックの値。 取得したデータ(1セット分) start 1 // 1byte目。受信データは無意味 2 // 2byte目。受信データは無意味 3 // 3byte目。受信データは無意味 4:255 // 4byte目。ボタンデータ。押したボタンの対応ビットが0になる。 5:255 // 5byte目。ボタンデータ。押したボタンの対応ビットが0になる。 6:111 // 6byte目。右アナログスティックの左右。 7:123 // 7byte目。右アナログスティックの上下。 8:117 // 8byte目。左アナログスティックの左右。 9:114 // 9byte目。右アナログスティックの上下。 **PSoCのプルアップまとめ [#d75fc65c] ピンの割り当て時に内部プルアップを有効にした場合、ポートの値を読む前にそのピンに"1"を書き込まないといけない。もし"0"が書き込まれた状態のままだと読み出してもプルアップが有効になっていないのと同じになってしまう。定期的にプログラム中で"1"を書き込むようにした方がいいかも。プルダウン時も同様の注意が必要? **今後の予定 [#i375de91] ・3.3Vでコントローラが動作するか確認 ・無線モジュールのテスト ・モータ(ギアボックス)とサーボ、タイヤなどが必要? *11月26日(金) [#g7cf8e36] **PSコントローラ [#xb9cb079] うまく動作しないことを先生に相談したところ、5番ピンに対して左右で対称になるような配線ミスをしていることを指摘され、修正したところ正常にデータを送受信できるようになった。他にもPSoCのプルアップ設定の入力端子にはデータレジスタに1を与えて読まないと正確な値が取れないことや、オシロスコープのトリガ待機での測定法などを教えて頂いた。 #ref(TEK0000.PNG) 図 PSコントローラとのSPI通信2byte目 ch1:CLK, ch2:ACKn, ch3:DAT(PAD→PSoC, 0x41), ch4:CMD(PSoC→PAD, 0x42) **回路 [#m3da70c4] UARTでデータが取れるよう、プログラムの追加を始めた。 *11月19日(金) [#x957e69f] **PSコントローラのプロトコル調査、テスト [#k54cd13e] 前回に引き続きPSコントローラとのSPI通信を試そうとしたが、うまく動作しなかった。そもそもSPIMモジュールの使い方が間違っているかもしれない。 次週は動作させられるように必要な情報を調査しておく。 *11月12日(金) [#gefd7dbb] **方針検討、PlayStationコントローラのプロトコル調査 [#o0cb7db5] PlayStationのコントローラはSPI通信で読み取りが可能。はじめは5Vで動作させ、動作確認後に3.3Vで実験する。 無線モジュール(BTX025 ZIG-100B)は3.3V動作。 **試験基板にコントローラ端子追加、コントローラ端子付け替え [#j868ec89] 2×5ピンのピンヘッダ・ピンソケットを使って基板との接続端子を設けた。 **プログラム作成 [#a1d7c26b] SPI通信のデータシートを見ながらPSコントローラと通信するプログラムの作成を始めた。 参考ページ ・http://kaele.com/~kashima/games/ps_jpn.txt ・http://www.maroon.dti.ne.jp/koten-kairo/works/dsPIC/spi1.html ・http://www.ne.jp/asahi/rugbysensor/ohata/SPI_0.html *10月29日(金) [#x7306cd6] **自主課題研究で製作したものを発表 [#v9ed9819] みんなそれぞれアイデアを発表して、自主課題研究で製作するものを決めた。 自分はPlayStationコントローラを利用したラジコンを作ることにした。 **PSoC実習 [#k851c681] 基板に赤色LEDを8個追加。LEDフラッシャーを作りたい。 *10月22日(金) [#p13572df] **PSoC First Touch [#h50eef7b] CapSenseでタッチセンサ、スライダを動作させることができた。 **はんだ付け [#z6f57314] 基板にICソケット、ピンヘッダ、抵抗、LED、タクトスイッチをはんだ付けした。 **PSoC 27443 [#d5050016] CY8C27443を使ってチュートリアルのSWに連動したLED点滅のプログラムを作成し、動作させることができた。 スイッチによるピン変化割り込みを使って点滅周期を変化させるというプログラムを作り、動作を確認した。 参考:http://dr.matrix.jp/psoc2.html *10月20日(水) [#n52ab0a9] **PSoC First Touchその2 [#w7b22148] 先週できなかったLEDのプロジェクトを再度作り直したところ動作させることができた。前回うまく動かなかった原因が何かは不明。 *10月15日(金) [#md4fac06] **PSoC First Touch [#m48fe63e] PSoC First Touchのチュートリアルに従ってADCとPWMでLEDの輝度を変えるプログラムの作成を行った。 しかし、手順通りに進めてもうまく動作しなかった。先輩方にも見てもらいつつ原因を探したところ、PWMのpulse widthの変更が上手くいってないことがわかった。 PWM8_1_WritePulseWidth(値); で変更できない。配線画面のPWM8_1のプロパティ設定画面でPulseWidthを設定するとその値になるが、プログラム中では変更できなかった。 一度プロジェクトを作成し直したところ、最初の1回はしっかり動作したが、その後また同様の状態となり、今日は目的の動作を得ることができなかった。 *10月7日(金) [#pd3790c2] **顔合わせ、ガイダンス [#leb71615] 先生・先輩方から自主課題研究の説明や、研究室の概要の説明を受けた。 これからよろしくお願いします。 IP:133.28.96.26 TIME:"2011-01-12 (水) 23:14:23" REFERER:"http://merl.ec.t.kanazawa-u.ac.jp/micon-bu/index.php" USER_AGENT:"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10"