United Statesからアクセスのようです。言語設定をEnglishに切り替えますか?
Switch to English site
Skip to main content

Arduinoスケッチを用いて、IOT2020上でI2C・SPI・PWMを使う

ArduinoIDEで開発できる産業用ゲートウェイ「IOT2020」のリリースから数週間が経ち、私はIOT2020関連の記事をいくつかアップしてきた。セットアップ方法、Linuxで使用する方法、Node-RedやMQTTの使い方など。

このような活動の中で、多くの方から尋ねられたこと、「実際にArduinoのプログラムをどうやって書くのか」を今回実際に紹介してみよう。

以下、まず周辺部品の設定から見てみよう。

まずシンプルな白色LED。これは単純に9ピンと14ピン(GND)に接続するだけ。PWM LED互換のドライバがボードに搭載されているので、抵抗も電源も不要だ。

SPIで接続された8桁7セグLEDはMAX7219でドライブされている。Slave Select(SS)に10ピン、Data(MOSI)に11ピン、クロック(SCK)に13ピンを割り当てた。外部の5V USBアダプタから電源を取っている。

4行20文字のキャラクタLCD(2004として知られる)。ドライバとしてPCA8574Aが搭載されているので、I2Cで通信可能。デバイスはアドレス0x20が与えられている。外部USBアダプタより給電。

最後にSparkfunの128x64解像度のOLEDディスプレイも試した。これもI2Cで制御できる。これはUSBアダプタによる電源供給だ。

 

以下に示すのはArduino R3のピン配置だ。これは、IOT2020 Arduinoヘッダのピン配置とほぼ同様なので、接続の参考にできる。

VINはIOT2020の電源と同じ電位ですので、24Vを超えている可能性がありますのでご注意ください。 

全てを接続し終わったら、このような形になった。ディスプレイを取り付ける場所が必要だったので、私のミニオンの1体に手伝ってもらった。

ビデオ(英語)ではすべての詳細について解説しています。

ご覧のとおり、起動と同時にGPIO、SPI、PWMが正常に動いていることを確認できた。さてI2Cはどうだろう。

本記事作成時の最新Verの2.1では、I2Cが有効化されていなかったので、下記のLinuxコマンドで有効化した。(リブートすると戻ってしまうが・・・)。

% modprobe i2c-dev

これでI2Cが動作するようになる。これをブートしても消えないよう、次のファイルに" - i2c-dev" を追加する。

フォルダ:   /etc/modules-load.d/ 
ファイル名:  galileo-i2c0-i2cdev.conf 

で、このファイルを保存すれば完了。これでリブート後もI2Cが動作するようになる。

続いてArduino IDEによるスケッチだ。まず最新のArduino IDE をダウンロード、インストールする。

IOT2020がPCに接続された状態で初めてIDEを起動すると、IOT2020が自動的に認識される("Intel Galileo"と認識さるかもしれないが、それで正常だ)。この時、"ハードウェアライブラリをインストールするか" と尋ねられるはずだ。認識されない場合、"Board manager""i586"と入力、その後出てきた"Intel 586 Boards″をインストールすればよい。

これでスケッチを試す環境が整った。ハードウェアにはIntel Galileo 2が選択され、適切なCOMポートがIntel Galileoと認識され選択されているはずだ。

LED点滅のスケッチを開き、コンパイル、アップロードしてみよう。ユーザLEDが点滅するはずだ。

もし、これらのハードウェアをお持ちで、もっと高度なことをしてみたい方がいれば、この投稿に添付した私のスケッチを試してほしい。いくつかのハードウェアがない場合は、その部分をコメントアウトして利用することもできる。

以上のように、IOT2020をArduinoスケッチで動作させるのは非常に簡単だ。特に、リブート後にも設定を維持できる方法は重宝するだろう。

注意点 いくらかのスケッチは、例えばNeoPixels用にATMEGA328のポートのスピードを上げるために、直接IOを操作している。これらのスケッチは、当然、簡単には動かない。ただ、Linuxが動作するIOT2020はエッジデバイスやタイミングが非常に重要なアプリケーションに向かない。将来のビデオではどのようにエッジデバイスも活用するか、解説して行きたいと思う。

以上で紹介した機能は、IOT2020にドライバを追加したりネットに繋いだりする必要もない。SDカードのイメージ上で設定するのみだ。ただし、ホスト側のPCのArduino IDEは最新のものが必要だ。私は、Windows 10 64bitでしか動作を確認していないがMacやLinuxでも動作すると思う。ポート番号などは、お使いの環境によって異なるので、その点はご注意頂きたい。

With a background in Industrial Electronics, Solutions Architecture and programming, I now spend my time working on my YouTube channel ( https://www.youtube.com/thebreadboardca ) where I create educational videos showing how to use various devices including Test and measurement, Home and industrial Automation, Components and other fun things I am sent to review or include in projects. I will also create many projects to showcase the use of these items