德州仪器的CC3000 WiFi模块是一个小银包,最终为您的Arduino项目带来了易用,经济实惠的WiFi功能。

它使用SPI进行通信(而不是UART!),因此您可以根据需要尽可能快地推送数据,或者根据需要尽可能慢地推送数据。 它有一个带有IRQ引脚的适当的中断系统,所以你可以有异步连接。 它支持802.11b / g,开放/ WEP / WPA / WPA2安全,TKIP& AES。 具有“BSD套接字"接口的内置TCP / IP堆栈支持客户端和服务器模式下的TCP和UDP。

必需的组件

您将需要以下组件 -

  • 1 × Arduino Uno

  • 1 × Adafruit CC3000分线板

  • 1 × 5V 继电器

  • 1 × 整流二极管

  • 1 × LED

  • 1 × 220欧姆电阻

  • 1 × 面包板和一些跳线

对于这个项目,你只需要通常的Arduino IDE,Adafruit的CC3000库和CC3000 MDNS库。 我们还将使用aREST库通过WiFi向中继发送命令。

程序

按照电路图进行连接,如下图所示。

这个项目的硬件配置非常容易。

  • 将CC3000板的IRQ引脚连接到Arduino板的引脚号3。

  • VBAT连接到引脚5,CS连接到引脚10。

  • 将SPI引脚连接到Arduino板:MOSI,MISO和CLK分别连接到引脚11,12和13。

  • Vin连接到Arduino 5V,GND连接到GND。

让我们现在连接继电器。

将继电器放在面包板上后,您可以开始识别继电器上的两个重要部分:指令继电器的线圈部分,以及我们将连接LED的开关部分。

  • 首先,将Arduino板的8号引脚连接到线圈的一个引脚。

  • 将另一个引脚连接到Arduino板的地。

您还必须将整流二极管(阳极连接到接地引脚)放置在线圈的引脚上,以在继电器切换时保护电路。

  • 将Arduino板的+ 5V连接到继电器开关的公共引脚。

  • 将Arduino板的+ 5V连接到继电器开关的公共引脚。...

测试单个组件

将Arduino板的+ 5V连接到继电器开关的公共引脚。...

const int relay_pin = 8; // Relay pin

void setup() {
   Serial.begin(9600);
   pinMode(relay_pin,OUTPUT);
}

void loop() {
   // Activate relay
   digitalWrite(relay_pin, HIGH);
   // Wait for 1 second
   delay(1000);
   // Deactivate relay
   digitalWrite(relay_pin, LOW);
   // Wait for 1 second
   delay(1000);
}

代码说明

代码是不言自明的。 您只需将其上传到电路板,继电器将每秒切换状态,LED将相应地打开和关闭。

添加WiFi连接

现在让我们使用CC3000 WiFi芯片无线控制继电器。 该项目的软件基于TCP协议。 然而,对于这个项目,Arduino板将运行一个小的Web服务器,所以我们可以“监听"来自计算机的命令。 我们将首先处理Arduino草图,然后我们将看到如何编写服务器端代码并创建一个漂亮的界面。

首先,Arduino素描。 这里的目标是连接到您的WiFi网络,创建Web服务器,检查是否有传入的TCP连接,然后相应地更改中继的状态。

守则的重要部分

#include <Adafruit_CC3000.h>
#include <SPI.h>
#include <CC3000_MDNS.h>
#include <Ethernet.h>
#include <aREST.h>

您需要在代码中定义特定于您的配置的内容,即Wi-Fi名称和密码,以及TCP通信的端口(我们在这里使用了80个)。

// WiFi network (change with your settings!)
   #define WLAN_SSID "yourNetwork" // cannot be longer than 32 characters!
   #define WLAN_PASS "yourPassword"
   #define WLAN_SECURITY WLAN_SEC_WPA2 // This can be WLAN_SEC_UNSEC, WLAN_SEC_WEP, 
   // WLAN_SEC_WPA or WLAN_SEC_WPA2

// The port to listen for incoming TCP connections
   #define LISTEN_PORT 80

然后我们可以创建CC3000实例,服务器和aREST实例 -

