ESP32で受信機IC-R6をコントロール(航空無線受信を簡単に・その8)
前回までは、ESP32マイコンを使い、有線CI-Vで IC-R6をコントロールすることに専念してきたが、
AirPort の見送りデッキ等で、有線機器をバックに入れ接続している姿は、見方によってはチョット異様かも・・・
そこで考えたのが、ESP32 + カラー液晶 のコントローラに代わり、Androidスマホを操作機器として
使用してはどうだろうかと言う考えです。
そう言えば、Icomさんが何かの機種用にスマホコントロールソフトを販売していたような気がします。
システム構成はこれです。
構想は
・コントロール・エリアデータや空港データはスマホ側に入れておく
・スマホタッチで設定周波数等がBluetooth(BLE)経由でESP32に送られる
・送られた周波数等のデータによりCI-VコントロールでIC-R6を制御する
と、このような絵を描いたのは良いのですが、実際行ってみると以下の課題(不具合)が出ました。
・スマホのソフトを簡単に作れる、ブラウザ(Web bluetooth API)で作りましたが、Windowsの
chromeでは起動するのですが、Android スマホでは何故か動きません。
これが最大の難関です。既に1週間苦闘してますがNGです。
(windowsではbluetoothでデータ転送できるので、Androidスマホ固有の問題なのが救い)
・Web bluetooth APIは javaScript で構築するのですが、それとは別に、画面系の設計を
javaScriptで行う必要があるので、私にとっては学習の敷居が高い (・・・頑張るしかない)
AirPort の見送りデッキ等で、有線機器をバックに入れ接続している姿は、見方によってはチョット異様かも・・・
そこで考えたのが、ESP32 + カラー液晶 のコントローラに代わり、Androidスマホを操作機器として
使用してはどうだろうかと言う考えです。
そう言えば、Icomさんが何かの機種用にスマホコントロールソフトを販売していたような気がします。
システム構成はこれです。

構想は
・コントロール・エリアデータや空港データはスマホ側に入れておく
・スマホタッチで設定周波数等がBluetooth(BLE)経由でESP32に送られる
・送られた周波数等のデータによりCI-VコントロールでIC-R6を制御する
と、このような絵を描いたのは良いのですが、実際行ってみると以下の課題(不具合)が出ました。
・スマホのソフトを簡単に作れる、ブラウザ(Web bluetooth API)で作りましたが、Windowsの
chromeでは起動するのですが、Android スマホでは何故か動きません。
これが最大の難関です。既に1週間苦闘してますがNGです。
(windowsではbluetoothでデータ転送できるので、Androidスマホ固有の問題なのが救い)
・Web bluetooth APIは javaScript で構築するのですが、それとは別に、画面系の設計を
javaScriptで行う必要があるので、私にとっては学習の敷居が高い (・・・頑張るしかない)
ESP32で受信機IC-R6をコントロール(航空無線受信を簡単に・その7)
登録した周波数群をスキャンする、「Auto Scan」機能の速度が遅い原因が判りました。
私の勘違いで、無線機からのアンサーを誤ってカウントしていました。

周波数設定コマンドには無線機から帰るアンサーがあったので、Sメータ取得コマンドにも単純な
アンサーがあるものとしていましたが、Sメータのレベルを返すことがアンサーなので、単純な
受信アンサーは無いということでした。
よって、上記の送受信サイクルで受信バッファに入って来る回数は、5回ではなく4回です。
そこを5回としていたので、
受信に使うコード部分
i_size = Serial2.readBytesUntil(0xFD, buffer, 100);
これがタイムアウト1000mSec になっていました。
この送受信サイクルの時間を測ってみました。
====== 誤カウント5回 =====
putContWaku=130 ・・・周波数表示枠の再描画 130mSec
sendHz=155 ・・・周波数設定コマンド送出 25mSec
delay(300)=455 ・・・受信機の安定待ち 300mSec
send D1502=455 ・・・Sメータ取得コマンド送出 0mSec
read[1]=455 ・・・No1受信処理 0mSec
FEFE7EDE050000453201 , i_size = 10 ・・・周波数設定コマンドの折り返し
read[2]=455 ・・・No2受信処理 0mSec
FEFEDE7EFB , i_size = 5 ・・・周波数設定コマンドへのアンサー
read[3]=458 ・・・No3受信処理 3mSec
FEFE7EDE1502 , i_size = 6 ・・・Sメータ取得コマンドの折り返し
read[4]=474 ・・・No4受信処理 16mSec
FEFEDE7E15020000 , i_size = 8 ・・・Sメータ取得コマンドへの返信
read[5]=1475 ・・・No5受信処理(timeout) 1001mSec
, i_size = 0 ・・・バッファは空
delay(100)=1575 ・・・次のサイクルまで 100mSec待ち
====== 正カウント4回 =====
utContWaku=130
sendHz=155
delay(300)=455
send D1502=455
read[1]=455
FEFE7EDE050000503301 , i_size = 10
read[2]=455
FEFEDE7EFB , i_size = 5
read[3]=455
FEFE7EDE1502 , i_size = 6
read[4]=458
FEFEDE7E15020000 , i_size = 8
delay(100)=561
1.6秒 / 1サイクル が 0.6秒 / 1サイクル になりました。これならばOKでしょう。
いやいや、速度が遅い原因が判ってすっきりしました。思い込みが最大の敵ですね(笑)
私の勘違いで、無線機からのアンサーを誤ってカウントしていました。

