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

モノのインターネット(IoT)ベースのソーラートラッカー

コンポーネントと消耗品

>
Arduino Mega 2560
× 1
Arduino用のイーサネットシールド(Wiznet W5100)
× 1
SG90マイクロサーボモーター
× 2
LDR、5オーム
× 4
DHT22温度センサー
× 1
ミニソーラーパネル
× 1
抵抗330オーム
× 4
スルーホール抵抗、10オーム
× 2
抵抗220オーム
× 1
5 mm LED:赤
× 1

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

>
myDevices Cayenne
Arduino IDE

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

このプロジェクトは、パフォーマンス評価のためにスマートな2軸ソーラートラッカーシステムを監視および制御するためのシンプルで低コストのIoTソリューションを提供します。

提案されたIoTベースのソーラートラッカーシステムを図1に示します。これは、LDRセンサーを使用して太陽の位置を追跡するために自動的に回転するか、IoTアプリケーションのダッシュボードを介してユーザーが手動で回転できる2軸ソーラートラッカーです。システムは、LDRセンサーによって太陽の位置(光の強度)を検出することから始まり、データをコントローラー(Arduino Megaボード)に送信します。この後者は、これらのデータを処理して、PVパネルを太陽に向かって回転させるサーボモーター(SM1およびSM2)に命令します。生成されたPV電圧と電流、温度、湿度の値も、関連するセンサーを介してArduinoに送信されます。次に、Arduinoが搭載され、インターネットに接続できるようにするイーサネットシールドは、Arduinoによって取得および/または処理されたデータをクラウド(Webサーバー)に送信します。最後に、LDRセンサー、PV電力、温度、湿度などのソーラートラッカーデータは、事前に作成されたウィジェットを介してIoT監視アプリケーションにリアルタイムで表示されます。 IoT監視アプリケーションは、CayennemyDevicesplatformを使用して設計されています。ユーザーが自分のコンピューターまたはスマートフォンからインターネットに接続すると、IoTアプリケーションのダッシュボードで、関連するウィジェット内のすべてのソーラートラッカーデータを視覚化できます。したがって、ユーザーは、PVパネルの環境とパフォーマンスにリンクされた必要なデータを持っています。さらに、手動モードでは、サーボモーターはダッシュボードの関連するウィジェットから角度方向を取得します。したがって、ユーザーは自分のシステムを制御して、最適な環境条件を探し、PVパネルから最大のエネルギーを引き出すことができます。 IoTアプリケーションは、センサーが事前定義されたしきい値に達したときに通知アラート(SMSまたは電子メール)を送信するようにもプログラムされています。

<図>

ハードウェアの設計

図2に示すように、IoTソーラートラッカーシステムは、PVパネル、2つのサーボモーター、4つのLDRセンサー、分圧回路、温度および湿度センサー、LED、およびArduinoMegaボードで構成されています。

<図>

使用されているPVパネルは115mm x 85mmのサイズで、出力は1.6 Wで、最大6 Vの電圧を生成できます。2つの180度サーボモーターを使用してソーラートラッカーをモ​​ーター化し、ArduinoボードによってPWMピン5と6.左右(LR)サーボモーター(MG996R)はソーラートラッカーを垂直軸(東/西)で回転させ、アップダウン(UD)サーボモーター(SG90)はソーラートラッカーを水平軸(南/北)。

4つのLDR(Cds GL5528)は、太陽の位置を感知するために使用され、パネルの四隅に固定されています。 LDRセンサーは、A0からA3までのアナログピンを介してArduinoに接続されています。 LDRは、その表面に入射する光の強度が増加するにつれて値が減少する抵抗器です。 LDRセンサーは、図2に示すように、分圧回路として設計されています。分圧器の出力電圧は、Arduino Megaのマイクロコントローラーによって、アナログ値から0〜1023のデジタル値に変換されます。マイクロコントローラのコンバータ(ADC)は10ビットでコード化されています。 LDRセンサー回路の直列抵抗の値は330Ωです。

温度と湿度はDHT22センサーを介して測定されます。 DHT22には、温度と相対湿度を測定するためのサーミスタと静電容量式湿度センサーが組み込まれています。その温度範囲は-40から80°Cで<±0.5°Cの精度であり、湿度範囲は0から100%で±2%(最大±5%)の精度です。このセンサーは、1本の信号線を使用してArduino(デジタルピン2)にデータを送信し、2本の線を電源に使用します。

PVの電圧と電流は、負荷としても機能し、10オームの2つの直列抵抗で構成される分圧回路を介して測定されます。分周回路の出力は、ArduinoのアナログピンA4に接続されています。さらに、デジタルピン3に接続されたLEDは、システム回路でソーラートラッカーのモード状態(手動または自動)を反映します。

