分享

【新增光敏电阻】基于arduino的自动浇花……饭盒?[自动浇水] [开源] | DIY小组 | 果壳网 科技有意思

 P_LarT 2016-09-08

最近七夕快到了~又到了给妹子做礼物的时间了~,所以要做一点既有创意,又实用,又好看的东西!那么这个可以给植物自动浇水的……饭盒,是非常理想的选择。

首先放成品图:

左边的是土壤湿度探头,当土壤的干燥程度达到一定值的时候,打开电磁阀进行浇水。

左边是DC电源线(DC5.5*2.1mm),5V输入。可以直接使用USB转DC来做电源。右边就是进水口,直接与水龙头相连。

电磁阀使用的是饮水机的电磁阀,成本10元左右。电压12V,所以需要另外购买一个升压模块。

最上面的是升压模块,然后依次是土壤湿度检测模块,DHT11温湿度模块。

LCD1602,可以显示当前已经运行的时间,大气温湿度,以及土壤湿度值。

亮起来是这样子的:

俯视图。两根白色的管子一根是进水口,一根是出水,内部是电磁阀控制。

程序结构也非常简单:

土壤湿度探头检测到土壤干燥了,就打开电磁阀进行浇水,完毕关闭电磁阀,然后继续检测,就这样无限循环下去。每间隔3小时进行一次判断。

这是设计图(很初步的构想,实际实现和这个图有一些细微的区别):

(原谅我的灵魂画风→_→)

关于如何浇水,有两种方案:

方案一:使用电磁阀直接浇自来水。

方案二:使用水泵抽水。

在选择实用水泵还是电池阀的时候纠结了很久。最后决定用电池阀,因为如果使用水泵的话,要专门放个水盆来装水……而且要手动给水盆加水,不是一劳永逸的方案

(没错我就是这么懒……(╯‵□′)╯︵┻━┻)

首先来看材料一览表:

(你没有猜错,我就是把东西这么随手一扔,然后就拍了张照片……)

然后做一个供电的模块,一行接正极一行接负极,用来给各种模块供电。(因为我没有买arduino的Shields,只能这样做了)

这万能板的孔大小是M2的,被我强行扩展为M3大小,然后才能拧上M3的铜柱

然后目测一下摆放的位置,做好标记,准备钻孔:

直接电动手钻上吧,其实给这种塑料钻孔,感觉是摩擦产生的热量将塑料融化掉,并不是真正的钻出来的孔……所以有很多毛边。

拧上螺丝就可以了。

下面对LCD1602进行固定:

找大概的位置,做好标记

打孔,拧螺丝(其实这个孔我还打歪了……不过塑料盒子可以有一定的形变,所以还是强行拧上去了。)

打歪的孔……

还是强行拧上了。

继电器这种接口可以直接用杜邦线来插,只要把杜邦线黑色的塑料头拿掉就好了。就不用另外买专门的线。

杜邦线就可以解决!省钱!

关于杜邦线的处理,用美工刀把杜邦线头卡位的迷之凸起翘起来:

就可以很轻松的拿出来了。

之后就可以把露出来的金属部分插进去了。

再把继电器安装上去,无尽的打孔……拧螺丝

其实装得有点歪,不过不要紧。

然后突然觉得,这个饭盒太大了,还有每个模块都要我这样打孔,效率太低……

然后睡觉去了。睡觉的时候灵感来了,换了一种思路(没错,前面我做的全部都推到重做了!)

第二天,拿着一大堆模块,研究如何科学地进行组装……

然后……

.

.......十分钟后,这两个叠在了一起

.

.

.

..........二十分钟后(忙着摆弄,忘记拍照了→_→)

.

.

.

duang~~这就是成品!采用了多层的结构,布局合理,结构精巧(魔性BGM操起来:我的朋友我想骄傲的告诉你,哦我真的不错我真的很不错。)

因为是用来浇水的,整个电路板是固定不动的(这又不是智能小车!),所以连接的结构强度不是首要考虑的问题。

下面多角度展示,从上往下依次是实时时钟模块DS1307,温湿度模块DHT11,土壤湿度传感器,升压模块(用来获得12V的输出)。

已经预留了铜柱,可以很方便地固定在万能板上面。

这样……我就可以把你捧在手心了~(ˉ﹃ˉ)