周波数設定コマンドには無線機から帰るアンサーがあったので、Sメータ取得コマンドにも単純な
アンサーがあるものとしていましたが、Sメータのレベルを返すことがアンサーなので、単純な
受信アンサーは無いということでした。
よって、上記の送受信サイクルで受信バッファに入って来る回数は、5回ではなく4回です。
そこを5回としていたので、
受信に使うコード部分
i_size = Serial2.readBytesUntil(0xFD, buffer, 100);
これがタイムアウト1000mSec になっていました。
この送受信サイクルの時間を測ってみました。
====== 誤カウント5回 =====
putContWaku=130 ・・・周波数表示枠の再描画 130mSec
sendHz=155 ・・・周波数設定コマンド送出 25mSec
delay(300)=455 ・・・受信機の安定待ち 300mSec
send D1502=455 ・・・Sメータ取得コマンド送出 0mSec
read[1]=455 ・・・No1受信処理 0mSec
FEFE7EDE050000453201 , i_size = 10 ・・・周波数設定コマンドの折り返し
read[2]=455 ・・・No2受信処理 0mSec
FEFEDE7EFB , i_size = 5 ・・・周波数設定コマンドへのアンサー
read[3]=458 ・・・No3受信処理 3mSec
FEFE7EDE1502 , i_size = 6 ・・・Sメータ取得コマンドの折り返し
read[4]=474 ・・・No4受信処理 16mSec
FEFEDE7E15020000 , i_size = 8 ・・・Sメータ取得コマンドへの返信
read[5]=1475 ・・・No5受信処理(timeout) 1001mSec
, i_size = 0 ・・・バッファは空
delay(100)=1575 ・・・次のサイクルまで 100mSec待ち
====== 正カウント4回 =====
utContWaku=130
sendHz=155
delay(300)=455
send D1502=455
read[1]=455
FEFE7EDE050000503301 , i_size = 10
read[2]=455
FEFEDE7EFB , i_size = 5
read[3]=455
FEFE7EDE1502 , i_size = 6
read[4]=458
FEFEDE7E15020000 , i_size = 8
delay(100)=561
1.6秒 / 1サイクル が 0.6秒 / 1サイクル になりました。これならばOKでしょう。
いやいや、速度が遅い原因が判ってすっきりしました。思い込みが最大の敵ですね(笑)
ESP32で受信機IC-R6をコントロール(航空無線受信を簡単に・その6)
この企画、「ESP32で受信機IC-R6をコントロール」で当初考えていたのが、以下の4機能です。
1.自動スキャン機能の実装:スキャン後の音量でチェックする ・・・ 前回実施
2.ボリューム操作ボタンの実装 ・・・前々回実施
3.複数のエリアを選別できる機能の実装 ・・・同上
4.自分で好きな周波数をまとめてグループ化する機能(多分、PCを使ってSDのデータ編集)
で、残っているのが最後の、「自由に好きな周波数がグループ化できる機能」です。
使う方の立場に立てば、これが最も欲しい機能 なのですが、作る側からですと最も難題な機能です。
PCで動作するソフトの場合、画面サイズや項目数・文字数、画面推移が比較的容易に設定でき、
また、途中で仕様変更になっても、動作させるソフトウエアを変えるだけで対応が可能になります。
しかし、小型・コンパクトで移動運用にも向いている、マイコン+液晶CRT ですが、そのコンパクトさ
故に、仕様の自由度や対応力に限界があります。マイコンソフトは道具が無いと書き換えが難しいので
「自由に好きな周波数がグループ化する」ことができるための準備をしておく必要があります。
課題は
1.コントロール数や空港数をどこまで増やせる設計にするか:画面設計、内部データ設定
意外にも、データ数に対応する複数画面推移の設定・設計が煩雑です。
また、現在はプログラム内データで運用してるが、SDデータ化する必要がある。
2.コントールや空港の元データをどのように用意するか。3.にも関連する。
3.SDに収録するファイル名(英数8文字以下)、
画面に収まるコントロール名、空港名、周波数の自動編集機能の実装
2023/3/19 夜 追記
*何でもできるようにするのは難しい。取りあえず「空港名の増設」「16周波数まで」で
限定すれば、なんとかなりそうな気がします。
参考までに、
コントロール名、空港名をSDファイル名に関連付けるプログラム内データです。
{ 0, "札幌コントロール", "/SAPO_CON.csv"},
{ 1, "東京コントロール1","/TKY_CN01.csv"},
{ 2, "東京コントロール2","/TKY_CN02.csv"},
{ 3, "福岡コントロール", "/FUKU_CON.csv"},
{ 4, "沖縄コントロール", "/OKI_CON.csv"},
{ 5, "千歳空港", "/SAPO_Air.csv"},
{ 6, "成田空港", "/NARI_Air.csv"},
{ 7, "羽田空港", "/HANE_Air.csv"},
{ 8, "茨城空港", "/IBAR_Air.csv"},
{ 9, "中部国際空港", "/CENT_Air.csv"},
{10, "福岡空港", "/FUKU_Air.csv"}
SD内に置かれた /HANE_Air.csv データです。
HANE,東京 APP,0124.4000
HANE,東京 APP,0119.4000
HANE,東京 DEP,0120.9000
HANE,東京 DEP,0126.0000
HANE,東京aTWR,0118.1000
HANE,東京bTWR,0118.5750
HANE,東京cTWR,0124.3500
HANE,東京dTWR,0118.7250
HANE,東京 GND,0121.7000
HANE,東京 GND,0118.2250
HANE,東京 GND,0121.9750
HANE,東京 Del,0121.8250
さて、さてと・・・・ 色々と考えねばなりませんね・・・・・・・
1.自動スキャン機能の実装:スキャン後の音量でチェックする ・・・ 前回実施
2.ボリューム操作ボタンの実装 ・・・前々回実施
3.複数のエリアを選別できる機能の実装 ・・・同上
4.自分で好きな周波数をまとめてグループ化する機能(多分、PCを使ってSDのデータ編集)
で、残っているのが最後の、「自由に好きな周波数がグループ化できる機能」です。
使う方の立場に立てば、これが最も欲しい機能 なのですが、作る側からですと最も難題な機能です。
PCで動作するソフトの場合、画面サイズや項目数・文字数、画面推移が比較的容易に設定でき、
また、途中で仕様変更になっても、動作させるソフトウエアを変えるだけで対応が可能になります。
しかし、小型・コンパクトで移動運用にも向いている、マイコン+液晶CRT ですが、そのコンパクトさ
故に、仕様の自由度や対応力に限界があります。マイコンソフトは道具が無いと書き換えが難しいので
「自由に好きな周波数がグループ化する」ことができるための準備をしておく必要があります。
課題は
1.コントロール数や空港数をどこまで増やせる設計にするか:画面設計、内部データ設定
意外にも、データ数に対応する複数画面推移の設定・設計が煩雑です。
また、現在はプログラム内データで運用してるが、SDデータ化する必要がある。
2.コントールや空港の元データをどのように用意するか。3.にも関連する。
3.SDに収録するファイル名(英数8文字以下)、
画面に収まるコントロール名、空港名、周波数の自動編集機能の実装
2023/3/19 夜 追記
*何でもできるようにするのは難しい。取りあえず「空港名の増設」「16周波数まで」で
限定すれば、なんとかなりそうな気がします。
参考までに、
コントロール名、空港名をSDファイル名に関連付けるプログラム内データです。
{ 0, "札幌コントロール", "/SAPO_CON.csv"},
{ 1, "東京コントロール1","/TKY_CN01.csv"},
{ 2, "東京コントロール2","/TKY_CN02.csv"},
{ 3, "福岡コントロール", "/FUKU_CON.csv"},
{ 4, "沖縄コントロール", "/OKI_CON.csv"},
{ 5, "千歳空港", "/SAPO_Air.csv"},
{ 6, "成田空港", "/NARI_Air.csv"},
{ 7, "羽田空港", "/HANE_Air.csv"},
{ 8, "茨城空港", "/IBAR_Air.csv"},
{ 9, "中部国際空港", "/CENT_Air.csv"},
{10, "福岡空港", "/FUKU_Air.csv"}
SD内に置かれた /HANE_Air.csv データです。
HANE,東京 APP,0124.4000
HANE,東京 APP,0119.4000
HANE,東京 DEP,0120.9000
HANE,東京 DEP,0126.0000
HANE,東京aTWR,0118.1000
HANE,東京bTWR,0118.5750
HANE,東京cTWR,0124.3500
HANE,東京dTWR,0118.7250
HANE,東京 GND,0121.7000
HANE,東京 GND,0118.2250
HANE,東京 GND,0121.9750
HANE,東京 Del,0121.8250
さて、さてと・・・・ 色々と考えねばなりませんね・・・・・・・
ESP32で受信機IC-R6をコントロール(航空無線受信を簡単に・その5)
次なる課題は、「登録したコントロールor空港周波数群のAuto Scan」です。
IC-R6でもメモリーに登録した周波数群をAuto Scan する機能があるようですが、
このメモリー操作が簡単にできるように見えないので、本器に Auto Scan をCI-Vコントロールを
使って実現しようと思います。
これを実現するには、CI-V 通信機能を使って以下の処理が必要になります。
大きな機能的な流れとしては、
(この図には無いが、登録されているコントロール群の周波数を順に追って行き)
1.IC-R6の周波数を設定する(動作安定するまでの待ちが必要)
2.受信状態を確認するため、Sメータ取得コマンドを出力する
3.受信状態のアンサー出力をIC-R6から受信する
(この図には無いが、受信レベルが0でなければ、周波数サーチを停止する)
しかし、この1.から3.の動作を行うときの、UARTのデータ処理には留意が必要です。
注意1.送信データがCI-V回路で受信側にリターンされる。このデータ処理が必要
注意2.送信データに対して、IC-R6から受信応答のアンサーが返る。この処理も必要
注意3.注意1.注意2.のデータ処理を行いながら、Sメータ取得・返信データを確実に
処理する必要がある。
そして受信データ処理のタイミングは、周波数設定コマンド、Sメーター取得コマンドを
送信後、受信バッファに溜まった5回分の受信データをバッチ処理することにしました。
受信に使うコードは
i_size = Serial2.readBytesUntil(0xFD, buffer, 100);
Serial2のRXに格納されているデータから、1回分の受信終端コード0xFDまでを
bufferに読込み、その読み込んだサイズが i_size ということです。
これをサーチする周波数毎に5回繰り返し、i_size = 8 (Sメータ取得アンサーの9 Byteから
終端コードの0xFDを除いた 8 Byte)のデータがSメータ取得アンサーデータになります。
buffer[] に並んだデータは、0xFE,0xFE,0xDE,0x7E,0x05,0x12,0x00,0x00 (Sレベル0の時)に
なるので、buffer[6]、buffer[7] がいずれも 0 で無ければ受信があると判断できます。
このAuto Scan 機能を使って動作している画面を動画にしました。
東京コントロール1の関東南Bをスタートして、最後の北陸までスキャンしてます。
起動は今のところ10MHzの文字下側をクリックすることにしてます。
何故か動きが遅いです。
周波数を変えてから0.3秒しか待っていないのですが、次の周波数に移動するのが遅いです。
IC-R6でもメモリーに登録した周波数群をAuto Scan する機能があるようですが、
このメモリー操作が簡単にできるように見えないので、本器に Auto Scan をCI-Vコントロールを
使って実現しようと思います。
これを実現するには、CI-V 通信機能を使って以下の処理が必要になります。

