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

音声付きのデータ送信

コンポーネントと消耗品

>
Arduino Nano 33 BLE Sense
× 1

このプロジェクトについて

ここチャープ本社では、Arduinoが多数の新機能を備えた新しいボードをリリースするという発表を聞いて非常に興奮していました。これらの機能には、さまざまなセンサー、強力なプロセッサー、そして最も重要なオンボードマイクが含まれます。 Arduinoの優秀な人々から、Chirpと完全に互換性のある新しいNano 33 Senseボードのプレリリースが送られてきました。これにより、メーカーコミュニティは音声を使用してデータを送受信できます。

Chirpは、Arduinoボードに完全にユニークなトランスポートメカニズムを追加します。データオーバーサウンドの追加機能は、ハッカーが指先でより多くの接続オプションを利用できることを意味します。 data-over-soundの利点には次のようなものがあります。

  • デバイスに依存しない:データはモバイルアプリ、ウェブページ、または音声ファイルだけで送信できます
  • 1対多:聴力範囲内のすべてのデバイスが1つの簡単なトランザクションでデータを受信できます
  • 摩擦がない:ペアリング、パスワード、初期設定は必要ありません

このチュートリアルでは、Chirp SDKを使用してRGB値を送信し、オンボードLEDの色を変更する方法を示します。

Chirpは、デコーダーをバックグラウンドサウンドに対して堅牢にするために長年の研究を行ってきたおかげで、騒がしい場所でも機能します。 data-over-soundを使用する利点について詳しくは、こちらをご覧ください。

それでも懐疑的な場合は、自分で試してみてください。

Chirpの使用を開始するのがこれまでになく簡単になりました...

はじめに

まだ登録していない場合は、developers.chirp.ioでChirpにサインアップする必要があります。サインアップすると、アプリケーションのアプリキー、シークレット、オーディオ構成を取得できます。

データの受信

Nano 33 Senseにはオンボードマイクが同梱されているため、Chirpを使用してデータを受信するために必要なのは、ライブラリマネージャーから直接入手できるChirpSDKだけです。

Library Managerを開き、ChirpSDKを検索するだけです。 v3.3.0以降をインストールすると、コーディングを開始する準備が整います。

ツール>ライブラリの管理

最初にサンプルコードを開くことができます。

ファイル>例> ChirpSDK> Nano33SenseReceive

16khz-mono-embedded のクレデンシャルをコピーして貼り付ける必要があります developers.chirp.ioからcredentials.hファイルへのプロトコル。

サンプルコードは、受信したデータをシリアルモニターに出力するだけです。ただし、 onReceivedCallback を編集することで、オンボードLEDを点灯するように動作を簡単に変更できます。 関数。

セットアップ機能では、最初にLEDに接続されたGPIOピンを出力としてセットアップする必要があります

  #define R_LED_PIN 22#define G_LED_PIN 23#define B_LED_PIN 24void setup(){pinMode(R_LED_PIN、OUTPUT); pinMode(G_LED_PIN、OUTPUT); pinMode(B_LED_PIN、OUTPUT);}  

