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

「それは鳥のためです!」

コンポーネントと消耗品

>
Arduino 101
× 1
Intel Edison
× 1
Logitech c270HDウェブカメラ
× 1
シャープGP2Y0D815Z0Fデジタル距離センサー15cmを備えたポロルキャリア
× 2
Adafruit Square Force-Sensitive Resistor(FSR)-Interlink 406
× 1
AdafruitSi7021温度および湿度センサーブレイクアウトボード
× 1
Seed Grove Start Kit Plus、Intel IoT Edition
× 1
コンデンサ47µF
× 2
抵抗1kオーム
× 1
Adafruit端子台-2ピン3.5mm-5個入りパック!
× 1
Adafruitコンパクトスイッチング電源-選択可能な出力3-12VDC
× 1
AdafruitPerma-プロトクォーターサイズのブレッドボードPCB-シングル
× 1
ジャンパー線(汎用)
× 1

必要なツールとマシン

>
3Dプリンター(汎用)
はんだごて(汎用)

アプリとオンラインサービス

Intel XDK for IoT
Autodesk Fusion 360
PubNubパブリッシュ/サブスクライブAPI
Cloudinary
noble.js

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

「それは鳥のためです!」 Arduino101でエコモニタリングの未来を再発明する

紹介と動機:

私たちの気候と私たちが住んでいる生態系の健康を測定する1つの方法は、その動物や動物の個体数のサイズと多様性を測定することです。 1987年以来、毎年冬に、コーネル大学鳥類学研究所はProjectFeederWatchと呼ばれる大規模な市民科学の取り組みを行っています。

「ProjectFeederWatchは、北米の裏庭、自然センター、コミュニティエリア、その他の場所で餌箱を訪れる鳥の冬季調査です。FeederWatchのデータは、毎年冬に大陸の何千もの場所で餌箱を訪れる鳥の種を示しています。 。データはまた、各種の個体数が見られることを示しています。この情報は、冬の範囲の変化と鳥の種の数の経時変化を測定するために使用できます。 」

今年は私たちの最初の参加年であり、私たちは、自然への関心とProject FeederWatchへの参加と、作成とハッキングへの関心を組み合わせたいと考えていました。そこで、Arduino 101を使用して、バードウォッチングと環境モニタリングの未来を再発明することにしました。

Arduino 101は、Arduino IDEのシンプルさを組み合わせて、組み込みプログラミングを容易にし、Bluetooth LEなどのオンボード機能と豊富なセンサーおよびブレークアウトボードをすぐに利用できるため、このプロジェクトに最適です。 Arduino 101を自家製の鳥の餌箱に埋め込むことで、気象パラメーターを測定し、餌箱での鳥の活動を監視するための実験プラットフォームを開発しました。 CloudinaryとPubNubからいくつかのエキサイティングなIoTテクノロジーを追加することで、環境とエコシステムのヘルスモニタリングの未来を再発明することができました!

プロジェクトの概要:

<図>

私たちのプロジェクトの中心は、自家製の鳥の餌箱に埋め込まれたArduino101です。 2つのシャープ赤外線距離センサーを使用して、フィーダーの両側を走る木製のだぼにとまる鳥を検出します。力に敏感な抵抗器(FSR)は、フィーダーに存在するシードの量を検知するために使用されます。 Adafruit Si7021温度および湿度センサーブレークアウトボードはi2cピンに接続され、物理的な気象データを提供するために使用されます。Arduino101は、BLE周辺機器として機能し、これらのセンサーからBLEを介してBLEセントラルにデータを送信するように設定されています。端末。電力は単三電池4本で供給されます。これらのコンポーネントはすべて、カスタムの3Dプリントエンクロージャーに収納されています。

Arduino BreakoutBoardのIntelEdisonを、BLEセントラルとインターネットゲートウェイの両方として使用しています。 logitech c270 usb Webカメラはボードのusbポートに接続されており、止まり木の1つでのアクティビティを示すBLE通知を受信したときに写真を撮るために使用されます。これらの画像は、ブレークアウトボードのSDカードスロットに挿入されたSDカードにローカルに保存されます。

Intel EdisonのWiFi機能を利用して、インターネットゲートウェイとして使用します。これにより、リアルタイムデータストリーミングにはPubNub、クラウドでの画像の保存と操作にはCloudinaryなどのスーパーテクノロジーを使用できます。

<図>

鳥の餌箱は、空のソーダボトルと木製のダボでできており、庭の支柱に吊るされています。

プロジェクトの構築:

