RoboCup Junior Japan Rescue Kanto OB
2005~2013
2005~2013
と言う訳で、昨日の晩から今日の昼までかけて、電気通信部の無線の大会に参加していました。

今回参加したのは。ALL JAという大会で、日本アマチュア無線連盟が運営している大会です。
簡単に言うと、無線の大会結果は交信した局数と、局の所在している都道府県の数で決定されます。
まぁ要するに数打った者勝ちということですね。
そんなものを一晩かけてやる訳です。
大会は夜中に行われますので、当然徹夜という事になる訳ですが・・・
去年始めてやった時には結構問題なかったんですよね。普通に交信して大富豪して終わったので・・・。
今年はちょっといろんな意味でやばかったです。
と、いうのも、部員はいっぱいいても、無線機は1個なので、ローテーションを組むんですね。
従って否応なく誰しもに休憩時間と言う名の暇な時間が訪れるんです。
じゃあその休憩時間になにをするかが結構重要だったりするんです。
合理的に考えれば、寝るのが一番だと思うのですが、ちょっとそれはツマラナイ・・・
実はローテンションを組んでも、12時くらいを過ぎるとそれが崩壊して、
2時を過ぎると僕らのいる付近では交信している人が殆どいなくなるので
実質いつの間にか、ローテンションが意味をなさなくなってしまうのです。
だから全員で休んでたり、局を探しながらでも、遊んだりすることができちゃったりするのです。
と言うことで去年参加した大会では、徹夜大富豪を行いました。
さて、今年はどうだったのでしょうか。
まずはスタートは21時。
最初は熟練の超先輩の方々・・・というより純正の電気通信部の意識高い方々が行ってくれました。
21時じゃさすがに寝る気にもならない・・・そうだ。麻雀をしよう。
ということで22時までの休憩時間は麻雀で終わりました。
そして22時から23時までは真面目タイム。新部長やらロボカップ面子やらでしっかりと交信を行いました。
そしてまた23時から0時まで、確か麻雀をまたやったんじゃなかったかな。
そして0時、ローテンション崩壊のお時間がやって参りました。
0時から2時半ぐらいまで、頑張って来ました。
でも酷かったのが面子ですね。

