投稿

ラベル(TECHNIC)が付いた投稿を表示しています

TJ3Bに文字や数字を表示させる 液晶ディスプレイ(LCD)をつなげる

イメージ
 TJ3Bの中で正しく計算が行われているのか、値が正しいものなのかを確認したいと思ったとします。どうしたらよいでしょうか。 例えばコンパスの値を確認したいとします。今いくつなのかを見るためには、パソコンにつないでセンサーモニターで確認する必要があります。 TJ3Bの場合、LED出力ができるので、簡単な状態なら表示させることができます。 ボールを見つけたときにLEDをON、ラインを踏んだ時にLEDをON、などです。 これだけでも、反応しない原因をしらべるためには有効です。 センサーが反応したらモーターが回るはずなのに回らない、と言う場合、センサーが壊れている場合とモーターが壊れている場合の二通りの原因が考えられます。 この場合に、センサーが反応したらLEDがONとしておけば、 LEDがつかなければ、センサーが反応していないので、センサーが原因 LEDがついているのに、モーターが回っていなければ、センサーは反応しているのにモーターが回らないのだから、モーターが原因と判断できます。 センサーがどれぐらい反応しているか見たい、もしくはセンサーの2個の値がどうなっているか見たい、と言う場合はLEDでは難しくなるので、そのような場合に液晶ディスプレイ(以下、LCD)を使って表示すると便利です。 秋月電子で買える安価なLCDに表示させられたら便利です。 ソフトウェアの改良は必要ですが、候補の機器としては二つあります。 一つ目はこちらです。 I2Cの4ピンが出ていますので、ピンを間違えないように接続すれば動作します。 画像をクリックすると秋月の販売ページにとびます 二つ目がこちらです。 サイズが1つ目に比べて半分ぐらいだけど文字数は同じです。ただし、ピンが多く、ちょっとだけ自分で配線する必要があります。 画像をクリックすると秋月の販売ページにとびます 実際にこれぐらいの回路は作る必要があります。大きさからすれば確実にこちらの方が便利なので、どちらを使うかは回路を組めるかどうかで判断してください。 これらの機器をI2Cの4ピンコネクタでTJ3Bとつなげば、ハードウェアの準備は完了です。 ソフトウェアについて改良が必要と書きましたが具体的には、C-STYLEのプログラム内にあるテキストファイルの書き換えが必要です。Windows付属のメモ帳などでも編集できるので専用のソフトなど...

TJ3Bのセンサーを増やす マルチプレクサの使い方

イメージ
 TJ3Bでセンサーを増やしたいけど、もうセンサーポートがないよ、と言う場合があります。 方法として、センサーをつなげたサブマイコンを用意して通信させる手があります。 その場合も2つ方法があり、  案1.  Arduino(アルディーノ)など、他のマイコンで作る  案2.  TJ3Bまたは、TJ3Bcoreを用意して接続する があります。 案1はArduinoは値段も安く、とても良い方法です。ただ、もう本体もArduinoにしたいと思っているレベルの選手ならやれるでしょうが、Arduinoを使ったことがない場合にセンサーを増やすためにやるのはちょっと難しいと感じるでしょう。 案2はものさえ用意できれば、ケーブルを接続しほぼ設定するだけでできるので難易度は低いです。ただし値段がそれなりにかかりますので、予算が問題になります。もう少し安くて工夫次第で使えるものはないのでしょうか。 今回はちょっとお試しレベルでできるものを紹介します。 値段は安く、難易度はそこそこで、電子工作やマイコンの仕組みなども学べるので今後TJ3Bを卒業してからも役に立つものです。 それができる装置は「マルチプレクサ」と言います。 今回はAmazonで買えるものを試してみました。 Amazonリンク  https://amzn.asia/d/1HDxL57 10個で1000円以下とリーズナブルです。これでセンサーが増やせるなら楽しそうです。 マルチプレクサの仕組みと接続 C-CODEを使う部分はありますが、この値段でセンサーの数を増やせるのは魅力です。 例ではセンサーポート4つを使って8個のセンサーをつなぐ例です。 このように、CN8,CN9,CN10をOUTPUTにしてセンサーの番号を指定すると、CN7に特定のセンサーがつながるという仕組みです。 マイコンをつなぐことを考えれば単純な配線なので、これぐらいは練習でやってみると良いと思います。 マルチプレクサのプログラム(新(黒)マイコン) ※白マイコンについても同じ論理でできる(コードは異なる)はずなので確認次第追記します。 センサー番号を指定してからCN7を読み込めばいいのでプログラムを書いてみます。 理論上は、これで指定したC0のセンサーの値が変数Aに入るはずです。 だが、これだとおかしな値が出てきます。 解析の結果...

