玩电子开发的朋友们一般都玩过自动浇花,如果你是第一次玩也没关系,可以参考波波之前发的笔记《利用Arduino制作自动浇花工具》。笔记内容很简单,保证一学就会。
今天呢波波就教大家在上篇笔记的基础上拿家中电视遥控器来控制浇水程序。这样以来浇水程序不仅可以根据土壤湿度执行自动浇水,我们还可以通过遥控器来人工浇水。两种浇水方式,大大的方便我们对植物生长环境的管理。
需要准备的物料:
1、Arduino 开发板。
2、自动浇水套件。也可以跟我之前笔记中浇水部分配件一致。
3、38K红外接收模块。建议最好买电子模块,买单个头还需要自己焊接电阻,麻烦。
4、红外遥控器。可以用家里电视或空调遥控器,或者不用的机顶盒遥控器都是OK的。道理一样。
开始步骤:
遥控原理很简单就是我们需要读取遥控器上某按键的编码(实质上红外遥控器发射出来的是矩形波,但是本篇笔记波波不是为了普及底层知识,故而简单称之为按键编码),因为每一家遥控器都不尽相同,读取出来的编码可能很长,因此在程序开发中我们需要为按键编码定义一个最少256位的char类型。
1、获取按键编码:把红外接收模块连接在Arduino D11的接口上,刷入以下程序。
- #include <IRremote.h>
- int RECV_PIN = 11; // 红外一体化接收头连接到Arduino 11号引脚
- IRrecv irrecv(RECV_PIN);
- decode_results results; // 用于存储编码结果的对象
- void setup()
- {
- Serial.begin(115200); // 初始化串口通信
- irrecv.enableIRIn(); // 初始化红外解码
- }
- void loop() {
- if (irrecv.decode(&results)) {
- Serial.println(results.value, HEX);
- irrecv.resume(); // 接收下一个编码
- }
- }
你打算把遥控器哪个按钮作为开关,就让遥控器对准接收模块按下相关的按键。为了避免与家庭中电视或空调的开关机键冲突,建议大家不要选择自己家中电器遥控器的开关机按钮作为项目的浇花开始与浇花停止按钮。
我们在串口监视器中可以看到对应的按键编码。
2、在浇花程序中(上一篇笔记的程序)引入<IRremote.h>,在程序中增加以下代码。
- #include <IRremote.h>
- int RECV_PIN = 11; // 红外一体化接收头连接到Arduino 11号引脚
- IRrecv irrecv(RECV_PIN);
- decode_results results; // 用于存储编码结果的对象
- void setup()
- {
- irrecv.enableIRIn(); // 初始化红外解码
- }
- void loop() {
- if (irrecv.decode(&results))
- {
- Serial.println( results.value);
- if( results.value == 0xFFA25D) //若接收到按键ON按下的指令,开始浇水
- {
- goWater();
- }
- else if(results.value == 0xFFE21D) //接收到OFF按键按下的命令,停止浇水
- {
- noWater(); //这个逻辑需要自己写,可参考goWater()
- }
- irrecv.resume(); // 接收下一个编码
- }
- }
其实浇花程序除了用遥控器控制之外,我们还可以通过手机App或者蓝牙控制。手机App控制的时候可以把Arduino开发板通过ESP8266或者W500模块连接到机智云上边,机智云提供了APP的下载。蓝牙控制的话可以下载个蓝牙调试助手安装在手机中,开发板连接Arduino主电路板。
关于浇花的研究就到这里了,回头如果攒够了钱,波波再为大家分享利用树莓派做自动驾驶的边缘计算。
喜欢相关教程的朋友们还望多多赞助哈,这样就可以为大家早做分享。