欧美午夜欧美,台湾成人av,久久av一区,最近看过的日韩成人

電子開(kāi)發(fā)網(wǎng)

電子開(kāi)發(fā)網(wǎng)電子設(shè)計(jì) | 電子開(kāi)發(fā)網(wǎng)Rss 2.0 會(huì)員中心 會(huì)員注冊(cè)
搜索: 您現(xiàn)在的位置: 電子開(kāi)發(fā)網(wǎng) >> 基礎(chǔ)入門(mén) >> Arduino開(kāi)發(fā)學(xué)習(xí) >> 正文

遠(yuǎn)程控制通訊--基于Arduino + ESP8266控制LED燈

作者:佚名    文章來(lái)源:來(lái)源網(wǎng)絡(luò)    點(diǎn)擊數(shù):    更新時(shí)間:2021-10-17

Arduino是許多智能硬件愛(ài)好者的首選,使用簡(jiǎn)單快捷,而ESP8266模塊也是當(dāng)前最為熱門(mén)的WIFI模塊。本項(xiàng)目完成了Arduino使用EDP協(xié)議通過(guò)ESP8266 WIFI模塊接入OneNET服務(wù)器,并通過(guò)在接入設(shè)備中創(chuàng)建的應(yīng)用來(lái)實(shí)現(xiàn)遠(yuǎn)程控制LED燈。

【1】硬件連接:

準(zhǔn)備元件:

Arduino UNO

ESP8266 WIFI模塊

USB轉(zhuǎn)TTL連接線(xiàn)

硬件連線(xiàn):

Arduino UNO USB轉(zhuǎn)TTL

D2-----------------RX

D3-----------------TX

GND---------------GND

Arduino UNO ESP8266

RX-----------------TX

TX-----------------RX

GND---------------GND

其中USB轉(zhuǎn)TTL連接電腦用于調(diào)試打印輸出,然后Arduino的串口連接ESP8266的串口。

實(shí)物連接如下如圖所示:

【2】ESP8266配置和EDP上傳數(shù)據(jù)介紹:

選用ESP8266串口WIFI模塊,通過(guò)AT指令控制WIFI模塊接入互聯(lián)網(wǎng),依次完成與接入互聯(lián)網(wǎng)、與OneNet服務(wù)器建立TCP連接、傳輸數(shù)據(jù)等操作。

1)配置WIFI模塊;

模塊配置接入OneNet,依次發(fā)送如下幾個(gè)命令到WIFI模塊:

AT+CWMODE=3

AT+RST

AT+CIFSR

AT+CWJAP=“your ssid”,“password”

2)和OneNet服務(wù)器建立TCP連接,依次發(fā)送命令:

AT+CIPSTART=“TCP”,“183.230.40.39”,876 //和服務(wù)器建立TCP連接

AT+CIPMODE=1 //進(jìn)入透明傳輸模式

AT+CIPSEND //開(kāi)始傳輸

命令執(zhí)行結(jié)果如下圖所示:

【3】創(chuàng)建設(shè)備和應(yīng)用:

添加產(chǎn)品并創(chuàng)建接入設(shè)備,詳細(xì)創(chuàng)建步驟請(qǐng)查看:http://open.iot.10086.cn/doc/art243.html#66。其中數(shù)據(jù)傳輸協(xié)議選擇EDP。

在設(shè)備中添加應(yīng)用,創(chuàng)建一個(gè)開(kāi)關(guān)控件,在右側(cè)的屬性中選擇對(duì)應(yīng)設(shè)備的switch0數(shù)據(jù)流 ·注意到屬性中有開(kāi)關(guān)開(kāi)值和開(kāi)關(guān)關(guān)值兩個(gè)屬性,分別默認(rèn)為1,0,這里不做修改(因?yàn)榇a中1為開(kāi),非1則為關(guān)) ·修改EDP命令內(nèi)容為switch0:{v}(與代碼對(duì)應(yīng),代碼中會(huì)將冒號(hào)前的部分作為上傳的數(shù)據(jù)流ID,而將冒號(hào)之后的部分作為上傳是數(shù)據(jù)值) 這里的{v}是通配符當(dāng)下發(fā)命令的時(shí)候,他將會(huì)被開(kāi)關(guān)的開(kāi)/關(guān)值取代,稍后我們將看到命令的內(nèi)容。

