这篇文章将为大家详细讲解有关怎么使用Arduino来开发灌溉系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
Arduino 来拯救
Arduino非常适合这样的项目:低成本、只需要一个电源、没有系统会冻结/挂起、拥有众多的标准周边设备。听起来这个想法适合我做,所以我通过互联网搜索到Arduino GSM模块。***,我发现一个模块以及开放库只需要30美元,非常便宜。完整的系统成本大约50美元,和大多数其他系统成本700美元形成鲜明对照。
幸运的是,GSMLib很容易使用,我一找出哪些针脚能用到,哪些没用就开始动手去做。一个简短的例子,当一个认证的手机号发短息给你时,你需要做的就是:
stat = call.CallStatusWithAuth(number, 1, 3);if(stat == CALL_INCOM_VOICE_AUTH) { call.HangUp(); sms.SendSMS(number, value_str);}
系统描述
最终的水泵控制系统是相当简单的。开始或者关闭的方法通过一个继电器或者两个继电器系统模拟开/关按钮实现。我想要的是两种方法都支持,这并不是很困难。
除了输出之外,也有输入。当系统启动并运行时,相应的继电器开启和关闭;当有一个错误时(断电、低压、高温),三个继电器可能会开启。我们的软件一般需要发送短信,当系统开始和停止运行时(无论任何原因,无论你是否通过电话开启系统),当一个错误继电器触发时,一条带有具体错误原因的短信将发送。
我们也想要一种取消SMS发送的方法,与确保你不会得到无关紧要的信息,如果你手动开启/关闭系统,而你在水泵身旁(显而易见的是当你站在水泵旁边时,关闭水泵,压力消失,你不在需要接受短信)通过简单的选择输入可实现开启短息发送功能或者关闭。
当然也有一些次要的问题需要考虑,比如错误继电器和其他元件不相关联(当关闭电源后,所有其他的错误继电器将继续运行,所以你只需要发送“电力消失”信息),错误条件具体到错误(例如,关闭系统触发“压力下降”错误),但这都非常简单。
实现错误短信
实现错误短息的函数只需几行。初始时,我们检测继电器的状态是否改变(当一个错误继电器保持激活状态时,我们想要边缘触发以避免虚假循环。例如):
for (char i=0; i < INPUT_LENGTH; i++) { pinState = digitalRead(inputPins[i]); if (pinState != pinStates[i]) { // If the pin's state changed, note it. statesChanged[i] = 1; } // Update the state. pinStates[i] = pinState;}
然后我们掌握了所有状态的改变以及新状态,决定接下来做什么就不难了:
// Decide what happens.if (statesChanged[0] == 1 && pinStates[0] == OFF) { // Phase dropped, send message regardless. sendSMS("Phase dropped.");} else if (statesChanged[1] == 1 && pinStates[1] == OFF) { sendSMS("Thermal dropped.");} else if ((statesChanged[2] == 1 && pinStates[2] == OFF) && (statesChanged[3] == 1 && pinStates[3] == OFF)) { // Pressure dropped *and operation stopped simultaneously*. // This is because we don't want to be notified of normal // pressure drops after we stop the system ourselves. sendSMS("Pressure dropped.");} else if (statesChanged[3] == 1 && pinStates[3] == OFF) { sendSMS("Pump shut down.");} else if (statesChanged[3] == 1 && pinStates[3] == ON) { sendSMS("Pump started.");}
关于“怎么使用Arduino来开发灌溉系统”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。