私はArduinoを理解しています:今何?


18

申し分なく、私はArduinoで十分に遊んだことがあるので、それでかなり快適に感じます。現在行われていることは、それがArduino側であるというよりも、電子工学を学ぶことです。

学習の次のステップは何ですか?Arduinoはプログラマー/コントローラーの組み合わせであるため、おそらくそのリンクを解除し、コントローラーとは別のコントローラーチップで作業を開始する必要があると思いますか?誰かが私を正しい方向に向けることができますか?


特定の目標やプロジェクトを念頭に置いていますか?

同意する。私にとってこれは、特定のことを成し遂げることです。Arduinoは、他のツールと同様のツールです。
ダーク

私が今取り組んでいるのは、多重化されたLEDアレイです。Arduinoではそれほど難しくありませんが、トレーニングホイールを取り除きたいです。つまり、最終的に、ArduinoボードにはATmega168チップが搭載されています。それを直接操作する方法を理解できれば、それは私が達成しようとしているものを満足させると思います。
クリスB. Behrens

Arduinoを使用すると、実際にチップに直接アクセスできます。多くのドライバーやピンに接続されたものはありません。ヘッダーはそこに直接移動します。おそらくブレッドボードイノ?
AngryEE

@angryee-Chrisは、トレーニングホイールと見なされるArduino IDE +ライブラリなしで、ATmegaチップを直接プログラムすることを意味すると思います。
J.ポルファー

回答:



12

Jobyには同意します。Arduinoは素晴らしいのですが、周囲のフレームワークにいつも圧迫されています。ArduinoでストレートCを使用し、それらがゼロから提供するライブラリ機能の多くを構築することに進みます。私は通常、幅よりも深さを好みます-提供されているフレームワークを使用して別のマイクロコントローラーファミリを開始するだけではありません。これらの機能のいくつかを自分で実装する方法についてもう少し学んでください。

動作中のプログラムから始めて、Arduinoライブラリ呼び出しを一度に1関数ずつ独自のバージョンに置き換えます。制御レジスタ、タイミング、ビット操作などについてまだ多くのことを学べます。ATMega328データシートを詳細に読んでください。必要なものはすべて揃っています。

AVR StudioやCode :: Blocksのような別のIDEを試してください。GCCツールチェーンをご覧ください。より高度なコーディング手法を試してください-単体テスト、カバレッジ、プロファイリング、lint / splintチェック。RTOSをArduinoに配置します。

プログラマー/コントローラーの組み合わせは、弱点の兆候ではなく、設計上の選択にすぎません。それから生じる唯一の「弱点」は、インサーキットデバッグの欠如です。AVR Dragonを購入すると、50ドルでそれがなめられます。


9

次に学ぶべきことは、Arduinoができないことを何をしたいかによって決まると思います。つまり、同じことをするために同様のチップをプログラミングすることにはあまり意味がありませんが、より難しい手段が必要です。

Arduinoの弱点は次のとおりです。

  • スレッド化。コードの2つのセクションが交互に実行され、同時に実行されているように見えることを意味します。
  • ストリーミングオーディオなど、中または高帯域幅のインターネット関連のもの
  • 深刻な計算、または高速応答のために高速計算を必要とするタスク
  • データロギングや画像処理など、ファイルシステムを使用して簡単にできること

次の2つの方向を想像できます。

  1. BeagleboardやGumstixなどの小さなオペレーティングシステムを備えた、より強力な組み込みボード
  2. ハードウェア割り込みを使用して、小さなAtmegaチップからより多くのパフォーマンスを絞り出します。

どの方向がより魅力的であるかについてコメントしていただければ、詳細を追加できます。(2番目のものは間違いなく安価です。)


それは面白いです...同じことをするために同様のチップをプログラミングすることですが、より難しい手段で私が念頭に置いているものです:)。少しのバックグラウンド-私は長年の経験を持つソフトウェアアーキテクトです。ソフトウェア、計算、ファイルシステム...それは私にとってすべて簡単なものです。私が本当に頭を打つ必要があるのは電子機器です。Arduinoを超えて移行したいと考えている理由は、Arduinoボードの物理的(および価格)オーバーヘッドのない単一目的のデバイスを作成できるようにすることです。あなたが言ったことから、#2は私が探しているものだと思います。
クリスB.ベーレンス

うわー...そのコメントは本当に利己的に聞こえました。私はそれをそのように意味しませんでした...とにかく、私はArduinoが私に与えたハードウェアトレーニングホイールを取り除きたいということを意味しました。特に、私はLOLShieldに似たLEDアレイに取り組んでいますが、代わりにそれを多重化するつもりです。私はArduinoでそれを行うことができますが、それなしでは、何らかの方向性が必要です。TIA。
クリスB. Behrens

ああ、ソフトウェアではなく、もっと電子的なもの…。たぶん、センサーのインターフェース/データロギングを行う素晴らしい経験を得られるでしょう。華やかではありませんが、センサーをボードに接続するには、ハードウェアについてもう少し学ぶ必要があります。Arduinoには実際にはそれほど多くのハードウェアトレーニングホイールはありません。確かにソフトウェアほど多くありません。超音波、IR距離、シャフトエンコーダーなど、いくつかの異なるタイプのセンサーを組み込んだロボットかもしれません。確かにArduinoとより多くのハードウェアだけで可能です。
AngryEE

7

I2C、SPI、1wireを学び、そのようなインターフェースとセンサーをインターフェースしてみてください。そのようなセンサーの多くのデータシートを読んで、それらのすべてを理解してください。行き詰まったら質問してください。MODBUS(RTU / ASCII / TCP)、またはデバイスをデバイスに埋め込むと、デバイスを世界に公開できる同様のプロトコルを学びます。一般的な電子機器を学び、リレー、トライアック、プルアップとプルダウン、ソースとシンク、回路図の描画方法、基本ドライバーをMCUに接続する方法をインターフェイスしてみてください。


6

まず、プラットフォームとしてのArduinoからプラットフォームとしてのAVRに移行することをお勧めします。すなわち、Arduinoの代わりにプロジェクト用にバージンAVRマイクロコントローラーをプログラム/使用する方法を学びます。こうすることで、プロジェクトごとに、または友人とプロジェクトを行うために、Arduinoボードを別に購入する必要がなくなります。これはかなり簡単なステップです(Arduinoは従来のAtmel AVRマイクロコントローラーですが、特別なボードとブートローダーを備えています)が、友人にプロジェクトを販売/提供するための大きなステップです。ツールチェーンも同様です:avr-gccまたはavr-g ++をプログラミングユーティリティと組み合わせて使用​​し、プログラムをインストールします。


プロジェクトを配布したい場合は、ブートローダーをチップにロードし、独自のボードをはんだ付けするのは非常に簡単です。または、12.50ドル(goo.gl/0yqr)でRBBBキットを注文します。Arduinoプロジェクトごとに30ドル以上のボードを購入する必要はありません。
ダボラク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.