大きな機能的な流れとしては、
(この図には無いが、登録されているコントロール群の周波数を順に追って行き)
1.IC-R6の周波数を設定する(動作安定するまでの待ちが必要)
2.受信状態を確認するため、Sメータ取得コマンドを出力する
3.受信状態のアンサー出力をIC-R6から受信する
(この図には無いが、受信レベルが0でなければ、周波数サーチを停止する)
しかし、この1.から3.の動作を行うときの、UARTのデータ処理には留意が必要です。
注意1.送信データがCI-V回路で受信側にリターンされる。このデータ処理が必要
注意2.送信データに対して、IC-R6から受信応答のアンサーが返る。この処理も必要
注意3.注意1.注意2.のデータ処理を行いながら、Sメータ取得・返信データを確実に
処理する必要がある。
そして受信データ処理のタイミングは、周波数設定コマンド、Sメーター取得コマンドを
送信後、受信バッファに溜まった5回分の受信データをバッチ処理することにしました。
受信に使うコードは
i_size = Serial2.readBytesUntil(0xFD, buffer, 100);
Serial2のRXに格納されているデータから、1回分の受信終端コード0xFDまでを
bufferに読込み、その読み込んだサイズが i_size ということです。
これをサーチする周波数毎に5回繰り返し、i_size = 8 (Sメータ取得アンサーの9 Byteから
終端コードの0xFDを除いた 8 Byte)のデータがSメータ取得アンサーデータになります。
buffer[] に並んだデータは、0xFE,0xFE,0xDE,0x7E,0x05,0x12,0x00,0x00 (Sレベル0の時)に
なるので、buffer[6]、buffer[7] がいずれも 0 で無ければ受信があると判断できます。
このAuto Scan 機能を使って動作している画面を動画にしました。
東京コントロール1の関東南Bをスタートして、最後の北陸までスキャンしてます。
起動は今のところ10MHzの文字下側をクリックすることにしてます。
何故か動きが遅いです。
周波数を変えてから0.3秒しか待っていないのですが、次の周波数に移動するのが遅いです。
ESP32で受信機IC-R6をコントロール(航空無線受信を簡単に・その4)
航空無線を楽しむには、札幌・東京・福岡・沖縄の4エリア・コントロール管制と、それに繋がる
比較的大きな空港での空港管制を聞くことができれば楽しみが増すと思います。
今回は「その1」で挙げたこれらのエリアで、使用頻度が多いと思われる4エリア、6空港の代表的
周波数をSDカードに登録し、カラー液晶に表示・選択できるようにしてみました。
メイン画面:4エリア(東京は2分割)、6飛行場
左側に4エリアのコントロール、右側に6空港が選べるようにしました。
詳細を表示したいコントロールや飛行場をクリックすると、登録した周波数群が表示されます。
以下、各コントロール・空港の登録内容
札幌コントロール 東京コントロール1

