每当我们外出几天时,我们总是会担心我们的植物,因为它们定期需要水。因此,在这里,我们使用Arduino制造 自动植物灌溉系统,该系统会自动向您的植物供水,并通过向手机发送消息来使您保持更新状态。
在此植物浇水系统中,土壤湿度传感器检查土壤中的水分含量,如果水分含量低,则Arduino会打开水泵为植物供水。当系统在土壤中发现足够的水分时,水泵将自动关闭。每当系统打开或关闭泵时,都会通过GSM模块向用户发送一条消息,以更新水泵和土壤湿度的状态。该系统在农场,花园,家庭等中非常有用。该系统是完全自动化的,不需要任何人工干预。
Arduino植物灌溉系统项目所需的组件
- Arduino Uno
- GSM模块
- 晶体管BC547(2)
- 连接线
- 16x2 LCD(可选)
- 电源12v 1A
- 继电器12v
- 水冷却器泵
- 土壤水分传感器
- 电阻器(1k,10k)
- 可变电阻(10k,100k)
- 端子连接器
- 稳压器IC LM317
GSM模块:
在这里,我们使用了TTL SIM800 GSM模块。SIM800是完整的四频GSM / GPRS模块,客户或业余爱好者均可轻松嵌入。SIM900 GSM模块提供了行业标准的接口;SIM800具有低功耗的GSM / GPRS 850/900/1800 / 1900MHz性能,可用于语音,短信和数据。SIM800 GSM模块的设计纤巧紧凑。它可以在市场上轻松购买,也可以从eBay在线购买。
- 小型四频GSM / GPRS模块。
- 启用GPRS
- TTL输出
在此处了解有关GSM模块和AT命令的更多信息。还要检查我们使用GSM和Arduino的各种项目,以正确了解它们的接口。
电路说明:
在该植物灌溉系统中,我们使用了自制的土壤湿度传感器探头来感应土壤湿度。为了制作探针,我们根据下图切割并蚀刻了覆铜板。探头的一侧直接连接到Vcc,另一端连接到BC547晶体管的基极。电位计连接到晶体管的基极,以调节传感器的灵敏度。
Arduino用于控制该自动植物灌溉系统的整个过程。土壤传感器电路的输出直接连接到Arduino的数字引脚D7。传感器电路上使用一个LED,该LED的ON状态指示土壤中存在水分,OFF状态指示土壤中没有水分。
GSM模块用于向用户发送短信。这里我们使用了TTL SIM800 GSM模块,它直接给出和采用TTL逻辑(用户可以使用任何GSM模块)。甲LM317电压调节器被用于将SIM800 GSM模块供电。LM317对额定电压非常敏感,建议在使用之前阅读其数据表。它的额定工作电压为3.8v至4.2v(请首选3.8v进行操作)。以下是TTL sim800 GSM模块的电源电路图:
如果用户想使用SIM900 TTL模块,那么他应该使用5V;如果用户想使用SIM900模块,则在板的DC插孔中施加12v。
一个12V继电器用于控制220VAC小型水泵。继电器由BC547晶体管驱动,该晶体管进一步连接到Arduino的数字引脚11。
可选的LCD也用于显示状态和消息。LCD,RS和EN的控制引脚连接到Arduino的引脚14和15,LCD D4-D7的数据引脚直接连接到Arduino的引脚16、17、18和19。LCD以4位模式使用,并由Arduino的内置LCD库驱动。
下面是带有arduino和土壤湿度传感器的灌溉系统的电路图:
工作说明:
这种自动植物灌溉系统的工作非常简单。首先,它是一个完全自动化的系统,不需要人力来控制系统。Arduino用于控制整个过程,而GSM模块则用于在其手机上向用户发送警报消息。
如果土壤中存在水分,则土壤水分传感器的两个探头之间会导通,由于该导通,晶体管Q2保持触发/导通状态,而Arduino引脚D7保持低电平。当Arduino在D7处读取LOW信号时,它将向用户发送短信“土壤水分正常。电机关闭”,水泵保持关闭状态。
现在,如果土壤中没有水分,则晶体管Q2变为关,引脚D7变为高。然后Arduino读取Pin D7并打开水马达,并向用户发送有关“检测到土壤水分少”的消息。电机打开”。当土壤中有足够的水分时,电动机将自动关闭。进一步检查演示视频和代码(最后提供)以更好地了解项目工作过程。
编程说明:
该程序的代码很容易理解。首先,我们包含了 SoftwareSerial 库,将第2和第3针分别设置为Rx和Tx,还包括了LCD的 LiquidCrystal 。然后,我们为电动机,土壤湿度传感器,LED等定义了一些变量。
#包括
然后在 void setup() 函数中,串行通信被初始化为9600 bps,并为各个引脚提供了方向。 调用gsmInit 函数初始化GSM模块。
Serial1.begin(9600); Serial.begin(9600); pinMode(led,OUTPUT); pinMode(马达,输出); pinMode(传感器,INPUT_PULLUP); lcd.print(“ Water Irrigaton”); lcd.setCursor(4,1); delay(2000); lcd.clear(); lcd.print(“ Circuit Digest”); lcd.setCursor(0,1); lcd.print(“ Welcomes You”); delay(2000); gsmInit();
然后,在 空循环() 函数中读取传感器,并根据传感器状态打开或关闭电动机,并且还使用 sendSMS 函数向用户发送SMS 。用最后给出的完整代码检查各种功能。
void loop(){lcd.setCursor(0,0); lcd.print(“自动模式”); if(digitalRead(sensor)== 1 && flag == 0){delay(1000); if(digitalRead(sensor)== 1){digitalWrite(led,HIGH); sendSMS(“检测到土壤湿度低。电动机已打开”);lcd.begin(16,2); lcd.setCursor(0,1);…………………
在这里, gsmInit() 函数非常重要,并且用户通常会发现很难正确地进行设置。它用于初始化GSM模块,其中首先通过向GSM模块发送“ AT”命令来检查GSM模块是否已连接。如果收到响应OK,则表示已准备就绪。系统会一直检查模块,直到模块准备就绪或收到“确定”为止。然后通过发送ATE0命令关闭ECHO,否则GSM模块将回显所有命令。然后,最后通过“ AT + CPIN?”检查网络可用性。命令,如果插入的卡是SIM卡并且存在PIN,则给出响应READY。还要反复检查,直到找到网络。可以通过下面的视频清楚地了解这一点。
无效的gsmInit(){lcd.clear(); lcd.print(“查找模块..”); boolean at_flag = 1; while(at_flag){Serial1.println(“ AT”); while(Serial1.available()> 0){if(Serial1.find(“ OK”))at_flag = 0; } delay(1000); }……………….
因此,使用此自动灌溉系统,您出门在外时就无需担心植物。可以进一步增强它以通过Internet进行操作和监视。