なんていうか・・・途中で部長がダウンしたので、全員がロボカップ部員だけで回した時間があったりなかったり。
うーん。俺は免許持ってないし、2年生の二人は今回初参加だし・・・。
あれ?初心者3人だけ?
一応2年生の二人は免許(笑)持っていたので問題はないのですけど・・・。
1時間以上ロボカップ部の意味不明な無双時間が出現したんです。
あれは・・・。よかったのかなぁ。まぁいいか。
そして2時半頃になって純正の電通部部員たちがやってきて交代。そして謎のレポートタイムに突入しました。
それで一番酷いのはそこから。
休憩室に残った二人が2人寝てる中、枕投げを始めました。しかもそれが30分続くという・・・
動画にも撮りましたが、これは語り継がれるレベルのような気が・・・。
そしてその後から何故か再び麻雀タイム突入。
そして朝になる。
あれ・・・これは所謂徹マというやつではないでしょうか(笑)
しかもその間のテンションがおかしかったんです。
今回、完徹組は僕含め、3人ほどいたのですけど、もうおかしい。
終止笑い、叫び、転げる。
一体何があったのでしょうね。それが8時ごろまで、大体4時間ぶっ通しました。
そして8時ごろ、急に交信数が増えてきたので、そこから間髪入れずに真面目タイムに突入しました。
なんであのテンションの高さから、一気にあの状態に持っていけるんだ・・・意識の高い電気通信部部員は違いますね。
そしてその意識が高いまま大体11時くらいまで最後頑張りました。
正直意識吹っ飛ぶ段階まで持って枯れた部員が何人か出ましたが、なんとか終わらせることができました。
・・・・と、思うじゃん(笑)
なんかそのまま、元部長と恒例の秋葉突入を迎えることに。
あの徹夜のテンションのまま秋葉ですよ。しかも1000円しか持ってないし、買うものないし。
とりあえずSDカードスロットを買って、14時頃に家に帰って。
気がついたらベッドの上で、22時になっていました(笑)・・・どういうことだってばよ(笑)
今日得た教訓はただひとつ。
寝よう。早く。
因みに更新数の結果は138局、近年の中では一番の成績だそうです。
まぁ無線機の性能の関係上、上位に行くことは有り得ないそうなので、頑張った方なのではないかという話をしていました。
という訳で今も頭吹っ飛んでいるので日本語ができていません。
あまり変な言語を書かないように、今日はこのあたりで切ろうと思います。
それではまた。明日授業なくてよかった・・・。
(^・ω・)ノ RadiumProduction in RoboCup Junior
今回参加したのは。ALL JAという大会で、日本アマチュア無線連盟が運営している大会です。
簡単に言うと、無線の大会結果は交信した局数と、局の所在している都道府県の数で決定されます。
まぁ要するに数打った者勝ちということですね。
そんなものを一晩かけてやる訳です。
大会は夜中に行われますので、当然徹夜という事になる訳ですが・・・
去年始めてやった時には結構問題なかったんですよね。普通に交信して大富豪して終わったので・・・。
今年はちょっといろんな意味でやばかったです。
と、いうのも、部員はいっぱいいても、無線機は1個なので、ローテーションを組むんですね。
従って否応なく誰しもに休憩時間と言う名の暇な時間が訪れるんです。
じゃあその休憩時間になにをするかが結構重要だったりするんです。
合理的に考えれば、寝るのが一番だと思うのですが、ちょっとそれはツマラナイ・・・
実はローテンションを組んでも、12時くらいを過ぎるとそれが崩壊して、
2時を過ぎると僕らのいる付近では交信している人が殆どいなくなるので
実質いつの間にか、ローテンションが意味をなさなくなってしまうのです。
だから全員で休んでたり、局を探しながらでも、遊んだりすることができちゃったりするのです。
と言うことで去年参加した大会では、徹夜大富豪を行いました。
さて、今年はどうだったのでしょうか。
まずはスタートは21時。
最初は熟練の超先輩の方々・・・というより純正の電気通信部の意識高い方々が行ってくれました。
21時じゃさすがに寝る気にもならない・・・そうだ。麻雀をしよう。
ということで22時までの休憩時間は麻雀で終わりました。
そして22時から23時までは真面目タイム。新部長やらロボカップ面子やらでしっかりと交信を行いました。
そしてまた23時から0時まで、確か麻雀をまたやったんじゃなかったかな。
そして0時、ローテンション崩壊のお時間がやって参りました。
0時から2時半ぐらいまで、頑張って来ました。
でも酷かったのが面子ですね。
なんていうか・・・途中で部長がダウンしたので、全員がロボカップ部員だけで回した時間があったりなかったり。
うーん。俺は免許持ってないし、2年生の二人は今回初参加だし・・・。
あれ?初心者3人だけ?
一応2年生の二人は免許(笑)持っていたので問題はないのですけど・・・。
1時間以上ロボカップ部の意味不明な無双時間が出現したんです。
あれは・・・。よかったのかなぁ。まぁいいか。
そして2時半頃になって純正の電通部部員たちがやってきて交代。そして謎のレポートタイムに突入しました。
それで一番酷いのはそこから。
休憩室に残った二人が2人寝てる中、枕投げを始めました。しかもそれが30分続くという・・・
動画にも撮りましたが、これは語り継がれるレベルのような気が・・・。
そしてその後から何故か再び麻雀タイム突入。
そして朝になる。
あれ・・・これは所謂徹マというやつではないでしょうか(笑)
しかもその間のテンションがおかしかったんです。
今回、完徹組は僕含め、3人ほどいたのですけど、もうおかしい。
終止笑い、叫び、転げる。
一体何があったのでしょうね。それが8時ごろまで、大体4時間ぶっ通しました。
そして8時ごろ、急に交信数が増えてきたので、そこから間髪入れずに真面目タイムに突入しました。
なんであのテンションの高さから、一気にあの状態に持っていけるんだ・・・意識の高い電気通信部部員は違いますね。
そしてその意識が高いまま大体11時くらいまで最後頑張りました。
正直意識吹っ飛ぶ段階まで持って枯れた部員が何人か出ましたが、なんとか終わらせることができました。
・・・・と、思うじゃん(笑)
なんかそのまま、元部長と恒例の秋葉突入を迎えることに。
あの徹夜のテンションのまま秋葉ですよ。しかも1000円しか持ってないし、買うものないし。
とりあえずSDカードスロットを買って、14時頃に家に帰って。
気がついたらベッドの上で、22時になっていました(笑)・・・どういうことだってばよ(笑)
今日得た教訓はただひとつ。
寝よう。早く。
因みに更新数の結果は138局、近年の中では一番の成績だそうです。
まぁ無線機の性能の関係上、上位に行くことは有り得ないそうなので、頑張った方なのではないかという話をしていました。
という訳で今も頭吹っ飛んでいるので日本語ができていません。
あまり変な言語を書かないように、今日はこのあたりで切ろうと思います。
それではまた。明日授業なくてよかった・・・。
(^・ω・)ノ RadiumProduction in RoboCup Junior
今日は電気通信部の大会(ALL JA)で学校に泊まっています。
徹夜で色々やるようですね。
とりあえず、今は某ソフトが起動しないので四苦八苦してる状態です。
さてと、開始時間までに間に合うかな。
(^・ω・)ノ RadiumProduction in RoboCup Junior
徹夜で色々やるようですね。
とりあえず、今は某ソフトが起動しないので四苦八苦してる状態です。
さてと、開始時間までに間に合うかな。
(^・ω・)ノ RadiumProduction in RoboCup Junior
最近だと、コンパスセンサーや超音波センサーなど、市販のセンサーの動作確認を行なうことが多くなっているのですが、
次は加速度センサーを試してみようと思います。
今回使おうと思っているのはKXP84-2050というものです。