東京コントロール2 福岡コントロール

沖縄コントロール
千歳空港 成田空港

羽田空港 茨城空港(百里基地)

中部国際空港(セントレア) 福岡空港

Select Main Control の画面に戻るには、Select Control Hz の 「Select」部分をクリックする。
これで一通りのデータ登録ができました。
次は、オート・スキャン機能です。
比較的大きな空港での空港管制を聞くことができれば楽しみが増すと思います。
今回は「その1」で挙げたこれらのエリアで、使用頻度が多いと思われる4エリア、6空港の代表的
周波数をSDカードに登録し、カラー液晶に表示・選択できるようにしてみました。
メイン画面:4エリア(東京は2分割)、6飛行場

左側に4エリアのコントロール、右側に6空港が選べるようにしました。
詳細を表示したいコントロールや飛行場をクリックすると、登録した周波数群が表示されます。
以下、各コントロール・空港の登録内容
札幌コントロール 東京コントロール1


東京コントロール2 福岡コントロール


沖縄コントロール

千歳空港 成田空港


羽田空港 茨城空港(百里基地)


中部国際空港(セントレア) 福岡空港


Select Main Control の画面に戻るには、Select Control Hz の 「Select」部分をクリックする。
これで一通りのデータ登録ができました。
次は、オート・スキャン機能です。
ESP32で受信機IC-R6をコントロール(航空無線受信を簡単に・その3)
新たに設計中の基板にタッチセンサーXPT2046の配線をしていないことに気付いた。
いやこれはいけない。
良く見直してみるとCI-Vコントロールの回路にも未配線が見つかった。
見直した基板図
赤いのが表面、線の間に青く見えるのが裏面(貫通部材のハンダ面)です。
17個の表面実装パーツは表面に付けます。これくらいの量ならば手ハンダで行けるでしょう。
さすがにチップ抵抗のサイズは1608(1.6mmx0.8mm)では厳しいので2012(2.0mmx1.2mm)です。
LCDのタッチセンサーXPT2046のピン回り
タッチセンサー用のピンは下側5ピンをESP32に配線します。
T_CLK :SPIのクロック信号、LCDのSCKと共用
T_CS:タッチセンサー用の専用制御ピン
T_DIN:SPIのMOSIと共用
T_DO:SPIのMISOと共用
T_IRQ:タッチ入力の割り込みピン、取り敢えず専用配線にしました。
横320 x 縦240 のLCDですが、タッチ座標は320方向で約3700、240方向で約3800ありました。
タッチされるとXPT2046ドライバーの p.x , p.y にこれらの値が入るので、若干のゼロ点オフセット
修正を含んで、320、240 の座標に変換する必要があります。
タッチした座標をボタンに割付
タッチして320x240の座標に変換した(x, y)からボタン位置:0 ~ 15 (上図の黒字)に
割り付けます。
方法は、x = 0, 1, 2, 3、y = 0, 1, 2, 3 に相当する範囲を決めておき、プログラムで選択
します。
----- 例 -----
int serchContNum(int iTouchX, int iTouchY){
int x,y;
switch (iTouchX){
case 16 ... 69:
x = 0;
break;
case 94 ... 147:
x = 1;
break;
・・・・・
default:
x = 9;
break;
}
switch (iTouchY){
case 0 ... 24:
y = -2;
break;
case 25 ... 50:
y = -1;
break;
・・・・・
default:
y = 9;
break;
}
if((x == 9) || (y == 9)){
return 99;
}else if(y < 0){
return y;
}else{
return y * 4 + x;
}
}
-------------------------
x, y が 0 ~ 3 (プログラム的には9以外の正)ならば、y x 4 + x の 0 ~ 15 を返します。
y が 負 (実際は -2 か -1) の時は y を返します(-2 ならばVOL UP、-1はVOL DOWN)
これらの範囲外では 99 を返し、ボタン該当しないと判断する。
現状での外観イメージ
カラー液晶右上に上下矢印のボリュームアップ/ダウンの操作ボタンを実装しました。
IC-R6のボリュームは、0 ~ 39 まで 40段階あります。1 step 毎に変化します。
大分、カラー液晶の盤面余裕が無くなってきてます。
ボタン文字とボタン外周との間が上下0.5mm程度あるのだが、これを0.2mmに詰めても
1.6mm程度しか稼げないので、コントロール・マップを切り替えるボタンやスキャン開始
ボタンを挿入するのは厳しそうです。
・・・液晶横スペースにハード・スイッチ(押し釦)かなとも考えています・・・
いやこれはいけない。
良く見直してみるとCI-Vコントロールの回路にも未配線が見つかった。
見直した基板図

赤いのが表面、線の間に青く見えるのが裏面(貫通部材のハンダ面)です。
17個の表面実装パーツは表面に付けます。これくらいの量ならば手ハンダで行けるでしょう。
さすがにチップ抵抗のサイズは1608(1.6mmx0.8mm)では厳しいので2012(2.0mmx1.2mm)です。
LCDのタッチセンサーXPT2046のピン回り

タッチセンサー用のピンは下側5ピンをESP32に配線します。
T_CLK :SPIのクロック信号、LCDのSCKと共用
T_CS:タッチセンサー用の専用制御ピン
T_DIN:SPIのMOSIと共用
T_DO:SPIのMISOと共用
T_IRQ:タッチ入力の割り込みピン、取り敢えず専用配線にしました。
横320 x 縦240 のLCDですが、タッチ座標は320方向で約3700、240方向で約3800ありました。
タッチされるとXPT2046ドライバーの p.x , p.y にこれらの値が入るので、若干のゼロ点オフセット
修正を含んで、320、240 の座標に変換する必要があります。
タッチした座標をボタンに割付

タッチして320x240の座標に変換した(x, y)からボタン位置:0 ~ 15 (上図の黒字)に
割り付けます。
方法は、x = 0, 1, 2, 3、y = 0, 1, 2, 3 に相当する範囲を決めておき、プログラムで選択
します。
----- 例 -----
int serchContNum(int iTouchX, int iTouchY){
int x,y;
switch (iTouchX){
case 16 ... 69:
x = 0;
break;
case 94 ... 147:
x = 1;
break;
・・・・・
default:
x = 9;
break;
}
switch (iTouchY){
case 0 ... 24:
y = -2;
break;
case 25 ... 50:
y = -1;
break;
・・・・・
default:
y = 9;
break;
}
if((x == 9) || (y == 9)){
return 99;
}else if(y < 0){
return y;
}else{
return y * 4 + x;
}
}
-------------------------
x, y が 0 ~ 3 (プログラム的には9以外の正)ならば、y x 4 + x の 0 ~ 15 を返します。
y が 負 (実際は -2 か -1) の時は y を返します(-2 ならばVOL UP、-1はVOL DOWN)
これらの範囲外では 99 を返し、ボタン該当しないと判断する。
現状での外観イメージ

