Arduino 使用315Mhz无线模块通信并用1602液晶显示

当然了,幻想归幻想,既然没有女票这事已成为一个不争的事实,那能不能做点什么改变呢,比如说别人快下班的时候给女朋友打电话交代说先把饭煮了,咱 们程序员也可以拿起电话,发个短信给家里边那位----Arduino开发板,叫她把热水器打开,回家好洗个热水澡。哈哈,这样一来,咱们的 Arduino开发板也具有了女票的部分功能了不是?

说干就干:

不积跬步,无以至千里。咱们既然想实现一个“机器人女友”,各种器官组件可少不了,心急吃不了热豆腐,咱们一步步来。

刚 刚咱们说了发短信给Arduino,叫她完成一个打开热水器的动作。这个动作完美的实现其实不简单,但是我们可以将问题简单化。简单描述成一个命令接收系 统,传输命令这个就叫做人机交互,今天咱们做的只有我们给机器人发指令,没有接收机器人回传数据的功能,只能叫做单向通信。后面功能做齐全了必然会有回传 数据。那种双向通信称作人机交互也会更加妥当。

今天咱们实现的单向通信采用的是两块Arduino uno板,是为了将问题简化。实际制作的时候都是需要用外网控制,一般使用wifi路由器发送指令。当然,使用wifi路由器来做会更加节省成本,不过, 也会更加复杂,这里暂时先不讨论,先讨论两块Arduino之间使用315Mhz无线模块进行单向通信的实现方案。

扯淡了半天,咱们也可以开始了。按照常理,No pic no JB.先来一张效果图。

完整接线图:

e63a3b40a2bf8f2dab3f555896a01a72.jpg - 大小: 108.03 KB - 尺寸: 500 x 666 - 点击打开新窗口浏览全图
光看这个图可能什么也看不出来,咱们分步来说。

首先来看下具体的 材料:

一:Arduino UNO两块,一个发送一个接收。

15ebe3bc4f24e5f1a4b732c805f6a73c.jpg - 大小: 105.8 KB - 尺寸: 500 x 666 - 点击打开新窗口浏览全图
PS:图片上的两块板上面的是原产进口的UNO r3作为发射端,下面的是华强北产的山寨UNO r3作为接收端,国产的做工不敢恭维,还好基本功能能用。继续看。

二:315Mhz无线接收模块

8e794c56f94e5f83fcaca554323a8e54.jpg - 大小: 88.47 KB - 尺寸: 500 x 666 - 点击打开新窗口浏览全图

三:315Mhz无线发射模块

352b16cca4dee28be8d952fc4ad7c84e.jpg - 大小: 49.06 KB - 尺寸: 500 x 375 - 点击打开新窗口浏览全图

四:1602液晶两块(目的在于演示效果,实际场景是不需要液晶显示的)

6da56f08abf97516d30b8b6a39b37d02.jpg - 大小: 54.15 KB - 尺寸: 500 x 375 - 点击打开新窗口浏览全图

五:50K电调一个(用于1602液晶的对比度调节)

393a44256887a21b7c717c52cbe64625.jpg - 大小: 41.19 KB - 尺寸: 500 x 375 - 点击打开新窗口浏览全图

六:面包板一块加杜邦线若干

71826eaaf1e0db9cbf796962c5ed3e1d.jpg - 大小: 76.31 KB - 尺寸: 500 x 375 - 点击打开新窗口浏览全图

OK,材料上齐,开始折腾。

1602液晶采用了4线接法。毕竟uno板的接口实在是有限。液晶接法参考了极客工坊的图。我这使用的是一个50K的电调同时控制两个1602液晶的对比 度。接法就是两块UNO板同时使用一个5v供电,对比度调节同时接到电调的输出端。这样两个液晶的对比度就是一样的了。可同时控制。

下面给出1602液晶的四线接线图(非常感谢极客工坊提供的图片)

d961059b1b95e4ff69b9e3cf7bc9d53c.jpg - 大小: 53.74 KB - 尺寸: 499 x 318 - 点击打开新窗口浏览全图

连接完之后再连接315Mhz的发射和接收模块。两个模块的连接都非常简单,发射端三根针脚。vcc接电源5V,gnd接gnd,ATAD为信号 线,选择一个数字接口连接就OK了。接收端有四个针脚,vcc和gnd就不说了,剩下的两个都是data信号线,这里只需要使用一根即可。注意,这里不 能随便选择数字接口。这里要选择2号或者3号接口,原因是因为在UNO板上面只有2号和3号接口是中断接口。

好了。下面看程序,程序中使用的针脚可能和图上不太一样。那些都可以根据自己的喜好自行调整。这里程序需要使用两个库文件。

LiquidCrystal.h是控制LCD液晶的库文件

RCSwitch.h则是控制315Mhz无线模块的库文件

发射端代码:

#include <LiquidCrystal.h>
#include <RCSwitch.h>
LiquidCrystal lcd(7, 6 , 5 , 11,10, 9, 8);
RCSwitch mySwitch = RCSwitch();
int i = 0;
void setup(){
   lcd.begin(16, 2);
   mySwitch.enableTransmit(12);
}
void loop(){
  i = i+1;
  mySwitch.send(i, 24);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("send:");
  lcd.setCursor(5,0 );
  lcd.print(i);
  delay(1000);
}

程序的意思是每个一秒发送一个数字并在1602上显示出来。

接收端代码:

#include <LiquidCrystal.h>
#include <RCSwitch.h>
LiquidCrystal lcd(7, 6 , 5 , 11,10, 9, 8);
RCSwitch mySwitch = RCSwitch();

void setup(){
  lcd.begin(16, 2);
  mySwitch.enableReceive(0);
}
void loop(){
  if (mySwitch.available()) {
    int value = mySwitch.getReceivedValue();
    if (value != 0) {
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("receive:");
      lcd.setCursor(8, 0);
      lcd.print(value);
    }
    mySwitch.resetAvailable();
  }
}

很简单吧。

最后看张效果图,实时显示发送与接收的数据

6e3177d74324728e5eb14713bd4f46e1.jpg - 大小: 44.86 KB - 尺寸: 500 x 375 - 点击打开新窗口浏览全图

哈哈,看完之后是不是觉得很简单呢。这样咱们就迈出了第一步。

本文链接:https://www.92ez.com/?action=show&id=5
!!! 转载请先联系non3gov@gmail.com授权并在显著位置注明作者和原文链接 !!! 小黑屋
提示:技术文章有一定的时效性,请先确认是否适用你当前的系统环境。

关键词: 315mhz通信 , arduino 无线通信

上一篇: 梦幻空间之Arduino呼吸灯制作
下一篇: 对某高校官方网站的一次简单的注入检测(sqlmap)

访客评论
目前还没有人评论,您发表点看法?
发表评论

评论内容 (必填):