RaspberryPiでArduinoを学ぼう!
Arduino(アルドュイーノ)はAVRマイコンを搭載し、入力・出力のポート(I/Oポート)を搭載したマイコンボードです。C言語に近いArduino言語でプログラムを作り、それをArduinoに書き込んで、I/Oポートに接続したセンサーやサーボ、モーターを動かすことで、私たちの生活に役立つ機器の開発をおこなったりします。
RaspberryPiと比較されることもよくありますが、ArduinoのスペックはRaspberryPiに比べるととても低いです。RaspberryPiはどちらかと言うと、OSを搭載してる汎用的なコンピュータですが、Arduinoはもっと機能を絞って専門的な動作をさせるときに使います。そのため、RaspberryPiほど複雑なプログラムが走っていないため、動作も安定し高速に動作させることができます。そしてハードも小さく、低コストで機器の制御ができます。
開発環境をラズパイに入れてArduinoを学ぼう!
RaspberryPiはLinuxベースのOS「Raspbian(ラズビアン)」が動作しています。そのためArduino IDEという開発環境をインストールして、ArduinoをUSBでRaspberryPiと接続することで、Arduino開発を学ぶことができます。今回はArduinoの中でもArduino UNOと呼ばれる一般的によく使われるArduinoマイコンボードの入門用のものを使います。
Raspberry PiにArduino IDEを入れて開発環境を整える
ラズパイにArduinoの開発環境をインストールするのはとても簡単です。apt-getコマンドで簡単にインストールされます。ターミナルを起動して以下のコマンドを入力します。
$ sudo apt-get install arduino
インストールの確認メッセージが表示されますので、「Y」キーを押してEnterします。
以上で、開発環境のインストールは完了です。
Arduino IDEは「ラズベリーパイ」メニューの「プログラミング」の中にショートカットが出来上がっています。
ここから起動するとArduinoの開発アプリケーションが現れます。
Arduino開発環境の設定を確認する
アプリが起動したら、開発環境の設定を確認します。Arduinoマイコンボードには種類がいくつかあります。今回はArduino Unoというマイコンボードを使いますので、ボードの設定をそれにします。
「ツール」-「マイコンボード」と進むとマイコンボードの選択が可能です。今回はArduino Unoを選択しますが、それぞれ自分が使うボードを選択します。
シリアルポートの確認
Arduinoの開発を行う場合、コンピュータでプログラムを作りそのプログラムをArduinoに転送し、Arduinoを動作させます。USBケーブルでRaspberryPiと接続してデータを転送するため、シリアルポートを認識しているか確認します。表示されているシリアルポートにチェックが付いていればOKです。
ここまで確認ができたらプログラムを作成して転送する準備が完了です。続いて実際にプログラムの転送ができるかを試してみましょう。
サンプルプログラムを転送する
Arduino IDE開発環境にはサンプルプログラムが沢山用意されています。今回はArduinoマイコンボードに標準搭載されているLEDを点滅させる「BLINK」というサンプルコードを呼び出して、これを転送してみようと思います。
「ファイル」-「スケッチの例」-「01 Basics」と進み、その中にある「BLINK」をクリックします。
すると、新規のスケッチの前面にBLINKプログラムのスケッチが現れます。ここで「スケッチ」とはArduinoのプログラムを描いたファイルの名称だと思ってください。
このBLINKプログラムは名前の通り、LEDを点滅させるプログラムです。プログラムではLEDを1秒ごとに点滅させてそれを繰り返します。
早速このプログラムをArduinoに転送してみます。
画面左上にある「→」(右矢印)ボタンをクリックすると転送が始まります。初回はエラーが起こる場合がありますが、「OK」を押して再度書き込みボタンを押すことで解消されます。書き込みが完了すればマイコンボードにメッセージが表示され、Arduinoボード上の小さいLEDが点滅を開始します。
パラメータを変更してみよう
プログラムには「パラメータ」と呼ばれる動作を決める数値データなどがあります。今回のBLINKプログラムでは、1秒おきにLEDを点灯させるためにパラメータが記述されている部分があります。以下の部分を見てみましょう。
まずdigitalwriteでLEDをHIGHにするとLEGが点灯します。その後に1000ミリ秒待つという指示でdelay(1000);という記述があります。1000ms = 1秒ですので、ここを2000にすれば、2秒、10,000とすれば10秒という事になります。
このようにパラメータを変更したら再度マイコンに書き込んでみましょう。
自分が設定したように動作したらひとまず成功です。