編輯完成后點(diǎn)擊保存應(yīng)用。

【4】軟件代碼:

其中Arduino開(kāi)發(fā)板的D13作為被控制的LED燈,在程序中添加設(shè)備ID和APIKey。

/*
采用外接電源單獨(dú)供電,2 3口作為軟串口接PC機(jī)作為調(diào)試端
1 0為串口,連接WIFI模塊
*/
#include
#include "edp.c"
#define KEY "XpAhYrqhsZbk9eVqESnMJznDb3A=" //APIkey
#define ID "4051313" //設(shè)備ID
//#define PUSH_ID "680788"
#define PUSH_ID NULL
// 串口
#define _baudrate 115200
#define _rxpin 3
#define _txpin 2
#define WIFI_UART Serial
#define DBG_UART dbgSerial //調(diào)試打印串口
SoftwareSerial dbgSerial( _rxpin, _txpin ); // 軟串口,調(diào)試打印
edp_pkt *pkt;
/*
* doCmdOk
* 發(fā)送命令至模塊,從回復(fù)中獲取期待的關(guān)鍵字
* keyword: 所期待的關(guān)鍵字
* 成功找到關(guān)鍵字返回true,否則返回false
*/
bool doCmdOk(String data, char *keyword)
{
bool result = false;
if (data != "") //對(duì)于tcp連接命令,直接等待第二次回復(fù)
{
WIFI_UART.println(data); //發(fā)送AT指令
DBG_UART.print("SEND: ");
DBG_UART.println(data);
}
if (data == "AT") //檢查模塊存在
delay(2000);
else
while (!WIFI_UART.available()); // 等待模塊回復(fù)
delay(200);
if (WIFI_UART.find(keyword)) //返回值判斷
{
DBG_UART.println("do cmd OK");
result = true;
}
else
{
DBG_UART.println("do cmd ERROR");
result = false;
}
while (WIFI_UART.available()) WIFI_UART.read(); //清空串口接收緩存
delay(500); //指令時(shí)間間隔
return result;
}
void setup()
{
char buf[100] = {0};
int tmp;
pinMode(13, OUTPUT); //WIFI模塊指示燈
pinMode(8, OUTPUT); //用于連接EDP控制的發(fā)光二極管
WIFI_UART.begin( _baudrate );
DBG_UART.begin( _baudrate );
WIFI_UART.setTimeout(3000); //設(shè)置find超時(shí)時(shí)間
delay(3000);
DBG_UART.println("hello world!");
delay(2000);
while (!doCmdOk("AT", "OK"));
digitalWrite(13, HIGH); // 使Led亮
while (!doCmdOk("AT+CWMODE=3", "OK")); //工作模式
while (!doCmdOk("AT+CWJAP="PDCN","1234567890"", "OK"));
while (!doCmdOk("AT+CIPSTART="TCP","183.230.40.39",876", "CONNECT"));
while (!doCmdOk("AT+CIPMODE=1", "OK")); //透?jìng)髂J?/DIV>
while (!doCmdOk("AT+CIPSEND", ">")); //開(kāi)始發(fā)送
}
void loop()
{
static int edp_connect = 0;
bool trigger = false;
edp_pkt rcv_pkt;
unsigned char pkt_type;
int i, tmp;
char num[10];
/* EDP 連接 */
if (!edp_connect)
{
while (WIFI_UART.available()) WIFI_UART.read(); //清空串口接收緩存
packetSend(packetConnect(ID, KEY)); //發(fā)送EPD連接包
while (!WIFI_UART.available()); //等待EDP連接應(yīng)答
if ((tmp = WIFI_UART.readBytes(rcv_pkt.data, sizeof(rcv_pkt.data))) > 0 )
{
rcvDebug(rcv_pkt.data, tmp);
if (rcv_pkt.data[0] == 0x20 && rcv_pkt.data[2] == 0x00 && rcv_pkt.data[3] == 0x00)
{
edp_connect = 1;
DBG_UART.println("EDP connected.");
}
else
DBG_UART.println("EDP connect error.");
}
packetClear(&rcv_pkt);
}
while (WIFI_UART.available())
{
readEdpPkt(&rcv_pkt);
if (isEdpPkt(&rcv_pkt))
{
pkt_type = rcv_pkt.data[0];
switch (pkt_type)
{
case CMDREQ:
char edp_command[50];
char edp_cmd_id[40];
long id_len, cmd_len, rm_len;
char datastr[20];
char val[10];
memset(edp_command, 0, sizeof(edp_command));
memset(edp_cmd_id, 0, sizeof(edp_cmd_id));
edpCommandReqParse(&rcv_pkt, edp_cmd_id, edp_command, &rm_len, &id_len, &cmd_len);
DBG_UART.print("rm_len: ");
DBG_UART.println(rm_len, DEC);
delay(10);
DBG_UART.print("id_len: ");
DBG_UART.println(id_len, DEC);
delay(10);
DBG_UART.print("cmd_len: ");
DBG_UART.println(cmd_len, DEC);
delay(10);
DBG_UART.print("id: ");
DBG_UART.println(edp_cmd_id);
delay(10);
DBG_UART.print("cmd: ");
DBG_UART.println(edp_command);
//數(shù)據(jù)處理與應(yīng)用中EDP命令內(nèi)容對(duì)應(yīng)
//本例中格式為 datastream:[1/0]
sscanf(edp_command, "%[^:]:%s", datastr, val);
if (atoi(val) == 1)
digitalWrite(13, HIGH); // 使Led亮
else
digitalWrite(13, LOW); // 使Led滅
packetSend(packetDataSaveTrans(NULL, datastr, val)); //將新數(shù)據(jù)值上傳至數(shù)據(jù)流
break;
default:
DBG_UART.print("unknown type: ");
DBG_UART.println(pkt_type, HEX);
break;
}
}
//delay(4);
}
if (rcv_pkt.len > 0)
packetClear(&rcv_pkt);
delay(150);
}
/*
* readEdpPkt
* 從串口緩存中讀數(shù)據(jù)到接收緩存
*/
bool readEdpPkt(edp_pkt *p)
{
int tmp;
if ((tmp = WIFI_UART.readBytes(p->data + p->len, sizeof(p->data))) > 0 )
{
rcvDebug(p->data + p->len, tmp);
p->len += tmp;
}
return true;
}
/*
* packetSend
* 將待發(fā)數(shù)據(jù)發(fā)送至串口,并釋放到動(dòng)態(tài)分配的內(nèi)存
*/
void packetSend(edp_pkt* pkt)
{
if (pkt != NULL)
{
WIFI_UART.write(pkt->data, pkt->len); //串口發(fā)送
WIFI_UART.flush();
free(pkt); //回收內(nèi)存
}
}
void rcvDebug(unsigned char *rcv, int len)
{
int i;
DBG_UART.print("rcv len: ");
DBG_UART.println(len, DEC);
for (i = 0; i < len; i++)
{
DBG_UART.print(rcv[i], HEX);
DBG_UART.print(" ");
}
DBG_UART.println("");
}

