Arduino UNOをWindows 7に接続しVisual Studio 2010 Expressを使ってC#でプログラミングし制御する – その1 – シリアルポートで文字を送信しLEDをON、OFFする
Arduinoは「アルドゥイーノ」と読み、AVRマイコンと入出力ポートを備えた基板、C言語風のArduino言語とそれの統合開発環境から構成されるシステムで、2005年にイタリアで始まったプロジェクトで、学生向けの安価なロボット製造用コントロールデバイスのプロトタイピング・システムを製造する目的で設計された。スタンドアロン型のインタラクティブデバイスとしてだけでなく、ホストコンピュータ上のソフトウェアで制御することもできる。オープンソースハードウェアであり、ハードウェア設計情報が公開され、誰でも自分の手で組み立てることができるが、多くの組み立て済みの基板が販売されており、またLEDや抵抗、ジャンパケーブルなど実験に必要な部品をあわせたキットもあり、これらを購入して手軽に実験を始めることができる。
コンピュータとの接続はRS-232シリアル接続で行う設計がされているが、発展形のモデルにはUSB-to-serial アダプタチップが表面実装されるなどしており、USBでコンピュータに接続するようになっている。Arduino UnoではFTDIを使わずAVRマイコンにUSBシリアル変換機能を搭載し、このマイコンにプログラムすることで様々なUSBデバイスとして動作させることができるようになっている。今回の実験で使ったのは、Physical Computing Labが発売している「Arduinoエントリーキット」だ。
<Fig.1 : Physical Computing Labの「Arduinoエントリーキット」>
いくつかの日本語の書籍が出版されているので参考にすることができるが、C#によるプログラミングでArduinoを制御したかったので、洋書「Getting Started with Arduino and .NET」をKindleストアで購入した。著者はAgus Kurniawanだ。このような技術書を読むには一般サイズのKindleでは小さすぎ、Kindle DXを使うのがいい。
<Fig.2 : Kindleストアで購入しKindle DXで開いた洋書「Getting Started with Arduino and .NET」>
「Arduinoエントリーキット」にはArduino UNOが入っている。これを付属のUSBケーブルでPCに接続しよう。
<Fig.3 : Arduino UNOを付属のUSBケーブルでPCに接続する>
Windowsがドライバを適用しようとするが、デバイスドライバがないため、デバイスドライバのインストールに失敗する。コントトールパネルのデバイスマネージャをみてみよう。
<Fig.4 : デバイスマネージャでArduino UNOは「不明なデバイス」となっている>
Arduinoの開発環境とデバイスドライバは、http://arduino.cc/en/Main/Softwareから取得することができる。Windows用のソフトウエアをダウンロードし、解凍する。ドライバは「drivers」フォルダに入っているので、デバイスマネージャで「ドライバーソフトウエアの更新」を行う。「不明なデバイス」が「ポート(COMとLPT)」の下に「Arduino UNO R3 (COM3)」となればドライバのインストールが完了だ。
<Fig.5 : 開発ツールとドライバをダウンロードするし解凍したArduino.cc>
<Fig.6 : ダウンロードし解凍したArduinoソフトウエアのファイル>
<Fig.7 : デバイスマネージャでドライバーソフトウエアの更新」を行いArduino UNO R3 (COM3)を認識した>
ダウンロードしたArduinoソフトウエアのフォルダにあるarduino.exeがArduinoソフトウエアで提供される開発環境だ。専用の開発環境でテストをするためにarduino.exeを起動しよう。開発ツールは多言語化されており、そのままでメニュー等は日本語になっている。最初に起動したとき、シリアルポートの認識に失敗することがある。開発ツールの右下にCOMポートが表示されているので、もしデバイスマネージャに表示されたCOMポートと異なる表示であれば、「ツール」の「シリアルポート」で設定をする。
<Fig.8 : Arduino開発ツールでシリアルポートの設定をする>
Arduino開発ツールでは、プログラムは「スケッチ」と呼ばれており、いくつかのチュートリアル的なサンプルプログラムがあらかじめ開発ツールに用意されている。まずLEDを点滅させるプログラムを実行し、Arduinoの動作を確認しよう。サンプルプログラムは「ファイル」メニューの「スケッチの例」から呼び出すことができる。「01.Basics」の中から「Blink」を呼び出すと開発ウィンドウが新たに別ウィンドウで表示される。
ArduinoにはLEDと抵抗を13番のディジタル出力ピンとGNDに接続する。キットに付属のブレッドボードを使うと良いだろう。サンプルコードの「Blink」では、13番ディジタル出力の出力を1000msごとにHighレベルとLowレベルを切り替えている。コードを確認し、コンパイルしてArduinoに書き込み動作を確認しよう。
<Fig.9 : ブレッドボードを使ってArduinoにLEDと抵抗を接続する>
<Fig.10 : 「Blink」のサンプルコードでLEDが点滅する(1)>
<Fig.11 : 「Blink」のサンプルコードでLEDが点滅する(2)>
ではArduinoがPCからシリアルポートで受信した文字によってLEDをON、OFFするプログラムをしよう。Arduinoでシリアルポートを監視し、文字を受け取るプログラムは「スケッチの例」の「09.USB」にある「KeyboardAndMouseControl」を参考にすると良いだろう。シリアルポートで受け取った文字が「h」ならLEDを光らせ、「l」なら消すプログラムとし、できたらArduinoに書き込もう。
<Fig.12 : Arduinoのシリアルポートを監視し、送られた文字でLEDをON、OFFするスケッチ>
次にVisual Studioでシリアルポートに文字を送るコンソールアプリケーションを作る。System.IO.Ports名前空間を追加しておくことを忘れずに。
————————————————————
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;
namespace Arduino_002_Com_Write
{
class Program
{
static bool running = true;
static string mySwitch = "l";
static void Main(string[] args)
{
while (running)
{
SerialPort mySerialPort = new SerialPort("COM3");
mySerialPort.BaudRate = 9600;
mySerialPort.Open();
mySerialPort.Write(mySwitch);
mySerialPort.Close();
mySwitch = Console.ReadLine();
}
}
}
}
————————————————————
作ったコンソールアプリケーションをビルドし、コンソールで「l」や「h」の文字を入力すると、Arduinoに接続したLEDがON、OFFすることが確かめられる。
<Fig.13 : Visual Studioで作ったコンソールアプリケーションからArduinoのシリアルポートに文字を送る>
<Fig.14 : コンソールアプリケーションから文字を受け取りArduinoがLEDをON、OFFする>
●追記:C#ソースコードに名前空間を追加(2013/06/01)
●関連記事
「Arduino UNOをWindows 7に接続しVisual Studio 2010 Expressを使ってC#でプログラミングし制御する – その2 – 光センサの値をArduinoで読みとりシリアルポートでPCに送信する」
https://matsumotoyoshio.wordpress.com/2013/06/02/arduino-uno%e3%82%92windows-7%e3%81%ab%e6%8e%a5%e7%b6%9a%e3%81%97visual-studio-2010-express%e3%82%92%e4%bd%bf%e3%81%a3%e3%81%a6c%e3%81%a7%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3/
[…] 「Arduino UNOをWindows 7に接続しVisual Studio 2010 Expressを使ってC#でプログラミングし制御する – その1 – シリアルポートで文字を送信しLEDをON、OFFする」 https://matsumotoyoshio.wordpress.com/2013/02/03/arduino-uno%e3%82%92windows-7%e3%81%ab%e6%8e%a5%e7%b… […]
Arduino UNOをWindows 7に接続しVisual Studio 2010 Expressを使ってC#でプログラミングし制御する – その2 – 光センサの値をArduinoで読みとりシリアルポートでPCに送信する | ホチキス先生の「プ
2013年6月2日 at 2:24 午後
[…] Arduino UNOをWindows 7に接続しVisual Studio 2010 Expressを使ってC#でプログラミングし制御する – その1 – シリアルポートで文字を送信しLEDをON、OFFする | ホチキス先生の「プログラマーと呼ばれたい」 https://matsumotoyoshio.wordpress.com/2013/02/03/arduino-uno%E3%82%92windows-7%E3%81%AB%E6%8E%A5%E7%… […]
[Arduino] PCから制御する – 端くれプログラマの備忘録
2019年2月19日 at 3:15 午前
[…] スケッチ例 […]
VisualStudioとArduinoの通信 | 機械系 院試 過去問解答
2019年6月4日 at 4:10 午後