Arduino UNO R3使用ESP8266連接機智雲物聯網平臺

前言

本文實現Arduino UNO R3通過ESP8266-01模塊連接機智雲平臺,從而實現用手機APP遠程點亮LED燈。

遠程點亮LED燈.gif

一、ESP8266模塊本地調試

當我們參考機智雲官網給的教程時,關於Arduino平臺主要都是關於機智雲官方自己的開發板Gokit的資料。但當我們只使用Arduino UNO R3接入機智雲平臺,有很多教程通過添加了兩個按鍵來選擇airlink和softap模式,其實我們只要在本地給ESP8266配好了網絡連接,就不需要每次通過按鍵切換配網模式。

第一步:首先在官網下載機智雲固件GAgent,

下載GAgent固件.png

第二步:使用ESP8266下載工具ESPFlashDownloadTool,將固件下載至ESP8266中。

esp8266下載工具.png

第三步:在機智雲官網下載機智雲串口調試助手,

機智雲串口調試助手本地調試方法.png
將ESP8266通過串口轉USB工具插在電腦上,安裝好驅動,選擇中確的驅動後,打開串口,填入在官網申請的product_key和Product Secret後,就能在右邊看見數據點了,此時再打開指令界面,點擊AirLink命令,ESP8266就進入了自動配網模式;

第四步:下載機智雲移動端APP

圖片.png

打開APP,點擊一鍵配置,輸入家裏的WiFi賬號及密碼,選擇樂鑫,因爲剛纔我們已經將ESP8266設置成AirLink透傳模式,現在通過APP就可以將家裏的WiFi信息發送給ESP8266,此時APP發現新設備下會出現你的WiFi模組,點擊後就會看到你定義的數據點了。

二、硬件搭建

2.1硬件連接圖

硬件連接圖.png

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接入機智雲物聯網平臺。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章