亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

干渴的推特办公植物

组件和用品

Arduino Due
× 1
Andium Anduino WiFi
× 1
Arduino Zero
× 1
电容式土壤湿度传感器
× 1

应用和在线服务

Arduino IDE
IFTTT
Adafruit IO

关于这个项目

动机

在 Andium,我们非常高兴终于搬进了我们的新办公空间。我们一直在用白板覆盖的墙壁、闪亮的新技术和所有家一般的舒适来装饰它。当我们在整个空间放置一些这些绿叶植物的朋友时,它开始有家的感觉!

只有我们忘了给它们浇水,一周左右,我们的绿叶朋友开始看起来像这样......

失败。

我们是一家物联网公司,我们比这更好。为什么我们的植物没有互联网连接!希望在这个小家伙为时已晚之前,我使用我们的 anduinoWiFi 屏蔽和 IFTTT 整理了一个解决方案。是时候让我们的植物发声了!

开始使用

如果您有一个绿色拇指,您可能已经停止阅读,但是如果您像我一样并且需要让您的植物能够以数字方式乞求怜悯并尖叫着要水,那么您来对地方了。

为了让您的植物发出声音,您需要一个 Arduino Due 或 Zero、一个 anduinoWiFi 屏蔽(或任何其他可以与 Adafruit IO 通话的 WiFi 连接的 Arduino),最后还有一个“电容式土壤湿度传感器”。哦,还有一杯水。 (完成后交给您的工厂,他们现在会通过电子邮件感谢您)。

水分传感器

土壤湿度传感器非常酷,实际上鼓励您浸入湿土中的传感器并不多,因此请尽可能享受。不过不要太多,注意这一行...

无论您做什么,都不要将传感器浸入白线以下。上面的任何东西都不能很好地耐受湿气暴露,因此在为包含此传感器的植物浇水时要小心。

如果您点击查看上面的下一张照片,您可能想知道为什么我将传感器浸入一杯水中。好吧,别再奇怪了!

如何校准“电容式土壤湿度传感器”

我们的电容式传感器有三根线,我们将它们连接到 3.3v(红色)、地(黑色)和(蓝色信号)模拟引脚 A1。当我们校准我们的传感器时,我们将在传感器完全干燥时记录电容读数,然后在传感器浸没在一杯水中(直到白线!)时进行第二次读数。这为我们提供了 0-100% 的极端相对湿度阈值。

连接你的传感器,运行这个草图,并记下你的结果。作为参考,我的dryVal 是807,我的wetVal 是415。

int inputPin =A1;无效设置(){ Serial.begin(115200);延迟(3000); } void loop() { Serial.print("Raw val:"); Serial.println(readHumidity());延迟(3000); } int readHumidity() { int sensorVal =analogRead(inputPin);返回传感器值; }  

获得这两个数字后,您就可以配置相对湿度映射了。认为自己已校准!

草图

#include  #include "Adafruit_MQTT.h" #include "Adafruit_MQTT_Client.h" #include "AnduinoLCD.h" // WiFi 参数 #define WLAN_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_Publish 湿度Val =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 intwetVal =415;内部湿度 =0; int 湿度Prev =0; int relHumidity =0;无效设置(){ Serial.begin(115200);延迟(3000); //连接到WiFi &Adafruit.IO connectToWiFi(); connectToAdafruit(); //初始化LCD LCD.begin(); LCDinit(); } void loop() { // ping adafruit io 几次以确保我们保持连接 if(!mqtt.ping(3)) { // 重新连接到 adafruit io if(!mqtt.connected()) connect(); } 湿度 =读取湿度(); //将int temp转换为char数组char b[4];字符串 str; str=字符串(湿度); for(int i=0; i=0) mqtt.disconnect(); Serial.println(F("正在重试连接..."));延迟(1000); Serial.println(F("Adafruit IO 已连接!")); } void displayHumidity(int hypothic, int hypottyPrev) { //清除过时值 LCD.setTextColor(ST7735_BLACK); LCD.setTextSize(2); LCD.setTextWrap(true); LCD.setCursor(40,60); LCD.setTextSize(5); LCD.print(湿度上一个); LCD.setTextSize(2); LCD.print("%"); //打印新值 LCD.setTextColor(ST7735_WHITE); LCD.setTextSize(2); LCD.setTextWrap(true); LCD.setCursor(40,60); LCD.setTextSize(5); LCD.打印(湿度); LCD.setTextSize(2); LCD.print("%"); } void connectToWiFi() { // 连接到 WiFi 接入点。延迟(10); Serial.print(F("连接到")); Serial.println(WLAN_SSID); WiFi.begin(WLAN_SSID, WLAN_PASS);而(WiFi.status()!=WL_CONNECTED){延迟(500); Serial.print(F(".")); Serial.println(F("WiFi 已连接!")); } void connectToAdafruit() { // 连接到 adafruit io connect(); } 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 =地图(sensorVal,dryVal,wetVal,0, 100); Serial.println("relHumidity"); Serial.print(relHumidity);返回相对湿度; }  

将此草图复制并粘贴到您的 IDE 中,并确保您已安装这些库。

  • WiFi101
  • Adafruit_MQTT
  • AnduinoLCD

以及您个人校准的...

const int dryVal =807; const intwetVal =415;  

湿值和干值。当我们 readHumidity() 时,在草图的底部,我们使用这些值来映射 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

制造工艺

  1. 肥料
  2. Arduino Spybot
  3. FlickMote
  4. 自制电视 B-Gone
  5. 主时钟
  6. 找到我
  7. Arduino Power
  8. Tech-TicTacToe
  9. 使用 TinyML 确定植物健​​康
  10. Arduino Quadruped
  11. Arduino Joystick
  12. 数控机床