カラー液晶右上に上下矢印のボリュームアップ/ダウンの操作ボタンを実装しました。
IC-R6のボリュームは、0 ~ 39 まで 40段階あります。1 step 毎に変化します。
大分、カラー液晶の盤面余裕が無くなってきてます。
ボタン文字とボタン外周との間が上下0.5mm程度あるのだが、これを0.2mmに詰めても
1.6mm程度しか稼げないので、コントロール・マップを切り替えるボタンやスキャン開始
ボタンを挿入するのは厳しそうです。
・・・液晶横スペースにハード・スイッチ(押し釦)かなとも考えています・・・
ESP32で受信機IC-R6をコントロール (航空無線受信を簡単に・その2)
昨日から始めたCI-Vコントロールのマイコン化ですが、どれくらいのサイズになるかが気になる。
そこで、肝心の機能アップ実装もままならないのに、適当な収納ケースを探し、それに合った基板を
設計してみました。
・新設計した基板、CI-V回路も表面実装パーツで構成しました。
カラー液晶の下に、ロープロファイルのピン&ピンソケットを使いESP32マイコンを収納します。
このタッチパネル機能が付いたカラー液晶には、SDカードが付いているのですが、収納ケースが
大きくなるので仕様を止め、別にmicroSDカードリーダーを取り付けます。
このSDカードの役目は、カラー液晶に使用する日本語を含む文字データを収納するのと、
これから実装する全国の航空無線局データの収納と、スキャンに使用するローカルデータの編集先
にします。
右上に5ピン端子穴が見えますが、この内4ピンを使って、CI-V、IC-R6からの音声、本器への電源、
GNDに使用します。
・プラスチックケースに収納した外観イメージ
タカチのLCSシリーズ・プラスチックケースから、LCS135-N という、横 141mm x 縦 81mm x
高さ 32mm のものを選びました。シリコンラバーで周囲をプロテクトしているので、落下しても
簡単には壊れないでしょう。
ちょっと武骨なスマホ?に見えないこともないでしょう・・・
IC-R6への接続コネクタを外せば電源が切れるので、余計なスイッチは付けていません。
コネクタを差し込めば瞬時に起動します。これがマイコンの良いところです。
*ESP32マイコンはメモリが多く、スピードも速い、WiFi や Bluetooth も実装しており、
今回 CI-V に使っている シリアル通信(UART) も 3チャンネル使えるので何かと便利です。
しかし、珠に良く判らないトラブルに遭遇します。
今回は、テストのため同じ CI-V 出力をずっと続けていたら、32回目くらいのところから
受信データが、FEFE007E15020000 とならねばならないのに,FEFEFEFE007E1502 となります。
最後の0000の部分に音量レベルが返って来るのに、FEFEが何故か2重に帰って来ており、??です。
これでは音量確認(受信があることのチェック)ができません。
IC-R6から、そのようなデータは返っては来てません。波形を見て確認しました。
何故か UART が「32回を超えると受信データを変更している」としか思えません。
対策を考えるにNETの情報を探しましたが、同じ不具合例は見つからなかったのですが、
「Serial.begin()」とすればリセットされるという情報があったので、私の場合はSerial2を
19200 Bau で使っているので、通信回数30回で「Serial2.begin(19200)」とすることで
通信の遅滞も無くリセットができました。やれやれでした。丸2日を要しました。
さて、機能増強の実装に再着手しましょう。
そこで、肝心の機能アップ実装もままならないのに、適当な収納ケースを探し、それに合った基板を
設計してみました。
・新設計した基板、CI-V回路も表面実装パーツで構成しました。

カラー液晶の下に、ロープロファイルのピン&ピンソケットを使いESP32マイコンを収納します。
このタッチパネル機能が付いたカラー液晶には、SDカードが付いているのですが、収納ケースが
大きくなるので仕様を止め、別にmicroSDカードリーダーを取り付けます。
このSDカードの役目は、カラー液晶に使用する日本語を含む文字データを収納するのと、
これから実装する全国の航空無線局データの収納と、スキャンに使用するローカルデータの編集先
にします。
右上に5ピン端子穴が見えますが、この内4ピンを使って、CI-V、IC-R6からの音声、本器への電源、
GNDに使用します。
・プラスチックケースに収納した外観イメージ

タカチのLCSシリーズ・プラスチックケースから、LCS135-N という、横 141mm x 縦 81mm x
高さ 32mm のものを選びました。シリコンラバーで周囲をプロテクトしているので、落下しても
簡単には壊れないでしょう。
ちょっと武骨なスマホ?に見えないこともないでしょう・・・
IC-R6への接続コネクタを外せば電源が切れるので、余計なスイッチは付けていません。
コネクタを差し込めば瞬時に起動します。これがマイコンの良いところです。
*ESP32マイコンはメモリが多く、スピードも速い、WiFi や Bluetooth も実装しており、
今回 CI-V に使っている シリアル通信(UART) も 3チャンネル使えるので何かと便利です。
しかし、珠に良く判らないトラブルに遭遇します。
今回は、テストのため同じ CI-V 出力をずっと続けていたら、32回目くらいのところから
受信データが、FEFE007E15020000 とならねばならないのに,FEFEFEFE007E1502 となります。
最後の0000の部分に音量レベルが返って来るのに、FEFEが何故か2重に帰って来ており、??です。
これでは音量確認(受信があることのチェック)ができません。
IC-R6から、そのようなデータは返っては来てません。波形を見て確認しました。
何故か UART が「32回を超えると受信データを変更している」としか思えません。
対策を考えるにNETの情報を探しましたが、同じ不具合例は見つからなかったのですが、
「Serial.begin()」とすればリセットされるという情報があったので、私の場合はSerial2を
19200 Bau で使っているので、通信回数30回で「Serial2.begin(19200)」とすることで
通信の遅滞も無くリセットができました。やれやれでした。丸2日を要しました。
さて、機能増強の実装に再着手しましょう。
ESP32で受信器IC-R6をコントロール (航空無線受信を簡単に・その1)
もうすぐコロナも第5類扱いになるというので、私のブログも2019年6月以来の新ネタです。
私の趣味の一つにアマチェア無線があるのですが、あまり電波を出すことが最近特に少ないです。
久しぶりに新無線機(受信専用機)である、icom・IC-R6を手に入れて、航空無線を聞いてみようと思った。
ところが、メモリーに周波数をセットしてそれを使ってスキャンなどができるのであるが、
元来、めんどくさがりの小生には少々使い難い操作が難儀である。
同じようなことを思う方が(そうではないかもしれないが・・・)、この受信機に内蔵のCI-Vという
外部コントロール機能を用いる方法を使っている。
「CI-V コントロール」でGoogle をググってみると、トップに出るコントロールソフトがこちらです。
次に表示されているコントロールソフトはこちらです。
そして3番目のコントロールソフトはこちらです。
いずれのコントロールソフトも秀逸ですね。これをフリーで皆が使えるようにしているとことも凄いです。
航空無線用に使うとなると、3番目のソフト仕様が航空無線に特化しているようです。
しかし、ちょっと残念なことに、いずれのコントロールソフトもWindows PC上で動作するので
羽田や成田空港近くで、航空機を見ながら航空無線をワッチするツールには使えそうもありません。
コントールソフトをNETで様々に調べる過程で、航空機を見ながら航空無線をワッチする環境が
垣間見えました。
1.「無線機は出したくない (衆目から見えないようにしたい)」
2.「周波数を合わせたりする操作は簡単にしたい」
3.「オートスキャンも使いたい」「ボリュームもリモート操作したい」etc
そこで考えたのが、「大きなPCの代わりに、軽く小さいマイコン+液晶」はどうだろうか?
そんなことを考えて、最小機能で作ってみた機器がこの写真です。