Arduino Mega withATmega2560マイクロコントローラーは、監視プラットフォームとともにArduinoイーサネットシールドと相互作用する組み込みコントローラーとして使用されます。 Arduinoボードの上に取り付けられているイーサネットシールドは、図3に示すように、RJ45ケーブルを介してWi-Fiルーター(またはPC)に接続する必要があります。イーサネットシールドは、WiznetW5100イーサネットチップに基づいています。 TCPおよびUDPプロトコル用のネットワーク(IP)スタック。

<図>

ソフトウェア設計

a。 Arduino IDE

Arduinoは、使いやすいハードウェアとソフトウェアを備えたオープンソースの電子機器プロトタイピングプラットフォームです。 Arduinoプラットフォームは、CおよびC ++プログラミング言語のサポートを含む統合開発環境(IDE)を提供します。この作業で使用されるArduinoボードは、コードエディターとして機能するIDEによってプログラムされ、図3に示すように、プログラムコードをUSBケーブルを介してマイクロコントローラーにアップロードできます。ArduinoMegaボードが使用されます。 IoTベースのソーラートラッカーのすべてのソフトウェア要件を実装します。

b。 myDevices Cayenne

MyDevicesは、IoTソリューションを提供する会社です。 IoT向けのエンドツーエンドのプラットフォームを提供します。私たちのプロジェクトでは、myDevicesのソリューションの1つであるCayenneに焦点を当てます。このツールを使用すると、開発者、設計者、エンジニアはIoTのプロトタイプを作成できます。 Cayenneは、Message QueuingTelemetry Transport(MQTT)プロトコルを使用して、任意のデバイスをCayennecloudに接続します。接続すると、ユーザーは作成されたウィジェットを介してデバイスからカイエンダッシュボードにデータを送受信できます。 MQTTは、TCP / IPプロトコルに基づくパブリッシュ/サブスクライブメッセージングプロトコルです。パブリッシュ/サブスクライブ方法では、クライアントへのメッセージの配信を担当するメッセージエージェントを使用します。 MQTTは、カイエンクラウドまたはカイエンが制御するデバイスに情報を送信するためのAPIです。この接続のメッセージエージェントはクラウドであり、データを送受信するさまざまなクライアント(センサーとアクチュエーター)を管理します。

カイエンでMQTTを使用するには、カイエンライブラリを使用する必要があります。 Arduinoの場合、CayenneMQTTライブラリはIDEのライブラリマネージャからインストールできます。 Cayenne IoTプラットフォームベースのIoTアプリケーションをプログラムするために、事前定義された機能を利用します。たとえば、Cayenneクラウドとイーサネットモジュールを搭載したArduino Megaの間の接続を確立するには、CayenneMQTTEthernetライブラリを呼び出し、Cayenneダッシュボードから取得する認証情報(ユーザー名、パスワード、クライアントID)を宣言します。次に、プログラムのセットアップ部分で、 Cayenne.begin()を呼び出します。 Cayenneダッシュボードとの接続を確立する機能。アクチュエータごとに、0〜31の整数パラメータを持つ関数を作成します。 CAYENNEIN(VIRTUAL CHANNEL)と呼ばれます。 。センサーごとに、0〜31の整数パラメーターを持つ関数を作成します。 CAYENNE_OUT(VIRTUAL_CHANNEL) 。プログラムのループ部分では、事前定義された関数 Cayenne.loop()を呼び出します。 、この関数自体が関数 CAYENNE_OUT を呼び出します および CAYENNE_IN。 その名前が示すように、仮想チャネルは物理的に存在しないチャネルであり、視覚化またはコマンドウィジェットを特徴づけます。対応するセンサーまたはアクチュエーターとリンクさせることができます。

c。 埋め込み ソフトウェア設計

組み込みソフトウェアは、イーサネットモジュールとCayenneクラウドの間で相互作用するためにArduino Megaに組み込まれる部分です(付録を参照)。次のように設計されています:

(i) IoTベースのソーラートラッカーには、手動と自動の2つの機能モードがあります。カイエンダッシュボードで作成されたボタンには、2つのモードを切り替える役割があります。非アクティブの場合は手動モードが選択され、それ以外の場合は自動モードが選択されます。さらに、ボタンの状態を回復できる機能がArduinoコードで確立されています。システム回路のLEDは、このスイッチの状態を反映しています。

したがって、コントローラが選択された動作モードを知るためには、LEDが接続されているピンの状態をテストする必要があります。たとえば、LEDの状態が低い場合、コントローラーは手動モード機能を呼び出して実行します。それ以外の場合、コントローラーは自動機能を呼び出します。