お試し3輪の製作1(足回りの製作)

イメージ
今まで2輪だったけど、とりあえず3輪を作ってみたいという人のための記事です。 とりあえず、始めは試しにやってみることが重要です。製作1号機からいきなり強いロボットができるなら、誰も苦労していません。何度も失敗して試行錯誤しながらロボットの弱点を克服する方法を考え、改造していくことがロボカップジュニアのレベルアップの近道です。 先輩の真似をして、というのはもちろん良いですが、理解しないまま受け売りの知識で製作しても一時的には強くなった気になれるかもしれませんが、自分のスキルは全く上がっていないことに後で気づくと思います。 なのでとりあえずできる限り自分でやってみる。そしてダメなところ、どうしても自分では解決しないところを先輩に聞くと良いでしょう。 とりあえず試しに作るとして、性能は二の次で買いやすいもので製作していきます。まずは失敗しても次の挑戦の糧になれば良いのです。 使用部品: ●5速ツインギヤボックスHE https://www.tamiya.com/japan/products/72009/index.html ●48mmオムニホイール(六角ハブ対応) https://www.vstone.co.jp/robotshop/index.php?main_page=product_info&cPath=955_933&products_id=5180 ●電池ボックス https://akizukidenshi.com/catalog/g/g110196/ ●A4 MDF クリップボード 1枚 ※ダイソー、セリアなど、100均で探してみてください ●その他 M3の皿ねじ(ナット) 一袋 M3ワッシャー      一袋 (MDFに直接ナットを締め付けると削れてしまうため) ※ホームセンターで調達してください。 3輪作りたいけど、どうすればいいか分からない、と言う人には、口や文章で説明するよりやり方を見せたほうが早いです。ですが、1人1人に寄り添って教えることは難しいですので、今回は実際にサンプルを製作する動画を撮影しました。もし作り方が分からない場合はとりあえずディスプレイでこれを再生しながら真似してもらえれば、製作はできるはずです。 これで、我がクラブでも、詳しく教えてくれる人がいないから3輪にできない、と言う選手を減らすことができるはずです。 です...

KOROBO2で、ボールセンサーと光センサーを同時に使う方法

