
- Arduino 教程
- Arduino - 首頁
- Arduino - 概述
- Arduino - 開發板說明
- Arduino - 安裝
- Arduino - 程式結構
- Arduino - 資料型別
- Arduino - 變數與常量
- Arduino - 運算子
- Arduino - 控制語句
- Arduino - 迴圈
- Arduino - 函式
- Arduino - 字串
- Arduino - 字串物件
- Arduino - 時間
- Arduino - 陣列
- Arduino 函式庫
- Arduino - I/O 函式
- Arduino - 高階 I/O 函式
- Arduino - 字元函式
- Arduino - 數學庫
- Arduino - 三角函式
- Arduino 高階應用
- Arduino - Due & Zero
- Arduino - 脈衝寬度調製 (PWM)
- Arduino - 隨機數
- Arduino - 中斷
- Arduino - 通訊
- Arduino - I2C 通訊
- Arduino - SPI 通訊
- Arduino 專案
- Arduino - LED 閃爍
- Arduino - LED 漸變
- Arduino - 讀取模擬電壓
- Arduino - LED 條形圖
- Arduino - 鍵盤登出
- Arduino - 鍵盤訊息
- Arduino - 滑鼠按鍵控制
- Arduino - 鍵盤序列埠
- Arduino 感測器
- Arduino - 溼度感測器
- Arduino - 溫度感測器
- Arduino - 水位檢測/感測器
- Arduino - PIR 感測器
- Arduino - 超聲波感測器
- Arduino - 連線開關
- 電機控制
- Arduino - 直流電機
- Arduino - 伺服電機
- Arduino - 步進電機
- Arduino 和聲音
- Arduino - 音調庫
- Arduino - 無線通訊
- Arduino - 網路通訊
- Arduino 有用資源
- Arduino - 快速指南
- Arduino - 有用資源
- Arduino - 討論
Arduino - 網路通訊
德州儀器公司的 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 連線到繼電器開關的公共引腳。
最後,將開關的另一個引腳(通常是繼電器關閉時未連線的引腳)與 220 歐姆電阻串聯連線到 LED,並將 LED 的另一端連線到 Arduino 板的地線。
測試單個元件
您可以使用以下程式碼測試繼電器:
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>
您需要在程式碼中定義特定於您配置的內容,即 WiFi 名稱和密碼,以及 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。
然後,只需開啟您喜歡的 Web 瀏覽器,然後鍵入:
192.168.1.103/digital/8/1
您應該會看到您的繼電器自動開啟。
構建繼電器介面
我們現在將編寫專案的介面程式碼。這裡將有兩個部分:包含介面的 HTML 檔案和處理介面點選的客戶端 Javascript 檔案。這裡的介面基於 **aREST.js** 專案,該專案旨在輕鬆地從您的計算機控制 WiFi 裝置。
讓我們首先看看名為 interface.html 的 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** 儲存庫中找到。進入 interface 資料夾,只需使用您喜歡的瀏覽器開啟 HTML 檔案。您應該在瀏覽器中看到類似的內容:

嘗試點選 Web 介面上的按鈕;它應該幾乎立即更改繼電器的狀態。
如果您成功運行了它,太棒了!您剛剛構建了一個 WiFi 控制的燈開關。當然,您可以使用此專案控制比燈光多得多的東西。只要確保您的繼電器支援您要控制的裝置所需的功率,就可以了。