// Server instance
   Adafruit_CC3000_Server restServer(LISTEN_PORT); // DNS responder instance
   MDNSResponder mdns; // Create aREST instance
   aREST rest = aREST();

在草图的setup()部分,我们现在可以将CC3000芯片连接到网络 -

cc3000.connectToAP(WLAN_SSID, WLAN_PASS, WLAN_SECURITY);

计算机将如何知道在哪里发送数据? 一种方法是运行草图一次,然后获取CC3000板的IP地址,并再次修改服务器代码。 但是,我们可以做得更好,这就是CC3000 MDNS库的地方。 我们将使用此库为我们的CC3000板分配一个固定名称,因此我们可以将此名称直接写入服务器代码。

这是用下面的代码片 -

if (!mdns.begin("arduino", cc3000)) {
   while(1);
}

我们还需要监听进来的连接。

restServer.begin();

接下来,我们将对将被连续执行的草图的loop()函数进行编码。 我们首先要更新mDNS服务器。

mdns.update();

在Arduino板上运行的服务器将等待传入连接并处理请求。

Adafruit_CC3000_ClientRef client = restServer.available();
rest.handle(client);

现在很容易通过WiFi测试项目。 确保您用您自己的WiFi名称和密码更新草图,并将草图上传到您的Arduino板。 打开您的Arduino IDE串行监视器,并查找您的主板的IP地址。

让我们假设其余的是192.168.1.103。

然后,只需去你喜欢的网络浏览器,然后键入 -

192.168.1.103/digital/8/1

您应该看到继电器自动打开。

构建中继接口

我们现在将编写项目的接口。 这里将有两个部分:包含接口的HTML文件和用于处理接口点击的客户端Javascript文件。 这里的界面基于aREST.js项目,这是为了方便从您的计算机控制WiFi设备。让我们先看一下HTML文件,名为interface.html。 第一部分包括导入接口的所有必需的库 -

<head>
   <meta charset = utf-8 />
   <title> Relay Control </title>
   <link rel = "stylesheet" type = "text/css" 
      href = "https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
   <link rel="stylesheet" type = "text/css" href = "style.css">
   <script type = "text/javascript" 
      src = "https://code.jquery.com/jquery-2.1.4.min.js"></script>
   <script type = "text/javascript" 
      src = "https://cdn.rawgit.com/Foliotek/AjaxQ/master/ajaxq.js"></script>
   <script type = "text/javascript" 
      src = "https://cdn.rawgit.com/marcoschwartz/aREST.js/master/aREST.js"></script>
   <script type = "text/javascript" 
      src = "script.js"></script>
</head>

然后,我们在接口内定义两个按钮,一个用于打开继电器,另一个用于再次关闭继电器。

<div class = 'container'>
   <h1>Relay Control</h1>
   <div class = 'row'>
      <div class = "col-md-1">Relay</div>
      <div class = "col-md-2">
         <button id = 'on' class = 'btn btn-block btn-success'>On</button>
      </div>
      <div class = "col-md-2">
         <button id = 'off' class = 'btn btn-block btn-danger'>On</button>
      </div>
   </div>
</div>

现在,我们还需要一个客户端Javascript文件来处理按钮的点击。 我们还将创建一个设备,我们将链接到我们的Arduino设备的mDNS名称。 如果你在Arduino代码中改变了,你需要在这里修改它。

// Create device
var device = new Device("arduino.local");
// Button

$('#on').click(function() {
   device.digitalWrite(8, 1);
});

$('#off').click(function() {
   device.digitalWrite(8, 0);
});

该项目的完整代码可以在 GitHub 存储库中找到。 进入界面文件夹,只需用您喜欢的浏览器打开HTML文件。 您应该会在浏览器中看到类似的内容 -

尝试点击Web界面上的按钮; 它应该几乎立即改变继电器的状态。

如果你设法让它工作,bravo! 你刚刚建立了一个Wi-Fi控制的灯开关。 当然,你可以控制比这个项目的灯更多。 只需确保您的继电器支持您想要控制的设备所需的电源,你很好去。

新闻动态 联系方式 广告合作 招聘英才 安科实验室 帮助与反馈 About Us

Copyright © 2013 - 2019 Ancii.com All Rights Reserved京ICP备18063983号-5 京公网安备11010802014868号