イメージ
 Korobo2はとてもいい機体なのですが、拡張性が高いとは言えないのが欠点です。 せめて、コンパス、ボールセンサーを同時につないだ時に、付属の光センサーも使うことができれば、ロボカップジュニアのビギナーだけでなく、ライトウェイトにも気軽に対応ができます。 無改造では、コンパスとボールセンサーをつないだ状態では、タッチセンサーを使うための2ピンのポートしか空いていません。 今回は、このタッチセンサーのポートを使って、光センサーをつなぐ方法を説明します。 実際には、簡単な改造でつなぐことができます。Korobo2ユーザーの方は、ぜひ試してみてもらいたいと思います。 コンパスはつながない状態で、改造していますが、コンパスがあっても、基板が延長されるだけなので、同じ方法が使えるはずです。 4ピンのポートへの変換基板を作れば、簡単です。 組み立て説明書には、最後のほうに回路図もついていますので参考にしてください。 光センサー用ポートには、タッチセンサーからセンサーポートを、本来のPHOTOポートから、1pinめの電圧3.3Vと2pin目をつなぎます。光センサーのLEDを光らせる回路になります。コンパスをつないだ場合は光のON/OFFは使用できない(ついたままになる)ようですが、そのままつないで問題ないと思います。 これで、4ピンポートが4つできますので、ボールセンサーと、光センサーを二つずつ両方をつなぐことができます。光センサーの反応はタッチセンサーの反応ブロックで使えます。(KOROBO2上はあくまでタッチセンサーだと思っているため) コンパスをつなげた場合の切り替え方法も同じです。タッチセンサーの代わりに床の白線が分かると思えば、それまで慣れている人はほぼそのままプログラムに使えると思います。 (2026/2/9追記) 純正のコンパス基板をつなげたときの端子に同じ配線をすると光センサーのLEDが光らない という情報をもらいました。 コンパス基板のボールセンサー用の2ピン目は元基板のOUTPUTにつながっていないので、それが原因だと思います。 本体回路図から推測すると、 光センサー用のポート2番には、抵抗100~500Ω程度を挟んでGNDにつなぐと良さそう です。(下図) ただ、この配線の場合は、抵抗を2本入手する必要がありますね。初心者は持っていないかもしれませ...

3輪の試作について(ソフト編)

イメージ
3輪を試してみたい人が、最初から先輩と同じレベルを求めて始めると挫折すると思うので、できるだけ適当にとりあえず動かしたい、という人向けの記事です。 ハード編は こちら 。 まずは後輪の速度制御をしない場合です。 オムニホイールをそれぞれの動かしたい方向に対するモーターの出力は以下の通りです。 前進と後退で、値が少数になっていますが、両方100%など同じ値で大丈夫です。 横移動のとき、後輪は100%または -100%で動かすだけなので、OUTPUT制御のモータードライバを接続した場合でも、特に速度を制御する必要はありません。 あと、ロボットを回転させたい場合、後輪を停止したまま、左右のタイヤを逆回転させれば、回転させることができます。 ここまで来るのもそれなりに大変だと思いますが、まずはここまでこれば、思った方向に動かすことはできるかと思います。 あとは、①常に前を向きながら、②センサーの値によって動く方向を決めて動くプログラムを作っていきます。 試行錯誤すれば、それなりに動く3輪を作ることができます。 大会で常連が、楽に行っている(ように見える)ボールを正面にとらえる、という動きをさせるのは、思ったより難しいです。少しずつ動くようになるのは楽しいですよ。頑張ってみてください。

3輪の試作について(ハード編)

イメージ
※この内容には新しい記事を公開しています。 こちら も読んでみてください 。 TJ3Bでロボカップを初めて試合に出ると、3輪のオムニホイールにしたくなると思います。 その場合、結構な金額がかかるので、戸惑う選手も多いようです。 2輪のTJ3Bから3輪にするために必要なのは、 ・ギヤードモーター 3つ ・オムニホイール 3つ ・モータードライバー の三つです。 今回は試作として、できるだけ低コストでお試し3輪マシンを作る方法です。 1.ギヤードモーター コストを抑えるのであれば、当然、元からあるもので試してみます。だめなら後から適切なものを買い替えればよい。 2輪で2つのギヤボックスを使っているはずですので、もう一つギヤボックスを追加します。 購入するのは、ダイセンのTTモーター48:1です。 2.オムニホイール これは低コストでそろえるためには市販品では難しいです。安いオムニホイールはあってもホイールとモーターを接続する方法が用意されていなかったりするので、ジョイントを自作する必要があります。 ジョイントを作成できるならオムニホイールもCADで設計してアクリル板で作ると最も安上がりです。 それらが自力では難しい場合は、ダイセンのプラスチックオムニホイール(ロボカッパーには見た目から枝豆オムニと呼ばれている)を購入しましょう。TTモーターとつなげるようにセットになっているので助かります。 3.モータードライバー ダイセンの6CHモータードライバーが第一候補ですが、高額のため、まず勉強もかねてHブリッジのモータードライバを試してみましょう。 おすすめ1 Maker Drive https://akizukidenshi.com/catalog/g/gM-16281/ ボタンでモーターを回すテストができるので、電源やモーターが正しくつながっているか確認が簡単です。最大1Aなのが気になりますが、モーターを変更しなければ大丈夫と思います。 2CHなので2つモーターを回すことができます。最近のおすすめです。 スイッチサイエンスでは同じCytron製の3A版も売っています。値段は少し高くなります。 おすすめ2 DRV8835使用DCモータードライブキット https://akizukidenshi.com/catalog/g/gK-10346/ テスト機能はありませんが安価で3A...

