Arduino開発対nRF51開発

もともと私は ATmega328P といくつかのセンサーとBLEラジオの nRF51822 を使ってArduino互換のプロジェクトを開発する考えがありました。私が進歩するにつれて、Arduino互換の要件を緩和すれば、実際にはATmega328Pを廃止し、nRF51822上でアプリケーションを直接書くことができるようになりました(32ビット、より多くのメモリ、高速、 SPI、I2C、TTLシリアルなど)nRF51822のネイティブアプリケーションの作成に慣れていませんが、はるかに複雑に思えます。

両方のプラットフォームでの経験をお持ちの方は、アプリケーション用にはATmega328P、ラジオ用にはnRF51822、アプリケーションとラジオ用にはnRF51822を使用して開発する場合のトレードオフをご記入ください。

0
これはときどき私を悩ます。その瞬間、あなたは "スレーブイーサネットモジュール"が256kbのsramを持つ88Mhz x86 CPU上でLinuxを実行していることに気づきます。そして、あなたはあなたの小さなMCUがマスター(そして10倍安く)であることを認識しています。
追加された 著者 dotnetengineer,

1 答え

まず、NRF51822にはArduino環境のさまざまなポートがありますが、ここでは、Nordicのコードベースまたはmbedを使用して、その瞬間とアドレスを控えておきます。

一般に、これらのパスのうちの1つは、ARMの皮質部品が主役を担っているプロレベルの組み込み開発の現在の「現実の世界」の中でより多くのものを提供します。あなたは、従来の複数のソースファイルプロジェクトを、Makefileや明示的なIDE設定のようなより一般的な手段で結びつけることになります.Arduino IDEが進化してきたことではありません。あなたが書いてくれる基本的な下位レベルのAPIは、もっと慣習的です。つまり、あなたのコードは setup()loopではなく main() print()/ println()ではなく、 printf または類似のスタイルのメンバ関数を使用してデバッグメッセージを生成します。 (もちろんArduinoではいくつかの設定で printf()を使うことができます)。これは、この組み込みシステムと他の組み込みシステムとの間で、あるいは組み込みシステムと、それと通信するか、またはそれをシミュレートする電話機またはデスクトップとの間でさえも、コードを移植または共有する方がはるかに簡単です。もちろん、ArduinoをプレーンなATmegaとして扱うこともできますし、CPUとその記憶の限界までこれを行うこともできます。

人々はmbedオプションを特定のボードのオンライン「おもちゃ」と考える傾向がありますが、同様の方法で同じMCUを使用するボード用に設定するだけで他のものを使うことができます。そして、ほとんどの場合、arm-gccや他のいくつかのコンパイラの選択肢を駆動するMakefileを含むプロジェクトのzipファイルをダウンロードすることができます。 NRF51822はさまざまなオンボードストレージサイズで提供されますが、リンカスクリプトに気を配り、注意が必要な場合もあります。オンラインビルドに適したプロジェクト(Keilコンパイルエンジンを使用しているようです)は、スタックサイズを減らすためにリンカスクリプトを調整しないか、おそらくコンパイラ最適化レベルを変更しない限り、ダウンロードしたGCC設定をビルドします。

あなたがI/O周辺機器やその5V I/O機能が必要な場合、ATmegaを維持することになるかもしれない理由に対抗してください。たとえば、NRF51822はATmegaに比べてハードウェアPWM機能が限られているため、一般にソフトウェアで行う必要があります。

あなたが本当に "Arduino Way"を持っていれば、より伝統的なものに切り替えるには、思考や習慣の調整が必要です。もう1つは、Arduinoのさまざまなメリットを見れば、プロジェクトの可能性を探るために使うことができる簡単に修正されたサンプルですが、多くの場合、数え切れないほどの奇抜なやり方で、長期的には異型のアプローチがあれば、おそらくNRF51822を直接的に使う価値があることに気付くでしょう。

0
追加された
それはうまくいくはずです。あなたの挑戦の多くは、周辺機器にサービスを提供するための体系化されたコードと、これがどのようにBLEやその他の無線の用途に統合されているかを理解することにあります。
追加された 著者 rossp,
ありがとうございました。私のアプリケーションでは、少なくともGPS、IMU、microSDアダプター、おそらく温度/気圧センサーを取り付けたいと思います。これらは、すべてのUART、I2C、およびSPIインタフェースを占有します。 PWMの必要はありません。これは、より複雑な開発を犠牲にして余分なICの必要性を取り除くための合理的な方法でしょうか?
追加された 著者 Will Phillips,