Jeffrey Cross
Jeffrey Cross

CircuitPythonがAdafruitハードウェアに参入

AdafruitのエンジニアであるScott Shawcroftとの最近の議論で、私は本当に興奮しました。彼は彼らの製品にCircuitPythonを使用することへの移行と、そのような移行がもたらすであろう利点を説明していました。大きな利点の1つは、単にデバイスを接続してUSBストレージとして表示されたら、その上にコードをドロップすることです。 IDEは必要ありません。私がこの機能を見たのは今回が初めてではありませんが、Adafruitが最先端のプロトタイプ作成ツールを選択したことで、非常に興奮しました。

CircuitPythonとは何ですか?

CircuitPythonはMicroPythonをベースにしたマイクロコントローラファームウェアで、これまで以上にハードウェアのプログラミングが容易になります。 Arduinoとは異なり、ユーザーのコードはファームウェア自体に保存されるのではなく、チップ内またはボード上の小さなファイルシステムに保存されます。その結果、CircuitPythonを使用したプログラミングは、ボードをコンピュータに接続して表示されるドライブ上のファイルを編集するのと同じくらい簡単です。開始するために追加のソフトウェアは必要ありません。

Arduinoは、コードを変更するときに高価な点滅ツールの必要性を排除することによって、組み込みに革命をもたらしました。 CircuitPythonは、特定のドライバやソフトウェアの必要性を排除することで、さらに一歩進んでいます。

可能な限り簡単に要約しなければならない場合、CircuitPythonについてどのように説明しますか?

私は、最も単純なバージョンではCircuitPythonやPythonを別々のものとして認識することは含まないと思います。それは単にソフトウェアとハ​​ードウェアを統合します。デバイスを接続してドライブを開き、ハッキングするコードを編集します。ファイルを保存すると自動的に再ロードされます。サムドライブのようにそれを取り出して、あなたと一緒にそれを持っていってください。コードはデバイスの一部です。

Adafruitの製品にCircuitPythonを実装することを選択したのはなぜですか。

私にとっては、それは単にそれが他の何よりも使うのが簡単であるということです。 CircuitPythonは、特別なドライバがなくても機能するため(古いWindowsのシリアルを除く)、エントリに対する障壁が非常に低くなっています。プレーンテキストエディタが機能するため、プログラムでプログラムを作成する必要はありません。どのシリアルプログラムでも接続できます。それをプログラムするのにインターネット接続は必要ありません。

私たちは初心者にハードウェアの作成と実験を教えることに成功しているので、エントリーへのその低い障壁はそれをAdafruitに最適にします。コードをハードウェアと統合するCircuitPythonの機能により、これまで以上にハッキングが可能になります。誰かのコードを別々に電子メールで送信してから、それらを特定のソフトウェアでセットアップするという問題はもう発生しません。それだけでうまくいきます。

製品はArduino IDEでも動作しますか?

はい! CircuitPythonをサポートするSAMD21 Cortex-M0 + mcuをベースとした新製品は、Arduino IDEおよびMicrosoft MakeCodeでもサポートされています。最初にMakeCodeで初心者を教えてからCircuitPythonとArduino IDEに進むことは、若いコーダーがプロジェクトの複雑さを増して成長するのを助けるための素晴らしい方法であると思います。

この方法が早く行われなかったのはなぜですか。それともそうであれば、誰が基礎を築くことに感謝すべきですか?

Pythonを組み込みで実行することは、Python-on-a-ChipやOwlのようなプロジェクトで以前に試みられました。しかしながら、それらのプロジェクトは幅広い視聴者を見つけることができませんでした。 MicroPythonは、彼らがKickstarterを立ち上げたときにようやくそうしました。 Damien GeorgeやPaul Sokolovskyを含むMicroPythonの開発者は、CircuitPythonの基盤を築くことに値するものです。彼らは、マイクロコントローラ上でPython 3.4を再実装し、USBマスストレージ上でコードを編集するという大変な作業をしました。ハードウェア上で機能するようにし、エクスペリエンスを向上させるために、私たちは単に彼らの作業に基づいています。

そもそもあなたの製品をCircuitPythonに移植するのにどのような困難が伴いますか?これは複雑ですか?簡単ですか?大きな問題ではない?

CircuitPythonに製品を移植することは、32ビットマイクロコントローラに製品を移行することを意味します。 CircuitPythonは8ビットマイクロコントローラをサポートしていないため、at328pと32u4からSAMD21に移行することでこれが可能になります。

逆に、MicroPythonはSAMD21(これはすべてのM0ボードで使用されているチップです)をサポートしていませんでした。 MicroPythonにSAMD21サポートを追加すると、CircuitPythonが作成されました。 MicroPythonには、STM32ファミリやSAMDファミリなどのマイクロコントローラファミリとほぼ一致する「ポート」という既存の概念がありました。各ファミリは同様のCortex Mコアを特長としていますが、USB、I2C、SPIなどのプロトコルを実装する周辺機器は大きく異なります。そのため、新しいマイクロコントローラファミリのサポートを追加するという課題は、周辺機器のサポートにあります。