然后下一步计划固定到万能板上,右边用来放电磁阀,中间的缝隙可以焊两排排针,用于给各种模块供电。

有个非常巧合的地方,这个万能板的宽度,正好和继电器模块的长度完全一样~边角的孔完全对的上,强迫症看了表示非常舒服

顺便说一下板的尺寸是5x7的

固定这堆模块,只需要钻两个孔。用小刀刻出要钻孔的位置,避免钻歪(就是图中Q和R之间刻了一个标记):

警告:对玻璃纤维板切割、钻孔,一定要注意粉尘污染!

吸入这些粉尘是非常危险的。所以我是把整块电路板放到水里面进行钻孔的。(过程因为有水,就没有拿手机出来拍照)

准备钻孔之前,先把所有模块扔到饭盒里面测试一下布局:

饭盒大小是1000ml的:

好了各位我钻完孔回来了。这次钻的不错,都能对上,误差不是很大。

果断拧上螺丝,感受一下:

然后计划在这里焊两排排针,一排接正极,另一排是负极。

然后又拆下其他模块,专心焊接电路板:

放上元件:

准备进行焊接:

然后这就是效果……光滑圆润的焊点?臣妾做不到啊!

……我承认焊电路我一点都不在行,所以就不要吐槽这个焊点丑了= =

最后我用万用表测了,能用,所以也并没有什么问题。

焊好当然要得瑟一下:于是我又装上去了(感觉我拆了又装中浪费了不少时间……)

然后给电磁阀焊接两个排针,就可以直接插杜邦线了,这样各种模块还是独立的,以后拆卸也方便。(保证接口统一,才能方便调用!)

焊点是这样的……其实这里是虚焊了,我后来重新焊了一遍=_=。所以看到这么圆的焊点,一般都是虚焊。

然后又一天过去了……晚上临睡前东西都是这样扔一堆的。

第三天起来~今天我们来讲解一下如何给arduino pro mini写程序,使用FT232RL,和arduino pro mini直接六个引脚一对一进行对接(非常方便的说):

如果给arduino单独供电的话,只需要接三个引脚。但是要记得两个芯片要共地,不然是传不上去的。

首先连接的是LCD1602,对应的电路图是这样子的:

根据LCD1602的引脚定义,和arduino的连接方法如下:

  • LCD VSS 接地
  • LCD VDD 接5V电源
  • LCD VL 用于调节对比度,通过电位器再接地。
  • LCD RS pin 链接数字口 pin12
  • LCD R/W pin 接地
  • LCD Enable pin 链接数字口 pin11
  • LCD D4 pin 链接数字口 pin5
  • LCD D5 pin 链接数字口 pin4
  • LCD D6 pin 链接数字口 pin3
  • LCD D7 pin 链接数字口 pin2
  • LCD BLA 光源正极
  • LCD BLK 光源负极

但是我稍稍修改了引脚的位置,为了更方便接线:

  • RS->8
  • Enable ->7
  • D4 ->6
  • D5->5
  • D6->4
  • D7->3
  • R/W->GND

然后接好了就密密麻麻这么多线了:

然后连DHT11模块,VCC和GND分别接电源和接地,OUT接2号数字口。

然后连接电位器,COM 和NO就是开关的两端:

可以很轻松地插入~

完全插入(不能裸露太多金属部分):

拧紧螺丝,大功告成:

这里线太多,也是要用钳子进行连接了……

两个继电器分别接9号数字口和10号数字口。

写点小程序测试一下,继电器1和继电器2都可以正常开关。

接下来花了很多时间,一个一个连接模块,两个电源分别独立,一个电源长期供电,连接arduino,继电器1,升压模块,LCD1602。另一路电源可以关闭,给DHT11,土壤湿度模块,LCD1602的背景光LED,还有给继电器2进行供电,平时会关掉这部分的电源,达到节能的目的。

密密麻麻的连接线……

这个是实时时钟模块DS1307,实际并没有派上用途。所以就把它拆了下来(没用你为什么要把人家装上去(╯‵□′)╯︵┻━┻)。

然后把所有模块接好线,预组装一下,看看能否放下:

在规划好模块的位置,又要进行标记……打孔:

然后打孔完毕。过程和前面说的大同小异,就不放图了。