以前にKXM52-1050というちっちゃな加速度センサーを使ったことがあるのですが、
アレはアナログ出力しか搭載していないという、残念な仕様だったのです。
マイコンにおいては、アナログ入力の出来るピンはとても貴重なので、
加速度センサーだけどアナログを3つも奪われるのは流石に残念ですよね。
という訳で今回、SPIとI2Cという2つの通信規格を搭載したKXP84-2050を使ってみようということになったのです。
ちっちゃい方と値段は変わらなかったので一年ほど前に買ったはいいけど、殆ど手を出さずに終わってしまった過去があったり・・・
まずはデータシートが行方不明だったのでネットで見てみました。
とりあえずアプリケーションノートの方はアドレス一つ書いてなかったのでスペックシートの方を見ました。
まずは今回はI2Cを使うつもりだったので一番重要なボーレートの確認を。
どうやら400kHzのようです。コンパスセンサーの方は100kHzなので違ってしまいましたね。
400kHzということは、NXTにも繋げませんよね。残念です。
スレーブのアドレスは0x18と0x19の2種類が使えて、これはADD0ピンの状態によって判別されています。
ADD0がLの時は0x18に、ADD0がHの時は0x19になるようです。
分解能は12ビット、つまり0~4095まで、4096段階で加速度を判別できるようです。
測定値の最大最小が-2G~2Gなので、計算すると大体の精度が割り出せると思います。
電源も2.7V~5.5Vと非常に広範囲で使用することができ、結構便利そうです。
基本的には普通のI2Cのセンサーと同様に、
1回目の通信でコマンドを打って 、2回目の通信で値を獲得するという方式のようです。
まぁ特に難しいこともなさそうですね。
とりあえず今度このセンサーは試してみようと思います。
という訳で今日の記事はこのへんで。
(^・ω・)ノ RadiumProduction in RoboCup Junior
次は加速度センサーを試してみようと思います。
今回使おうと思っているのはKXP84-2050というものです。

