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

MediaTeksLinkIt™Smart7688によるゾーン気候制御

コンポーネントと消耗品

>
Espressif ESP8266 ESP-01
× 1
Arduino Nano R3
× 1
Microchip Technology ATtiny85
× 1
DHT22温度センサー
× 1
サーボ(Tower Pro MG996R)
× 1

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

>
Arduino IDE

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

冬が近づいています

去年の冬、妻と私が最初の子供をもうけたとき、私たちは電気ストーブを手に入れて、女の赤ちゃんのすぐ周りを暖かく保ちました。部屋から部屋へと移動するとき、私たちはヒーターを持ってきました。その間、私たちは使用場所の気候制御を非常に効率的に行っていると考えていました。 1か月後、電気代は通常の2倍になり、家全体をガス炉で24時間暖房する方が安かったことに気づきました。

<図>

冬が再びやってきたので、今回はWiFiサーモスタットにアップグレードして、階下にいるときやカバーの下に暖かく隠れているときにヒーターをオンにできるようにしました。これははるかに便利ですが、ほとんどの場合、家の一部にいるにもかかわらず、家全体を暖房しています。

よりスマートに作業する

照明を制御するモーションセンサーのログを見ると、仕事の後に家族で4〜5時間過ごした後、午後9時頃に寝室に行き、翌朝仕事に出るまで寝ていることがわかります。週末は少し異なりますが、月曜日から金曜日は時計仕掛けのように機能します(特に、厳密な睡眠スケジュールで生後10か月の場合)。

<図> <図>

マルチゾーン温度監視とワイヤレス制御可能なダクトバッフルを備えたHVACシステムを見てきましたが、ハードウェアは非常に高価であり、すべてのソフトウェアは後付けのように見えます(テクノロジーが向上するにつれてサポートや更新はほとんどありません)。私の家には、ACユニットコントローラーを使用するためのWiFi対応の温度センサーがすでにいくつかあり、プロジェクトでいくつかの小さなサーボを使用する理由でかゆみを感じています。必要なのは、HVACシステムのダクトベントを開閉できるWiFi接続のサーボだけです...十分に簡単なはずです。

<図>

MediaTekのLinkIt™Smart7688

MediaTekの新しいLinkItSmart 7688 Duo HDKは、オンボードのarduino互換マイクロコントローラーを備えたOpenWRTを実行するWiFi接続マイクロプロセッサーです。複数のセンサーとサーボモーターに必要なすべてのI / Oピンに加えて、既存の温度センサーと通信するためのWiFi機能を備えているため、このプロジェクトに最適です。また、すでにuHTTPdとともにOpenWRTがインストールされているため、完全に自己完結型のパッケージとして、LinkIt Smart 7688HDKで直接WebAppを実行できます。

<図> <図>

LinkIt Smart 7688HDKのセットアップ

WiFiを内蔵したボードを使うのは初めてなので、急な学習曲線に備えていました。幸い、セットアップは文字通り3つのステップです:

  • Linkit Smart 7688の電源を入れ、コンピューターからWiFiアクセスポイントに接続します
  • Webインターフェースにログインし、WiFiアクセスポイントの設定を入力します
  • ArduinoIDEに「LinkItSmart7688Duo」ボードを追加します

それでおしまい! ArduinoIDEで「LinkItSmart7688 Duo」ボードを選択すると、他のすべてのボードと同じようにスケッチをシリアル経由でプッシュするか、WiFi経由でアップロードできます(これは後で非常に便利です)。 Linkit Smart7688入門ガイドと開発者ガイドも役立つ場合があります。

<図>

マイクロコントローラーがarduinoスケッチでWiFiを直接使用できるようにする場合(これは私たちが行います)、HDKにSSHで接続し、少し反転してArduinoYunライブラリとの互換性を有効にします。

<図> <図>

ここから行をコピーして貼り付けることができます:

WiFiクライアントとサーボコントローラー

これはYunブリッジライブラリとの互換性が組み込まれており、Arduino IDEを使用しているため、既存のコードを簡単に適応させることができます。ブリッジライブラリを使用して、HDKにオンボードウェブサーバーのベント構成(2階、2階、または家全体)をポーリングさせ、それに応じて2つのサーボを調整することができます。以下のビデオでは、これをRaspberry Pi 2で実行していましたが、WebAppをLinkIt Smart 7688に移植して、さらに効率的にすることができました(コードは最後に含まれています)。

私のWebAppはphpで実行されるため、LinkIt Smart 7688のOpenWRTに含まれているため、opkgパッケージマネージャーを使用してインストールしました。

