cyber205の日記: そろそろArduinoをきちんと勉強してみたい 3
日記 by
cyber205
電子工作にマイコンってのは最近は当然のように行われていて必須の技術なのだけど、
自分でSBC(Single Board Computer)のプログラムを組むってのはなかなか難しく、
そこで、簡単な制御さえできればいいならArduinoがいいらしい、という話は聞いてたのだけど、あれはC言語っぽい何だか別の言語()、ということで本気で勉強はしてなかった。
しかし最近、Arduinoにセンサーを接続し、Raspberry Piでネットにつなぐ、というのが流行っているらしい。以前にどこかで聞いた、F-15イーグルで制空権取って、F-16ファルコンで爆撃する感じのハイローミックスというか、フロントエンド・バックエンドプロセッサの組み合わせがトレンドになってるとか。
性能で言えばRaspberry Piはとんでもなく高性能だが値段はそれなりに安く、
Arduinoは安く作ることもできるが、公式のボードはラズパイの半分ぐらいには値がはる。
結果的に両方の値段を合計すると、もうちょっといいボードが買えそうなものだが、一番手間がかからない開発環境ってのが、これを両方組み合わせたモノになるらしい。
自称「Arduino言語」は、ただの「C++」 (スコア:2)
Arduinoの開発用言語は「Arduino言語」を自称していますが、
ライブラリが完全独自なだけで、言語そのものはごくごく標準的なC++です。
コンパイラもごく普通のg++(AVR-GCC)。
・スタートアップが「main」ではなく、「setup」と「loop」になってる。最初に1回setupが呼び出されたあと、延々とloopが呼び出される。「main() { setup(); while(1) { loop(); } }」って考えればいい。
・各種ライブラリはC++クラスになっているものが多いが、主にカプセル化のため。「インスタンスがグローバル変数として宣言済」とか「staticメソッドだけで構成されており、インスタンス化せずに使う」とか、あまりクラスを意識することはない。ベターCって程度。
・Arduinoが強いのは「サードパーティーライブラリの豊富さ」と「サードパーティーライブラリ組み込みの容易さ」。開発環境付属のライブラリはたいしたことないけど、「なんかのデバイスを繋ぎたいな」って時には、探してみるとそれ用のライブラリが公開されてたりすること多し。
「Arduinoにセンサーを接続し、Raspberry Piでネットにつなぐ」のも、このあたりが理由ですね。
Raspberry pi で「GPIOを叩いてセンサーと通信するコードをちまちま書く」ぐらいなら「Arduinoでそのセンサー用ライブラリを使う」のが簡単。あと、Raspbery pi だと確実なリアルタイム動作を保証できないのも厳しい。
一方ネットに関しては、Arduinoではイーサネットシールドを繋げば結構簡単に有線LANに繋ぐことはできるけど、センサー相手のリアルタイム動作との協調が難しい。無線LANもできない。
で、センサーはArduino、ネットはRaspberry pi、という分担になる、と。
Re:自称「Arduino言語」は、ただの「C++」 (スコア:2)
ホームセキュリティぐらいなら部品とライブラリの組み合わせで作れますからねえ。
Re:自称「Arduino言語」は、ただの「C++」 (スコア:2)
そういう時にこのESP32が便利なんですよ>ネット