(ii) 手動モードを選択した場合、ユーザーはサーボモーターの位置を直接制御して、PVパネルをL-Rサーボモーターで東から西に、またはU-Dサーボモーターで南から北に向けることができます。制御は、IoTアプリケーションのダッシュボードにあるサーボモーターの関連ウィジェットから行われます。

このモードでは、コントローラーは Cayenne.loop()を呼び出します。 それ自体がすべての関数を呼び出す関数 CAYENNE_IN 、サーボモーターに関連するものを含め、実行します。 Cayenne.loop() 関数は、センサーにリンクされているすべての関数CAYENNE_OUTを呼び出して実行します。 LDRセンサーに関連するデータ、PV電流、電圧と電力、温度と湿度がサーバーに送信され、IoTアプリケーションの関連するウィジェットで視覚化できるようになります。

(iii) 自動モードを選択すると、図4に示すアルゴリズムが実行されます。アルゴリズムは、LDRセンサーから返されたアナログ値を読み取ることから始まります。次に、これらのデータを処理して、PVパネルを太陽の位置に向かって動かすサーボモーターに命令します。垂直軸ベースのソーラートラッカーの動きを考慮して、左側の2つのLDRと右側の2つのLDRの平均値が比較され、左側がより多くの光を受け取ると、PVパネルはその方向(時計回り)に移動しますLRサーボモーターを介して。後者は、差の結果が-10と10の間にあるときに停止します。この範囲は、コントローラーを安定させ、サーボモーターの消費電力を削減するために使用されます。それ以外の場合、適切なLDRのセットがより多くの光を受け取ると、PVパネルはL-Rサーボモーターを介してその方向(反時計回り)に移動し、差の結果が[-10、10]の範囲になるまで回転し続けます。同じアプローチが水平軸ベースのソーラートラッカーの動きに使用され、上部の2つのLDRと下部の2つのLDRの平均値が比較されます。

自動モードと同様に、コントローラーは Cayenne.loop()も呼び出します。 ソーラートラッカーデータをIoTアプリケーションに送信する機能。

<図>

d。 IoT監視アプリケーションの開発

(i) CayenneIoTプラットフォームとのハードウェアインターフェース

センサーやアクチュエーターなどのハードウェアをIoTプラットフォームとインターフェースするには、次の手順に従う必要があります。

+アカウントを作成した後、Cayenne myDevice Webサイトにログインします(図5(a))。

+次に、Cayenne APIの「BringYourOwnThings」をクリックします(図5(b))。

<図>

+ MQTTクレデンシャル(ユーザー名、パスワード、クライアントID)をCrete Appからコピーし(図6)、前述のようにArduinoソースコードに貼り付けます。コード全体を正常にコンパイルしてArduinoMegaにアップロードしたら、Arduino IDEでシリアルモニターを開いてカイエンのログプリントを取得します(図7)。デバイスがオンラインになり、Cayenneに接続するとすぐに、前のページ(図6)が自動的に更新され、図8に示すように、オンラインダッシュボードにデバイスが表示されます。

<図>

<図>

<図>

+次に、センサーとアクチュエーターをインターフェースする、つまりウィジェットを作成するには、[新規追加...]をクリックし、[デバイス/ウィジェット]を選択して[カスタムウィジェット]をクリックします(図9)。次に、ウィジェットを選択し、関連するすべての設定を入力します。 (チャネル番号はコードと同じである必要があります)最後に、[ウィジェットの追加]をクリックして、デバイスのダッシュボードに追加します。すべてのセンサーに「値」ウィジェット、「ボタン」ウィジェットを選択しました。モードスイッチとサーボモーター用の「スライダー」ウィジェット用。

<図>

最後に、図10は、ソーラートラッカーデータを監視するために設計されたIoTアプリケーションを示しています。ソーラートラッカーシステムとの接続が確立されると、センサーデータは関連するウィジェットで視覚化でき、追跡モード(自動または手動)はスイッチボタンから選択でき、ウィジェットを介してサーボモーターの角度を制御できます。センサーデータは、設定で表現タイプを変更するか、ウィジェットの上にあるグラフアイコンをクリックするだけで、グラフィック形式で取得することもできます。

<図>

(ii)アラートの作成

監視システムで最も重要な基準の1つは、監視対象デバイスに関連するイベントが発生したときにユーザーに通知する通知アラートを送信する機能です。この目的のために、Cayenneの機能の1つを利用して、IoTアプリケーションにアラートを追加します。このアプリケーションでは、通知アラート(SMS、電子メール、またはその両方)を送信したり、指定されたアクションを実行したりするようにアプリケーションを事前にプログラムできます。たとえば、図11に示すように、監視対象の温度がしきい値に達したときにユーザー(または受信者)に電子メール通知を送信するために温度アラートが作成されます。アラートを作成するには、[新規追加]をクリックします。 ..」をクリックして「トリガー」を選択し、イベントとそのアクションを設定し、最後に「保存」をクリックしてダッシュボードに追加します。

