どうも!リョクちゃです。
今回は、ArduinoProMiniの互換機であるAE-ATMEGA328-MINIを入手したので、
VB.Netで作成したアプリケーションとシリアル通信をし、
ArduinoProMini互換機からデータを受信してみたので紹介していきます。
ちなみに前回はこちら
前回紹介できなかったシリアル通信後のデータ受信についても、こちらで触れています。
目次
準備編
VisualStudio2019を使って、Windowsフォームアプリケーションを作成していきます。
最初の手順については、下記記事をご参照ください。
フォームの作成
フォームについては、前回のフォームを使います。
各1~21までのコントロールの名称やテキストは以下のように設定しています。
No | コントロール | 名前 | テキスト |
---|---|---|---|
1 | GroupBox | gbBaudrate | ボーレート(bit/sec) |
2 | RadioButton | rb57600 | 56700 |
3 | RadioButton | rbs38400 | 38400 |
4 | RadioButton | rbs19200 | 19200 |
5 | RadioButton | rbs9600 | 9600 |
6 | RadioButton | rbs4800 | 4800 |
7 | GroupBox | gbDataLength | データ長 |
8 | GroupBox | gbParity | パリティ |
9 | RadioButton | rbSeven | 7ビット |
10 | RadioButton | rbEight | 8ビット |
11 | RadioButton | rbEven | 偶数 |
12 | RadioButton | rbOdd | 奇数 |
13 | RadioButton | rbNone | なし |
14 | GroupBox | gbStopBit | ストップビット |
15 | Label | lbComPort | COMポート名 |
16 | RadioButton | rbOne | 1ビット |
17 | RadioButton | rbTwo | 2ビット |
18 | Button | btnConnect | 接続 |
19 | ComboBox | cbComport | |
20 | Button | btClose | 非接続 |
21 | RitchTextBox | rtxSerial |
実行環境
筆者の実行環境は、
- VisualStudio2019
- Windows 10 64bit
- .Net Framework 4.5.1
になります。
※ Windows7 8 8.1でも動作はできますが、
画面デザインの表示が変わるかもしれません。
アプリケーションの目的
各通信パラメータを選択し、接続ボタンを押すことで
ArduinoProMini互換機と接続ができることを確認し、
データが受信できることを目的とします。
プログラム編
シリアル通信の接続に関する処理は、前回の記事をそのまま使用します。
ここでは、ArduinoProMini互換機側のコードと
データ受信に関する処理について書いていきます。
ArduinoProMini互換機へのプログラム
今回使用するArduinoProMini互換機は以下のようなマイコンとなっております。
ArduinoIDEの準備
ArduinoProMini互換機のプログラム(コード)を書くには、統合開発環境の
ArduinoIDEを使用します。
IDEについては、Arduinoの公式フォーラムからダウンロードしてください。
ダウンロードをし、インスト―ルが完了すると
デスクトップ上に下のショートカットアイコンが作成されます。
※場合によっては、作成されないかもしれません。
問題なくインストールされ、ショートカットアイコンを実行すれば、
以下のような画面が表示されると思います。
PCとArduinoProMini互換機を接続する
PCとArduinoProMini互換機を接続するにあたって、互換機だけでは接続ができないので
以下のボードを使います。
背面
こちらを使って、以下のように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(設定したいボーレート)で行います。
1 2 3 4 |
void setup() { Serial.begin(9600); //シリアルポートを9600bpsで開く } |
setup()ブロックはこれで完了です。
loop()ブロックでの記述
loopブロックでは、送信するデータとして、文字列”Hello”と設定します。
これには、Serial.println(“Hello”)と記述します。
データの送信間隔を1秒とし、1秒間隔でHelloを送信する処理を行わせます。
送信間隔を設定するには、delay(ミリ秒)関数を使用します。
1秒なので、1000ミリ秒を引数として渡します。
delay(1000)と記述します。
コードで書くと以下のようになります。
1 2 3 4 5 |
void loop() { Serial.println("Hello"); delay(1000); //1秒停止 } |
これでArduinoProMini側のスケッチは完了になります。
スケッチのボードへの書き込み
完了したスケッチをボードへ書き込みます。
書き込むには、以下の流れで行います。
- 作成したスケッチの検証(コンパイル)
- ボードに書き込む
1では、コードにエラーがないか検証を行っています。
問題がなければ、ボードに書き込んでいきます。
問題がなければ
もし、コードに問題がある場合はエラーが表示されます。
書き込みボタンを押します。
問題がなければ、
書き込み中にエラーが発生してしまうと、
この場合PCとの接続が途切れてしまった(途中でケーブルが抜けてしまった)が考えられます。
以上の流れで、作成したスケッチをボードに書き込むことができます。
シリアル通信のデータ受信処理
ここからはVB.Netに戻り、シリアル通信後のデータを受信する場合は、
SerialPort変数.ReadLine()で受け取ることができます。
今回は、ArduinoProMini互換機から受け取った値は
Console.WriteLine()で出力をするようにします。
前回記事で紹介した、以下のコードを使用します。
1 2 3 4 5 6 7 8 9 10 |
#Region "データ受信イベント" Private Sub mSerialPort_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles mSerialPort.DataReceived '受信データ格納変数 Dim mRecvData As String = mSerialPort.ReadLine() Console.WriteLine(mRecvData) End Sub #End Region |
実行編
ArduinoProMini互換機の通信設定は以下の設定としています。
- 通信速度(ボーレート):9600bps
- データ長(データビット):8ビット
- パリティ:なし(None)
- ストップビット:1ビット
- COMポート名:COM3(※接続する端末によって異なります。)
起動時
書くパラメータ設定後、接続ボタンを押します
VisualStudio2019に戻り、出力ウィンドウにデータが表示されていることを確認します。
1秒間隔でHelloが受信できていることが確認できます。
まとめ
シリアル通信でデータを受信する方法とArduinoProMini互換機の統合開発環境(ArduinoIDE)
の使い方やArduino言語のシリアル通信に関する処理について解説しました。
Arduino関連でWindowsフォームアプリケーションと
シリアル通信をしてみたかった読者、初学者の方の少しでも参考になれば嬉しいです。
最後までご覧いただきありがとうございます。
・こちらの書籍を参考にVB.Net勉強しています。