マイコン(ESP32)コントロール は別装置に使っている基板を借用しています。CRTの下側にマイコンが
搭載できるので、実際に作る際にはCRTサイズ+2cm程度の大きさになります。
モバイルバッテリーと受信機 IC-R6をリュックやカバンに入れておけば衆目を気にする必要が無くなります。
CRT画面を見ながらイヤホンで受信音をワッチしていれば、スマホを見ているかのようです。
先の3番目の方のコントロールソフト作例のように、CRT上に局名と周波数がリスト化されています。
それを画面クリックすると受信機に設定されます。
左隣に見えているのが、トランジスタ構成のCI-V回路です。元設計は海外の方のようですが、Arduinoの
5V電源用の抵抗定数だったので、トランジスタのVbe 0.6~0.7Vに対して余裕が足りませんでした。
そこで分圧抵抗を元設計の33k+10kから10k+10kに変更し、ESP32の3.3V電源に対応させました。
今はバラック回路の基板ですが、実際には表面実装用の小Trやチップ抵抗、チップダイオードに替えます。
この回路でのCI-V波形です.
基本的な動作確認ができたので、こんどは
・自動スキャン機能の実装:スキャン後の音量でチェックする
・ボリューム操作ボタンの実装
・複数のエリアを選別できる機能の実装
・自分で好きな周波数をまとめてグループ化する機能(多分、PCを使ってSDのデータ編集)
なかなか楽しめそうです。
私の趣味の一つにアマチェア無線があるのですが、あまり電波を出すことが最近特に少ないです。
久しぶりに新無線機(受信専用機)である、icom・IC-R6を手に入れて、航空無線を聞いてみようと思った。
ところが、メモリーに周波数をセットしてそれを使ってスキャンなどができるのであるが、
元来、めんどくさがりの小生には少々使い難い操作が難儀である。
同じようなことを思う方が(そうではないかもしれないが・・・)、この受信機に内蔵のCI-Vという
外部コントロール機能を用いる方法を使っている。
「CI-V コントロール」でGoogle をググってみると、トップに出るコントロールソフトがこちらです。
次に表示されているコントロールソフトはこちらです。
そして3番目のコントロールソフトはこちらです。
いずれのコントロールソフトも秀逸ですね。これをフリーで皆が使えるようにしているとことも凄いです。
航空無線用に使うとなると、3番目のソフト仕様が航空無線に特化しているようです。
しかし、ちょっと残念なことに、いずれのコントロールソフトもWindows PC上で動作するので
羽田や成田空港近くで、航空機を見ながら航空無線をワッチするツールには使えそうもありません。
コントールソフトをNETで様々に調べる過程で、航空機を見ながら航空無線をワッチする環境が
垣間見えました。
1.「無線機は出したくない (衆目から見えないようにしたい)」
2.「周波数を合わせたりする操作は簡単にしたい」
3.「オートスキャンも使いたい」「ボリュームもリモート操作したい」etc
そこで考えたのが、「大きなPCの代わりに、軽く小さいマイコン+液晶」はどうだろうか?
そんなことを考えて、最小機能で作ってみた機器がこの写真です。

マイコン(ESP32)コントロール は別装置に使っている基板を借用しています。CRTの下側にマイコンが
搭載できるので、実際に作る際にはCRTサイズ+2cm程度の大きさになります。
モバイルバッテリーと受信機 IC-R6をリュックやカバンに入れておけば衆目を気にする必要が無くなります。
CRT画面を見ながらイヤホンで受信音をワッチしていれば、スマホを見ているかのようです。
先の3番目の方のコントロールソフト作例のように、CRT上に局名と周波数がリスト化されています。
それを画面クリックすると受信機に設定されます。
左隣に見えているのが、トランジスタ構成のCI-V回路です。元設計は海外の方のようですが、Arduinoの
5V電源用の抵抗定数だったので、トランジスタのVbe 0.6~0.7Vに対して余裕が足りませんでした。
そこで分圧抵抗を元設計の33k+10kから10k+10kに変更し、ESP32の3.3V電源に対応させました。
今はバラック回路の基板ですが、実際には表面実装用の小Trやチップ抵抗、チップダイオードに替えます。


この回路でのCI-V波形です.

基本的な動作確認ができたので、こんどは
・自動スキャン機能の実装:スキャン後の音量でチェックする
・ボリューム操作ボタンの実装
・複数のエリアを選別できる機能の実装
・自分で好きな周波数をまとめてグループ化する機能(多分、PCを使ってSDのデータ編集)
なかなか楽しめそうです。
3Dプリンタ・キットを・・・(その2: ESP8266+Blynkで遠隔操作)
3Dプリンタを使って戦車もどきのシャーシーが組み立ったので、動作させてみることにしました。
色々とNet情報を調べてみると、ESP8266マイコンでWifiに接続し、スマホソフトのBlynkで外部からコントロールするというのが流行っているようです。
早速組み立ててみました(といっても部品購入やら調査やらで実際には構想してから1か月以上経過しています)