以前にKXM52-1050というちっちゃな加速度センサーを使ったことがあるのですが、
アレはアナログ出力しか搭載していないという、残念な仕様だったのです。
マイコンにおいては、アナログ入力の出来るピンはとても貴重なので、
加速度センサーだけどアナログを3つも奪われるのは流石に残念ですよね。
という訳で今回、SPIとI2Cという2つの通信規格を搭載したKXP84-2050を使ってみようということになったのです。
ちっちゃい方と値段は変わらなかったので一年ほど前に買ったはいいけど、殆ど手を出さずに終わってしまった過去があったり・・・
まずはデータシートが行方不明だったのでネットで見てみました。
とりあえずアプリケーションノートの方はアドレス一つ書いてなかったのでスペックシートの方を見ました。
まずは今回はI2Cを使うつもりだったので一番重要なボーレートの確認を。
どうやら400kHzのようです。コンパスセンサーの方は100kHzなので違ってしまいましたね。
400kHzということは、NXTにも繋げませんよね。残念です。
スレーブのアドレスは0x18と0x19の2種類が使えて、これはADD0ピンの状態によって判別されています。
ADD0がLの時は0x18に、ADD0がHの時は0x19になるようです。
分解能は12ビット、つまり0~4095まで、4096段階で加速度を判別できるようです。
測定値の最大最小が-2G~2Gなので、計算すると大体の精度が割り出せると思います。
電源も2.7V~5.5Vと非常に広範囲で使用することができ、結構便利そうです。
基本的には普通のI2Cのセンサーと同様に、
1回目の通信でコマンドを打って 、2回目の通信で値を獲得するという方式のようです。
まぁ特に難しいこともなさそうですね。
とりあえず今度このセンサーは試してみようと思います。
という訳で今日の記事はこのへんで。
(^・ω・)ノ RadiumProduction in RoboCup Junior
今回の記事は電池についてです。
以前にもやったような気も致しますが、恐らく適当だったような気がするので、
もう一度最初から書いてみようと思います。
まず電池には、大きく分けると一次電池と二次電池に分けられます。
簡単にいうと、一次電池は充電できない使い捨ての電池、二次電池は充電ができて、繰り返し使える電池ということです。
まず一次電池には、主にマンガン電池とアルカリ電池の二種類がありますね。
マンガン電池といえば、安いとか、弱いとか、そういうイメージがありますが・・・
まぁ大体その通りです。
結構内部構造が原始的なので、性能は割と残念ですが、生産コストが異様に安いので、
需要が無い割に値段はかなり安いです。
しかし、電流をあまり流せないので、ロボット等のモーターを動作させる系の機器にはお勧めできません。
光ったりする程度の使用電力の低い機器に使われることが殆どです。
電圧はどれも大体1.5Vが標準ですね。
アルカリ電池は・・・説明するまでもないでしょう。今一番メジャーな一次電池ですね。
品質にもよりますが、大体1000~5000mA/hくらいなのではないでしょうか。
このmA/hという単位は時間分の電流で、電池の場合は簡単にいうと、
「一時間ずっとこの電流を流し続けると一時間で電池が切れますよ。」という指標になっています。
ちなみに、単1とか、単3とかっていうアレは、この電流量の違いで決まっています。
この電池も単体は1.5Vで構成されています。
ボタン電池や角電池だとそれより高い電圧になっているようにも見えますが、あれは中で電池を直列に繋いでいるだけです。だから1.5Vじゃなくても、1.5の倍数のハズ・・・
二次電池だと、今主に使われているのは、
・ニカド電池
・ニッケル水素電池
・リチウムイオン電池
・リチウムポリマー電池
・リチウムフェライト電池
・鉛蓄電池
この辺りでしょうか。あとは太陽電池?
二次電池についてはちょっと種類が沢山あるので、また別途紹介しようと思います。
という訳で、今回は一次電池の紹介でした。それではまた。
(^・ω・)ノ RadiumProduction in RoboCup Junior
以前にもやったような気も致しますが、恐らく適当だったような気がするので、
もう一度最初から書いてみようと思います。
まず電池には、大きく分けると一次電池と二次電池に分けられます。
簡単にいうと、一次電池は充電できない使い捨ての電池、二次電池は充電ができて、繰り返し使える電池ということです。
まず一次電池には、主にマンガン電池とアルカリ電池の二種類がありますね。
マンガン電池といえば、安いとか、弱いとか、そういうイメージがありますが・・・
まぁ大体その通りです。
結構内部構造が原始的なので、性能は割と残念ですが、生産コストが異様に安いので、
需要が無い割に値段はかなり安いです。
しかし、電流をあまり流せないので、ロボット等のモーターを動作させる系の機器にはお勧めできません。
光ったりする程度の使用電力の低い機器に使われることが殆どです。
電圧はどれも大体1.5Vが標準ですね。
アルカリ電池は・・・説明するまでもないでしょう。今一番メジャーな一次電池ですね。
品質にもよりますが、大体1000~5000mA/hくらいなのではないでしょうか。
このmA/hという単位は時間分の電流で、電池の場合は簡単にいうと、
「一時間ずっとこの電流を流し続けると一時間で電池が切れますよ。」という指標になっています。
ちなみに、単1とか、単3とかっていうアレは、この電流量の違いで決まっています。
この電池も単体は1.5Vで構成されています。
ボタン電池や角電池だとそれより高い電圧になっているようにも見えますが、あれは中で電池を直列に繋いでいるだけです。だから1.5Vじゃなくても、1.5の倍数のハズ・・・
二次電池だと、今主に使われているのは、
・ニカド電池
・ニッケル水素電池
・リチウムイオン電池
・リチウムポリマー電池
・リチウムフェライト電池
・鉛蓄電池
この辺りでしょうか。あとは太陽電池?
二次電池についてはちょっと種類が沢山あるので、また別途紹介しようと思います。
という訳で、今回は一次電池の紹介でした。それではまた。
(^・ω・)ノ RadiumProduction in RoboCup Junior
前回の記事では、ポインタってなんなんだ?というお話をしましたね。
今回の記事は、ポインタの宣言の仕方や使い方について書いていこうと思います。
まずはポインタの宣言の方法から、
例えば、ポインタpを宣言するにはこんな風に記述します。
int *p;
変数の宣言と似ていますね。というか、間に*を入れるだけです。
これで、int型のポインタpを宣言することができました。
ここで注意するところは、ポインタを宣言する際は、使用する型の扱いについてです。
これは、実際にポインタに代入するアドレスの指し示す変数の型に合わせる必要があります。
つまり、今宣言したポインタpは、int型の変数のアドレスを格納できるということになります。
次は変数のアドレスの表現方法です。
例えば、変数xのアドレスは以下のように表現できます。
&x
つまり、変数名の前に&をつけてやることで、その変数のアドレスは表現することができる訳です。
だから、ポインタpに変数xのアドレスを代入しようと思ったら、
p=&x;
となりますね。
逆に、ポインタを使って変数の値を表現することもできます。
さっきの続きで、例えば、ポインタpが指し示す変数の値を示す時は、
*p
となります。だから今度はポインタの前に*をつけてやることで、そのポインタが指し示す変数の値、
つまりこの場合、変数xの値になる訳です。
だからこの場合、xと*p、&xとpはそれぞれ同じ値を示すことになります。
まずはここがちょっとややこしいですね。変数が&でポインタが*で・・・
宣言だけでこんなややこしいのがポインタです。
Cの中でも、特に難しいと言われる理由がわかって頂けたのではないかと思います。
次回の記事では、実際にポインタを使ったプログラムを書いてみようと思います。
それではまた次回ー。
(^・ω・)ノ RadiumProduction in RoboCup Junior
今回の記事は、ポインタの宣言の仕方や使い方について書いていこうと思います。
まずはポインタの宣言の方法から、
例えば、ポインタpを宣言するにはこんな風に記述します。
int *p;
変数の宣言と似ていますね。というか、間に*を入れるだけです。
これで、int型のポインタpを宣言することができました。
ここで注意するところは、ポインタを宣言する際は、使用する型の扱いについてです。
これは、実際にポインタに代入するアドレスの指し示す変数の型に合わせる必要があります。
つまり、今宣言したポインタpは、int型の変数のアドレスを格納できるということになります。
次は変数のアドレスの表現方法です。
例えば、変数xのアドレスは以下のように表現できます。
&x
つまり、変数名の前に&をつけてやることで、その変数のアドレスは表現することができる訳です。
だから、ポインタpに変数xのアドレスを代入しようと思ったら、
p=&x;
となりますね。
逆に、ポインタを使って変数の値を表現することもできます。
さっきの続きで、例えば、ポインタpが指し示す変数の値を示す時は、
*p
となります。だから今度はポインタの前に*をつけてやることで、そのポインタが指し示す変数の値、
つまりこの場合、変数xの値になる訳です。
だからこの場合、xと*p、&xとpはそれぞれ同じ値を示すことになります。
まずはここがちょっとややこしいですね。変数が&でポインタが*で・・・
宣言だけでこんなややこしいのがポインタです。
Cの中でも、特に難しいと言われる理由がわかって頂けたのではないかと思います。
次回の記事では、実際にポインタを使ったプログラムを書いてみようと思います。
それではまた次回ー。
(^・ω・)ノ RadiumProduction in RoboCup Junior
今日は一年生のおーでーの講習に乱入してきました。
まぁなんでこんなことになったかと言いますと、
まず、PIC同士の相互のI2C通信に成功したのが大きいです。
これは、何故かクロックストレッチが無効になってしまっていたのが原因でした。
一度有効にしてるのに、再度有効にして・・・そしたらできました。
結局ここに行き着くのに3日かかってしまいましたね。
オシロがあっても信号自体はごちゃごちゃで見れないのでやっぱり難しいです。
それであぁよかった。
なんて思っていたら急に第六感的なアレが働いて、講習会に乱入しなきゃいけないような予感がしたんです。
それでそれを頼りに講習会に乱入してみたら・・・
何故か最後に1,2年生相手に講義(笑)をすることに。予感ってこれのことだったのか・・・?
内容はプルダウン抵抗について。
以前にこのブログでも話題になったかと思います。
なんでそんな流れになったのかさっぱりですが、話をしてきました。
まぁなんとか一年生にはわかって貰えたようですね。良かった良かった。
そしてその後、また部室に戻って、今度は超音波センサーの実験を行いました。
もちろん型番はMaxSonar社のLV-EZ1です。

