Arduino互換機によるシリアル通信機機器制御

このQ&Aのポイント
  • Arduino互換機を使用したシリアル通信による蛍光表示管(VFD)モジュールの制御方法とは?
  • VFDモジュールの制御にはバイナリデータの送信が必要で、レベル変換ICも必要です。
  • JapaninoとMAX232を接続して、スケッチ内でバイナリデータを送信することでVFDモジュールを制御できます。
回答を見る
  • ベストアンサー

Arduino互換機によるシリアル通信機機器制御

Arduino互換、Japaninoでシリアル通信による蛍光表示管(VFD)モジュールの制御を行いたいのですが、どうすればいいでしょうか。 蛍光表示管(VFD)モジュールはFUTABA製のGP-1150Aという製品で、PCとはRS-232Cのシリアル通信にて制御できます。 例えば、 HyperTerminalで、あいうえおと入力すれば、VFDに「あいうえお」と表示され、 ESCを押して、[2J(消去コマンド)を入力すれば、モジュールがコマンドと認識して、画面が消去されます。 また、バイナリ形式で上記コマンドを16進に置き換えた、1B5B324Aというバイナリデータを送信しても画面を消すことが出来ます。 今、分かっていること ・VFDモジュールはPCとシリアル通信にて制御が出来る ・バイナリエディタで、コマンド+日本語データを作り、バイナリデータを送ればVFDモジュールを意のままに操作できる。 ・Japaninoと、VFDモジュールは、そのままでは通信が出来ない。 ・JapaninoとVFDモジュールの通信には、MAX232互換チップ等のレベル変換ICが必要 分からないこと ・どのようにJapaninoとMAX232を接続すればよいか ・スケッチをどのように書けば、バイナリデータを送ることが出来るのか。 ・Japanino上に設置されたボタン or 追加したボタンを押すことにより、データがVFD側に送られるようにする。 です。 アドバイス等、頂ければ幸いです。 どうぞよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • koujikuu
  • ベストアンサー率43% (428/992)
回答No.1

Japaninoが無いのでアドバイスのみです 参考回路図&プログラム (コマンドは違うので変更) https://www.noritake-itron.jp/cs/doc/arudino_01/rs232.html 但しJapaninoはCP2104に保護抵抗が入っていない為PD0_RXD_INが使えません(CP2104専用外部接続不可) Japanino回路図 http://diode.chips.jp/blog/download/japanino_2010.pdf Japanino問題点 http://www35.atwiki.jp/japanino/pages/24.html 接続は、Arduino PD1_TXD_OUT → MAX232_TnIN / TnOUT → GP1150A01A_RXD_IN Arduino PD3_IN ← MAX232_RnOUT / RnIN ← GP1150A01A_RTS_OUT Arduino GND - GP1150A01A GND 共通 他の線は繋ぎません (シリアルデータ出力、RTSのチェックのみ) MAX232の他に、秋月の「3V・3.3V・5V系-RS232レベル変換基板」を流用する方法もあります http://akizukidenshi.com/catalog/g/gK-06464/ 参考になれば幸いです。

関連するQ&A

  • シリアル通信:フロー制御

    シリアル通信:フロー制御 シリアル通信のフロー制御について教えて下さい。 とある解説ページにて Xon/Xoff はバイナリデータの送受信には 使用できない。 と書いてあったのですが、これは伝送フォーマット[A] は NGになり、 [B] で通信しなさいという意味になるのでしょうか? それとも[C]の場合がNGになるということでしょうか? <伝送フォーマット> [A] STX | テキスト | ETX | CR | LF [B] テキスト| CR | LF [C] STX | バイナリ | ETX | CR | LF よろしくお願いします。

  • PICを用いてシリアル通信

    PIC制御でシリアル通信を行いたいです。 以下の条件にマッチする製品が分かれば教えてくれませんか? ・シリアル通信は通信ポートが2つで両者の通信が行える ・半田付けなどは行わずにモジュールを組み合わせて動作するボード 以上、宜しくお願いします。

  • Arduino シリアル通信でのバイナリ受信

    詳しい方教えてください。 送信元のPCから、受信側のArduinoへ、シリアル通信によってバイナリデータを送ることで、Arduino側でのサーボモータのシリアル駆動を試みています。 PC側からのバイナリデータ送信はVB.NET側で作成済みで、USB-TTLコンバータ(FTDI Basic Breakout 5V)を使ってのサーボモータのシリアル駆動は問題ありません。 (http://micono.cocolog-nifty.com/blog/2011/04/arduino11-17d5.html と同じ処理と思ってください。) 同様な処理を、PC-Arduinoで駆動させようと思っていますが、 void loop() { int c; if (Serial.available() > 0){ c = Serial.read(); ・・・・ こちらでは、Cの値がint型の為かうまくいきません。(キャストも試しましたが・・) そもそも1バイトデータの受信Serial.read()が、int型(2バイト)なのか判りません。 方法はありますでしょうか。

  • VFDモジュールでシリアル通信、使い方

    お世話になります。 掲題の通りの話なのですが…。 会社のビンゴの景品で、双葉蛍光表示管モジュール『GP1150A01A』を頂きました。 仕様書を見ると、 『双葉蛍光表示管を使用した画素数256×64 のグラフィック表示用モジュールです。 このモジュールは、蛍光表示管、ドライバ、コントロール回路、電源より 構成されており簡単なインタフェースを用いることによりシステムとの接続、駆動が可能です。 また、RS-232C によりシリアル通信で漢字表示が可能です。』 と記載があり、 PCとシリアルケーブルで接続し、 パラメータを合わせてTeraTermで、『こんにちは』『Hell World』等と入力すると、 本体の左上から、書いた文字が、そのまま表示されます。 仕様書にも 3-2. 文字の書き込み シフトJISコード及びJISのANKコードがホストから書き込まれたとき、そのデータはフォント データとして、ホームポジション(画面の左上)または、Set virtual cursorで指定された位置 から書き込まれ、書き込み位置は自動的に右へ1桁移動します。但し、書き込み位置が右 端位置にある場合、右端位置に固定され、それ以上文字が書き込まれると右端位置の文 字が上書きされます。 と、書かれており、その通りなのですが…、ここからが問題で、 このモジュールは、コマンドにより、スクロールですとか、画面クリアなどの操作が出来るのですが、 1 Back space without deleting BS (08H) 08H 2 Line feed LF (0AH) 0AH 5 Set virtual cursor ESC [Py;PxH 1BH,5BH,Py,3BH,Px,48H 6 Delete to end of line ESC [OK 1BH,5BH,30H,4BH 7 Dimming ESC ¥?LDPs 1BH,5CH,3FH,4CH,44H,Ps 8 Cursor mode ESC ¥?LCPs 1BH,5CH,3FH,4CH,43H,Ps 13 表示属性セット リバース ESC [7m 1BH,5BH,37H,6DH 一部抜粋で、上記のようなコマンドがあるのですが、例えば、 2番のLine Feed コマンド:LF(0AH) コマンド:0AH で上記のコマンドを実行すると、表示位置が1段下がる(この表示が日本語なら3段表示が出来る) はずなのですが、 画面上には単純に LF(0AH) と表示されたり、 0AH と入力したままのベタデータが表示されるだけです。 このコマンドを実行する場合は、何かキーを押しながら入力しなければいけないとか、 コマンド入力モードのようなモードに入らないとダメなのでしょうか? どうぞよろしくお願いします。

  • VBによるシリアルポート制御

    VB6でシリアルポートからデータを取り込むプログラムを作っています。 データは、バイナリモードで、合計26バイトあります。 これが、20ms間隔で送られてくるデータは、うまく取れたのですが、データを送る間隔を5msにしたところ、うまく受信できないようで、データが表示されなくなってしまいました。 ちなみに20ms間隔の時のシリアルポートのスピード設定が19200bpsで、5ms間隔の時には、115200bpsに変更しています。 VBで115200bpsのポート制御は難しいのでしょうか? それとも、小生のプログラムに問題があるのでしょうか?

  • シリアル通信について

    質問です。 仕事でシリアルプリンタをMSCommで制御しています。 開発環境はVB6(SP5),XPです。 MSCommにて印字データを一度に沢山送ると情報落ち(?)した印字内容になってしまいます。多分プリンタ内のバッファ(みたいなもの)が一杯になるかして、プリンタの処理能力が限界なのかと勝手に思ったりもしています。 ちなみに10秒間隔くらいで送れば大丈夫です。 一方、シリアル通信の実験としてTera Termを使用しています。Tera Termだと一度に沢山のデータを送っても問題ないです。Tera Termはそこらへんを制御しているのでしょうか? また、MSCommにもそのようなことができるのでしょうか? よくわからない質問かもしれませんが、どんな些細なことでも結構ですのでご教授願います。

  • PCとマイコンとのシリアル通信

    マイコンとパソコンでシリアル通信を考えています。 WEB検索すると「TeraTerm」というソフトにたどり着きました。 通信はバイナリです。(ASCII文字でのやり取りは行いません) 例えば、  マイコンボード上にトグルSWとLEDランプが実装されているとします。  ・PCからトグルSWコマンド「0Ah」をマイコンに送信。  ・マイコンはトグルSWの状態をONなら「00h」をOFFなら「01h」をPCに返信。  ・PCは返信データが「00h」なら、LED点灯コマンド「0Ch」をマイコンに送信。  ・PCは返信データが「01h」なら、LED消灯コマンド「0Dh」をマイコンに送信。 みたいなことを行いたいです。 TeraTermでどのように記述してよいかわからないです。 このへんを教えてくださいよろしくお願いします。

  • シリアル通信バイナリー変換

    機器とのシリアル通信をテラタームで行っています。 この機器の入力送信モードに入るためには、テラターム上でCtrl+kを押す必要があります。 このとき、機器へはどのようなデータがおくられているのでしょうか? テラタームを使わずに送信しようとしています。そこで、キー「Ctrl」「k」をバイナリーで送信してみましたが、入力送信モードにはいることができませんでした。バイナリーでの送信は、単純に「Ctrl」「k」を順に送っているだけで、テラタームで「Ctrl+k」を押したとき送信される情報とは違っているのではと推測しています。ただそのバイナリー情報は何にあたるのかがわからないでいます。ご教授お願いします。

  • C言語とシリアル通信の送受信データの概念

    C言語とシリアル通信の送受信データの概念 今シリアル通信で基盤上のデータを読み書きするツールを作っています。 基盤はまだ手元にないので、先にプログラムと、基盤の動作を模したプログラムを作るつもりです。 基盤の説明にはデータはバイナリで送るようにと書かれていたので、 文字列で1バイトずつ割り当てようと考えました。 しかし、どうやって1234などの数値を1バイトずつ割り振るのか、 バイナリって何だっけと調べているうちにわけが分からなくなってきました。 たとえば1234という10進数の数値を送りたいとき、 現状ではchar型の文字列"1234"を渡しています。 もしかしてこれは間違っていて、本当は char s[] = { 1, 2, 3, 4 }; 16進数の場合はabcdなら char s[] = { 0xa, 0xb, 0xc, 0xd }; として渡すのが正しいのでしょうか。 これでprintfを使うと文字化けして何だかバイナリっぽいぞと感じましたが。 また、バイナリ以外ならどんな送り方があるのでしょう?

  • シリアルポート通信

    VB6でシリアルポート通信を行っているものです。 22byteと26byteのデータをバイナリ受信したいのですが、異なるデータ長のデータをうまく取り込む方法がわかりません。 現状は、26byteのみで運用していたため InputLen=26 RThreshold=25 として運用していました。 22byteのときも26byteの時もスタートコード(02h)とエンドコード(0dh)が付きます。 この手のソフト制作が得意な方がいらっしゃいましたら、ご教示いただきたく。 InputLenとRThresholdの意味合いについてもご存じでしたら、教えてください。

専門家に質問してみよう