Arduino101埋め込みバードフィーダー。

このプロジェクトの基盤は、鳥の餌箱に埋め込まれたArduino101です。鳥の餌箱は屋外にあり、屋外にいるという物理的な厳しさに耐えることができる必要があります。データをリアルタイムでワイヤレスで送信する方法が必要になります。送信側のArduino101と受信側のEdisonの間の距離はわずか数フィートで、Arduino 101にはすでにBLEが搭載されているため、BLEを使用します!

ほとんどの回路はフリッツの図に従って構築できますが、この回路の作成とテスト中に遭遇したいくつかの課題がありました。ここで集中するのはこれらです:

  • 最初の課題:屋外の餌箱で鳥を検出する!このプロジェクトでは、屋外で機能し、要素に対して密閉されたセンサーが必要です。被写体を邪魔したり怖がらせたりしたくありません。とまり木にあるものだけを検出する必要があります。さまざまなセンサーの特性を評価した後、シャープGP2Y0D815Z0Fデジタル距離センサーを備えたPololuキャリアを使用することにしました。これらのセンサーは、通常のPIRセンサーとは異なり、検出範囲が非常に短くなっています。鳥がセンサーから数センチ離れたところにとまっているのかどうかだけを知りたいのです。 PIRセンサーは、非常に長く幅広い検出範囲を備えています。これは、家の私道でのあらゆる種類の動きを検知するのに最適ですが、鳥の餌箱がそよ風に揺れるたびに木の枝やその他の「ノイズ」を検出する必要はありません。また、簡単なベンチトップ評価では、SharpIRセンサーがプラスチックのソーダボトル内に配置されたときに機能することが示されました。電子機器を要素から保護し、エンクロージャーのこの部分を「透視」できるようにする必要があるため、これは重要です。
  • 2番目の課題:センサーの1つを接続してテストした後、準備が整いました。そこで、2番目のSharpIRセンサーをArduino101とに接続しました。 。 。彼らはうまくいきませんでした!コードをチェックした後、何度も繰り返します。いくつかのボードと異なるセンサーをチェックした後、これら2つのセンサーを一緒に動作させるものは何もありません。そのため、私たちは最初の大きな課題に直面しました。別のタイプのセンサーを試す必要がありますか?スズキの鳥の餌箱を1つ作る必要がありますか(ラメ!)、どうすればよいですか?必死になって、最初にすべきことを実行し、Webサイトを確認しました。製品のよくある質問で、次のことがわかりました。 このセンサーは期待どおりに動作していません:断続的に検出されていますセンサーの最大範囲よりも遠く、アドバタイズされた検出範囲内のオブジェクトを検出していません。何が問題なのですか? このような問題は、電源の問題の結果である可能性があります。特に、このセンサーは短時間で大きなバーストで電力を消費するため、電源が必要な電流を供給できることを確認してください。この問題が発生した場合は、センサーの電源とセンサーの近くのアースの間に10 µF程度のコンデンサを追加してみてください。これにより、不十分な電源が補われ、通常は通常の機能が復元されます。 問題が解決しました!各センサーに47uFの電解コンデンサを追加しましたが、機能しましたが、もう1つ注意が必要ですが、両方をボードの+ 5Vピンから直接供給する必要がありました。一方のセンサーの+ 5Vラインからもう一方のセンサーへの+ 5V電源。私たちはEEではないので、これを説明することはできません。屋内と屋外の両方で機能することがわかっただけです。
  • 3番目の課題:Project FeederWatch Webサイトの関連アクティビティと学習セクションで推奨されるアクティビティの1つは、各カウントの前後にフィーダー内の鳥の種を量り、食べられた種の量を計算することです。数回カウントした後、平均消費率を計算します。手動で重み付けを行う代わりに、自動化された方法でシード消費量をキャプチャしてみませんか?私たちの解決策は、力に敏感な抵抗器(FSR)を使用することでした。これは、加えられた力によって抵抗が変化する抵抗器です。アナログ入力ピンに接続できます。しかし、シード量の変化を検出するのに十分な感度がありますか?小さなプラスチック容器の種子レベルを測定する最初の試みは、あまり成功しませんでした。センサーは、指の圧力の変化にはよく反応しましたが、シードレベルには反応しませんでした。そこで、問題を解決するために2つの変更を加えました。まず、アナログ信号は2抵抗の分圧器を介してArduino 101アナログピンに送られます。1つはFSRで、もう1つは従来の抵抗です。この2番目の抵抗の値を下げると、センサーはタッチに対してより敏感であるように見えましたが、それでもシードの変更に対して希望するほど応答しませんでした。したがって、これらすべてにハードウェアの変更を追加しました。パスカルの原理とある程度類似しているため、FSRの表面全体にシードの重みを加える代わりに、中心に小さな接触点を持つプラットフォームを作成すると、シードからの力が大幅に増加します。 FSR。スノーシューの正反対で、うまくいきました!
