工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

PSoC 6PioneerボードとPioneerIoTアドオンシールドの使用

はじめに

PSoC 6は、サイプレスの強力なPSoCシリーズプロセッサの最新製品です。 PSoC 6 Pioneer IoTアドオンシールドは、このプロセッサラインに関連付けられた開発ツールであり、オンボードデバッガ、Arduino互換ヘッダー、CapSenseウィジェットなどを備えており、すべてPSoC6プロセッサに関連付けられています。プロセッサーはデュアルコア・デバイスであり、Cortex-M0 +低電力プロセッサーとCortex-M4高電力プロセッサーが共有周辺機器とメモリー・スペースを介して相互に接続されています。

このチュートリアルでは、Pioneerアドオンシールドを使用してPSoC 6デバイスの機能を拡張し、PioneerBoardを起動して実行する方法を示します。 BLEおよびWiFi(XBee WiFiモジュールを使用)を介してRaspberry Piと通信する方法、およびBLEを介してPSoC 4BLEパイオニアボードとPSoC6パイオニアボードの間で通信する方法を示します。

必要な材料

このチュートリアルの例は、サイプレスまたはDigi-Keyから直接購入できるPSoC 6 PioneerKitで使用することを目的としています。

もちろん、Pioneerアドオンシールドも必要です。 XBeeWiFiモジュールも必要です。設定に応じて、いくつかのXBee WiFiオプションがあります。トレース、外部2.4 GHzアンテナ付きのRP-SMAコネクタ、またはワイヤです。最も簡単なのは、ワイヤーアンテナでXBeeを入手することです。

Raspberry Pi3スターターキットも必要です。これが、PSoC6パイオニアボードからの通信のターゲットになります。もちろん、ブレッドボード、ジャンパー線、抵抗器、LEDと一緒にPi 3を個別に購入することもできますが、スターターキットは特別な取引であり、入手する価値があると考えています。

ハードウェアの概要

Pioneer KitIoTアドオンボードの機能について詳しく見ていきましょう。

MicroSDカードスロット –このスロットのピンは、PSoC 6BLEパイオニアボードを含むほとんどのArduino互換ボードのSPIペリフェラルにマップされます。

XBeeヘッダー –このヘッダーは、標準のXBeeフットプリントを受け入れるために間隔が空けられています。すべての公式XBeeモジュールと互換性があります。

Qwiicコネクタ –このコネクタは、SparkFunのすべてのQwiicモジュールのサポートを追加します。 3.3Vを供給します。

MicroBUSB電源コネクタ –このコネクタのデータラインは何にも接続されていません。 XBeeモジュールの3.3Vレギュレーターに5Vを供給し、Arduinoヘッダーからの5Vをオーバーライドして、高電力XBeeモジュール(セルラー、wifi、Proモデルなど)が正しく機能できるようにします。

D7およびD9ボタン –ピンD7およびD9に接続された2つのユーザーボタン(PSoC 6ではP0.2およびP13.1、PSoC 4 BLEではP1.0およびP0.4)。

3.3Vレギュレーター –上流の供給供給能力に応じて、最大1.5Aを供給できるスイッチモード3.3V電源レギュレータ。 ArduinoピンまたはMicroB電源コネクタの5V電源から電力を引き出します。 XBeeヘッダーにのみ電力を供給します。

レベルシフトバッファー –ダウンは5V信号から3.3V信号に変換します。ボードを3.3Vまたは5Vシステムで使用できるようにします。

I2Cレベルシフト回路 –必要に応じて、I2C信号を3.3Vから5Vに変換します。

電圧供給選択ジャンパー –I2Cレベルシフト回路が変換するレベルを選択します。デフォルトは 3.3V に設定されています 。 5Vシステムで使用する場合は5Vに設定します。 PSoC4とPSoC6 PioneerBLEボードはどちらも 3.3V システム。

XBee DIO5 LED – DIO5は、特にWiFiモジュールで、構成されたWiFiネットワークへの接続を示すいくつかの便利な機能をデフォルトで使用します。

例:PSoC6パイオニアキットを使用したWiFiからラズベリーパイへ

この例は、WiFi経由でRaspberryPiに信号を送信する方法を示しています。 XBee WiFiモジュールにアクセスする方法、PSoC 6の2つのコア間のプロセス間通信、およびRaspberryPiを使用してコマンドを受信および解析する方法を示します。