TJ3Bで三角関数を使う

イメージ
TJ3Bでの三角関数の使い方を紹介します。 先輩のポスターなどで見て、三角関数を使ってみたい、という選手向けです。 なぜ三角関数を使うかの例はこちらの記事を読んでください。 センサの値からボールのある角度を求める(理論編) おそらく、辺の長さから角度を求めたいと思います。 変数X、変数Y にそれぞれ、横の長さ、縦の長さが代入されていたとして、 C-CODEで、このように書くと使えます。 gV[VAR_B] = atan2( gV[VAR_Y] , gV[VAR_X] )/3.14*180; atan2(Y,X) という関数を使います。この行を書くだけで辺の長さから角度を求めることができます。 縦の長さのYが先に来るのに気を付けてください。 これで変数Bに角度(単位は°)が代入されます。 図にするとこんな感じです。 最後に3.14で割って、180をかけていますが、これは式で求められる角度が0~360度ではなく、単位がラジアンという0~6.28の値(半径1の円周の長さで角度を表す)を使うので変換しています。 この式が本当に正しく動くのかの検証のために、実際に値を代入して、得られる結果を実験してみました。 以下のプログラムをC-STYLEで作成しました。 先ほどの文は12行目に入っています。 C-CODE 001|//-------------------------------------------------------------------------------- 002|#include "D_Main.h" 003|#include "D_I2C.h" 004|#include "D_SIO.h" 005|#include "D_EIO.h" 006|//-------------------------------------------------------------------------------- 007|// Program Name : atna2ループ.C 008|//-------------------------------------------------------------------------------- 009|void ...

センサの値からボールのある角度を求める(理論編)

イメージ
IF文のプログラムの限界  IF センサの値に反応したら  ・・・ Else 反応しなかったら  ・・・ というプログラムをまずは書いていると思います。ですがこれで制御するうちはどうしても「ガタガタ」動く、という状況ができると思います。 センサーのしきい値の境界で、ロボットが二つの命令を交互に行うような状態になるからです。 これは、制御で言えば、もっとも原始的なON/OFF制御です。 ある程度、思い通りにロボットが動くようになってきたら次の段階に進みましょう。 まずはセンサーの値ですが、IF/ELSEの判定では、どうやっても境界ができるので多少は改善できても根本的なガタガタは治りません。 ではどうしたらいいのでしょうか? ・・・思いつきますか? 隣り合ったボールセンサーの値を比較して、その差からだいたいの位置を割り出し、それを使うという方法が考えられます。 ただ、人間であればなんとなく位置の想像がつきますが、ロボットにどのように位置を伝えたらいいでしょうか。 実はそれを求めることができるとっても便利な「計算式」があります。 それが「三角関数」です。 ※関数というのは何かを求める計算式のことです。 三角関数とは何か 三角関数とは何か、調べてみましょう。 三角関数とは、直角三角形の辺の長さが決まれば、角度が決まる、角度が決まれば辺の長さが決まる、だからそれを求める式を作っておこう、というものです。 例えば、この図でいえば、一番長い辺の長さを1に決めて、一つの角の角度をきめてやれば、横と縦の長さはひとつに決まります。 逆に、縦と横の辺の長さが決まれば、角度がひとつ決まります。 ここまでは分かると思います。分からない人はもう一度読み直してみて下さい。それほど難しいことは何も言っていません。 ここまで理解したとして、ここからが重要なのですが、 記憶しておく必要などなにもなく、30度の時に、それぞれの長さってどうなるんだっけ?覚えておくのは面倒だから記号で書いておいて後で計算しよう、というものが三角関数です。 そして、それぞれ 横の長さ=cos(角度)  ※コサインと読みます。 縦の長さ=sin(角度)  ※サインと読みます。 と書きます。 30度の時の横の長さは 「cos(30度)」です。 昔は三角関数表というものを誰かが作っておいて、それを見ながら値を出していたみた...