次に、次の行を追加して、phpを解釈するように/ etc / config / uhttpdファイルを更新しました。

uHTTPdを再起動しました

ハードウェア

サーボホーンをベントに直接取り付け、ステンレス鋼のスタンドオフでサーボを所定の位置に保持するためのアルミニウムブラケットを製作しました。まだ少し遊びがあるので、これをもう少し永続的にするためにいくつかのジップタイを追加します。

<図> <図>

ソフトウェア

このビルドは、実際には3つのコンポーネントに要約されます。

  • 家中の温度センサーは、LinkIt Smart7688で実行されているuHTTPdWebサーバーに定期的に更新を送信します。
  • LinkIt Smart 7688で実行されているWebAppで、現在の状態を表示し、ベントを手動で再構成できます。
  • LinkIt Smart 7688のMCUは、時間帯に応じて2階または2階に暖かい空気を送るように通気口を制御します。
<図>

温度センサーは、DHT11またはDHT22に接続されたATtiny85sまたはArduino Nanosであり、ソフトウェアシリアルを介してESP8266を介してその温度/湿度情報をWebサーバーに送信します。これらのセンサーは、もともと私のポイントオブユースエアコンプロジェクトのフェーズIIとして設計および開発されたため、ここに完全に記載されています(この部分は完全にオプションですが、調整に使用できる追加のメトリックが提供されますシステムを自動化し、最終的には自動化します。

LinkIt Smart 7688 HDK自体は、屋根裏部屋にあり、ダクトベントに直接接続されています。 OpenWRT側では、cronジョブがベント状態のテキストファイルを更新します。 arduinoスケッチを実行しているMCU側は、このテキストファイルを定期的にチェックし、それに応じてベントを調整します。

通気口のステータスを確認して手動で再構成するために、LinkIt Smart 7688で直接ホストされる小さなWebAppを作成しました。dyndnsとポートフォワーディングを使用すると、必要に応じて家の外からこれらすべてを表示および制御できます。

<図> <図> <図>

改善の余地

夜はすでに寒くなってきたので、私はこれをできるだけ早く機能させる必要があったので、迅速な展開の名の下にいくつかの譲歩が行われました。ハードウェア側では、ハックジョブマウントに少し遊びがあるので、サーボ用の適切なマウントを3Dプリントします。また、デモで使用した小さなRCサーボには、何年も続くとは思わないすべてのプラスチックギアが含まれているので、すぐに屋根裏部屋に戻りたくないので、交換します金属歯車を備えたより大きなサーボのためにそれらを出します。

いつの日か、WiFi接続されたサーボを各部屋の通気口に追加して、それらすべてを単一のLinkIt Smart7688に接続し直す可能性があります。

現在、温度プローブは読み取り値をcsvファイルにダンプしているだけなので、簡単に追跡してグラフ化できます。家が特に寒い場合は、ヒーターを早めに始動するのがいいでしょうが、私のWiFiサーモスタットにはまだAPIがありません。また、ホームオートメーションシステムと連携して、完全に時刻に基づくのではなく、モーションセンサーから得られるリアルタイムの部屋の占有率に基づいて通気口が自動的に調整されるようにします(特に週末は動的なスケジュールのため)。

コード

  • LinkIt Smart DuoWiFiベント
  • WiFi温度センサー
  • Vent.php
  • LinkIt Smart Vent Android WebApp
LinkIt Smart DuoWiFiベント C / C ++
このスケッチでは、Arduino YunのブリッジおよびHTTPクライアントライブラリを使用して、Webサーバーをポーリングし、必要に応じてHVACベントを開閉します。
 / * BARRAGAN とYunによるSweepサーボの例から引用Tomigoeによって作成されたHTTPクライアントの例 **どちらもパブリックドメインにあります。*** Buddy CrottyによるHAI(Home Automation w / Intelligence)に適合したコード**このarduinoスケッチは、すべての面倒な作業をWebサーバーに依存しています。これは、Raspberry Piのような別のデバイスにすることも、LinkIt Smart inOpenWRTのMPU側で実行することもできます。** Webサーバーは、家中から一時的な測定値を収集し、日、外の天気(予報を含む)、および自宅の占有率。**次に、空気を送る必要がある場所に応じて、「上階」、「階下」、または「家全体」を出力します。 * /#include  #include  #include  Servo upservo; // 2階のサーボサーボダウンサーボを制御するサーボオブジェクトを作成します。 //階下のエアベントダンパーサーボintuppos =0; //(2階の)サーボ位置を格納する変数int downpos =0; //階下のサーボ位置constchar * host ="192.168.1.80"; //ホームオートメーションの内部IPWebserverint dopenangle =80; //サーボがventintの開閉の間で回転する必要がある度数dcloseangle =0; int uopenangle =140; int ucloseangle =0; void setup(){upservo.attach(9); // 2階のエアベントダンパーに取り付けられたサーボのピンdownservo.attach(10); //階下のエアベントダンパーに取り付けられたサーボのピン// OpenWRTへのブリッジを開始pinMode(13、OUTPUT); digitalWrite(13、LOW); Bridge.begin(); digitalWrite(13、HIGH);} void Wholesale(){if(downpos <=dcloseangle){//ベントがまだ位置にないことを確認します//階下のベントを開きますfor(downpos =dcloseangle; downpos <=dopenangle; downpos + =1)//設定された閉角度から開角度に一度に1ステップずつ移動します{downservo.write(downpos); delay(20); //サーボが位置に到達するまでステップ間で待機します}} if(uppos <=uopenangle){// 2階のベントを開くfor(uppos =ucloseangle; uppos <=uopenangle; uppos + =1){upservo.write(uppos); delay(20); }}} void downstairs(){if(downpos <=dopenangle){//階下のベントを開くfor(downpos =dcloseangle; downpos <=dopenangle; downpos + =1){downservo.write(downpos); delay(20); }} if(uppos> =ucloseangle){// 2階のベントを閉じるfor(uppos =uopenangle; uppos> =ucloseangle; uppos- =1){upservo.write(uppos); delay(20); }}} void upstairs(){if(uppos <=uopenangle){// 2階のベントを開くfor(uppos =ucloseangle; uppos <=uopenangle; uppos + =1){upservo.write(uppos); delay(20); }} if(downpos> =dcloseangle){//階下のベントを閉じるfor(downpos =dopenangle; downpos> =dcloseangle; downpos- =1){downservo.write(downpos); delay(20); }}} void loop(){HttpClientクライアント; // HTTPリクエストを作成して作成します:String cmd ="http://"; cmd + =ホスト; cmd + ="/vent.txt"; client.get(cmd); //サーバーから着信バイトを読み取りますwhile(client.available()){int c =client.read(); if(c =='2')upstairs(); if(c =='1')階下(); if(c =='0')wholehouse(); } delay(60000);} 
WiFi温度センサー C / C ++
接続された温度および湿度センサー。データを中央のホームオートメーションサーバーに記録します。
 / * * Buddy CrottyによるHAI(Home Automation w / Intelligence)に適合したコード* * HTTPGETリクエストを介してHAIサーバーにデータを送信します**接続はソフトウェアシリアル接続を介してESP8266 WiFi *インターフェースはすでにwLANに接続するように構成されていますが、* WiFi設定のコメントを解除して、SSID /パスワードをリセットできます** / const char * host ="192.168.1.80"; //ホームオートメーションの内部IPWebserverconst char * devID ="downstairs"; //デバイスID(1語、スペースなし、特殊文字なし)#include  SoftwareSerial ser(10、11); //(RX、TX)// ESP8266モジュールを制御するためのソフトウェアシリアル//デバッグ用のハードウェアシリアルlongutime =300000; //更新間の時間// 900000 =15分(バッテリー/ソーラー電源の場合)// 300000 =5分(AC電源の場合)// 5000 =5秒(テストの場合)// ESP8266の場合は10000より長くする必要がありますスリープモードから抜け出す(バッテリーモード)//温度および湿度センサー#include  #define DHTPIN 2 //温度/湿度センサー用のピン#defineDHTTYPEDHT22 // DHT11、DHT22(AM2302、またはDHT21(AM2301 )DHT dht(DHTPIN、DHTTYPE); void setup(){Serial.begin(9600); ser.begin(9600); //ser.listen(); / * //コメントを外してWiFi設定をリセットdelay(1000); ser.println( "AT + CWMODE =1"); ser.println( "AT + CWJAP =\" SSID \ "、\" Password \ ""); * / ser.println( "AT + RST"); / / arduinoがリセットされたためESP8266をリセットdelay(10); dht.begin(); // DHTを開始Serial.println( "すべてにウォームアップの機会を与える"); // WiFiがSerial.println(に接続するまで25秒待つ「」 | ------------------------- | "); Serial.print( "|"); for(int x =0; x <25; x ++){Serial.print( "#"); delay(1000); } Serial.println( "|"); Serial.println( "Done");} float t =0; int h =0; float hi =0; void loop(){Serial.println(); //温度と湿度floatt =dht.readTemperature(true); int h =dht.readHumidity(); float hi =dht.computeHeatIndex(t、h); // ThingSpeak Serial.print( "Temperature:");に送信される出力値Serial.print(t); Serial.print( "* F \ t"); Serial.print( "暑さ指数:"); Serial.print(hi); Serial.println( "* F"); Serial.print( "湿度:"); Serial.print(h); Serial.println( "%\ t"); Serial.print( "...接続中"); Serial.println(host); // TCP接続文字列cmd ="AT + CIPSTART =\" TCP \ "、\" "; cmd + =host; cmd + =" \ "、80"; ser.println(cmd); delay(1000); if(ser.find( "Error")){Serial.println( "AT + CIPSTARTエラー");戻る; } else {} // GET文字列を準備しますStringgetStr ="GET /tempupdate.php?ID="; getStr + =devID; getStr + ="&field1 ="; // Temp getStr + =t; getStr + ="&field2 ="; //湿度getStr + =h; getStr + ="&field3 ="; //暑さ指数getStr + =hi; getStr + ="\ r \ n \ r \ n"; Serial.print( "送信データURL:"); Serial.println(getStr); //データ長を送信しますcmd ="AT + CIPSEND ="; cmd + =String(getStr.length()); ser.println(cmd); if(ser.find( ">")){ser.print(getStr); Serial.println( "Success!"); } else {ser.println( "AT + CIPCLOSE"); Serial.println( "接続に失敗しました"); //ユーザーに警告} Serial.print( "Next update in"); Serial.print(utime / 1000); Serial.println( "seconds"); delay(utime); //更新の合間に待つ} 
Vent.php PHP
ステータスを確認し、ベント構成を手動でオーバーライドします。
       
2階のみ

家全体

階下のみ

<?php $ myfile =fopen( "vent.txt"、 "r")またはdie( "ファイルを開くことができません!"); $ status =fgets($ myfile); if($ status!="")print "

現在開いているベント"; if($ status ==="0 ")print" The Whole House "; if($ status ===" 1 ")print" Downstairs Only "; if($ status ===" 2 ")print" Upstairs Only "; print"
"; fclose($ myfile); if($ _GET ["zone"] ==""); else {$ myfile =fopen( "vent.txt"、 "w +")またはdie( "ファイルを開けません!"); if($ _GET ["zone"]!="")print "

"の通気口を開くコマンドを送信します; if($ _GET ["zone"] ==="0")print "The Whole House"; if($ _GET ["zone"] ==="1")print "Downstairs Only"; if($ _GET ["zone"] ==="2")print "Upstairs Only"; print "

"; fwrite($ myfile、$ _GET ['zone']); fclose($ myfile);}?>
LinkIt Smart Vent Android WebApp JSON
マニフェストファイルなので、AndroidのクロムはベントコントローラーをWebアプリとして開きます。
 {"name": "LinkIt Smart Vent"、 "icons":[{"src": "LinkIt_icon_36.png"、 "sizes": "36x36"、 "type": "image / png"、 "density":0.75}、{"src": "LinkIt_icon_48.png"、 "sizes": "48x48"、 "type": "image / png"、 "density":1.0}、{"src": "LinkIt_icon_128.png"、 "sizes": "128x128"、 "type": "image / png"、 "density":1.0}、{"src": "LinkIt_icon_192 .png "、"サイズ ":" 192x192 "、"タイプ ":"画像/ png "、"密度 ":1.0}]、" start_url ":" vent.php "、"表示 ":"スタンドアロン "、"向き":"画像 "} 

回路図

ATtiny85またはArduinoNanoは、ESP8266に接続されたDHT11 / 22およびWiFiから温度を引き出します。

製造プロセス

  1. データモジュール:スマートコントロールを備えた23.1インチの超伸縮TFTディスプレイ
  2. QR、RFID、温度検証によるアクセス制御
  3. 3Dプリント部品によるより良い品質管理
  4. スマート調達はAIとHIのバランスをとる
  5. Arduinoでコインアクセプターを制御する
  6. 3Dプリントされたケース付きの電池式テレビリモコン
  7. LEDを制御するBluetoothを搭載したArduino!
  8. Arduino Nano:ジョイスティックで2つのステッピングモーターを制御
  9. CortanaでLEDを制御する
  10. GÖPELは、ユニバーサルロボットを使用して自動車製造の品質管理を改善します
  11. CNC付き旋盤