arduino i2c 如何写16位寄存器_Arduino只是拿来玩的?你错了!教你用它自制一个非常实用的小产品|智能灌溉控制器...

2a011a05668deaa03dff3d375b23e44c.png

利用动态水循环,具有下雨探测,日出探测功能,智能灌溉你的院子或花园。

一定要看文章最后哦,结尾有惊喜!

部件和材料

  • Arduino NANO开发板 1块

f623a8a329ec548c9028e1995dcd64ff.png
  • IO扩展板 1块

10d289a4434f8cd19fa72ea94ecd8e3c.png
  • IO扩展模块包 1套

app和在线服务

52fb17a5f1e8251063984cf3c8b552d5.png
Arduino IDE

项目背景

使用Arduino创建智能灌溉控制器

智能灌溉您的院子或花园用动态水循环。如果正在下雨,或者自从上次浇水后就已经下雨了,不要再给院子浇水了。使用光传感器检测日出时间,并自动调整水开始时间。如果天气太冷,就停止给院子浇水。

功能列表

  • 户外温度传感器
  • 户外下雨传感器
  • 户外光照传感器
  • 有电池的RTC支持按周的灌溉调度
  • 非易失性存储-永远不会因为断电而丢失灌溉设置参数
  • 日出检测
  • 智能的浇水可以节省你的水费
  • 日出前浇水,留出适当的渗透时间
  • 减少真菌生长
  • 简单的调度控制

347248533601322cd69f6676f88b14e1.png

制作智能灌溉控制器所需的零件清单

  • IO扩展板 1块
  • 单总线转I2C 2块
  • 单线连接器 1个
  • 光纤连接器 1个
  • 光分路器 1个
  • Arduino Nano开发板 1块
  • 4路直流5V继电器
  • TSL2561光传感器
  • DS18B20防水温度传感器
  • 光学红外水位传感器
  • DS3231 AT24C32 IIC精密实时时钟
  • I2C SSD1306 OLED 128x64显示屏
  • 透明防水塑料外壳200x120x75mm
  • 透明防水塑料外壳100x68x50mm
  • ip68 pg7防水尼龙电缆盖
  • ip68 pg11防水尼龙电缆盖
  • RJ11 螺钉接线端子
  • 50英尺4C4P RJ11线
  • 6" 4C4P RJ11线
  • 2.54毫米接头线
  • 2引脚SPST瞬时微动按钮开关 2个
  • 12VDC 1A适配器电源

接线图

35b6b7dfefda13f99b03fc28d8a1f7f8.png

OLDE显示屏

accffc5db1e6759f518ff54940604b38.png

点击Menu按钮显示菜单,并继续点击此按钮循环完成所有菜单选项。如果30秒没有操作这个菜单将会自动返回。按下选择按钮以执行所需的菜单功能。

那么为什么使用IO扩展器呢?

  • 设计更简单
  • 现成的零件
  • 不需要编写单线驱动程序
  • 不需要编写DS3231 RTC驱动程序
  • 不需要编写EEPROM 驱动程序
  • 不需要编写OLED驱动程序
  • 没有显示字体占用Arduino代码空间
  • 不需要编写温度传感器驱动程序
  • 不需要编写光学雨感测器驱动程序
  • 节省Arduino上的代码空间;只有12710字节(39%)
  • 只要三天的时间来写代码
  • 易于电线使用标准的RJ11电话电缆
  • 无传感器电缆长度问题
  • 比类似的商业系统更便宜
  • 易于进行更改以适应个别需求
  • 单电源供电

系统构建

将Arduino Nano连接到IO扩展器,并使用以下代码对其进行编程。6 pin头是软件的串行调试端口,在最终的安装中是不需要的。

dc0afc603c31f8b413a991a20456b5b8.png

确保您更改了ONEWIRE_TO_I2C_ROM1和ONEWIRE-TO_I2C_ROM2定义的地址,使您的单总线地址与I2C地址相匹配。

注意:如果您使用USB端口来给Arduino Nano编程,您必须断开它与IO扩展器的连接,因为它也使用相同的单一串行端口,相反,如果您想调试使用ICSP端口来编程ATmega328P。要启用软件调试端口,请取消对SERIAL_DEBUG定义的注释。

分配器必须首先配置为将光学红外传感器数据线与单线远程传感器线隔离。在R2处焊接零欧姆0603电阻。

c61777a3d3e90ba3cff58a0551307f8d.png
  • 在小外壳上钻一个7/16"孔,在较大的外壳的右侧钻一个11/16"的孔,用来装PG7和PG11防水接线端。使用达美电磨工具稍微扩大孔,直到压盖盖紧。PG7将为远程传感器、PG11提供12VDC、24VAC、多种电线和RJ11远程传感器电线。

cbf6e083d96be366db15fb914ff421d5.png

将SPST轻触按钮微动开关接上RJ11螺丝端子。使用热收缩管绝缘接触端。

1c2ebc02865d24857cb9eb9f4d3da93a.png

连接所有电线和组装/馈送所有部件到大外壳。将所有部件装到大外壳里,并连接所有导线。

用于连接远程传感器的50英尺的RJ11电缆应该刚好穿过PG11防水头,而不必剪断它。

8ffd7e492293f21c2b72d41beeb2a725.png

在小外壳的顶部钻一个9/16英寸的孔,用于安装光学红外水传感器。使用达美电磨工具稍微把孔扩大一点,直到传感器安装到位。小型远程传感器与外壳紧密贴合,但是如果传感器是按照推荐的方向放置的,那么它应该刚好合适。使RJ11电缆尽可能短将有助于把它塞进更小的外壳。组装完成后,建议在拧上螺母之前在压盖螺母垫圈中添加一些防水胶,将会有更好的密封效果。

df577c6b6d94d9605962a68af4044a60.png

在屋外安装远程传感器器外壳,并将其升高到您房子的东侧,同时使光学红外雨传感器和光照度传感器指向天空,中间不要有任何障碍物。

8ff6a16bc6a81a488ba8f98f924b7417.png

在大外壳的顶部靠中间靠下的位置钻1/4“的孔,然后安装按钮。使用达美电磨工具稍微扩大孔,直到按钮安装到位。

ab837f49cb469a7b132084fb02a1fe5b.png

测试系统,确保一切正常。要测试继电器和传感器,请断开Arduino与IO扩展器的连接,并将其直接连接到您的计算机以手动控制它。一旦您确认一切正常,使用双面胶带和包装泡沫将所有部件组装到外壳中,以保护您的电路板,并享受智能灌溉控制器带来的好处和节约用水。

完整代码

使用你的Arduino智能浇灌你的院子或花园。

/* IO Expander sketch optimized

为了让更多电子、嵌入式爱好者认识Arduino,学习Arduino编程,加入到Arduino开源编程的大家庭,本人业余时间自制了一些Arduino NANO开发板。将免费赠送给那些一直关注我的文章的读者和粉丝,只要将我的专栏或任意一篇Arduino的文章分享到10个群或转发给20个人,就可以联系我,获得免费的Arduino NANO开发板一块。

0ca989e39e7bb20511468972a8673182.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值