送受信一体で出力もアナログ、
しかも検出角範囲が狭いという代物です。しかも3150円と安い!
コレのテストを行ったのですが・・・
何度やっても値が出ない。
オシロで直接測っても出力が出ていなかったのです。
これはおかしいと四苦八苦。繰り出された結論は・・・
検出距離長すぎ(笑)
6m以上の距離を検知するような仕様だそうなので、
従って数10センチの距離変動では、数10mA程度しか値が変わらなかったのです。
という訳でオシロのレンジを変更、再び調べてみると・・・
なんだ。読んでるじゃないですか。
という残念なミスによって使えるセンサーを一個葬りそうになった今日この頃でした。
(^・ω・)ノ RadiumProduction in RoboCup Junior
まぁなんでこんなことになったかと言いますと、
まず、PIC同士の相互のI2C通信に成功したのが大きいです。
これは、何故かクロックストレッチが無効になってしまっていたのが原因でした。
一度有効にしてるのに、再度有効にして・・・そしたらできました。
結局ここに行き着くのに3日かかってしまいましたね。
オシロがあっても信号自体はごちゃごちゃで見れないのでやっぱり難しいです。
それであぁよかった。
なんて思っていたら急に第六感的なアレが働いて、講習会に乱入しなきゃいけないような予感がしたんです。
それでそれを頼りに講習会に乱入してみたら・・・
何故か最後に1,2年生相手に講義(笑)をすることに。予感ってこれのことだったのか・・・?
内容はプルダウン抵抗について。
以前にこのブログでも話題になったかと思います。
なんでそんな流れになったのかさっぱりですが、話をしてきました。
まぁなんとか一年生にはわかって貰えたようですね。良かった良かった。
そしてその後、また部室に戻って、今度は超音波センサーの実験を行いました。
もちろん型番はMaxSonar社のLV-EZ1です。

送受信一体で出力もアナログ、
しかも検出角範囲が狭いという代物です。しかも3150円と安い!
コレのテストを行ったのですが・・・
何度やっても値が出ない。
オシロで直接測っても出力が出ていなかったのです。
これはおかしいと四苦八苦。繰り出された結論は・・・
検出距離長すぎ(笑)
6m以上の距離を検知するような仕様だそうなので、
従って数10センチの距離変動では、数10mA程度しか値が変わらなかったのです。
という訳でオシロのレンジを変更、再び調べてみると・・・
なんだ。読んでるじゃないですか。
という残念なミスによって使えるセンサーを一個葬りそうになった今日この頃でした。
(^・ω・)ノ RadiumProduction in RoboCup Junior
今日はもう・・・相当な事故り様でしたね。
全員が全員酷かったなぁ。特に安定の副部長!!
そんな今日は、さりげなくちゃんと部活もやっていたり。
今日取り組んだのは、コンパスセンサー。HMC6352という型番です。