上に見えているのがESP8266 D1 mini という Wifi を抱えたマイコンです。
ESP8266 Arduino CoreとしてArduino IDE でプログラミング可能です。Arduino CoreはGitHub からリリースされている
真ん中にあるのがL9110というモータードライブICを2個搭載した基板で、FA130モーターを駆動させます。
電池は3.7Vのリチウムイオン電池を2個使い、1個はESP8266の5V電源端子に、もう1個はモータードライブ基板にそれぞれ単独に接続しています。

最初試した時にESP8266を基板に平らに付けたのだが、Wifi電波受信が悪いようなのでアンテナが縦になるように直角に搭載しました。大分違うようです。

配線を横から見たところです。
電源スイッチは基板の底に付いてます。USB端子もそこから差し込めるように配置しました。
Arduino IDE を使って ESP8266 に書き込むスケッチは以下の内容で、非常にシンプルです。
auth[] 欄にはProject を Blynk に登録すると メールアドレスに送って来るキーを入力します。
ssid[] は Wifi ルーター等のssid を、pass[] にはそのパスワードを入力します。
ESP8266を搭載した WEMOD D1 のスペックです(Upload Speed は 115200 で動作します)
Android スマホでコントロールするBlynk は、Playストアからダウンロードし、ユーザー登録すれば(メルアド、パスワード)使えます。詳細はこちらやこちらで詳しく解説されていますので参考にしてください。
私の場合、4個のボタンで進む方向をコントロールさせるのですが、右上で右前旋回、左上で左前旋回、後ろは同様です。2つのボタンを同時に押せば、前進・後退、右進地旋回・左進地旋回ができます。
画面にボタンを4個置きます。
各々のボタンは、それをクリックして下図の画面で設定します。
押したときだけ動作させるので、PUSH設定です。
GPIOの機能とピン番号を各々のボタンに割り付けます。
ESP8266 Wemos D1 のピン名称とピン番号の対応は以下のようです。
ピン名称(印刷表示) → GPIOピン番号
TX GPIO1
RX GPIO3
D0 GPIO16
D1 GPIO5
D2 GPIO4
D3 GPIO0
D4 GPIO2
D5 GPIO14
D6 GPIO12
D7 GPIO13
D8 GPIO15
今回はGPIO0、2、3,4を使っています。
走行風景

片手操作のため旋回しか表示されていませんが、前進・後進・進地旋回が問題無く操作できます。
裸のシャシーでは感じが出ないですね。カバー等も作ってみましょう
(その3に続く予定)
色々とNet情報を調べてみると、ESP8266マイコンでWifiに接続し、スマホソフトのBlynkで外部からコントロールするというのが流行っているようです。
早速組み立ててみました(といっても部品購入やら調査やらで実際には構想してから1か月以上経過しています)

上に見えているのがESP8266 D1 mini という Wifi を抱えたマイコンです。
ESP8266 Arduino CoreとしてArduino IDE でプログラミング可能です。Arduino CoreはGitHub からリリースされている
真ん中にあるのがL9110というモータードライブICを2個搭載した基板で、FA130モーターを駆動させます。
電池は3.7Vのリチウムイオン電池を2個使い、1個はESP8266の5V電源端子に、もう1個はモータードライブ基板にそれぞれ単独に接続しています。

最初試した時にESP8266を基板に平らに付けたのだが、Wifi電波受信が悪いようなのでアンテナが縦になるように直角に搭載しました。大分違うようです。

配線を横から見たところです。

電源スイッチは基板の底に付いてます。USB端子もそこから差し込めるように配置しました。
Arduino IDE を使って ESP8266 に書き込むスケッチは以下の内容で、非常にシンプルです。

auth[] 欄にはProject を Blynk に登録すると メールアドレスに送って来るキーを入力します。
ssid[] は Wifi ルーター等のssid を、pass[] にはそのパスワードを入力します。

ESP8266を搭載した WEMOD D1 のスペックです(Upload Speed は 115200 で動作します)
Android スマホでコントロールするBlynk は、Playストアからダウンロードし、ユーザー登録すれば(メルアド、パスワード)使えます。詳細はこちらやこちらで詳しく解説されていますので参考にしてください。

私の場合、4個のボタンで進む方向をコントロールさせるのですが、右上で右前旋回、左上で左前旋回、後ろは同様です。2つのボタンを同時に押せば、前進・後退、右進地旋回・左進地旋回ができます。

画面にボタンを4個置きます。

各々のボタンは、それをクリックして下図の画面で設定します。

押したときだけ動作させるので、PUSH設定です。

GPIOの機能とピン番号を各々のボタンに割り付けます。
ESP8266 Wemos D1 のピン名称とピン番号の対応は以下のようです。
ピン名称(印刷表示) → GPIOピン番号
TX GPIO1
RX GPIO3
D0 GPIO16
D1 GPIO5
D2 GPIO4
D3 GPIO0
D4 GPIO2
D5 GPIO14
D6 GPIO12
D7 GPIO13
D8 GPIO15
今回はGPIO0、2、3,4を使っています。
走行風景

片手操作のため旋回しか表示されていませんが、前進・後進・進地旋回が問題無く操作できます。
裸のシャシーでは感じが出ないですね。カバー等も作ってみましょう
(その3に続く予定)
3Dプリンタ・キットを使ってみました(その1)
Amazonでの買い物ついでに3Dプリンタ・キットを見てみたら、かなりお安いのもが出回っております。
ひところは安いものでも10万円近かったので、とても遊んでみるレベルではなかったのですが、何とこちらは2万円ちょっとで買えます。
ついポチっとやってしまいました。
組立は懇切丁寧なビデオも付いており(Youtubeにもあった)とても簡単でした。
使ってみて気が付いたことは以下の2点です。
・Y軸(向かって前後方向)は固定長ネジ2本とスライドシャフト2本だけなので上下方向の剛性がありません。平らな台に置き動かないようしておかないと、上下Z軸のゼロ位置が動きます。ここは0.1mmクリアランスでベッドとノズル間の調整を行うところなので重要です。手前のステーをセロハンテープで台に固定しました。
・おまけで添付されているPLA材が劣化しているのか、脆くて折れやすい。購入品に交換しました。
さて何を作ってみようかと考えたのが、巷に公開されているパーツデータです。
Youtubeで公開されています。

