Home Contact Sitemap

洛星ロボット研究部 開発日誌

洛星中学高等学校のロボット研究部・同好会のブログです。

    アーカイブ
    ブログロール
    • happybusy
    Amazonサーチ

CAN通信格闘記

Filed under: 60期レスキュー班(現the Reticle 旧Scorpion)

どうも高校生活最後のロボカップに向けて頑張ってる高ⅡのEaterです。

CAN通信で結構痛い目にあったので何かの役に立たないかとCAN通信が成功するまでの軌跡をまとめてみようと思った次第です。

 

CAN通信は車載ネットワークの一つで、いわゆるバス型の通信です。マルチマスターでIDを使って通信相手を特定するのが特徴でしょうか。I2Cと違いIDはデバイスに固有というわけではなくプログラムでIDを読んで受信するかどうかを判断する感じですね。詳しい仕様はインターネットで調べてください。

CAN通信は多数のマイコンで通信するのに大変便利な仕様なわけですがなにせ初めて使ったので通信に成功するまでかなり時間がかかりました。その過程での間違いポイントを下にまとめます。

・CANトランシーバーの電源電圧を間違えた

 我々はmcp2551をCANトランシーバとして使用しています。これは電源電圧5V程度で動作します。使用していたマイコンはstm32f1シリーズで電源電圧は3.3V。しょうもない話ですが、両方の電源電圧を3.3Vに設定してしまいトランシーバが電圧不足で動きませんでしたorz。何事においてもですが動作電圧は必ず確認しましょう。

・終端抵抗を忘れた

 CAN通信には終端抵抗というものが必要です。120Ω抵抗を両端にそれぞれつけなければならないのですがすっかりそれを失念。しょうもないですね。

・RS抵抗の抵抗値ミス(?)

 mcp2551にはRSピンにRS抵抗というものをつけます。データシートに書かれていることがよく分からなくていまいち抵抗値の設定法がよく分からなかったのですが、とりあえずもともと10kΩだったのを2.2kΩに替えてみました。

ここまで修正を加えるととりあえず1対1の通信はできるようになりました。しかしそれでも二つのマイコンからデータを送信してもう一つのマイコンがその二つからのデータを受信しようとすると片方からのデータしか受信できませんでした。次からはそれに対する対策をまとめます。

・UARTのボーレートを上げる

 この時のテストは受信割り込みが入ったら受け取ったIDとデータを配列に保存してUARTでFT232RLを経由してPCに送信、というプログラムで行っていたのですが、もしかするとUARTを送信する間に割り込みが入ってせっかく受信したデータが上書きされているのかもしれないと考え、UARTの通信速度を上げてみました。

・バッファをID別に複数用意する

 上の対策をもってしても受信できませんでした。そこでいっそID別にバッファを用意してたとえ上書きされても別のIDからのデータと競合しないようにしました。

結果、主にバッファを増やしたことが功を奏して二つのマイコンからのデータを両方受信できました。ちなみにですが、一つだけF4マイコンでなんでか通信できないなぁと思っていたら通信速度の設定ミスというオチ。お粗末さまでした。

結論 : 実装するときは、仕様をちゃんと把握してまとめてから実装しましょう。

P.S.

デバッグのことは常に考えておきましょう。すべてのノードのマイコンにデバッグ用LEDをつけておくと後々幸せになれます。

通信が成功する前提でデバッグ用LEDを一つのマイコンにだけ実装するとか愚の骨頂です。

By Eater . 2016-02-12 . 20:33
コメントお待ちしております!

京都ノード大会出場しました

Filed under: クラブ全般

どうも、Eaterです。受験とバレンタインの話がじわじわと広がっている中ロボット作ってます。

 

さて、この前の日曜日にロボカップ京都ノード大会がありました。場所は例年と違って洛陽工業高校。

61期(高1)サッカープロジェクトの「Perseus」は見事サッカーBオ-プンで優勝を果たしました。素晴らしいですね。去年も好成績だったんで絶好調です。ぜひとも京滋奈も突破していただきたいところ。副賞で洛陽工業高校オリジナルのクリアファイルもらってましたね。まぁべつに誰でももらえたんですけど。

63期(中2)はレスキューメイズに参加したんですけど、うーむ、芳しくなかったみたいです。中2ですしね。そんないきなり成績出るもんじゃないんで今後に乞うご期待。

え、私のチームはどうだったかって? ははは、何をおっしゃってるのでしょう。プレゼンシート見ます? すごいですよ、うちのデザイン担当は。プレゼンシート

結果? ええ、まぁ、3位だったとお伝えしておきましょう(出場チームは3チーム)。レゴの安定感ってすごいですよね。通信ができないだとか組み立てに時間がかかるだとか動作保障できてないだとかGUIがおかしいなんてことはないんでしょうね。

でもでも、過去一番他チームとの絡みが多かったんですよ! これは進歩です! たとえほとんどが自覚のない煽りだったとしても!

…小学生に「かっこいい!動くの~?」っ無邪気に聞かれると本当に心が折れそうになる。自業自得だが。絶対京滋奈ではそんなことを言わせない!!

 

というわけで京滋奈まであと2週間。全力を尽くしますので生暖かい目で見守っていただけたら幸いです。

By Eater . 2016-02-08 . 22:21
コメントお待ちしております!