http://www.alpha-crucis.com/en/accelerometers-gyros-compasses/1607-compass-module-hmc6352-0845156000517.html
昨日辺りからプログラムを作ってはいたのですが、謎の値を読み出さない現象が発生していました。
これがとっても厄介な状態で、I2Cの通信自体は成功していて、結果も返ってくるのに、
何故か一部の方位の値のみを返さなかったんです。
今日はそんな謎の状況と戦っていました。
それから、戦うことだいたい一時間。
とりあえずちゃんと値を読み出すことに成功しました。
結局原因はタイミングやらノイズやら。
色々重なった結果のようです。
最後面倒になって一気にパラメータを変えたらなんか成功しちゃったので、
最終的に何がいけなかったのかは・・・謎です。
まぁとにかく成功しましたっていう報告です。
今できていないのは・・・後はPICでのI2Cの相互通信だけなのですが・・・何が原因なんだろう。
とりあえず明日、通信速度を下げてもう一度やってみようと思います。
24Fならできるのに、なんで16Fだとこうも時間がかかるんだろう。
謎は深まるばかりです。
(^・ω・)ノ RadiumProduction in RoboCup Junior
全員が全員酷かったなぁ。特に安定の副部長!!
そんな今日は、さりげなくちゃんと部活もやっていたり。
今日取り組んだのは、コンパスセンサー。HMC6352という型番です。