先のZ軸のゼロ点ズレの問題が当初判らず何個か失敗しましたが、まずまずの完成です。
Arduinoのソフトも公開されていますので簡単に作れました。
何よりも驚いたのはかなり細かな部分も綺麗に造形されていることです。1mm程度の穴も綺麗です。
こうなると自分で3D設計して何かを作ってみたくなります。
Netを徘徊していて出合ったのが、金属を使わずに組み立てられるキャタピラを作っている方のデータでした。
作って組み合わせてみるととても良く設計されています。苦労された成果ですね。
沢山作るには1個ずつ作るには手間がかかり過ぎます。15個並べて3DプリンタのGCODEを生成しました。
次にやっと自分で設計するキャタピラ駆動輪です。
第一号失敗作が右の車です。キャタピラに引っかかる部分が短すぎて空転します。
ということでCADを使って再設計です。
左が駆動輪なのでシャフト穴は六角です。右が従輪です。
これを3D CAD (Autodesk の Fusion360) で設計するとこんな絵になりました。
と書くと、いとも簡単に設計ができたイメージですが、Fusin360の操作方法を覚えるには何度も何度もYoutubeの動画等を参考にして、やっとことで作図ができるようになりました。
でもこのままではベースから浮いた部分があるので、サポート部材を付けねばなりませんが、ソフトの進化は素晴らしいものでMeshmixerというソフトを使えば自動で最適なサポートを付けてくれます。
下の方からキノコが伸びたようなサポートが付いています。
3Dプリンタで整形中です。
完成しました。手ではぎ取ればサポートは簡単に取れます。
本体に接続している部分か0.2φ程度しか無いからです。
動輪と従輪ができたので次のステップはキャタピラを使った車両の製作です。
CADで戦車のような車体を設計しました。
6mmピッチのキャタピラを左右各々51個ずつ使います。
駆動に使うのはTAMIYA のダブルギアボックス(左右独立4速タイプ)です。RA130モーターが2個付いてます。
シャシーです。
これは6mmの厚さで140mmと長いので、普通の部品を作るGCODE作成ツール(Cura 15.04を使用)の条件では強度が保てないことが判りました。密な表面の厚さを0.4mmから0.8mmにすることでまずまずの強度になりました。
車軸を止めるパーツです。
GCODEを生成させる場合は平らな部分を下にします。
長穴部分の上側を成型するときは、何もない中空に溶けたPLA材を糸引くように繋げるのですが、欠落せずに形状ができました。10mm程度の距離ならば繋がるようです。
参考までに内部はポーラス構造です。
GCODEを生成させるツールが自動で作ってくれます。
組み立てました。
オレンジ色に見える部品は柔らかいプラスチックでできたシャフトエンドで、3Dプリンタで作った物ではありません。
さてここまでできました。まだ裸シャーシ状態ですが魚後貸すことをやってみましょう。
上に電池やマイコン機器が載ってます。
(その2に続く)
ひところは安いものでも10万円近かったので、とても遊んでみるレベルではなかったのですが、何とこちらは2万円ちょっとで買えます。
ついポチっとやってしまいました。
組立は懇切丁寧なビデオも付いており(Youtubeにもあった)とても簡単でした。
使ってみて気が付いたことは以下の2点です。
・Y軸(向かって前後方向)は固定長ネジ2本とスライドシャフト2本だけなので上下方向の剛性がありません。平らな台に置き動かないようしておかないと、上下Z軸のゼロ位置が動きます。ここは0.1mmクリアランスでベッドとノズル間の調整を行うところなので重要です。手前のステーをセロハンテープで台に固定しました。
・おまけで添付されているPLA材が劣化しているのか、脆くて折れやすい。購入品に交換しました。
さて何を作ってみようかと考えたのが、巷に公開されているパーツデータです。
Youtubeで公開されています。


先のZ軸のゼロ点ズレの問題が当初判らず何個か失敗しましたが、まずまずの完成です。
Arduinoのソフトも公開されていますので簡単に作れました。
何よりも驚いたのはかなり細かな部分も綺麗に造形されていることです。1mm程度の穴も綺麗です。
こうなると自分で3D設計して何かを作ってみたくなります。
Netを徘徊していて出合ったのが、金属を使わずに組み立てられるキャタピラを作っている方のデータでした。

作って組み合わせてみるととても良く設計されています。苦労された成果ですね。

沢山作るには1個ずつ作るには手間がかかり過ぎます。15個並べて3DプリンタのGCODEを生成しました。
次にやっと自分で設計するキャタピラ駆動輪です。

第一号失敗作が右の車です。キャタピラに引っかかる部分が短すぎて空転します。
ということでCADを使って再設計です。

左が駆動輪なのでシャフト穴は六角です。右が従輪です。

これを3D CAD (Autodesk の Fusion360) で設計するとこんな絵になりました。
と書くと、いとも簡単に設計ができたイメージですが、Fusin360の操作方法を覚えるには何度も何度もYoutubeの動画等を参考にして、やっとことで作図ができるようになりました。
でもこのままではベースから浮いた部分があるので、サポート部材を付けねばなりませんが、ソフトの進化は素晴らしいものでMeshmixerというソフトを使えば自動で最適なサポートを付けてくれます。

下の方からキノコが伸びたようなサポートが付いています。

3Dプリンタで整形中です。

完成しました。手ではぎ取ればサポートは簡単に取れます。
本体に接続している部分か0.2φ程度しか無いからです。
動輪と従輪ができたので次のステップはキャタピラを使った車両の製作です。

CADで戦車のような車体を設計しました。
6mmピッチのキャタピラを左右各々51個ずつ使います。
駆動に使うのはTAMIYA のダブルギアボックス(左右独立4速タイプ)です。RA130モーターが2個付いてます。
シャシーです。
これは6mmの厚さで140mmと長いので、普通の部品を作るGCODE作成ツール(Cura 15.04を使用)の条件では強度が保てないことが判りました。密な表面の厚さを0.4mmから0.8mmにすることでまずまずの強度になりました。


車軸を止めるパーツです。

GCODEを生成させる場合は平らな部分を下にします。
長穴部分の上側を成型するときは、何もない中空に溶けたPLA材を糸引くように繋げるのですが、欠落せずに形状ができました。10mm程度の距離ならば繋がるようです。

参考までに内部はポーラス構造です。
GCODEを生成させるツールが自動で作ってくれます。

組み立てました。

オレンジ色に見える部品は柔らかいプラスチックでできたシャフトエンドで、3Dプリンタで作った物ではありません。
さてここまでできました。まだ裸シャーシ状態ですが魚後貸すことをやってみましょう。
上に電池やマイコン機器が載ってます。
(その2に続く)