【2022年版】練習用赤外線発光ボール作成

イメージ
練習用赤外線発光装置の内部基板 ロボカップジュニアでは公式ボールとしてイーケイジャパンの赤外線発光ボールを使います。 RoboCupJunior公式赤外線発光ボール [ RCJ-05R ] ボールとはいえ、ロボットがボールを認識するため赤外線を発光する回路が入っている機械のためけっこう高いです。 ボールは数個ありますが、新しく始めたメンバーが、ロボットがボールに反応するか、回り込みができるかのトライ&エラーをすると、行列待ちになってしまいます。 当然始めたばかりの生徒も持ってません。これがないから家でも試したいけどできない、という子もいます。なら買うしかないね、というのは正論ですが正直ここの部分はなんとかしてあげたいというのが本音です。どうせなら、ロボカップジュニアの大会を経験して、これにならお金をかけていいかな、と思えてから気持ちよく購入してほしいものです。

ダイセンμCOREで、αエクスプローラー用4輪制御アイコンを使う

イメージ
 ロボカップジュニアでは、TJ3Bで有名なダイセンの製品にμCORE(マイクロコア)というものがあります。Arduinoのようにも見えますが、最大の違いはC-STYLEでプログラムが書けるということです。TJ3B用とは別の専用のC-STYLEがホームページからダウンロードできます。 TJ3Bから卒業したい、またはサイズを小さくしたい、だけどArduinoはまだ不安という選手にお勧めです。Arduinoで必要になる回路設計や配線なども経験することができます。 見た目はほぼ変わらず、モーターが標準装備ではないので、それ以外のアイコンがあります。 センサモニタが面白くて、ピンすべてが表示できます。センサのデバッグはかなりやりやすいでしょう。この見やすさだけでもμCOREを使う意味はありそうです。 また、TJ3BのオプションのI2C機器、コンパスやモータードライバーも使うことができます。 ただし、コネクタなどは何もついていないため、自分で配線をしていく必要があります。これが新しい点です。 自分でコネクタを配置できるということはサイズも大きさも自分で決められるということです。設計の自由度が大きく上がりますし、センサーを同一の基板に収めてしまうこともできます。 難しそうですが、電源さえつなげばとりあえず動きます。あとは必要な端子と端子をつないでいきましょう。 今回はこのμCOREを使って、4輪制御をしてみます。 【方法1 一番簡単な方法】 6chモータードライバ、または4chモータードライバを使ってI2Cでつなげば、TJ3Bでも使えるアイコンを使って数字で指定できるので、簡単です。 【方法2 通常の方法】 モータードライバを自前で用意し、これをArduinoのようにデジタル出力を使ってモーター制御をすることができます。モータードライバの入力に使うPinを決めて、デジタル出力に設定し、H/Lの出力をすれば、モーターを回せると思います。スピード制御なども関数を作ればできると思います。 【方法3 今回紹介する方法】 モータードライバを自前で用意し、ほぼ6chモータードライバーのような見た目で、モーターを制御します。 方法2のようにPIN単位でH/Lの制御をする必要がなく、方法1と同様の簡単さで速度も指定できるので制御がわかりやすく、かつ、方法2のように、自由にモータードライバ...