http://www.alpha-crucis.com/en/accelerometers-gyros-compasses/1607-compass-module-hmc6352-0845156000517.html
昨日辺りからプログラムを作ってはいたのですが、謎の値を読み出さない現象が発生していました。
これがとっても厄介な状態で、I2Cの通信自体は成功していて、結果も返ってくるのに、
何故か一部の方位の値のみを返さなかったんです。
今日はそんな謎の状況と戦っていました。
それから、戦うことだいたい一時間。
とりあえずちゃんと値を読み出すことに成功しました。
結局原因はタイミングやらノイズやら。
色々重なった結果のようです。
最後面倒になって一気にパラメータを変えたらなんか成功しちゃったので、
最終的に何がいけなかったのかは・・・謎です。
まぁとにかく成功しましたっていう報告です。
今できていないのは・・・後はPICでのI2Cの相互通信だけなのですが・・・何が原因なんだろう。
とりあえず明日、通信速度を下げてもう一度やってみようと思います。
24Fならできるのに、なんで16Fだとこうも時間がかかるんだろう。
謎は深まるばかりです。
(^・ω・)ノ RadiumProduction in RoboCup Junior
特に文章にする気はないのですが、まぁメモ的なアレも込めてNXTコネクタのピンアサインでも載っけます。
ピンアサインとは要するにピン配置のことですね。つまりどの端子が何に繋がっているかを示したものです。
どっちかっていうとこの場合ピンアサインよりインターフェイスの方が正しいのかな?日本語難しいです。
まぁだいたいこんな感じですね。
出力側の5、6ピンは要するにモーター内のエンコーダー、つまり回転センサーの信号の部分です。
後はRCXケーブルに該当する部分は入出力共に1,2ピンであるということぐらいでしょうか。
後は特記することもあまり無いような・・・。という訳でメモ書き程度に。
(^・ω・)ノ RadiumProduction in RoboCup Junior
ピンアサインとは要するにピン配置のことですね。つまりどの端子が何に繋がっているかを示したものです。
どっちかっていうとこの場合ピンアサインよりインターフェイスの方が正しいのかな?日本語難しいです。
| ピン番号 | 色 | 入力 | 出力 |
| 1 | 白 | アナログ | モーター1(+) |
| 2 | 黒 | GND | モーター2(-) |
| 3 | 赤 | GND | GND |
| 4 | 緑 | +4.3v | +4.3v |
| 5 | 黄 | DIGI0/SCL/RS485A | TACHO0(A signal) |
| 6 | 青 | DIGI1/SDA/RS485B | TACHO0(B signal) |
まぁだいたいこんな感じですね。
出力側の5、6ピンは要するにモーター内のエンコーダー、つまり回転センサーの信号の部分です。
後はRCXケーブルに該当する部分は入出力共に1,2ピンであるということぐらいでしょうか。
後は特記することもあまり無いような・・・。という訳でメモ書き程度に。
(^・ω・)ノ RadiumProduction in RoboCup Junior
という訳で、全く脈略もないままに16F19XX、HITECコンパイラでのPWMの作動方法について書くことになりました。
PWMについての説明やらなんやらはもう以前の記事で再々やっているような気がいたしますので、
ここでは省略させて頂きます。
という訳で今回はプログラムのお話を。
因みに今回の記事はデータシートが手元にあることを前提としていますので、レジスタの中の詳しい紹介等は行いません。
まず、PWMを行なうにはタイマーの設定が必要です。
これは要するに波の周期を決定するために使われるもので、一般には慣例としてタイマー2が使われるようですね。
別に1でなければどのタイマーでも大丈夫なはずです。
タイマーの設定をするレジスタはT2CONレジスタ。
今回は特に何か指定することもなかったのでEnable、つまりタイマーを有効にする設定のみを行なっています。
あと重要なのが、PR2レジスタで、この値でPWMの周期を決めます。
この値はある計算値を基にして求められるのですが、わざわざ求めなくても、
データシートにPRレジスタの値と主なPWM周期の表が載っていたりします。
ということで今回はこの表に基づいて0xFFとしました。これだと周波数は31.25kHzになりますね。
因みに計算式もその表の付近に載っています。
こんな感じであっけなくタイマーの設定は終了。タイマーのレジスタについてはまた別途の記事で詳しく説明します。
そして今度はPWMの設定。PICではPWMはCCPとかECCPというモジュール内に含まれている機能ですので、
このCCPのレジスタを利用してPWMの設定を行います。
まずは、CCP2CON、今回はCCP2を使うのでこのレジスタを使います。
このレジスタは
ビット7-6:拡張PWMの設定
ビット5-4:デューティ比の最下位2ビット
ビット3-0:モードの選択
となっています。
今回は拡張に興味が無いので7-6は00、
デューティ比はこのPICの場合、最高10ビットで設定出来るようなので、下位ビット分がこんなところで設定できます。
でも、下位ビットっていうと1か2の違いですから、正直どうでもいい。どっちも00でいいでしょう。
3-0は当然PWMの設定になりますね。ECCPの場合はアクティブハイがどうたらと書いてありますが、
どちらもアクティブハイでないと後々面倒なので全部アクティブハイになる1100でいいでしょう。
こんな感じでPWMの初期設定は終了です。
あとはCCPR2Lレジスタで上位8ビット分のデューティ比をプログラム内で設定してやれば
後は勝手にモジュールの方が波形を出力してくれます。
因みにデューティ比は実際には、 設定した値/4(PR+1) になります。
なのでそのあたりはちょっと注意が必要です。
でもこの値ってよく考えるとPRがFFだと分母は10進数で1024になりますよね。
だから単純に1024段階と思って頂ければ何も考えることは無いかと思います。
とまぁPWMのプログラムはこんな感じ。
細かいレジスタ等の紹介はまた別途で行いたいと思います。
という訳で今日は最後に適当なプログラムを乗っけて終了です。このプログラム動いたっけかなぁ・・・?
もしかしたらPICのヘッダをhtcかそこら辺にしないと動かないかもしれません。
PWMについての説明やらなんやらはもう以前の記事で再々やっているような気がいたしますので、
ここでは省略させて頂きます。
という訳で今回はプログラムのお話を。
因みに今回の記事はデータシートが手元にあることを前提としていますので、レジスタの中の詳しい紹介等は行いません。
まず、PWMを行なうにはタイマーの設定が必要です。
これは要するに波の周期を決定するために使われるもので、一般には慣例としてタイマー2が使われるようですね。
別に1でなければどのタイマーでも大丈夫なはずです。
タイマーの設定をするレジスタはT2CONレジスタ。
今回は特に何か指定することもなかったのでEnable、つまりタイマーを有効にする設定のみを行なっています。
あと重要なのが、PR2レジスタで、この値でPWMの周期を決めます。
この値はある計算値を基にして求められるのですが、わざわざ求めなくても、
データシートにPRレジスタの値と主なPWM周期の表が載っていたりします。
ということで今回はこの表に基づいて0xFFとしました。これだと周波数は31.25kHzになりますね。
因みに計算式もその表の付近に載っています。
こんな感じであっけなくタイマーの設定は終了。タイマーのレジスタについてはまた別途の記事で詳しく説明します。
そして今度はPWMの設定。PICではPWMはCCPとかECCPというモジュール内に含まれている機能ですので、
このCCPのレジスタを利用してPWMの設定を行います。
まずは、CCP2CON、今回はCCP2を使うのでこのレジスタを使います。
このレジスタは
ビット7-6:拡張PWMの設定
ビット5-4:デューティ比の最下位2ビット
ビット3-0:モードの選択
となっています。
今回は拡張に興味が無いので7-6は00、
デューティ比はこのPICの場合、最高10ビットで設定出来るようなので、下位ビット分がこんなところで設定できます。
でも、下位ビットっていうと1か2の違いですから、正直どうでもいい。どっちも00でいいでしょう。
3-0は当然PWMの設定になりますね。ECCPの場合はアクティブハイがどうたらと書いてありますが、
どちらもアクティブハイでないと後々面倒なので全部アクティブハイになる1100でいいでしょう。
こんな感じでPWMの初期設定は終了です。
あとはCCPR2Lレジスタで上位8ビット分のデューティ比をプログラム内で設定してやれば
後は勝手にモジュールの方が波形を出力してくれます。
因みにデューティ比は実際には、 設定した値/4(PR+1) になります。
なのでそのあたりはちょっと注意が必要です。
でもこの値ってよく考えるとPRがFFだと分母は10進数で1024になりますよね。
だから単純に1024段階と思って頂ければ何も考えることは無いかと思います。
とまぁPWMのプログラムはこんな感じ。
細かいレジスタ等の紹介はまた別途で行いたいと思います。
という訳で今日は最後に適当なプログラムを乗っけて終了です。このプログラム動いたっけかなぁ・・・?
もしかしたらPICのヘッダをhtcかそこら辺にしないと動かないかもしれません。
#include "pic16f1939.h"
#define _XTAL_FREQ 32000000
__CONFIG(
FOSC_INTOSC & WDTE_OFF & PWRTE_ON & MCLRE_OFF & CP_OFF
& CPD_OFF & BOREN_OFF & CLKOUTEN_OFF & IESO_OFF & FCMEN_OFF
);
__CONFIG(
WRT_OFF & PLLEN_ON & STVREN_ON & LVP_OFF
);
int main(void)
{
PORTA = 0b00000000;
PORTB = 0b00000000;
PORTC = 0b00000000;
PORTD = 0b00000000;
ANSELA=0;
ANSELB=0;
ANSELD=0;
TRISA = 0b00000000;
TRISB = 0b00000000;
TRISC = 0b00011000;
TRISD = 0b00000000;
OSCCON=0b01110000;
CCP2CON = 0b00001100; //PWMモードにする
PR2 = 0xFF;
T2CON = 0b00000100; //Timer2 Enable
while(1)
{
CCPR2L = 0x80;
}
}
(^・ω・)ノ RadiumProduction in RoboCup Junior
(^・ω・)ノ RadiumProduction in RoboCup Junior
ロボカップジュニアのレスキューにおいて、一番最初に現れるであろう課題がライントレースというものです。