然后拧上螺丝看看,右边很多空白空间,以后可以用来放锂电池,或者移动电源:

俯视图:

放一个移动电源进去,测试一下,刚好能放下呢。

饭盒的容积是1000ML的,逼格than逼格!

通电后,点亮LCD背景灯的效果

然后又调试程序……如此循环。其中调试程序的苦逼过程就没有记录了……代码放到github了,地址在帖子的最下面:

然后链接水管。直接用电钻开一个6mm的孔就可以插进去了。

链接好的样子。因为这个饭盒可以很容易地形变,所以很容易调节:

紧密结合:

发现电源线插不进去,用1cm的钻头进行开孔:

1cm开孔效果

接入电源线,也是刚好可以插入

总体效果,一边进水,另一边出水:

入水口是这样的一个转接口,可以直接固定在水龙头上,而且不影响正常使用。某宝搜索就可以了(关键字:2分 万能接头 净水器)。

上面有个开关,可以不影响正常出水的情况下,引入水流。

最终展示

arduino pro mini芯片

2015年8月10日09:37:32更新物品清单:

  • arduino pro mini (或者其他任意可以兼容的都可以)
  • FT232RL(USB转串口,用于给arduino pro mini编程)
  • LCD1602(用于显示)
  • DHT11温湿度模块(只是用来显示温湿度,目前程序并没有根据温湿度数据来判断浇水量的功能)
  • 杜邦线(10cm和21cm的都买点)
  • 万能板,焊锡,烙铁。(如果你使用arduino uno 加上传感器shield就不需要自己焊电路)
  • 排针
  • DC接头(或者micro usb接头,用于供电)
  • DC供电线
  • 电磁阀(或者水泵)
  • 升压模块/降压模块(根据电磁阀或水泵的电压进行选择)
  • 土壤湿度检测模块
  • 水管(我用的是2分管,具体要根据电磁阀或者水泵的尺寸来选择)
  • 水龙头转接口(用于电磁阀方案,水泵方案不用买)
  • M3螺丝,M3铜柱若干
  • 继电器(如果不是太阳能供电,不用省电的话,只需要1个。如果采用太阳能供电的方案,可以模仿我的做法)
  • 光敏电阻

2015年8月13日15:09:30 更新,增加光敏电阻:

如果你百度搜索“arduino如何接光敏电阻”,结果一般都是让你接一个电阻,再和光敏相连。实际上这样并没有必要,因为AVR单片机内部就有一个电阻

只需要利用这个电阻就好了。将一个模拟口设置为高

#define PHOTO_RESISTOR_PIN A2

pinMode(PHOTO_RESISTOR_PIN, OUTPUT);//设置引脚模式为输出

digitalWrite(PHOTO_RESISTOR_PIN, HIGH);//拉高引脚

Serial.println(analogRead(PHOTO_RESISTOR_PIN));//调试输出

光敏电阻一端与A2相连,另一端直接接地。这样结构非常简单。实测全黑条件下读取数值为1023,强光手电照射读取数值623,户外阴天环境(没有阳光直射),读取数值为981,虽然不是很精确,但是一般情况下判断是白天还是黑夜还是够用了。设置阈值为1000,读取数值小于这个值,则表示是白天,不进行土壤湿度检测。

环境为阴天,没有阳光直射,连接光敏电阻的引脚数值为981

还有拆的时候不小心太暴力,把饭盒拆破了= =。

两处破损……挺严重的,只能换饭盒。

就这样放着,今晚去买了新的饭盒再修理了。

================分割线=========================

代码下载地址:直接打包ZIP下载 或者 访问github主页

里面有个ino格式的文件,就是arduino程序的文件。要使用arduino软件打开。arduino软件下载

虽然我用的是arduino pro mini,但是理论上arduino uno之类的板子都可以兼容使用。


下一步计划:

  • 加入根据气温判断浇水量的功能。如果温度低则少浇水(不知道有没有这种需求?据说有些花冬天不能浇太多的水。有多年种花经验的童鞋来传授点经验吧~)
  • 增加tf卡模块。将土壤湿度的变化数值写入tf卡。
  • 增加光敏模块,检测到有光再进行浇水。

任何问题欢迎跟帖询问哟~\(^0^)/

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多