【5】功能測(cè)試:

設(shè)備上電后,可以看到電腦串口打印輸出的內(nèi)容,首先連接OneNET服務(wù)器:

連接成功后,可以看到設(shè)備在線(xiàn)狀態(tài):

點(diǎn)擊設(shè)備應(yīng)用中的開(kāi)關(guān)按鈕,發(fā)送開(kāi)關(guān)命令給設(shè)備:

設(shè)備接收命令后進(jìn)行解析,并在串口打印輸出:

當(dāng)解析到數(shù)據(jù)流switch0的值為1時(shí)設(shè)備開(kāi)燈,Arduino 開(kāi)發(fā)板的D13被點(diǎn)亮,相反為0時(shí)燈滅。

Tags:Arduino,遠(yuǎn)程控制通訊  
責(zé)任編輯:admin
請(qǐng)文明參與討論,禁止漫罵攻擊,不要惡意評(píng)論、違禁詞語(yǔ)。 昵稱(chēng):
1分 2分 3分 4分 5分

還可以輸入 200 個(gè)字
[ 查看全部 ] 網(wǎng)友評(píng)論
欧美午夜欧美,台湾成人av,久久av一区,最近看过的日韩成人
激情综合色综合久久| 成人伦理片在线| 国产成人在线视频网站| 在线一区二区视频| 日本一区二区久久| 麻豆精品精品国产自在97香蕉 | 国产在线视频不卡二| 色综合天天视频在线观看 | 国产91露脸合集magnet| 色久综合一二码| 中文字幕中文在线不卡住| 麻豆传媒一区二区三区| 在线视频欧美区| 中文字幕亚洲精品在线观看 | 免费在线观看日韩欧美| 97久久超碰精品国产| 国产欧美一区二区精品性色超碰| 日本中文字幕不卡| 欧美午夜一区二区三区| 一区二区三区在线视频观看58 | av中文字幕一区| 久久久久久久久久久99999| 日本成人在线视频网站| 在线播放国产精品二区一二区四区 | 一区二区三区高清不卡| heyzo一本久久综合| 国产亲近乱来精品视频| 国产一区二区三区观看| 久久久久亚洲综合| 狠狠色丁香久久婷婷综合丁香| 欧美一区二区免费视频| 午夜精品爽啪视频| 欧美一区二区二区| 日韩电影在线观看一区| 日韩亚洲电影在线| 久久精品国产久精国产爱| 欧美va日韩va| 国产精品一区二区久久不卡| 久久免费的精品国产v∧| 狠狠久久亚洲欧美| 久久久三级国产网站| 成人一区二区三区中文字幕| 中文字幕一区日韩精品欧美| 91丨porny丨国产入口| 亚洲精品伦理在线| 欧美欧美午夜aⅴ在线观看| 天堂午夜影视日韩欧美一区二区| 欧美一区二区视频网站| 国产一区二区伦理| 亚洲国产成人自拍| 在线国产电影不卡| 日本欧美加勒比视频| 久久久综合激的五月天| 99这里只有精品| 亚洲bdsm女犯bdsm网站| 精品国产成人系列| 99精品一区二区三区| 亚洲成人免费av| 久久色在线观看| 99久久精品国产一区二区三区| 亚洲一区二区三区四区的| 欧美videos中文字幕| 91亚洲精华国产精华精华液| 日精品一区二区三区| 久久网站热最新地址| 日本电影亚洲天堂一区| 狠狠色丁香久久婷婷综合_中| 国产精品素人一区二区| 欧美色电影在线| 国产suv精品一区二区三区| 亚洲国产一区二区视频| 久久久噜噜噜久久人人看 | 成人免费高清视频| 午夜不卡av免费| 久久精品亚洲乱码伦伦中文| 在线一区二区三区四区五区| 国产一区在线精品| 亚洲成人午夜影院| 中文字幕乱码日本亚洲一区二区| 精品视频在线免费看| 国产一区二区免费看| 午夜精品福利久久久| 亚洲欧美视频在线观看| 久久久蜜臀国产一区二区| 欧美另类videos死尸| 99视频精品在线| 国产精品1区二区.| 日韩va欧美va亚洲va久久| 亚洲精品国产a久久久久久| 26uuu精品一区二区| 在线综合视频播放| 在线观看av一区| 成人av先锋影音| 国产很黄免费观看久久| 日本不卡视频在线| 亚洲香肠在线观看| 综合久久久久综合| 亚洲国产高清不卡| 国产亚洲短视频| 久久精品亚洲乱码伦伦中文| 欧美成人伊人久久综合网| 欧美久久一区二区| 欧美日韩视频不卡| 欧美色网站导航| 精品视频999| 欧美影片第一页| 欧美午夜精品一区二区三区| 日本精品视频一区二区| 色av一区二区| 欧美午夜精品久久久久久超碰| 91久久久免费一区二区| 91丝袜国产在线播放| 97se亚洲国产综合自在线| 91偷拍与自偷拍精品| 色综合一区二区三区| 26uuu色噜噜精品一区二区| 制服丝袜日韩国产| 日韩午夜电影av| 精品国产亚洲在线| 精品久久久久av影院| 26uuu精品一区二区| 久久噜噜亚洲综合| 中文字幕乱码亚洲精品一区| 国产亚洲成aⅴ人片在线观看 | 精品久久久影院| 亚洲精品在线免费观看视频| 精品少妇一区二区三区视频免付费| 91精品国产高清一区二区三区 | 全国精品久久少妇| 裸体在线国模精品偷拍| 国产经典欧美精品| 99久久综合色| 在线成人午夜影院| 精品国产乱码久久久久久免费| 国产欧美1区2区3区| 亚洲摸摸操操av| 美女脱光内衣内裤视频久久影院| 免费成人在线网站| 成人黄色在线视频| 精品婷婷伊人一区三区三| 日韩视频免费观看高清在线视频| 国产亚洲福利社区一区| 亚洲国产视频直播| 蜜臀久久99精品久久久画质超高清| 国产经典欧美精品| 色婷婷久久久综合中文字幕 | 亚洲欧美日韩久久精品| 日韩专区在线视频| 国产盗摄一区二区三区| 91成人网在线| 久久九九99视频| 亚洲妇女屁股眼交7| 国产曰批免费观看久久久| 在线观看亚洲专区| 国产丝袜欧美中文另类| 亚洲国产精品尤物yw在线观看| 国产一区二区三区免费看| 欧美日韩国产高清一区二区 | 美女视频黄 久久| 91麻豆国产在线观看| www国产亚洲精品久久麻豆| 伊人开心综合网| 国产风韵犹存在线视精品| 7777精品久久久大香线蕉 | 中文字幕亚洲电影| 精品在线一区二区| 欧美日韩亚洲综合| 亚洲欧美日韩在线| 懂色中文一区二区在线播放| 91精品国产手机| 亚洲午夜激情网站| 97久久精品人人爽人人爽蜜臀| 久久影视一区二区| 免费观看在线综合色| 欧美午夜在线观看| 亚洲欧美日韩国产另类专区| 国产东北露脸精品视频| 欧美一区二区三区免费| 天天色综合天天| 欧美日韩国产一二三| 亚洲视频图片小说| 成人久久视频在线观看| 久久精品夜色噜噜亚洲a∨| 久久er99热精品一区二区| 91精品国产综合久久久久久久| 亚洲综合成人网| 在线欧美日韩国产| 亚洲伦理在线精品| 91视频免费观看| 国产精品国产精品国产专区不蜜| 国产精品亚洲第一区在线暖暖韩国 | 91传媒视频在线播放| 亚洲视频一二三区| 在线一区二区视频| 亚洲午夜精品一区二区三区他趣| 欧美手机在线视频| 亚洲综合清纯丝袜自拍| 欧美日韩国产在线观看| 日韩在线观看一区二区| 日韩免费看网站|