<図>

もう1つの小さな課題は、FSRをArduino101に安全で信頼できる方法で接続することです。これは、2ピン3.5mm端子台を使用することで簡単に解決できます。端子台の間隔がボードの間隔と一致していることを確認してください。

<図>

Arduino101ハードウェアの残りの部分は単純です。 Adafruit Si702ブレークアウトボードをI2Cバスピン()に接続し、空の+ 3.3Vを電源に使用しました。パッケージ全体に電力を供給するために、メインエンクロージャーの下に収納された4XAAの切り替え可能なバッテリーパックを使用します。

IRセンサーとFSRセンサーをAdafruitPerma-ProtoクォーターサイズのブレッドボードPCBにはんだ付けし、両面テープでArduino101の下側に取り付けました。パッケージ全体がソーダボトルの鳥の餌箱の中に置かれ、氷点下の氷点下の気温、霧と小雨、雪(偽の吹雪「ステラ」!)に耐えてきました。

Arduino 101スケッチ:

スケッチの主な仕事は、接続されているセンサーを監視し、BLEを介してセンサーの値を報告することです。 BLE内のすべてのデータは、バイトのパッケージとして送信されます。元のデータがcharの配列のintfloatであるかどうかに関係なく、BLEを介して送信するには、データをバイト表現に分解する必要があります。これを行うために私が知っている最も簡単な方法は、データ型の和集合を作成することです。共用体を使用すると、2つの異なるデータ型間で同じメモリ位置を共有できます。私たちの場合、SI7021温度および湿度センサーは浮動小数点数としてデータを提供します。 Arduino C言語はフロートを4バイトとして表すため、温度フロートと湿度フロートの和集合と4バイトの配列を作成します。

  / ** * unionディレクティブを使用すると、これらの変数が同じメモリ位置を共有できます。 Cでの共用体ディレクティブの使用の詳細については、*チュートリアルImu to You!(https://www.hackster.io/gov/imu-to-you-ae53e1?team=18045)チュートリアルを参照してください。 * / union {float t; unsigned char bytes [4]; } tempData;共用体{フロートh; unsigned char bytes [4]; }湿度データ;ユニオン{​​intf; unsigned char bytes [2]; } feedData;  

浮動小数点値をユニオンに格納すると、バイト配列にもデータが入力されます。データを送信するために、バイトの配列をこれらの特性のsetValue()関数に渡します。

組み込みアプリケーションの場合、delay()関数を使用すると問題が発生する可能性があります。まず、遅延関数が呼び出されている間、すべてのプロセッサアクティビティは遅延期間中停止します。これは、鳥がいつでも止まる可能性がある場合には理想的ではありません。 2番目の問題は、delay()関数がBLE通知メカニズムで問題を引き起こす可能性があることです。これを回避する方法は、スケッチでdelay()を使用しないことです。ただし、多くの場合、コードプログラムの遅延が必要になります。これを克服するために、AdafruitのBillEarlによるこの3つのスーパーチュートリアルのセットでメソッドの概要を使用します。

概要として、組み込みデバイスを表すオブジェクトを作成します。このデバイスに接続されているセンサーをポーリングする間隔または間隔のセットを決定します。次に、Update()関数を作成します。

  void Update(){// Serial.print( "Feed Sensor:"); Serial.println(analogRead(A0)); //止まり木アクティビティの更新/通知は時間と近接センサーに依存しますcurrentPerchMillis =millis(); if((currentPerchMillis-previousPerchMillis)> perchInterval){previousPerchMillis =currentPerchMillis; currentLeftPerch =digitalRead(LEFT_PERCH); currentRightPerch =digitalRead(RIGHT_PERCH); if((currentLeftPerch ==0)&&(previousLeftPerch ==1)){//左パーチの新しいアクティビティ// BLE通知perchCharacteristic.setValue(1); Serial.println( "LEFT PERCH ACTIVITY"); previousLeftPerch =0; } ...}  

この関数は、センサーの時間間隔が経過したかどうかを確認するのに役立ちます。経過した場合は、センサーを無視するだけでなく、更新します。 Update()関数は、スケッチのloop()セクションで繰り返し呼び出されます。

  void loop(){//メインコードをここに配置して、繰り返し実行します:blePeripheral.poll(); birdFeeder.Update(); }  

これにより、センサーを使用してリアルタイムのマルチタスク効果をエミュレートします。

Intel EdisonおよびArduinoブレイクアウトボード:

Intel Edisonを使用する上で最も難しいのは、セットアップを行うことです。これについて私が見つけた最高のチュートリアルは、VincentWongのIntelEdisonとIntelXDK IoT Edition 101です。このプロセスを実行し、JavaScriptの例のいくつかを試す価値があることを保証できます!

Intel XDK IoTエディションを使用してEdisonを操作すると、コマンドラインでEdisonを操作および構成できます。また、多くのJavaScript / Nodeサンプルプログラムとテンプレートを利用できるようになります。 JavaScript / Nodeを学習して使用することで、PubNub、Noble.js、Cloudinaryなどの使いやすく強力なAPIが多数開かれます。

エジソンをセットアップし、WiFiネットワークへのアクティブな接続を確認したら、このプロジェクトに必要なライブラリをインストールできます。

npm install noble

npm install pubnub

npm install cloudinary

USBウェブカメラ

「インテルエジソンウェブカメラ」をグーグル検索すると、いくつかのすばらしい例とチュートリアルが得られます。しかし、そこにはいくつかの紛らわしい資料があります。これは主に、YoctoOSで使用可能なモジュールのいくつかの変更によるものだと思います。 Yoctoは、Inteledisonを実行するLinuxの組み込みバージョンです。 Logitech c270は、uvcvideo互換のWebカメラです。 Edisonにuvcvideoドライバー/モジュールがインストールされていることを確認するためのチュートリアルが多数あります。これがないと、カメラを操作したり写真を撮ったりすることができません。

Intel EdisonのWebカメラからs3にアップロードして次の手順を使用し、EdisonでWebカメラを動作させました。万が一古くなった場合に備えて、このブログ投稿の手順を以下に投稿しました。

Edisonを使用すると、XDKシリアルターミナルタブのコマンドラインで次の手順が実行されます。

「いくつかの追加パッケージを使用します。これらは opkg を使用してインストールできます。 パッケージマネージャー。 viを使用したリポジトリの編集リストの最初の場合:

vi /etc/opkg/base-feeds.conf

ファイルにこれらの行がすべて含まれていることを確認してください:

src / gz all http://repo.opkg.net/edison/repo/all src / gz edison http://repo.opkg.net/edison/repo/edison src / gz core2–32 http:// repo。 opkg.net/edison/repo/core2-32 src intel-iotdk http://iotdk.intel.com/repos/3.0/intelgalactic/opkg/i586

次に、パッケージキャッシュを更新します:

opkgアップデート

そして、usbuvcカメラをサポートするカーネルモジュールをインストールします。

oppkg install kernel-module-uvcvideo

次に、WebカメラをUSBポートに接続し、このコマンドを実行します。

ls -l / dev / video *

カメラが正常に検出されると、出力は次のようになります。

crw-rw ---- 1ルートビデオ81、0 Jul 25 09:35 / dev / video0

ウェブカメラを使用してスケジュールどおりに写真を作成するには、2つの追加パッケージをインストールする必要があります。

oppkg install fswebcam cronie

***このプロジェクトではcronieをインストールせず、opkg instalfswebcamをインストールしただけであることに注意してください。時限スケジュールではなく、とまり木で鳥がIRセンサーを作動させるたびに、fswebcamと呼ぶので、cronieは必要ありません***

カメラでの作業

カメラをテストするには、次のコマンドを実行します:

fswebcam -r 1280x720 --jpeg 100 -D 3 -S 13 "test.jpg"

  • -r 1280x720 画像の解像度を設定します。カメラで利用可能な最大値を使用することをお勧めします(オプション)
  • — jpeg 100 JPEG品質を最大に設定します。後でこれらの画像を使って何かをする場合に便利です(オプション)
  • -D 3 -S 13 3秒の遅延を追加し、最初の13フレームをスキップします。一部のウェブカメラは最高の写真を取得するのに時間がかかるため、これが必要です(推奨)
  • test.jpg 出力ファイルの名前です "

エジソンでのWebカメラの使用に関する追加情報、およびその他の非常に優れたプロジェクトについては、キム博士のgithubページを参照してください。彼女はまた、Hackster.ioにもクールなプロジェクトを投稿しています!

適切なモジュールが存在することを確認することに加えて、microusbケーブルとUSBポートの間のスイッチをUSBポートの方向に切り替え、Arduinoシールドを電源に接続する必要もありました。コンパクトスイッチング電源-選択可能な出力3-12VDC(Adafruit製品ID:1448)を使用しました。

<図>

次に、SDカードをSDカードスロットに挿入します。 シリアルターミナルの使用 Intel XDKでは、コマンドラインを使用して次のコマンドを入力してカードを確認します。

cd / media / sdcard

ls

これにより、カードに存在するファイルが表示されるか、ファイルが存在しない場合は何も表示されません。エラーメッセージは表示されないはずです。エラーメッセージが表示された場合は、次のコマンドを入力して、SDカードを取り外さずにEdisonボードを再起動することをお勧めします。

再起動

次に、エジソンに再度ログオンした後、上記のコマンドを繰り返します。

ここで、EdisonがBluetoothにアクセスできるようにするには、次のコマンドを入力します。

rfkill unblock bluetooth

Bluetoothがオンで機能していることを確認するには、次のように入力します。

bluetoothctl

次に、「

」と入力します

スキャンオン

これにより、近くのBLEデバイスが次のように表示されます。

<図>

ここでbluetoothctlを終了し、[Intel XDK IoT]タブをクリックして、ボードに接続します。 BLESCANなどの左側のメニューからプロジェクトを選択します。 index.jsの内容を削除し、package.jsonファイルから依存関係を削除します。

index.jsの内容を、ここにあるgithubリポジトリのプログラムに置き換えます。このコードをエジソンにアップロードします。 Arduino 101がオンになっていることを確認し、Edisonコードを実行します。エジソンがArduino101を検出すると、次のように表示されます。

<図>

コード:

Edisonで実行されるコードは、JavaScriptまたはより適切にはNode.jsで記述されています。インポートしたライブラリから必要なオブジェクトを作成した後、Arduino101で実行されているBLEサービスを表す変数を作成します。

noble.js

  //貴族のBLEサービスと特性//これらは周辺機器のサービスと特性UUIDに対応する必要があります//(この場合はArduino 101)var LOCAL_NAME ='bird'; var SERVICE_UUID ='917649a0d98e11e59eec0002a5d5c51b'; //ダッシュなし!!!! var PERCH_UUID ='917649a1d98e11e59eec0002a5d5c51b'; var TEMPERATURE_UUID ='917649a2d98e11e59eec0002a5d5c51b'; var HUMIDITY_UUID ='917649a3d98e11e59eec0002a5d5c51b'; var FEED_UUID ='917649a4d98e11e59eec0002a5d5c51b';  

これらのUUIDはnoble.jsによって使用されます。 ArduinoでUUIDを変更する場合は、ここでも変更する必要があります。 noble.jsが正しく機能するためにダッシュがないことを確認することが重要です。

noble.jsを使用するには、周辺BLEデバイスをスキャンし、それらを検出して接続する必要があります。接続したら、上記のUUID定義を使用して、使用可能な特性を実行します。特性はすべて読み取り/通知特性です。

  noble.on( 'discover'、function(peripheral){console.log( 'Found BLE Device:[' + Peripheral.id + ']' + peripheral.advertisement.localName); if(peripheral。 Advertising.localName ==LOCAL_NAME){console.log( 'Found:' +周辺機器.advertisement.localName);} peripheral.connect(function(error){console.log( '周辺機器に接続:' +周辺機器.uuid); noble.stopScanning(); //「漂遊」サービスを取得できないようにするperipheral.discoverServices([SERVICE_UUID]、function(error、services){console.log( 'services:' + services.length); var feederService =services [0]; console.log( 'Bird Feeder Service!'); feederService.discoverCharacteristics([]、function(error、characteristics){characteristics.forEach(function(characteristic){console.log( 'characteristic UUID:' + character .uuid); character.on( 'data'、function(data、isNotification); ){transformRawData(characteristic.uuid、data); }); character.notify( 'true'、function(error){if(error)throw error;}); }); }); }); }); });  

上記のコードセクションから指摘する2つの重要な要素があります。まず、これが読み取り/通知の特性であることをnoble.jsに伝える方法に変更がありました。 Sandeep Mistryのgithubページから:

データ

characteristic.read(...)の結果である特性読み取りが完了したときに発行されます または、特性値が通知または表示を介してペリフェラルによって更新されました- notify(true [、callback(error)])で有効にされた後 。

character.on( 'data'、callback(data、isNotification));

character.once( 'read'、callback(data、isNotification)); //レガシー

変更は「読み取り」から「データ」になります。ここで、古いバージョンのnobleを誤って使用してから、最新バージョンを変更すると、いくつかの問題が発生しました。何が起こったのかを理解するのに何時間もかかったので、私たちはあなたがこれを回避するのを潜在的に助けたかったのです

ここでのもう1つのキーは、関数transformRawData(characteristic.uuid、data)です。この関数は、読み取りから配信されたuuidとデータを取得し、それを大きくて扱いにくい関数に渡します。特性の変更によってBLE通知メカニズムがアクティブ化されるたびに、この関数が呼び出され、受信したデータを処理します。ここですべての興奮が起こります。

tranformRawDataは、受信された特性を確認します。

Arduinoがとまり木で活動していると言った場合は、写真を撮りたいと思います。この場合、child_processライブラリを使用して、外部のYocto(linux)システムにあるプログラムfswebcamを呼び出します。 child_processライブラリを使用すると、node.jsコード内からコマンドライン関数を実行できます。これは非常に強力な機能です。

  childProcess.execFile( 'fswebcam'、['-r 1280x720'、fileName]、function(error、stdout、stderr){console.log(stdout););  

PubNubとCloudinary:

この関数は、PubNubとCloudinaryが機能する場所でもあります。 PubNubは、アプリケーションにリアルタイムのデータストリーミングネットワークを提供します。これが意味するのは、インターネット接続があれば、アプリケーションは世界中のどこにでもデータをライブストリーミングできるということです。公開されたストリームへのサブスクリプションキーを持つ他のアプリまたはプログラムは、データを表すJSONペイロードにアクセスできます。私たちの場合、現在のシードレベル、温度、湿度、スズキの訪問数を送信します。さらに、フィーダーの最新の3枚の写真へのリンクを送信します。これらは、私たちのプログラムでCloudinaryにアップロードされたjpegです。サーバーを実行する必要はありません! JavaScriptが埋め込まれたシンプルなHTMLファイルは、PubNubの好意により鳥の餌箱へのリアルタイムインターフェースとして機能します!

<図>

上の写真では、PubNubを介して鳥の餌箱とやり取りするためのコードを含むHTMLファイルを自分宛てに電子メールで送信し、それぞれをローカルディレクトリからChromeブラウザにロードしました。エジソンでこのページを提供するためにサーバーをコーディングする必要はありません。

Cloudinaryは、画像のアップロード、保存、変換サービスです。非常に使いやすいAPIを備えています。このプロジェクトの開発では、より簡単でわかりやすいAPIを見つけることができませんでした。そこに匹敵するものはありません。彼らのヘルプデスクも素晴らしいです。それは間違いなくあなたがあなたのプロジェクトのためにチェックしたいと思うものです!

以下のコードでは、cloudinary apiを使用して、ローカルSDカードから最新の3つの画像をアップロードしています。このアップロードから返されたURLは、配列に保存されます。これらのURLは、JSONペイロードの一部としてPubNubに送信され、HTMLページからアクセスして表示できるようになります。美しさ、え?

index.html

このindex.htmlファイルとは何ですか? index.htmlファイルがUIです。 PubNubを使用してデータをストリーミングし、Cloudinaryを使用して一般にアクセス可能なURLに画像を配置しているため、Javascript / HTML / CSSパワートリオを利用してポータブルUIを作成できます。 PubNubとCloudinaryはどちらも、非常に使いやすく強力です JavascriptAPI。それらを使用するには、htmlファイルにインポートするだけです:

      

PubNubオブジェクトを作成するときに、データストリームへのサブスクライブキーを指定します。このオブジェクトは、このストリームを公開するたびにリアルタイムでデータストリームにアクセスできます。

  

製造プロセス

  1. DHT Tiny Breakout for the Raspberry Pi
  2. RaspberryPiのHC-SR04超音波距離センサー
  3. ラズベリーパイに最適なアクセサリー
  4. 視力:視覚障害者向け
  5. IntelがUdacityにAIontheEdgeの学位を授与するよう要請
  6. 充填アプリケーションに適切なセンサーを選択する方法
  7. 航空宇宙用センサーフィルム
  8. ISS用のWiFiRSSIセンサートラッカー
  9. 新しい数学ツールは、仕事に最適なセンサーを選択できます
  10. インダストリー4.0のための5Sメソッドの挑戦
  11. Intel Edison IoT:IoTプロトタイプにIntelEdisonを選択する方法