ラインセンサーの開発がなんとなく終わった話
以前,Elecrowで基板を発注した話をしました.
ryuga13tk.hatenablog.com
この時に作った基板が,カラーセンサーver1で,今回,いくつかの改良を加えたカラーセンサーver2を発注して,動作確認までしたので,それについて書いていきます.
動作確認は,ProcessingでGUIで確認できるようにしてあります.
2019/03/31時点ですでにフットプリントの大きさを手直しした,2.1を用意しています.
ちなみにこんな感じ.
では始めます.
経緯
ロボコン現役中に,自動ロボットの自己位置推定に,カラーセンサーがあれば楽なんだろうなぁ...って言う気持ちから開発をしていた基板です(自己位置推定のプログラム書くのが難しそうだが).
現役を引退しても完成していなかったので,ロボコンで使う予定はないけど,無念なので開発を続行していました.
現役のころから,すべて実費で開発を行ってきたので,開発費は,基板の発注費と部品代で,だいたい8,000円ぐらいです.
ただ,この基板ではひとつ350円のカラーセンサーを5個使っているので,はんだ付けを失敗するわけにはいかず(1回失敗しましたが),HAKKOのはんだごてを新しく買いました.
今までは,gootのこてライザーを使っていました.
さよならコテライザー...
スペック
詳しく書いても仕方がないので,ざっくり書くと,
S11059をI2Cのマルチプレクサで動かしてるだけです.I2Cアドレス同じって面倒ですね.せめてプログラマブルであればいいんですけどね.
動作確認
表面実装のはんだ付けの練習が出来て楽しかったです.
デバッガー
デバッガーについてですが,Processingで色出してるだけです.
サンプルプログラムです.
import processing.serial.*; Serial myPort; String str_get_data = null; String buf[]; void setup() { size(500, 500); myPort = new Serial(this, "COM43", 115200); frameRate(1000); } int j = 0; void draw() { float r = 0;// / 6553.50; float g = 0;// / 6553.50; float b = 0;// / 6553.50; str_get_data = myPort.readStringUntil('\n'); //myPort.clear(); println(str_get_data); if (str_get_data != null){ str_get_data = trim(str_get_data); //改行コード取り除き buf = split(str_get_data,"\t"); try{ r = float(buf[0]);// / 6553.50; g = float(buf[1]);// / 6553.50; b = float(buf[2]);// / 6553.50; } catch(ArrayIndexOutOfBoundsException e){ print("erro"); } background(r, g, b ); ++j; if(j > 10){ myPort.clear(); j = 0; } //色を設定 //fill(int./(buf[0])*10, int(buf[1])*10, int(buf[2])*10); //rect(100 ,100, 300, 300); } //delay(50); }