LEDを駆動するには、データペイロードからRGB値を引き出す必要があります。

  void onReceivedCallback(void * chirp、uint8_t * payload、size_t length、{if(length> 0){//高い値は輝度が低いことを意味するため、// UINT8_MAXから減算しますanalogWrite(R_LED_PIN、UINT8_MAX-ペイロード[0]); analogWrite(B_LED_PIN、UINT8_MAX-ペイロード[2]);} else {Serial.println( "デコードに失敗しました");}}  

これで、以下のオーディオファイルを再生してコードをテストできます。各ファイルは、LEDの色を赤から緑、青に変更する必要があります。

次は何ですか?

Arduino用のChirpSDKの最初のイテレーションは、可聴の 16khz-mono-embedded でのみ動作します。 プロトコル。今後数か月にわたって、超音波に近い周波数で動作する非可聴バージョンをリリースする予定です。これにより、人間が聞くことのできない周波数でデータを送信できるようになります。たとえば、歌やビデオなどの既存のオーディオにチャープデータを埋め込んで、アクションをトリガーすることができます。

また、Arduinoでdata-over-soundを利用する方法についてのチュートリアルをさらにフォローアップします。自分のArduinoプロジェクトでChirpを使用した場所を、twitter @chirpでタグ付けするか、contact @ chirp.ioで連絡してください。

コード

  • RGB値をNano33Senseに切り刻む
RGB値をNano33 Sense C / C ++ に切り刻む
オンボードLEDの色を変更するには、チャープを使用してRGB値を送信します。このチュートリアルに添付されているサウンドクリップを使用して試してみるか、3バイトの配列を送信して自分で試してみることができます。
 / ** ----------------- -------------------------------------------------- -Arduino Nano 33Senseボードを使用してデータを受信するためのサンプルコード。 @file Nano33SenseReceive.ino @brief https://developers.chirp.ioで開発者アカウントを作成し、「16khz-mono-embedded」プロトコルのキー、シークレット、および構成文字列をコピーして、以下のチャープ定義に貼り付けます。この例では、RGB値のリッスンを開始し、オンボードLEDの色を変更します。回路:-Arduino Nano 33 BLEボードCopyright©2011-2019、Asio Ltd.無断複写・転載を禁じます。 -------------------------------------------------- ----------------- * /#include  #include "chirp_connect.h" #define CHIRP_APP_KEY "YOUR_APP_KEY" #define CHIRP_APP_SECRET "YOUR_APP_SECRET" #define CHIRP_APP_CONFIG "YOUR_APP_CONFIG "#define SAMPLE_RATE 16000#define BUFFER_SIZE 256#define R_LED_PIN 22#define G_LED_PIN 23#define B_LED_PIN 24 //グローバル変数------------------------- -------------------------- static chirp_connect_t * chirp =NULL; short sampleBuffer [BUFFER_SIZE]; volatile int samplesRead; //関数定義--- -------------------------------------------- void setupChirp(void); void chirpErrorHandler(chirp_connect_error_code_t code); void onPDMdata(void); //メイン---------------------------------- ----------------------------- void setup(){Serial.begin(115200); // while(!Serial); pinMode(R_LED_PIN、OUTPUT); pinMode(G_LED_PIN、OUTPUT); pinMode(B_LED_PIN、OUTPUT); setupChirp(); PDM.onReceive(onPDMdata); PDM.setGain(30); if(!PDM.begin(1、SAMPLE_RATE)){Serial.println( "PDMの開始に失敗しました!"); while(1); } analogWrite(R_LED_PIN、UINT8_MAX); analogWrite(G_LED_PIN、UINT8_MAX); analogWrite(B_LED_PIN、UINT8_MAX);} void loop(){if(samplesRead){chirp_connect_error_code_t err =chirp_connect_process_shorts_input(chirp、sampleBuffer、samplesRead); chirpErrorHandler(err); samplesRead =0; }} void onPDMdata(){int bytesAvailable =PDM.available(); PDM.read(sampleBuffer、bytesAvailable); samplesRead =bytesAvailable / sizeof(short);} // Chirp ------------------------------------- ------------------------- void onReceivingCallback(void * chirp、uint8_t * payload、size_t length、uint8_t channel){Serial.println( "データの受信... "); analogWrite(R_LED_PIN、UINT8_MAX); analogWrite(G_LED_PIN、UINT8_MAX); analogWrite(B_LED_PIN、UINT8_MAX);} void onReceivedCallback(void * chirp、uint8_t * payload、size_t length、uint8_t channel){if(length){//高い値は輝度が低いことを意味するため、// UINT8_MAXから減算しますanalogWrite(R_LED_PIN、 UINT8_MAX-ペイロード[0]); analogWrite(G_LED_PIN、UINT8_MAX-ペイロード[1]); analogWrite(B_LED_PIN、UINT8_MAX-ペイロード[2]); } else {analogWrite(R_LED_PIN、0); analogWrite(G_LED_PIN、UINT8_MAX); analogWrite(B_LED_PIN、UINT8_MAX); delay(500); analogWrite(R_LED_PIN、UINT8_MAX); delay(500); analogWrite(R_LED_PIN、0); Serial.println( "デコードに失敗しました"); }} void chirpErrorHandler(chirp_connect_error_code_t code){if(code!=CHIRP_CONNECT_OK){const char * error_string =chirp_connect_error_code_to_string(code); Serial.println(error_string); exit(42); }} void setupChirp(void){chirp =new_chirp_connect(CHIRP_APP_KEY、CHIRP_APP_SECRET); if(chirp ==NULL){Serial.println( "Chirpの初期化に失敗しました。");戻る; } chirp_connect_error_code_t err =chirp_connect_set_config(chirp、CHIRP_APP_CONFIG); chirpErrorHandler(err); char * info =chirp_connect_get_info(chirp); Serial.println(info); chirp_connect_free(info); chirp_connect_callback_set_t callback_set ={.on_state_changed =NULL、.on_sending =NULL、.on_sent =NULL、.on_receiveing =onReceivingCallback、.on_received =onReceivedCallback}; err =chirp_connect_set_callbacks(chirp、callback_set); chirpErrorHandler(err); err =chirp_connect_set_input_sample_rate(chirp、SAMPLE_RATE); chirpErrorHandler(err); err =chirp_connect_set_frequency_correction(chirp、1.0096); chirpErrorHandler(err); err =chirp_connect_start(chirp); chirpErrorHandler(err); Serial.println( "Chirp SDKが初期化されました。"); Serial.flush();} 

製造プロセス

  1. LPレコード
  2. センサーデータとRaspberryPiマイクロプロセッサーの統合
  3. データをどうすればいいですか?!
  4. IoTとのビジネスに取り掛かる
  5. エッジ分析によるインダストリー4.0のアップグレード
  6. C++ Char データ型と例
  7. 例を含む8種類のデータ侵害
  8. HMIによるエネルギー効率の改善
  9. 知識でデジタル製造チームに力を与える
  10. リアルタイムの都市データでイノベーションが生まれます
  11. 実世界の例を用いた新興インダストリー4.0テクノロジー