【VB.Net】Arduinoとシリアル通信してみた~ArduinoProMini互換機~

どうも!リョクちゃです。

今回は、ArduinoProMiniの互換機であるAE-ATMEGA328-MINIを入手したので、

VB.Netで作成したアプリケーションとシリアル通信をし、

ArduinoProMini互換機からデータを受信してみたので紹介していきます。

ちなみに前回はこちら

PCと何らかの機器をシリアル通信(RS-232C、RS-422やRS-485)をし、データを受信したい場合や機器を制御したい場合は、IoT時代の到来よりも前に行われてきました。今回はVB.Netで何らかの機器とシリアル通信をする方法を簡単に紹介していきます。

前回紹介できなかったシリアル通信後のデータ受信についても、こちらで触れています。



準備編

VisualStudio2019を使って、Windowsフォームアプリケーションを作成していきます。

最初の手順については、下記記事をご参照ください。

VisualStudioを使ってWindowsアプリケーションを開発していく流れを紹介します。 以前に、簡単にざっくりと教える機会があった...
スポンサーリンク




フォームの作成

フォームについては、前回のフォームを使います。

各1~21までのコントロールの名称やテキストは以下のように設定しています。

Noコントロール名前テキスト
1GroupBoxgbBaudrateボーレート(bit/sec)
2RadioButtonrb5760056700
3RadioButtonrbs3840038400
4RadioButtonrbs1920019200
5RadioButtonrbs96009600
6RadioButtonrbs48004800
7GroupBoxgbDataLengthデータ長
8GroupBoxgbParityパリティ
9RadioButtonrbSeven7ビット
10RadioButtonrbEight8ビット
11RadioButtonrbEven偶数
12RadioButtonrbOdd奇数
13RadioButtonrbNoneなし
14GroupBoxgbStopBitストップビット
15LabellbComPortCOMポート名
16RadioButtonrbOne1ビット
17RadioButtonrbTwo2ビット
18ButtonbtnConnect接続
19ComboBoxcbComport
20ButtonbtClose非接続
21RitchTextBoxrtxSerial

実行環境

筆者の実行環境は、

  • VisualStudio2019
  • Windows 10 64bit
  • .Net Framework 4.5.1

になります。

※ Windows7 8 8.1でも動作はできますが、

画面デザインの表示が変わるかもしれません。

アプリケーションの目的

各通信パラメータを選択し、接続ボタンを押すことで

ArduinoProMini互換機と接続ができることを確認し、

データが受信できることを目的とします。

プログラム編

シリアル通信の接続に関する処理は、前回の記事をそのまま使用します。

ここでは、ArduinoProMini互換機側のコードと

データ受信に関する処理について書いていきます。

ArduinoProMini互換機へのプログラム

今回使用するArduinoProMini互換機は以下のようなマイコンとなっております。

ArduinoProMini互換機

ArduinoIDEの準備

ArduinoProMini互換機のプログラム(コード)を書くには、統合開発環境の

ArduinoIDEを使用します。

IDEについては、Arduinoの公式フォーラムからダウンロードしてください。

Arduino IDE(Arduino公式ページ)

ダウンロードをし、インスト―ルが完了すると

デスクトップ上に下のショートカットアイコンが作成されます。

※場合によっては、作成されないかもしれません。

問題なくインストールされ、ショートカットアイコンを実行すれば、

以下のような画面が表示されると思います。

PCとArduinoProMini互換機を接続する

PCとArduinoProMini互換機を接続するにあたって、互換機だけでは接続ができないので

以下のボードを使います。

FT-232RQ USBシリアル変換モジュール

背面

こちらを使って、以下のようにArduinoProMini互換機と接続してPCと接続をします。

ArduinoProMini互換機とUSBシリアルモジュールの接続図

USBシリアルモジュールとマイクロUSB(オス)-USB(オス)の接続図

ArduinoIDE上での接続設定

PCに接続をしたら、ツールタブ→ボード→Arduino Pro or Pro Miniを選択します。

次にArduinoIDEのツールタブ→プロセッサ→ATmega328P(5V, 16MHz)を選択します。

最後に、ツールタブ→シリアルポート→COM3を選択します。

※COM以降の数字に関しては、各端末によって異なります。

筆者の環境ではCOM3にArduinoProMini互換機が接続されています。

これで接続の設定は完了になります。



ArudinoProMini互換機側のスケッチを作成する

ArduinoIDEではスケッチと呼ばれるキャンパスを使ってコードを書いていきます。

VB.Netでいうプロジェクト(+ソースファイル)にあたる部分になります。

作成時には、setup()ブロックとloop()ブロックがコードとして書かれています。

setup()ブロックには、主に通信時の設定やピンの割り当て(設定)などの処理を記述します。

loop()ブロックでは、LEDの制御やデータの受送信などのメインとなる処理を記述します。

今回はシリアル通信に関する処理を書いていきます。

setup()ブロックでの記述

setup()ブロックでは、ボーレートを設定します。

設定するには、Serial.begin(設定したいボーレート)で行います。

setup()ブロックはこれで完了です。

loop()ブロックでの記述

loopブロックでは、送信するデータとして、文字列”Hello”と設定します。

これには、Serial.println(“Hello”)と記述します。

データの送信間隔を1秒とし、1秒間隔でHelloを送信する処理を行わせます。

送信間隔を設定するには、delay(ミリ秒)関数を使用します。

1秒なので、1000ミリ秒を引数として渡します

delay(1000)と記述します。

コードで書くと以下のようになります。

これでArduinoProMini側のスケッチは完了になります。

スケッチのボードへの書き込み

完了したスケッチをボードへ書き込みます。

書き込むには、以下の流れで行います。

  1. 作成したスケッチの検証(コンパイル)
  2. ボードに書き込む

1では、コードにエラーがないか検証を行っています。

問題がなければ、ボードに書き込んでいきます。

問題がなければ

もし、コードに問題がある場合はエラーが表示されます。

書き込みボタンを押します。

問題がなければ、

書き込み中にエラーが発生してしまうと、

この場合PCとの接続が途切れてしまった(途中でケーブルが抜けてしまった)が考えられます。

以上の流れで、作成したスケッチをボードに書き込むことができます。

シリアル通信のデータ受信処理

ここからはVB.Netに戻り、シリアル通信後のデータを受信する場合は、

SerialPort変数.ReadLine()で受け取ることができます。

今回は、ArduinoProMini互換機から受け取った値は

Console.WriteLine()で出力をするようにします

前回記事で紹介した、以下のコードを使用します。

実行編

ArduinoProMini互換機の通信設定は以下の設定としています。

  • 通信速度(ボーレート):9600bps
  • データ長(データビット):8ビット
  • パリティ:なし(None)
  • ストップビット:1ビット
  • COMポート名:COM3(※接続する端末によって異なります。)

起動時

書くパラメータ設定後、接続ボタンを押します

VisualStudio2019に戻り、出力ウィンドウにデータが表示されていることを確認します。

1秒間隔でHelloが受信できていることが確認できます。

まとめ

シリアル通信でデータを受信する方法とArduinoProMini互換機の統合開発環境(ArduinoIDE)

の使い方やArduino言語のシリアル通信に関する処理について解説しました。

Arduino関連でWindowsフォームアプリケーションと

シリアル通信をしてみたかった読者、初学者の方の少しでも参考になれば嬉しいです。

最後までご覧いただきありがとうございます。

・こちらの書籍を参考にVB.Net勉強しています。

スポンサーリンク