電気技師はいつPythonを使用できますか? Pythonプログラミング言語のアプリケーション
EEは日常のどこでPythonを使用できますか? Pythonが優れているアプリケーションを見てみましょう。
EEは日常のどこでPythonを使用できますか? Pythonが優れているアプリケーションを見てみましょう。
前回の記事では、「エンジニアがPythonをわざわざ学ぶ必要があるのはなぜですか?」という質問を投げかけました。
それでは、Pythonが電気技師の仕事にどのように関連するかについて説明しましょう。
スイスアーミーナイフエンジニア
EEは回路設計だけを扱うのではありません。私たちは、私たちが世話をしなければならない他の多くのタスクにも直面しています。ファームウェアのプログラミング、デバッグ、プロトタイプのハードウェアとソフトウェアのテスト、製品サンプルのテスト、品質管理の作業、そして終わりのない量のデータ収集、評価、分析があります。
Pythonはこれらすべてにどのように役立ちますか?
スイスアーミーナイフの言語であるPythonを入力してください
Pythonは、汎用プログラミング言語として非常に優れています。 HDLのような言語(VHDL、Verilogのようなハードウェア記述言語)は、ハードウェアへの合成のような1つの特定のことを行います。 C / C ++は無駄のない動作をし、組み込みプログラミングに非常に適しています。しかし、ツールベルトにスイスアーミーナイフの言語を含めると、私たちが扱うものの大部分を占めることが多い汎用タスクに役立ちます。
通常、これらのタスクは、テスト、データ収集、自動化などであり、エンジニアの時間の大部分を占めます。私の経験では、設計にはエンジニアの時間の約5〜10%しかかかりません。残りの90%は、調査、プロトタイプのテスト、デバッグ、テストジグとプログラムの作成、製造テスト、品質管理、そしてもちろん、恐ろしい「D」という言葉…ドキュメントなどによって消費されます。
設計の前にある多くのこと(部品や実装の調査やシステムアーキテクチャの考案など)は、実際には自動化できません。これらは、私たちを創造的で職人的なエンジニアにするタスクです。ただし、設計が実装されると(つまり、楽しい部分)、まだ処理する必要のある多くの面倒な作業があります。
これらの厄介なタイプのタスクのいくつかと、Pythonがそれらを効率的に達成するのにどのように役立つかを次に示します。
ガーバーファイル送信用のファイル処理
自動化を最も頻繁に必要とするアプリケーションの1つは、ファイル処理です。プロセスワークフローは、ソフトウェア、ベンダー、顧客などによって異なります。ほとんどの場合、これらには何らかの形式のファイルの処理が含まれます。 PCBベンダーは、特定のファイル拡張子を持つガーバーファイルを提出するように要求しています。これにより、ワーカーは、設計要件に準拠していることを解析、チェック、および確認できます。
PCB CADツールは必要な形式でガーバーを出力しないため、PCBを送信するたびにファイル拡張子を変更する必要があります。大きな作業ではありませんが、毎年多くの設計と設計改訂を繰り返しているため、設計をファブに提出するたびに、約10個の異なるファイルのガーバーファイル拡張子を変更するのは面倒です。
ファイル処理のより実質的な例は、ある形式(XMLなど)のファイルがあり、顧客が別の形式(CSVなど)でファイルを要求する場合です。これは一般的な状況であり、一部の顧客にとっては目を見張るものではないにしても、通常は大きな頭痛の種になります。ただし、いくつかのライブラリといくつかの単純なPythonコードを使用すると、テキストファイルを複数の形式間で変更できます。
テスト機器の自動化
EEとして、Pythonを使用する大きな利点の1つは、テスト機器の制御と自動化です。データを収集してCSVなどの一般的な形式で保存できるUSB出力を備えた低コストのテスト機器を見つけることがますます一般的になっています。
Pythonは元々テキスト解析用に作成されたため、大量のテキストデータをふるいにかけて有用な情報を抽出することは非常に便利です。たとえば、私が現場で持っているポータブルオシロスコープの1つは、信頼できる古いHantekDSO5202Pデジタルストレージオシロスコープです。安価で、波形を生のCSVデータとして出力できます。
HantekDSO5202PデジタルストレージオシロスコープとUSBインターフェース
これは、実際にいくつかの波形からデータをキャプチャし、それを解析し、処理し、出力をプロットできることを意味します。これはライブの物理データであり、コンピューター内で再生して、デジタルフィルターでどのように動作するかを確認できます。さらに良いことに、任意波形発生器にフィードするようにフォーマットし、回路でテストするために正確な波形を再作成することができます。
Keysightデジタルマルチメータの背面にあるGPIBインターフェース。ファーネルからの画像
GPIBインターフェースをサポートするテスト機器を使用している場合は、pyVISAなどのPythonライブラリを使用してそれらを制御することもできます。あなたはそれをすべて行うためにNationalInstrumentsのセットアップを購入する必要があり、それを買う余裕のある大企業に限定していました。これで、コンピューターの価格とPythonのノウハウを少し使って、テスト機器のセットアップを自動化できます。
テスト機器を自動化できれば、まるで魔術師のように感じるでしょう。テスト対象のデバイスを任意波形発生器で刺激するような閉ループテストを設定し、オシロスコープ、マルチメータ、またはデータロガーを介してデバイスがどのように応答するかに関するデータを収集できます。可能性は無限大です。
フラスコ、Pythonマイクロフレームワーク
ただし、テスト機器の自動化だけではありません。最近では、インターネットサービスに接続したり、RESTAPIを介して通信したりする製品を設計することが一般的になっています。ハードウェアを開発してテストファームウェアを作成しているときに、Pythonを使用してRESTAPIを使用してテストサーバーをセットアップし、接続することもできます。
Python / Flaskフレームワークを使用してRESTAPIを設定するのは非常に簡単なので、派手なWeb開発者や別の言語を学ぶ必要はありません。文字通り、1時間以内にカスタムRESTAPIを設定できます。
プロの電気技師は、ある時点で製造に携わる可能性が高く、製造のテストを自動化する機能は非常に便利です。テストの一貫性と徹底性が高いほど、フィールド障害の減少、在庫の返品の減少、品質管理の悪さによる評判の低下など、企業の収益にとってより良い結果が得られます。
私の回路設計では、釘のベッドプローブ、ワイヤーハーネス、およびクランプ機構で作られたカスタムテストジグを入手します。これらのテストジグは、ArduinoやRaspberry Piなどのカスタムボードと接続して、コンピューターから制御できます。私の標準的な実稼働テストシステムは、Firmataプロトコルファームウェアを実行しているArduinoに接続されたワイヤーハーネスを備えたこのようなもので構成されています。
これにより、pyFirmataを使用してPythonで通信できるようになります。各ピンを入力または出力として設定し、各ピンの状態を確認し、すべてのデータをログに記録し、一意のシリアル番号を生成して、大きなPASSまたはFAILメッセージを出力できます。ボードが工場の組立工場にあるときは、Pythonテストスクリプトの実行方法を人に教えるだけで、大きなPASSまたはFAILを待つだけで、データはその本番稼働の統計とともに自動的に保存されます。
>SQL:データベース管理言語
ああ、私はストレージについて言及しましたか?それは私をデータベースの主題に連れて行きます。実際にデータベースを操作することは、Pythonの楽しみです。 SQLite3が付属しています。SQLite3は、その名前が示すように、単一のファイルに基づく軽量のデータベースです。
コードを別のデータベース、特にサーバーベースのデータベースに移行するオプションが必要な場合は、SQLAlchemyというライブラリをお勧めします。これにより、コードを変更することなく、SQLite、PostgreSQL、MySQLなどの一般的なリレーショナルデータベースの多くに接続できます。
では、EEはデータベースをどのように使用するのでしょうか?
さて、前述の自動テストセットアップでは、テストシステムはシリアル番号だけでなく、統計、テスト結果、その他のメモなどの他のデータも出力しました。これらはすべて、作成したデータベースに保存できるため、作成された各ボードの履歴を追跡するログがあります。ボードが返却されると、シリアル番号を調べたり、ボードの履歴を調べたりすることができます。おそらく、以前にRMAのために返送されたか、テストに1回失敗したが、次の試行で合格した可能性があります。
または、ボード上でオペアンプが故障し、データベースを簡単に検索したところ、この本番稼働で特定のオペアンプが故障したのは5回目であることがわかりました。そのような洞察は、生産効率、収益、および企業に対するエンジニアの価値を向上させます。
結論
私は何度も続けることができました。それは、Pythonがエンジニアとしてまったく新しい世界を開くことができるからです。
電気技師の基盤は今でも電子機器の設計です。しかし、最近では、純粋にエレクトロニクスの世界で生活することが難しくなっています。また、ファームウェアの作成、テストの実行、データの収集、生産への関与、返品または故障した製品のフォレンジックを行う必要があります。
エレクトロニクスとC / C ++の知識に加えて、Pythonの知識は、実践的なエンジニアが回路設計から製品ライフサイクル全体に参加するまでのスキルを完成させるのに役立ちます。
このシリーズを開始し、電気技師のコンテキストからPythonを実際に見てみましょう。
埋め込み