ソフトウエア : ArduinoMEGA・RasPi間、UART1通信


ArduinoMEGAから得られる列車位置情報等の内容を親機であるRasPiに知らせる必要がありますが、これはUART1により通信を行います。
ArduinoMEGAには、UART0~3まで4つのポートが用意されていますが今回UART1(18、19ピン)を使い、TTL/USB変換器によりRaspiにはUSBから
通信する事としました。<シリアル1:19番(RX)18番(TX)>
TTL/USB変換基板は、秋月電子から「AF-FT234X」¥600を使用しています。(3.3V仕様ですが、5Vトレラントにより5Vでも入力可能です。)

いよいよRasPi4&ArduinoMEGAが制御部の板に取り付けていくので、遠隔操作が欠かせません。
その為 RasPi4の画面操作は、VNC Viewer を使って外部ノートPCから操作(編集作業)を行う事となりますが、注意点があります。
VNC Viewer を使用するには、以下の設定が必要です。
 1.Raspbian画面で、「設定」「RaspberryPiの設定」「インターフェース:VNC有効」
 2.端末から「sudo raspi-config」「7 Advanced Option」「A5 Resolution」「CEA Mode 16 1920x1080 60Hz 16:9」
リブートすればOKです。

ここからは、ノートPCから遠隔操作となります。

AF-FT234XのUSB側をRasPi4に挿して、下記コマンドでUSBが何番か確認します。
  $ ls -l /dev/ttyUSB*

最初は、2個表示されました。これはTWELITEもUSBで刺さっている為です。一度AF-FT234Xを外して再度確認したものが下段です。
ここでは「TWELITEがttyUSB1」で「AF-FT234XがttyUSB0」という事になります。

次にシリアルのアクセス権を与える。
 $ sudo usermod -a -G dialout $USER

すべての操作は RasPi4上で行うのでArduinoIDEも Raspbian にインストールしておきます。
 sudo apt-get install arduino
を実行するとプログラミング内にArduinoIDEが出来上がります。

RasPiから遠隔で、USB通信しArduinoのプログラムもダウンロードできるのなら、通常のUSB接続にする。(TTL/USB変換使用中止)
ここで問題発生、Raspi4にArduinoMEGA(拡張基板付き)を付けるとリブート&電源立上げが出来なくなる
解決しました。<1台のMEGAのみはOK、2台のMEGAでは駄目でした。>

RasPi4のUSBとArduinoMEGAのUSB間のケーブル内の電源線(DC5Vラインのみ)を切断で解決です。
たぶんMEGA拡張基板にArduinoMEGAの電源を供給していますが、この電源との干渉だと思われます。
拡張ボードにDC5V印加での運用では、RasPi4は立ち上がらない。USB給電に切り替えるとOKとなる。

しばらくこの問題は置いておきます。


これ以外の症状としては、
 1.電源投入時、USBのポートNoが変化するので、プログラム修正が必要。
 1.2つ以上のシリアルポートを使用すると、どちらかのシリアルポートが機能しなくなる。
 1.シリアルポートを開ける通信クラスをアクセスするとArduinoMEGAのGPIOが「Lo」となりすべてのLEDが消灯する。
   受信コマンドを打つと「HIGH」になる。
 1.スピードが遅く(115200)ホールセンサ情報が飛んでしまう。