前言
本文實現Arduino UNO R3通過ESP8266-01模塊連接機智雲平臺,從而實現用手機APP遠程點亮LED燈。
一、ESP8266模塊本地調試
當我們參考機智雲官網給的教程時,關於Arduino平臺主要都是關於機智雲官方自己的開發板Gokit的資料。但當我們只使用Arduino UNO R3接入機智雲平臺,有很多教程通過添加了兩個按鍵來選擇airlink和softap模式,其實我們只要在本地給ESP8266配好了網絡連接,就不需要每次通過按鍵切換配網模式。
第一步:首先在官網下載機智雲固件GAgent,
第二步:使用ESP8266下載工具ESPFlashDownloadTool,將固件下載至ESP8266中。
第三步:在機智雲官網下載機智雲串口調試助手,
將ESP8266通過串口轉USB工具插在電腦上,安裝好驅動,選擇中確的驅動後,打開串口,填入在官網申請的product_key和Product Secret後,就能在右邊看見數據點了,此時再打開指令界面,點擊AirLink命令,ESP8266就進入了自動配網模式;
第四步:下載機智雲移動端APP
打開APP,點擊一鍵配置,輸入家裏的WiFi賬號及密碼,選擇樂鑫,因爲剛纔我們已經將ESP8266設置成AirLink透傳模式,現在通過APP就可以將家裏的WiFi信息發送給ESP8266,此時APP發現新設備下會出現你的WiFi模組,點擊後就會看到你定義的數據點了。
二、硬件搭建
2.1硬件連接圖
LED接上220歐姆電阻,連在Arduino的D4上,ESP8266CH-PD和vcc都接高電平。
注意:
- 在給Arduino燒錄程序的時候要斷開ESP8266與Arduino的串口連接,否則會有干擾導致代碼燒錄不成功;
- ESP8266-01只能供給3.3v電壓,5v電壓可能會燒壞WiFi模組
2.2 項目源碼
/**************************************************************
Name: Gizwits + ArduinoUnoWiFi Library
Author: [email protected] / [email protected]
Version: V1.0
Init: 2016-12-23
Modify: 2020-02-22
****************************************************************/
#include <Gizwits.h>
#include <Wire.h>
#include <SoftwareSerial.h>
int ledPin = 13; // LED connected to digital pin 13,it's used for status
int myledPin = 4; // my LED connected to digital pin 4
int sensorValue = 0; // value read from the pot
bool varR_LED_OnOff = 0;
Gizwits myGizwits;
#define KEY1 6
#define KEY2 7
#define KEY1_SHORT_PRESS 1
#define KEY1_LONG_PRESS 2
#define KEY2_SHORT_PRESS 4
#define KEY2_LONG_PRESS 8
#define NO_KEY 0
#define KEY_LONG_TIMER 3
unsigned long Last_KeyTime = 0;
unsigned long gokit_time_s(void)
{
return millis() / 1000;
}
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(ledPin, OUTPUT); // sets the digital pin as output
pinMode(myledPin, OUTPUT); // sets the digital pin as output
pinMode(KEY1, INPUT_PULLUP);
pinMode(KEY2, INPUT_PULLUP);
myGizwits.begin();
}
void wifiStatusHandle()
{
if(myGizwits.wifiHasBeenSet(WIFI_CON_ROUTER))
digitalWrite(ledPin, LOW); // sets the LED off
}
void loop() {
sensorValue = analogRead(A0);
unsigned long varW_ADCValue = sensorValue;//Add Sensor Data Collection
myGizwits.write(VALUE_ADCValue, varW_ADCValue);
if(myGizwits.hasBeenSet(EVENT_LED_OnOff))
{
myGizwits.read(EVENT_LED_OnOff,&varR_LED_OnOff);//Address for storing data
}
if(varR_LED_OnOff==1)
{
digitalWrite(myledPin, HIGH); // 打開 LED
}
else
{
digitalWrite(myledPin, LOW); // 關閉 LED
}
// KEY_Handle();//key handle , network configure
wifiStatusHandle();//WIFI Status Handle
myGizwits.process();
}
最後
至此,你的ESP8266模組就成功連接上機智雲服務平臺了,無論你在任何地方,無論用WiFi和4G都能通過APP來控制LED等的亮滅了,機智雲還提供了APP的開源框架,我們可以在此基礎上高度自由地定製我們自己的APP接入機智雲物聯網平臺。