この例に従うにはいくつかの設定が必要になるので、ここでそれを見ていきましょう。

PSoC 6パイオニアキットのセットアップ:ハードウェア

PioneerKit側のセットアップは簡単です。XBeeWiFiモジュールをPioneerIoTアドオンシールドに挿入し、シールドをPioneer KitBoardのArduinoヘッダーに挿入します。

RaspberryPi側にはさらに説明が必要です。 RaspberryPiでいくつかのハードウェアといくつかのソフトウェアの両方をセットアップする必要があります。

PSoC 6パイオニアキットのセットアップ:ソフトウェア

注: PSoC 6のサポートは、Creator4.2以降でのみ利用可能です。

Pioneer Kitのソフトウェアプロジェクトは、GitHubで入手できます。

PSOC6パイオニアキットソフトウェアのダウンロード

ファイルをどこかにダウンロードして抽出したら、PSoC Creatorでサンプル(XBee_WiFi_Example)を開くことができます。

他のことをする前に、「 main_cm4.c 」を開く必要があります 」ファイルを作成し、いくつかの変更を加えます。次のようなコードのセクションがあります。
char ssid [] =“ your_ssid_here”;
char rpi_ip [] =“ raspi_ip_here”;
char ssid_pw [] =“ wifi_pw_here ”;
int dest_port =5000;
char encode_mode =WPA2;
うまくいけば、何をする必要があるかは明らかです。ネットワーク設定に一致するようにこれらの設定を変更してください。 encrypt_modeの値は、WPA、WEP、WPA2、または(できればそうではありません!)NO_SECURITYにすることができます。 rpi_ipは、「 ifconfig 」と入力して取得できる点線のクワッド(例:「10.8.253.193」)です。 Raspberry Piのコマンドウィンドウにある」(コマンドウィンドウを開く手順については、以下を参照)と「 wlan0 」を確認してください。 」セクション。

ボードをプログラムするには、付属のUSB-A-USB-Cケーブルを介してボードをPCに接続します。次に、ツールバーの[プログラム]ボタンをクリックして(以下を参照)、プロジェクトを自動的にビルドしてボードをプログラムします。

プログラムするターゲットを選択するように求めるウィンドウが以下のように表示される場合があります。 「KitProg2」リスト項目でどちらのエントリを選択しても、どちらでもフラッシュが正しくプログラムされます。

Raspberry Piのセットアップ:ハードウェア

まず、ハードウェアがどのように接続されているかを見てみましょう。

ご覧のとおり、LED(330オームの抵抗付き)をRaspberry Piのピン3(GPIO 2)と6(アース)に接続しました。これにより、GPIO2を切り替えて、LEDで結果を確認できます。

Raspberry Piセットアップ:ソフトウェア

最新バージョンのRaspbian(ライトバージョンではなくフルインストール)が実行されているRaspberry Piがセットアップされており、キーボード、マウス、モニター、およびローカルWiFiネットワークに接続されていることを前提としています。これがない場合 場合は、少し時間を取って設定してください。 Piの設定に関するチュートリアルはこちらで確認できます。

RaspberryPiのデスクトップから始めましょう。次のような画面が表示されます。

コマンドラインを開くには、画面上部の小さなロゴ(下に表示)をクリックする必要があります。このチュートリアルの残りの部分では、そのコマンドラインが開いていることを前提としています。

コマンドラインウィンドウが開きます。これにより、RaspberryPiにコマンドを直接実行するように指示できます。

まず、Flaskをインストールするコマンドを実行します。 FlaskはPython用のWebフレームワークであり、サーバーバックエンドでPythonスクリプトを実行するWebフロントエンドを非常に簡単に作成できます。次のコマンドを入力し、[Enter]キーを押します。
sudo pip installflask
コマンドラインウィンドウでさまざまな処理が行われ、最後にFlaskがRaspberryにインストールされます。 Pi。

次のステップは、GitHubからこのプロジェクトをサポートするために作成したソフトウェアをインストールすることです。これを行うためのコマンドは
git clone https://github.com/sparkfun/Flask_Tutorial
ここでも、コマンドラインを横切ってテキストがスクロールするのが表示され、プロンプトが戻ると、インストールプロセスが完了したことを示します。それが完了したら、次のコマンドを入力します。
sudo python Flask_Tutorial / Python / app.py
これにより、アプリが起動し、パイオニアボードからTCP / IPを介した入力のリッスンが開始されます。これで、IoTシールドのD7ボタンとD9ボタンを押すことで、RaspberryPiに接続されているLEDのオンとオフを切り替えることができるはずです。きちんと!