<図>

プロトタイプ

図12は、ソーラートラッカーのプロトタイプを取り外して組み立てた状態で示しています。これは、PVパネル、-RおよびU-Dサーボモーター、およびLDRセンサーで構成されています。パネルは片側がU-Dservomotorに取り付けられ、反対側がベアリングで取り付けられているため、ソーラートラッカーが水平軸を中心に回転するときの柔軟性が向上します。アセンブリはL-Rサーボモーターに取り付けられています。 LDRセンサーは、中空シリンダー内のパネルの四隅に固定されています。パネルが太陽に対して垂直でない場合、少なくとも1つのLDRは、周囲の円柱によって引き起こされる影で覆われます。したがって、光の強度に違いがあります。最適な方向は、すべてのLDRセンサーで光の強度が等しい場合です。図13は、IoTベースのソーラートラッカーシステムのプロトタイプ全体を示しており、ハードウェア部分で報告されたすべてのコンポーネントがそれを構築するために使用されたことは明らかです。

<図>

<図>

得られた結果の詳細については、次のリンクの論文を参照してください:https://link.springer.com/chapter/10.1007%2F978-3-030-64565-6_4

コード

  • IoTベースのソーラートラッカーシステムの埋め込みコード
IoTベースのソーラートラッカーシステムの埋め込みコード Arduino
 / ********************************************** *****************プロジェクト:IoTベースのソーラートラッカーシステム/組み込みソフトウェアAboubakr El Hammoumi / [email protected] ********* ************************************************** **** /#define CAYENNE_PRINT Serial#include  // CayenneMQTTライブラリ#include  //サーボモーターライブラリ#include  // DHTライブラリ#defineDHTTYPE DHT22#define DHTPIN 2DHT dht(DHTPIN、DHTTYPE); // MQTT資格情報charusername [] ="498d2d00-afe2-11ea-883c-638d8ce4c23d"; char password [] ="ab4a8f92d94033c01f6e18ce1d8a84d8c304c9c4"; char clientID [] ="17798a40-b 93bf-d33a96695544 ";サーボservo_x; //上下サーボモーターintservoh =0; intservohLimitHigh =170; intservohLimitLow =10;サーボservo_z; //左右サーボモーターintservov =0; intservovLimitHigh =170; intservovLimitLow =10; int topl、topr、botl、botr; int threshold_value =10; float Vout; void setup(){Serial.begin(9600); Cayenne.begin(ユーザー名、パスワード、clientID); Servo_x.attach(5); Servo_z.attach(6); dht.begin(); pinMode(3、OUTPUT); digitalWrite(3、LOW); } void loop(){topr =analogRead(A2); topl =analogRead(A3); botl =analogRead(A4); botr =analogRead(A5); Vout =(analogRead(A1)* 5.0)/ 1023; Serial.println( "手動モード"); Cayenne.loop(); if(digitalRead(3)==HIGH){Serial.println( "自動モード");サーボh =servo_x.read();サーボv =servo_z.read(); int avgtop =(topr + topl)/ 2; int avgbot =(botr + botl)/ 2; int avgright =(topr + botr)/ 2; int avgleft =(topl + botl)/ 2; int diffhori =avgtop --avgbot; int diffverti =avgleft-avgright; / *横軸に従って追跡* / if(abs(diffhori)<=threshold_value){servo_x.write(servoh); //サーボを上下に停止します} else {if(diffhori> threshold_value){Serial.println( "x-2"); Servo_x.write(servoh -2); //時計回りに回転CWif(servoh> servohLimitHigh){servoh =servohLimitHigh; } delay(10); } else {servo_x.write(servoh +2); // CCW if(servoh  threshold_value){servo_z.write(servov -2); // CW if(servov> servovLimitHigh){servov =servovLimitHigh; } delay(10); } else {servo_z.write(servov +2); // CCW if(servov  

回路図


製造プロセス

  1. 魅力的なモノのインターネット:IoTの実践者を動かすものは何ですか?
  2. 1000万ものインターネット
  3. モノのインターネットにブロックチェーンをもたらす
  4. モノのインターネットがもたらすセキュリティの課題:パート2
  5. サイバーセキュリティとモノのインターネット:将来を見据えたIoTセキュリティ
  6. モノのインターネットの可能性への投資
  7. 本当のモノのインターネット?
  8. モノのインターネット:データの流入を管理する
  9. モノのインターネットが依然として直面している5つの課題
  10. 産業用モノのインターネットの力を解き放つ
  11. Solar Tracker V2.0