のどが渇いたツイートオフィスの植物
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
アプリとオンラインサービス
> |
| |||
| ||||
|
このプロジェクトについて
動機
ここアンディウムでは、ついに新しいオフィススペースに引っ越したことにとても興奮しています。ホワイトボードで覆われた壁、新しい光沢のある技術、そして家のすべての快適さでそれを飾り立ててきました。スペース全体にこれらの緑豊かな友人を数人配置したとき、それは特に家のように感じ始めました!
<図>私たちだけが彼らに水をやるのを忘れて、一週間かそこら以内に私たちの緑豊かな友達はこのように見え始めました...
<図>失敗。
私たちはIoT企業であり、これよりも優れています。どうして私たちの植物はインターネットに接続されていないのですか?うまくいけば、この小さな男には手遅れになる前に、anduinoWiFiシールドとIFTTTを使用してソリューションをまとめました。私たちの植物に声をあげる時が来ました!
はじめに
あなたが緑色の親指を持っているなら、あなたはおそらくすでに読むのをやめていますが、あなたが私のようで、あなたの植物に慈悲をデジタルで懇願し、水を叫ぶ能力を与える必要があるなら、あなたは正しい場所にいます。
植物に声を与えるには、Arduino Due、またはZero、anduinoWiFiシールド(またはAdafruit IOと通信できる他のWiFi接続Arduino)、最後に「静電容量式土壌水分センサー」が必要です。ああ、そしてコップ一杯の水。 (私たちが終わったらあなたの植物にそれを与えてください、彼らは今電子メールであなたに感謝します)
<図>
水分センサー
土壌水分センサーはかなりかっこいいですし、実際に濡れた土に沈めるように勧められるセンサーはあまりないので、できる限り楽しんでください。あまり多くはありませんが、この行に注意してください...
<図> <図>何をするにしても、センサーをその白い線の下に沈めないでください。そこにあるものは湿気への暴露に耐えられないので、このセンサーを含む植物に水をやるときは注意してください。
上の次の写真をクリックすると、なぜセンサーをコップ一杯の水に沈めているのか不思議に思うかもしれません。さて、もう不思議ではありません!
「静電容量式土壌水分センサー」を校正する方法
私たちの静電容量センサーには、3.3v(赤)、アース(黒)、および(青信号)アナログピンA1に接続する3本のワイヤーがあります。センサーを校正するときは、センサーが完全に乾いたときの静電容量の読み取り値を記録し、センサーがコップ一杯の水に沈んだとき(白い線まで!)に2回目の読み取り値を取得します。これにより、相対湿度のしきい値が0〜100%になります。
センサーを配線し、このスケッチを実行して、結果を書き留めます。参考までに、私のdryValは807で、wetValは415でした。
int inputPin =A1; void setup(){Serial.begin(115200); delay(3000); } void loop(){Serial.print( "Raw val:"); Serial.println(readHumidity()); delay(3000); } int readHumidity(){int SensorVal =analogRead(inputPin);リターンsensorVal; }
これらの2つの数値を取得したら、相対湿度マッピングを構成する準備が整います。自分で調整したと考えてください!
スケッチ
#include #include "Adafruit_MQTT.h" #include "Adafruit_MQTT_Client.h" #include "AnduinoLCD.h" // WiFiパラメーター#defineWLAN_SSID "Andium" #define WLAN_PASS "maybeitsjustpassword" // Adafruit IO #define AIO_SERVER "io.adafruit.com" #define AIO_SERVERPORT 1883 #define AIO_USERNAME "yourusernname" #define AIO_KEY "dosifje0j230fj32lksdfj230ff23" WiFiClientクライアント; Adafruit_MQTT_Client mqtt(&client、AIO_SERVER、AIO_SERVERPORT、AIO_USERNAME、AIO_KEY); / ******************************フィード****************** ********************* ///温度のフィードを設定しますAdafruit_MQTT_PublishHydriumVal =Adafruit_MQTT_Publish(&mqtt、AIO_USERNAME "/ feeds / officePlants"); / * AnduinoLCDのインスタンスを作成します* / AnduinoLCD LCD =AnduinoLCD(ST7735_CS_PIN、ST7735_DC_PIN、ST7735_RST_PIN); int inputPin =A1; const int dryVal =807; const int wetVal =415; int湿度=0; int HydraulicPrev =0; int relHumidity =0; void setup(){Serial.begin(115200); delay(3000); // WiFiとAdafruit.IOに接続しますconnectToWiFi(); connectToAdafruit(); // LCDを初期化しますLCD.begin(); LCDinit(); } void loop(){// adafruit ioに数回pingを実行して、接続されたままであることを確認しますif(!mqtt.ping(3)){// adafruit ioに再接続しますif(!mqtt.connected())connect(); }湿度=readHumidity(); // inttempをchar配列に変換しますcharb [4];文字列str; str =String(湿度); for(int i =0; i =0)mqtt.disconnect(); Serial.println(F( "接続を再試行しています...")); delay(1000); } Serial.println(F( "Adafruit IO Connected!")); } void displayHumidity(int hybrid、inthumidityPrev){//古い値をクリアLCD.setTextColor(ST7735_BLACK); LCD.setTextSize(2); LCD.setTextWrap(true); LCD.setCursor(40,60); LCD.setTextSize(5); LCD.print(humidityPrev); LCD.setTextSize(2); LCD.print( "%"); //新しい値を出力LCD.setTextColor(ST7735_WHITE); LCD.setTextSize(2); LCD.setTextWrap(true); LCD.setCursor(40,60); LCD.setTextSize(5); LCD.print(湿度); LCD.setTextSize(2); LCD.print( "%"); } void connectToWiFi(){// WiFiアクセスポイントに接続します。 delay(10); Serial.print(F( "Connecting to")); Serial.println(WLAN_SSID); WiFi.begin(WLAN_SSID、WLAN_PASS); while(WiFi.status()!=WL_CONNECTED){delay(500); Serial.print(F( "。")); } Serial.println(F( "WiFi接続!")); } void connectToAdafruit(){// adafruitに接続ioconnect(); } void LCDinit(){LCD.setBacklight(ON); LCD.fillScreen(ST7735_BLACK); //画面をクリアしますLCD.showBanner(); // Andium BannerをロードLCD.setTextColor(ST7735_WHITE); LCD.setTextSize(2); LCD.setTextWrap(true); LCD.setCursor(0,40); LCD.print( "湿度:"); } int readHumidity(){int SensorVal =analogRead(inputPin); relHumidity =map(sensorVal、dryVal、wetVal、0、100); Serial.println( "relHumidity"); Serial.print(relHumidity); relHumidityを返します。 }
このスケッチをコピーしてIDEに貼り付け、これらのライブラリがインストールされていることを確認してください。
- WiFi101
- Adafruit_MQTT
- AnduinoLCD
個人的に調整されたものと同様に...
const int dryVal =807; const int wetVal =415;
ウェット値とドライ値。 Humidity()を読み取るときにスケッチの下部に向かって、これらの値を使用して0〜100%の相対湿度をマッピングします。したがって、値は乾燥すると0%、完全に飽和すると100%になります。
relHumidity =map(sensorVal、dryVal、wetVal、0、100);
すべてがうまくいき、arduinoがWiFiとAdafruit IOに接続すると、10分ごとに測定値が表示されるようになります。これが今日の測定値のスナップショットです。
<図>今日の初めにこれらの外れ値を気にしないでください。ドライとウェットの値を決定するために、マップされていない生の静電容量を読み取っているときにも公開していました。
すばらしいです。今では10分ごとに、土壌水分の測定値を公開しています。今、私は自分の植物が死ぬのを防ぎ、水をやらなければならないまで、読みが何であるかを本当に気にしません。 IFTTTを使用して、しきい値の湿度レベルを設定し、通知が送信されるように構成して、植物に水をやるように通知します。
IFTTTしきい値
IFTTTを使用して、土壌の相対湿度が20%を下回ると、喉が渇いた植物がツイッター(@andiumPlants)から連絡を取り、水やりを要求するようにしきい値を設定しました。セットアップの概要は次のとおりです。
<図> <図> <図>以上です!
次は何ですか?
それはあなたにお任せします!他にどのように私たちは創造的に私たちの植物に声を与え、私たちの動物相が失敗するのを防ぐことができますか? anduinoWiFiと土壌センサーを手に入れて作り始めましょう!
コード
アンドゥイノ
Andium(Anduino)シールド用のArduinoライブラリ。 ArduinoをAndiumNodeに変換します。https://github.com/andium/Anduino製造プロセス