では、ここで何が起こっているのでしょうか。 Pt。 1:パイオニアキット

PSoC 6ソフトウェアプロジェクトの概要から始めて、正確に何が起こっているのかを見てみましょう。画面の左側にあるワークスペースエクスプローラーフレームを見てください。そのフレームをウォークスルーし、重要なファイルとそれらがプロジェクト全体にどのように関連しているかを強調します。

ワークスペースエクスプローラーを表示するのに苦労していませんか?画像をクリックすると詳細が表示されます。

プロジェクトのトップレベルには、6つのエントリがあります。回路図(“ TopDesign.sch ”)、デザインワイドリソース(“ XBee_WiFi_Example.cydwr ”)、Cortex-M0 +コアに関連付けられたソースファイル(“ CM0p(Core 0) ”)、Cortex-M4コアに関連付けられたソースファイル(“ CM4(Core 1) ”)、2つの間で共有されるファイル(“ 共有ファイル 」)、およびIDEによって生成されたサポートファイル(「 Generated_Source 」)。

このプロジェクトの回路図は非常に単純で、2つのLED、2つのスイッチ、およびXBeeWiFiモジュールとの間でデータを転送するために使用されるUARTがあります。 LEDは、プロジェクトの現在の実装では実際には使用されていません。

.cydwr の内容をスキップします ファイル。このファイルには、回路図で使用される信号のピン割り当て、クロック生成、およびコア構成定数が含まれています。さらに調査したい場合は、少し掘り下げてみてください。その多くは自明であるはずです。

リストを下に移動すると、Cortex-M0 +ソースファイルに到達します。このサブドメインのトップレベルには、「ヘッダーファイル」、「ソースファイル」、およびその他の3つのファイルの5つのエントリがあることに注意してください。 「ヘッダーファイル」サブドメインと「ソースファイル」サブドメインの内容だけを気にする必要があります。実際、これらのサブドメインには「 main_cm0p.c 」という1つのファイルしかありません。 " ファイル。これは、Cortex-M0 +プロセッサで実行されるコードのmain()関数が存在する場所です。

ワークスペースの構造から推測できるように、2つの異なるコアに対して実行されている2つの完全に別個のコードベースがあります。 「 main_cm0p.c 」はCortex-M0 +コアのコードのエントリポイントであり、そのコアがCortex-M4コアを開始します。同様のファイルを持つCortex-M4コアにも同様のサブドメインが存在します。ここでも、「ヘッダーファイル」と「ソースファイル」のサブドメインについてのみ心配する必要があります。

最後に、「共有ファイル」セクションがあります。これらのファイルのほとんどは自動的に生成されます。「 ipc_common.c 」を保存してください 」および「 ipc_common.h 」ファイル。これらのファイルは、このプロジェクト用に開発されたプロセス間通信のヘルパーです。

Cortex-M0 +メインファイル

重要な内容を強調したので、「 main_cm0p.c 」から始めて、コードの重要な部分を一度に1ファイルずつ見ていきましょう。 " ファイル。このファイルは、Cortex-M0 +コアがシステムに対して行うすべてのアクティビティを処理します。つまり、2つのプッシュボタンを監視し、どちらか一方が押されたときにCortex-M4に信号を送信します。

ただし、Cortex-M4は信号を処理した後、信号をクリアできる必要があるため、これは見た目ほど簡単ではありません。つまり、複数のプロセスが同じデータにアクセスすることを意味します。同じデータセットで複数のプロセスが動作している場合は常に、書き込みの衝突の影響を考慮する必要があります。一方のプロセスが同じデータを変更しようとしているもう一方のプロセスの途中でデータを変更しようとするとどうなりますか?これに対処するために、「 ipc_common 」で設定された、システムで保護された読み取りと書き込みを使用します 」ファイル。

