0.モチベーション
IoTセンサ実装のための練習として、複数のArduinoでセンサ情報をシリアル通信することを目指す。Arduinoと類似するものとしてRaspberry Piやマイコン(PICマイコンなど)が挙げられる。それぞれの特徴は
Raspberry Pi
LinuxなどのOSをSDカードから起動する。処理速度がGHzオーダーでインターフェースが豊富であり、コンセプトとしては安価な小型コンピュータである。ただし、消費電力は数W(推奨電源は概ね6W以上)と大きく、筐体サイズは3cm x 6cm程度。*1 OSが入っているため、開発言語・環境はユーザは自由に選ぶことができる。
Arduino
Atmel社のマイコンAtmegaシリーズ、レギュレータや水晶振動子、I/Oポートがワンボード上に配置されたマイコンボード。Raspberry PiようにOSを起動するわけではないので、USB経由でPCに接続した状態でArduino IDEを用いてプログラミングを行う必要がある。処理速度はArduino Uno R3の場合16MHzで消費電力は最低100mW以上(動作電圧5V, 1つのI/O ピンで20mA)であり*2、機能・性能は低いが消費電力は抑えることができる。Arduino Unoのような入門タイプのものから、ボタン電池3.3Vで動作するもの、ウェアラブルを意識した小型のものなど*3が販売されている。
マイコン
マイコン自体は多ピンの電子部品の1つで、目的に合った動作をさせるための必要な電子部品(レギュレータや水晶振動子、抵抗など)、配線、ボード設計・作成が別途必要になるが、開発/評価ボードという形である程度の電子部品やインターフェースが実装されているものが提供されている場合がある。(AriduinoはAtmegaの汎用開発ボードととらえることもできる)マイコンメーカーから提供される統合開発環境(IDE:Integrated Development Environment)上でプログラミングを行い、ライターツールなどでマイコンにプログラムを書き込む。*4マイコンの動作周波数の設定(32kHz/8MHz/16MHzなど)やスリープ設定、またマイコン自体の動作電圧は2~5Vのことが多いため、特に消費電力を抑えることに適している。必要な機能に限定して電子部品やインターフェースをカスタマイズすれば筐体を小さくすることができる。ローパワー動作から多機能、メモリサイズなど様々な種類があり、目的に合ったものを選ぶことができる。
1. なぜArduino?
小型・低消費電力というIoTセンサの特徴をそのまま実現するにはマイコンを利用することがベストだと思うが、電子部品の選定、配線の煩わしさや統合開発環境を使いこなしが難しいなど敷居が高い。またメーカーによってC言語ベースであっても統合開発環境は異なり、マイコンの種類も多数あるので検索しても情報が少ない。一方でArduinoは動作テスト段階であれば配線はブレッドボードとジャンパーワイヤーで十分で、また統合開発環境であるArduino IDEは記法が簡素でわかりやすく、ネット上にも情報が多く掲載されていることから初心者であっても扱いやすい。実際に製品までの完成度を実現するにはマイコンベースの開発がよさそうだが、プロトタイピングの段階ではArduinoで十分と思う。Arduinoの詳細は公式HP*5やArduino基礎*6もかなりまとめられている。
2.Tinkercadの導入まで
Arduino (Uno)本体は3千円程度、ブレッドボードやLEDなどとのセットでも5千円弱で購入できる。LEDの点滅ぐらいであれば実機上で動作するのが見れるので楽しいかもしれない。しかし、Arduinoの動作をより詳しく調べるため、I/Oピンにどのような信号が出力/入力されているかを観測しようとするとオシロスコープが必要になったりする。また、配線ミスなどで機器を破損するリスクもある。ということでArduinoのシミュレータとしてTinkercadを利用する。TinkercadはAutocadなどCADソフトで有名なAutodesk社が提供している無料ツール*7で、Web上で回路モデルの作成、プログラミング、シミュレーション実行することができる。Tinkercadを利用するためには、まず下の公式HPにアクセスして、"今すぐ参加"からアカウントを作成する。(Googleアカウントも利用可能) www.tinkercad.com
3. Tinkercadの始め方
ユーザ名の下"3Dデザイン","Cirucuit","コードブロック","レッスン"の中からCircuitを選択し、"新しい回路を作成する"をクリックするとブランクのモデルが表示される。
右側のコンポーネント---基本には抵抗やLED、ボタンなど様々な電子部品があり、下にスクロールしていくとArduino Uno R3があるのでブランク部分にドラッグ&ドロップで配置する。
4. Lチカまで
画面右上の"コード"をクリックしたところが下図で、デフォルトはブロックになっている。コードを表示するには、ブロックからテキストに切り替えればよい。切り替え時にブロックの内容が消去される旨の警告が表示されるが構わず続行をクリックするとボード上のLEDを点滅させる:Lチカのコードが表示される。なおArduino(マイコン部品)がモデル内にない場合はコードをクリックしてもプログラム可能なコンポーネントはなしと表示される。
右上、"コード"の隣にある"シミュレーションを開始"をするとUSBがArduinoに接続され、ボード上のLEDが1秒間隔での点滅を繰り返す。止める場合は、"シミュレーションを停止"をクリックする。作成したモデルは随時自動的に保存される。操作のやり直しは左上の矢印(あるいはCtrl+Z)で戻すことになるが、大幅に作業をやり直す可能性がある場合は定期的にモデルの複製(メインメニューのモデル上にポインタを置いたときに右上に現れる歯車マークをクリックして選ぶ)することをお勧めする。回路モデルの作成からメインメニューに戻るには左上のTinkercadのロゴをクリックする。
とりあえず今回はここまで。次回はLチカのところの動作説明・補足とします。
*1:歴代のRaspberry Piの仕様:Raspberry Pi - Wikipediahttps://ja.wikipedia.org/wiki/Raspberry_Pi
*2:Arduino UNO R3:https://store.arduino.cc/usa/arduino-uno-rev3
*3:Arduino 製品比較一覧表 まとめ | おもろ家:https://omoroya.com/arduino-comparison-list/
*4:PICマイコンの例:https://www.marutsu.co.jp/pc/static/large_order/begin_pic
*5:Arduino 公式HP:https://www.arduino.cc/
*6:Arduino基礎:http://lecture.nakayasu.com/?p=2382
*7:サービス終了した同社の123D Circuitsの後継と思われる