ライントレースとは、床に描かれたラインをロボットが辿る(トレースする)動作のことで、工場のライン等に使われています。
基本的にはロボットの下部にラインセンサーと呼ばれるセンサーを搭載して、
そのセンサーからの情報を元にロボットの動作を決定するような仕組みです。
ラインセンサーにはよく、赤外線の反射型の光センサーが使われます。
これは、センサーから光を放出し、床に反射した反射光の量を測定するセンサーです。
反射光の量から床の色の明暗がわかりますので、だいたの色を把握することができます。
しかし、モノクロにした際に色の違いがわからないような色同士だと、やっぱり区別がつきません。
という訳なので、ライントレースを行わせる際にはラインの色と床の色の明暗をはっきりとさせる必要があります。
ロボカップの場合はラインの色が黒、床の色が白となっています。
これをロボットにトレースさせて、競技を進行していく訳です。
ロボットによってセンサーの数は様々で、
1個でライントレースするロボットもいれば、10個以上使用するロボットも存在します。前に作ったロボットだと12個あったっけかなぁ。
また、LEGOだと赤外線ではなく、普通の赤色LEDを使用していますね。
以上がライントレースの簡単な紹介です。
簡単なので、特に課題とするまでもなさそうですが、これにギャップやら串やらが加わると難しくなってきます。
そもそも、これが出来れば一階はほぼ完璧ということになりますので、
ノード大会くらいならこれだけで突破できるのではないでしょうか(笑)
まぁ今ロボカップ自体のレベルはどんどん下降傾向にありますから、
この辺りができていればまぁなんとかなるのではないでしょうか。
という訳で今回の記事はこの辺で。
(^・ω・)ノ RadiumProduction in RoboCup Junior
ライントレースとは、床に描かれたラインをロボットが辿る(トレースする)動作のことで、工場のライン等に使われています。
基本的にはロボットの下部にラインセンサーと呼ばれるセンサーを搭載して、
そのセンサーからの情報を元にロボットの動作を決定するような仕組みです。
ラインセンサーにはよく、赤外線の反射型の光センサーが使われます。
これは、センサーから光を放出し、床に反射した反射光の量を測定するセンサーです。
反射光の量から床の色の明暗がわかりますので、だいたの色を把握することができます。
しかし、モノクロにした際に色の違いがわからないような色同士だと、やっぱり区別がつきません。
という訳なので、ライントレースを行わせる際にはラインの色と床の色の明暗をはっきりとさせる必要があります。
ロボカップの場合はラインの色が黒、床の色が白となっています。
これをロボットにトレースさせて、競技を進行していく訳です。
ロボットによってセンサーの数は様々で、
1個でライントレースするロボットもいれば、10個以上使用するロボットも存在します。前に作ったロボットだと12個あったっけかなぁ。
また、LEGOだと赤外線ではなく、普通の赤色LEDを使用していますね。
以上がライントレースの簡単な紹介です。
簡単なので、特に課題とするまでもなさそうですが、これにギャップやら串やらが加わると難しくなってきます。
そもそも、これが出来れば一階はほぼ完璧ということになりますので、
ノード大会くらいならこれだけで突破できるのではないでしょうか(笑)
まぁ今ロボカップ自体のレベルはどんどん下降傾向にありますから、
この辺りができていればまぁなんとかなるのではないでしょうか。
という訳で今回の記事はこの辺で。
(^・ω・)ノ RadiumProduction in RoboCup Junior
カレンダー
最新CM
カテゴリー
らじぷろ目次
らじぷろ検索機
最新記事
(01/01)
(06/08)
(01/12)
(08/29)
(01/03)
(08/27)
(04/29)
(01/01)
(11/20)
(09/06)
(09/04)
(08/09)
(08/06)
(07/27)
(05/29)
プロフィール
HN:
Luz
性別:
男性
アーカイブ