これがどのように機能するかを理解するには、最初にIPCチャネルの概念を理解する必要があります。 IPCチャネルは、セマフォを使用して1つのプロセスから別のプロセスにデータを書き込み、2つのコア間で衝突が発生しないことを保証します。各コアのアプリケーション実行の開始時に、実行中に使用されるIPCチャネルのエンドポイントを確立する必要があります。次の2行のコードについて考えてみます。
IPC_STRUCT_Type * D9IpcHandle;
D9IpcHandle =Cy_IPC_Drv_GetIpcBaseAddress(7);
1つ目は、IPCチャネルの特性を定義する構造体へのポインターを作成します。 2つ目は、実際には、システムIPCチャネル7の特定のメモリ位置を指すようにその構造体を設定します。チャネル0〜6はシステム用に予約されているため、チャネル7を使用します。

次に、もちろん、どのメモリアドレスがこのIPCチャネルに関連付けられているかを他のコアに通知する必要があります。これが、この関数呼び出しが行うことです。
while(Cy_IPC_Drv_SendMsgPtr(D9IpcHandle、CY_IPC_NO_NOTIFICATION、&D9Button)!=CY_IPC_DRV_SUCCESS);
D9Buttonは、コードの前半で設定された変数です。他のプロセス(つまり、Cortex-M4コアで実行されているコード)がこの情報を受信したことの確認を受け取るまで関数呼び出しを繰り返したいため、関数呼び出しはwhile()ループで囲まれています。また、変数のロックが解除され、Cortex-M4がポインター値の読み取りを終了したことを示すまで待機します。
while(Cy_IPC_Drv_IsLockAcquired(D9IpcHandle));
最後に、無限ループに陥ります。アプリケーションのループ。カスタム関数のReadSharedVar()とWriteSharedVar()が、ボタンのステータスを他のコアと通信する共有変数の更新を処理します。これらの機能については後で詳しく説明します。

Cortex-M4メインファイル

Cortex-M4 main()関数では、IPCチャネルの設定に対してCortex-M0 + main()関数で行ったのと同じ操作のいくつかを繰り返します。
IPC_STRUCT_Type * D9IpcHandle;
D9IpcHandle =Cy_IPC_Drv_GetIpcBaseAddress(7);
それが完了したら、アクセスする共有変数のアドレスを含む、Cortex-M0 +プロセスから送信されたメッセージを「キャッチ」するコードを呼び出す必要があります。
while(Cy_IPC_Drv_ReadMsgPtr(D9IpcHandle、(void *)&D9Button)!=CY_IPC_DRV_SUCCESS);
この場合も、この呼び出しをwhile()ループで囲み、メッセージがから送信されるまで継続的に呼び出されるようにします。 Cortex-M0 +。次に、そのIPCチャネルのロックを解除して、Cortex-M0 +プロセスが動作を継続し、将来IPCチャネルを使用できることを認識できるようにする必要があります。これはオープンエンドであるため、while()ループで囲む必要はありません。ロックが解除されたことを確認するのではなく、ロックを解除するために1回だけ呼び出しを発行する必要があります。これは、ロックが解除されます。
Cy_IPC_Drv_LockRelease(D9IpcHandle、CY_IPC_NO_NOTIFICATION);
すべてが完了したら、ローカルネットワークにアクセスするためにXBeeWiFiシールドを設定する必要があります。例で十分に文書化されているため、ここではすべてのコードを複製しません。

アプリケーションコードを実行する無限ループでは、カスタム関数ReadSharedVar()とWriteSharedVar()を再度呼び出して、Cortex-M0 +コアと共有されるボタンステータスを保持する変数にアクセスします。これらの機能が何をするのかを詳しく見てみましょう。

続きを読む……

PSoC 6PioneerボードとPioneerIoTアドオンシールドの使用


製造プロセス

  1. 気象台とIOTに参加– CWOP
  2. RaspberryPiでのA111パルスレーダーセンサーの使用
  3. MQTTでIoTの世界に簡単に参入
  4. ラズベリーパイとブリッジシールドを使用したロボット
  5. GoPiGo v2 with Windows IoT
  6. ビジュアルデータをIoTと統合する可能性
  7. IoTのある道
  8. スマートシティを備えたIoTインフラストラクチャの秘密
  9. IoTの世界:Verticaのある生活の1日
  10. Lumada IoTプラットフォーム製品により、日立は点をつなぐ
  11. エンタープライズIoTでは、まだ最高のものはありません