明快で機能指向のハードウェアAPIを確立することによって、将来的にこれを容易にするために多くの作業を行ってきました。この新しいAPIを使用すると、既存のドライバが引き続き機能するようにしながら、ハードウェアサポートの断片化を新しいポートに簡単に追加できます。将来的には、新しいマイクロコントローラに拡大するにつれて、ポートの追加をさらに簡単にする予定です。

CircuitPythonをあなたの製品で動作させるためにハードウェアの変更は必要でしたか?

アダフルーツフルーツM0エクスプレス

32ビットのマイクロコントローラを持つことが必要条件です、しかしCircuitPythonの前に我々はすでに多様なSAMD21ベースの羽を持っていました。 CircuitPythonの初期開発は、Feather M0 BasicとArduino Zeroで行われました。 CircuitPlayground、Metro、Gemma、およびTrinketはSAMD21に更新されました。これにより、これらのプラットフォームでもCircuitPythonが有効になります。

より良いCircuitPythonの経験のために、我々はExpressのボードのラインを紹介しました。これらのボードは、マイクロコントローラ上ではなくPythonコードを外部に格納するために使用される外部SPIフラッシュチップを備えています。これは、より多くのコード(64KBではなく2MB)を格納でき、ファームウェア自体がより多くの機能を公開できることを意味します。これらはステータスRGB LEDを搭載した最初のボードでもありました。新しいExpress以外のGemma M0およびTrinket M0にもRGB LEDがありますが、追加のフラッシュはありません。

CircuitPythonには、開発時に心に留めておくべき欠点がありますか?

CircuitPython(およびPython全般)の最大のトレードオフは、メモリーのフットプリントと実行速度よりも開発速度を優先することです。その影響は、プロジェクトによっては、Arduinoのようなコンパイル済みのソリューションでは達成できなかったメモリの制限や速度の制限に達する可能性があることです。たとえば、NeoPixelストリップアニメーションでは、CircuitPythonではArduinoほど速くピクセルが更新されない場合があります。あるいは、多くのライブラリーに依存するプロジェクトは、コンパイラーによって最適化できるコードと比べて、それほど多くの機能を持つことができない可能性があります。

それでもCircuitPythonを回避するのに十分な理由ではありません。開発速度はArduinoのようなコンパイラベースのソリューションよりもはるかに速いので、CircuitPythonですべてのプロジェクトを試し、必要に応じて後で最適化するのが最善です。人々はコンピュータがどれくらい速いかを過小評価するので、通常それは十分に速く走るでしょう。

コードを書いた後の最適化は、主に3つの方法で行うことができます。

1)Pythonコード自体2)Pythonから使用する必要に応じてCircuitPythonファームウェアにC機能を追加すること3)高速ハードウェアを購入する(ムーアの法則は依然としてマイクロコントローラのCPU速度に影響を与えます)。 + mhz)

そのため、トレードオフがありますが、CircuitPythonは通常開始するのに適した場所です。

誰がどこでCircuitPythonを学び始めることができますか? learn.adafruit.comとしますが、他にはありますか?

現時点で、開始するのに最適な場所は、Feather M0 ExpressおよびGemma M0の製品固有のガイドです。すでにCircuitPythonを活用したLearnシステム上のさまざまなプロジェクトがあります(アーケードボタンボックス、MPR121タッチコントローラ、およびLIS3DHガイドは3つです)。 Tonyは、以前のMicroPythonガイドをCircuitPythonに更新する予定ですが、それは現在の作業中です。たとえば、このガイドは更新されます。私たちのAPIドキュメントはまた、たくさんの小さな例のための素晴らしい場所です。最後に、一般的なPythonチュートリアルは、CircuitPythonのハードウェア以外のすべての側面を使い始めるのにとても便利です。

この動きがあなたのコミュニティにどのように影響を与えると思いますか?

CircuitPythonへの移行は、既存のAdafruitコミュニティを拡大すると私は思います。参入障壁が低いため、初心者でも参加できます。 CircuitPlayground Expressのようなボードに内蔵されている多用途性と完全に一致しています。この使いやすさはまた、プロジェクトや図書館を通じて、より多くの人々が私たちのコミュニティに貢献できるようになるでしょう。

私たちのコミュニティの既存のメンバーは私たちが革新的な製品やプロジェクトを生み出すのを見続けるでしょう。 CircuitPythonは、オープンソースソフトウェアとハ​​ードウェアの経験を向上させるための一歩にすぎません。

Adafruitがスポンサーとなった最初の中核プラットフォームでもあります(ArduinoとRaspberry Piは別々の中核開発チームを持っています)。これは私たちに新しいコア開発コミュニティのためのトーンを設定する機会を与えてくれて、それは非常にエキサイティングです。私たちの新しいプロジェクトはすべて、行動規範として寄稿者規約を持っています。これは、よりオープンソースの開発へと拡大するにつれて、友好的で歓迎され、支持されるAdafruitコミュニティを保護する上で重要です。 Rust言語コミュニティは、オープンソースプロジェクトをうまく運営するための大きなインスピレーションです。エミリー・ダナムはそれらについてもたくさんの素晴らしい講演をしています。

うまくいけば、この努力はCircuitPython、CircuitPythonライブラリ、そしてLearnガイドへの貢献者のより多様なセットにつながるでしょう。

シェア

コメントを残します