色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CC2530采用ESP8266與手機(jī)APP通信

DS小龍哥-嵌入式技術(shù) ? 來(lái)源:DS小龍哥-嵌入式技術(shù) ? 作者:DS小龍哥-嵌入式技 ? 2023-05-23 09:15 ? 次閱讀

一、案例介紹

下面是一個(gè)基于CC2530和ESP8266的項(xiàng)目示例,它演示了如何使用CC2530與ESP8266通信以及使用AT指令控制其WiFi模塊設(shè)置和數(shù)據(jù)傳輸。

項(xiàng)目概述: 項(xiàng)目實(shí)現(xiàn)通過(guò)CC2530控制ESP8266將其配置成AP+TCP服務(wù)器模式,并通過(guò)手機(jī)APP連接到TCP服務(wù)器并完成數(shù)據(jù)傳輸。ESP8266將作為一個(gè)熱點(diǎn)(AP)來(lái)工作,其WiFi模塊被配置為建立一個(gè)TCP服務(wù)器并監(jiān)聽(tīng)端口號(hào)。CC2530將使用其串口與ESP8266進(jìn)行通信,并通過(guò)AT指令控制ESP8266的WiFi模塊設(shè)置和數(shù)據(jù)傳輸。

硬件組件:

  1. CC2530芯片
  2. ESP8266 WiFi模塊
  3. USB轉(zhuǎn)TTL串口轉(zhuǎn)接板
  4. Android手機(jī)

軟件組件:

  1. IAR Embedded Workbench for 8051
  2. ESP8266 AT指令集
  3. Android Studio

實(shí)現(xiàn)步驟:

  1. 硬件連接: 將ESP8266模塊與USB轉(zhuǎn)TTL串口轉(zhuǎn)接板相連,然后將串口轉(zhuǎn)接板連接到PC上的USB接口。 在開(kāi)發(fā)板上焊接CC2530,然后將其連接到ESP8266模塊的TXD和RXD引腳上(即CC2530的P0.2與P0.3引腳,分別連接到ESP8266的RXD和TXD引腳)。
  2. 配置ESP8266模塊: 使用串口工具連接到ESP8266模塊,然后根據(jù)AT指令集將其配置為AP+TCP服務(wù)器模式。例如,可以使用以下AT指令來(lái)配置ESP8266的WiFi模塊:
AT+CWMODE=3
AT+CWSAP="MyWiFi","12345678",1,0
AT+CIPMUX=1
AT+CIPSERVER=1,8080

其中,“MyWiFi”和“12345678”分別是熱點(diǎn)的名稱和密碼,“1”表示加密方式為WPA2-PSK,“0”表示不隱藏SSID,而“8080”則是TCP服務(wù)器監(jiān)聽(tīng)的端口號(hào)。

編寫(xiě)CC2530程序: 在IAR Embedded Workbench for 8051中創(chuàng)建一個(gè)新的工程,在其中添加串口驅(qū)動(dòng)程序以及ESP8266通信所需的AT指令函數(shù)。然后,編寫(xiě)主程序代碼來(lái)實(shí)現(xiàn)以下功能:

  • 初始化串口
  • 向ESP8266發(fā)送AT指令以配置其WiFi模塊
  • 等待ESP8266向CC2530發(fā)送TCP連接請(qǐng)求
  • 接受從ESP8266傳回的數(shù)據(jù)并將其顯示在串口工具中

以下是示例代碼的一部分,用于初始化串口并向ESP8266發(fā)送AT指令:

#include "uart.h"
#include 
?
// AT指令函數(shù)
void at_command(char* cmd)
{
  uart_puts(cmd);
  uart_puts("rn");
  delay_ms(1000);
}
?
int main()
{
  // 初始化串口
  uart_init();
  
  // 發(fā)送AT指令以配置ESP8266的WiFi模塊
  at_command("AT+CWMODE=3");
  at_command("AT+CWSAP="MyWiFi","12345678",1,0");
  at_command("AT+CIPMUX=1");
  at_command("AT+CIPSERVER=1,8080");
?
  while (1)
   {
    // 接受從ESP8266傳回的數(shù)據(jù)并將其顯示在串口工具中
    if (uart_available())
     {
      char c = uart_read();
      uart_putc(c);
     }
   }
?
  return 0;
}

二、CC2530與ESP8266科普

CC2530是德州儀器(Texas Instruments,簡(jiǎn)稱TI公司推出的一款基于ZigBee協(xié)議的SoC單芯片解決方案,它集成了一個(gè)8051內(nèi)核、硬件AES加密加速器、具備豐富外設(shè)的低功耗射頻芯片和物理層。CC2530支持IEEE 802.15.4標(biāo)準(zhǔn)和ZigBee協(xié)議,并且具有低功耗、高可靠性和長(zhǎng)距離等特點(diǎn),廣泛應(yīng)用于物聯(lián)網(wǎng)智能家居智能醫(yī)療、無(wú)線傳感網(wǎng)和工業(yè)自動(dòng)化等領(lǐng)域。

ESP8266是一款由中國(guó)企業(yè)樂(lè)鑫(Espressif Systems)研發(fā)的超低功耗Wi-Fi芯片,被廣泛應(yīng)用于物聯(lián)網(wǎng)相關(guān)設(shè)備的開(kāi)發(fā)中。該芯片采用Tensilica L106 32位處理器,內(nèi)置TCP/IP協(xié)議,可以實(shí)現(xiàn)Wi-Fi通信,同時(shí)也支持傳統(tǒng)的UART協(xié)議、SPI協(xié)議等串行通信方式。ESP8266芯片集成了射頻電路、天線、Flash存儲(chǔ)器和電源管理等,體積小巧、功耗低,具有高度集成性和低成本的特點(diǎn)。

ESP8266芯片的主要特點(diǎn)如下:

1. 支持802.11 b/g/n Wi-Fi協(xié)議,通信距離遠(yuǎn),數(shù)據(jù)傳輸速度快;
2. 內(nèi)置32位低功耗Tensilica L106 CPU,主頻可達(dá)80MHz;
3. 支持UART、SPI、I2C等多種串行通信協(xié)議;
4. 集成了高速緩存和SRAM,具有強(qiáng)大的處理性能和存儲(chǔ)能力;
5. 支持藍(lán)牙4.2、BLE等無(wú)線通信協(xié)議(部分型號(hào)支持);
6. 能夠與各種MCU傳感器等外設(shè)進(jìn)行協(xié)同工作,大大降低了開(kāi)發(fā)成本和門(mén)檻。

ESP8266芯片具有成本低、功耗低、尺寸小和易于開(kāi)發(fā)等優(yōu)點(diǎn),在物聯(lián)網(wǎng)、智能家居、智能手環(huán)、智能家電等領(lǐng)域廣泛應(yīng)用。同時(shí),ESP8266芯片也被視為低功耗Wi-Fi IoT領(lǐng)域中的殺手锏,為物聯(lián)網(wǎng)設(shè)備的互聯(lián)提供了更為簡(jiǎn)便、穩(wěn)定、高效的解決方案。

三、功能代碼實(shí)現(xiàn)介紹

在CC2530上實(shí)現(xiàn)控制ESP8266配置成AP+TCP服務(wù)器模式,與手機(jī)APP之間完成數(shù)據(jù)傳輸,需要使用CC2530的串口與ESP8266通信,以及使用ESP8266 AT指令控制ESP8266的WiFi模塊設(shè)置和數(shù)據(jù)的發(fā)送,代碼如下:

#include 
#include 
#include 
?
#define ESP_ON  P1_0 // ESP8266電源控制引腳
#define ESP_RST P1_1 // ESP8266復(fù)位引腳
#define UART_TX P0_2 // CC2530串口發(fā)送引腳
#define UART_RX P0_3 // CC2530串口接收引腳
?
// ESP8266 AT指令常用指令
const char* AT_RST = "AT+RST";
const char* AT_CWMODE = "AT+CWMODE=3"; // 設(shè)置ESP8266為AP+STA模式
const char* AT_CWSAP = "AT+CWSAP="ssid","pass",1,3"; // 設(shè)置ESP8266 AP模式下的WiFi名稱和密碼
const char* AT_CIPMUX = "AT+CIPMUX=1"; // 設(shè)置ESP8266多路連接模式
const char* AT_CIPSERVER = "AT+CIPSERVER=1,8888"; // 設(shè)置ESP8266 TCP服務(wù)器端口
const char* AT_CIPSEND = "AT+CIPSEND=0,50"; // 設(shè)定ESP8266發(fā)送數(shù)據(jù)的長(zhǎng)度,50字節(jié)
?
// ESP8266 AT指令回應(yīng)標(biāo)志
const char* RESPONSE_OK = "OK"; // AT指令執(zhí)行成功
const char* RESPONSE_ERROR = "ERROR"; // AT指令執(zhí)行失敗
const char* RESPONSE_READY = "ready"; // ESP8266已經(jīng)準(zhǔn)備就緒
const char* RESPONSE_CONNECT = "CONNECT"; // ESP8266連接成功
const char* RESPONSE_CLOSED = "CLOSED"; // ESP8266連接關(guān)閉
?
// ESP8266的WIFI名稱和密碼
const char* SSID = "esp8266";
const char* PASSWORD = "wifipassword";
?
// 存儲(chǔ)ESP8266返回的數(shù)據(jù)
char response[100];
?
// 延時(shí)函數(shù)
void delay(int ms) {
  while (--ms > 0) __delay_cycles(48000);
}
?
// 向ESP8266發(fā)送AT指令,并獲取ESP8266的回應(yīng)
void sendATCommand(const char* cmd, uint8_t wait) {
  uint8_t i = 0;
  memset(response, 0, sizeof(response));
  printf("AT command: %sn", cmd);
  printf("AT response:n");
  while (cmd[i]) {
    while (!(UCA0IFG & UCTXIFG));
    UCA0TXBUF = cmd[i++];
   }
  while (wait && !(UCA0IFG & UCRXIFG));
  while (UCA0IFG & UCRXIFG) {
    if (response[0] == '?' && UCA0RXBUF != 'r' && UCA0RXBUF != 'n') {
      response[0] = UCA0RXBUF;
      response[1] = '?';
      continue;
     }
    if (strlen(response) < sizeof(response) - 1) {
? ? ? ? ? ? ?int len = strlen(response);
? ? ? ? ? ? ?response[len] = UCA0RXBUF;
? ? ? ? ? ? ?response[len + 1] = '?';
? ? ? ?  }
? ?  }
? ? ?printf("%s", response);
?}
??
?void main(void) {
? ? ?uint8_t retry = 5;
? ? ?_BIS_SR(GIE);
??
? ? ?// 配置IO口
? ? ?P1DIR |= BIT0 + BIT1;
? ? ?P1OUT &= ~(BIT0 + BIT1);
? ? ?P1OUT |= ESP_ON; // 打開(kāi)ESP8266電源
? ? ?P1OUT &= ~ESP_RST; // 復(fù)位ESP8266
? ? ?delay(500);
? ? ?P1OUT |= ESP_RST;
? ? ?delay(1000);
??
? ? ?// 配置串口
? ? ?P0SEL |= BIT2 + BIT3;
? ? ?UCA0CTL1 = UCSSEL_2;
? ? ?UCA0BR0 = 130;
? ? ?UCA0BR1 = 6;
? ? ?UCA0MCTL = UCBRS_4;
??
? ? ?// 逐步執(zhí)行AT指令,確保每一步配置都執(zhí)行成功
? ? ?while (retry-- > 0) {
    sendATCommand(AT_RST, 1);
    sendATCommand(AT_CWMODE, 1);
    sendATCommand(AT_CWSAP, 1);
    sendATCommand(AT_CIPMUX, 1);
    sendATCommand(AT_CIPSERVER, 1);
    if (strstr(response, RESPONSE_OK) != NULL) break;
   }
  if (retry == 0) return; // 配置失敗,退出程序
?
  // 等待ESP8266準(zhǔn)備就緒
  while (1) {
    sendATCommand("", 1);
    if (strstr(response, RESPONSE_READY) != NULL) break;
    delay(500);
   }
?
  // 等待手機(jī)APP連接
  while (1) {
    sendATCommand("", 1);
    if (strstr(response, RESPONSE_CONNECT) != NULL) {
      printf("Client connected.n");
      // 發(fā)送數(shù)據(jù)
      sendATCommand(AT_CIPSEND, 0);
      while (!(UCA0IFG & UCTXIFG));
      UCA0TXBUF = 'H'; UCA0TXBUF = 'e';
      UCA0TXBUF = 'l'; UCA0TXBUF = 'l';
      UCA0TXBUF = 'o'; UCA0TXBUF = ',';
      UCA0TXBUF = 'W'; UCA0TXBUF = 'o';
      UCA0TXBUF = 'r'; UCA0TXBUF = 'l';
      UCA0TXBUF = 'd'; UCA0TXBUF = '!';
      delay(100); // 延時(shí)確保數(shù)據(jù)發(fā)送完成
      // 關(guān)閉連接
      sendATCommand("AT+CIPCLOSE=0", 1);
      printf("Client disconnected.n");
     }
    delay(10);
   }
}

這是CC2530的代碼,其中ESP8266的控制使用了AT指令。也就是說(shuō),ESP8266作為網(wǎng)絡(luò)模塊,只是負(fù)責(zé)在指定的端口上監(jiān)聽(tīng)客戶端的連接和傳輸數(shù)據(jù),真正控制數(shù)據(jù)傳輸?shù)氖荂C2530,CC2530還要負(fù)責(zé)ESP8266的WiFi模塊設(shè)置和TCP服務(wù)器的建立。這里只是給出了用CC2530控制ESP8266的代碼,手機(jī)APP的代碼需要自行開(kāi)發(fā)。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 通信
    +關(guān)注

    關(guān)注

    18

    文章

    6024

    瀏覽量

    135950
  • 物聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    2909

    文章

    44557

    瀏覽量

    372776
  • WIFI
    +關(guān)注

    關(guān)注

    81

    文章

    5296

    瀏覽量

    203575
  • 串口
    +關(guān)注

    關(guān)注

    14

    文章

    1551

    瀏覽量

    76422
  • ESP8266
    +關(guān)注

    關(guān)注

    50

    文章

    962

    瀏覽量

    44962
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于CC2530(ZigBee設(shè)計(jì))的溫度報(bào)警器

    這是基于CC2530設(shè)計(jì)的遠(yuǎn)程溫度報(bào)警器,通過(guò)CC2530終端檢測(cè)環(huán)境溫度上傳給手機(jī)APP實(shí)時(shí)顯示。
    的頭像 發(fā)表于 05-27 09:54 ?8832次閱讀
    基于<b class='flag-5'>CC2530</b>(ZigBee設(shè)計(jì))的溫度報(bào)警器

    如何讓esp8266 wifi模組和APP通信

    esp8266 wifi模組用手機(jī)一鍵配網(wǎng)成功(station模式)后,wifi模組和手機(jī)所連wifi在一個(gè)局域網(wǎng)內(nèi),手機(jī)上有一個(gè)wifi APP
    發(fā)表于 06-27 00:32

    手機(jī)ESP8266模塊通信的過(guò)程分享

    手機(jī)ESP8266模塊通信本人在搞手機(jī)ESP8266通信
    發(fā)表于 02-15 06:38

    ESP8266_app控制三色燈sdk以及app源碼

    esp8266學(xué)習(xí)程序,通過(guò)手機(jī)APP來(lái)控制三色燈的變換,以及開(kāi)關(guān)
    發(fā)表于 05-06 17:25 ?169次下載

    CC2530芯片的基本特性和CC2530無(wú)線模塊的設(shè)計(jì)

    本文介紹了CC2530芯片的基本特性,論述了以CC2530芯片為核心的無(wú)線通信模塊的硬件設(shè)計(jì)和調(diào)試軟件設(shè)計(jì),在介紹設(shè)計(jì)規(guī)范和模塊結(jié)構(gòu)的基礎(chǔ)上,采用TI公司的
    發(fā)表于 02-11 08:00 ?97次下載
    <b class='flag-5'>CC2530</b>芯片的基本特性和<b class='flag-5'>CC2530</b>無(wú)線模塊的設(shè)計(jì)

    如何使用ESP8266和Android控制繼電器

    ESP8266 WiFi模塊系列的下一個(gè)項(xiàng)目是通過(guò)在MIT App Inventor的幫助下開(kāi)發(fā)的App(應(yīng)用程序)使用ESP8266和Android控制繼電器。通過(guò)在Android
    的頭像 發(fā)表于 07-30 10:40 ?2.7w次閱讀
    如何使用<b class='flag-5'>ESP8266</b>和Android控制繼電器

    APP同過(guò)ESP8266與51單片機(jī)通信

    APP通過(guò)ESP8266與單片機(jī)通信簡(jiǎn)述本項(xiàng)目中是用ESP8266作為熱點(diǎn),工作在MODE2模式,手機(jī)作為station接入
    發(fā)表于 11-11 18:06 ?79次下載
    <b class='flag-5'>APP</b>同過(guò)<b class='flag-5'>ESP8266</b>與51單片機(jī)<b class='flag-5'>通信</b>

    STM32F429與CC2530 ZigBee模塊通信

    STM32F429與CC2530 ZigBee模塊通信的方法。目錄ZigBee簡(jiǎn)介串口通信簡(jiǎn)介簡(jiǎn)單的數(shù)據(jù)顯示ZigBee簡(jiǎn)介ZigBee譯為"紫蜂",它與藍(lán)牙相類似。是一種新興的短距離無(wú)線通信
    發(fā)表于 11-29 20:51 ?50次下載
    STM32F429與<b class='flag-5'>CC2530</b> ZigBee模塊<b class='flag-5'>通信</b>

    (遠(yuǎn)程控制)App inventor 編寫(xiě)安卓app控制 ESP8266

    App inventor 編寫(xiě)安卓app控制 ESP8266第一 下載ESP8266示例(arduino ide 編程開(kāi)發(fā))第二 修改demo例程第三
    發(fā)表于 12-08 17:06 ?28次下載
    (遠(yuǎn)程控制)<b class='flag-5'>App</b> inventor 編寫(xiě)安卓<b class='flag-5'>app</b>控制 <b class='flag-5'>ESP8266</b>

    基于CC2530的ZigBee通信網(wǎng)的應(yīng)用設(shè)計(jì).pdf

    基于CC2530的ZigBee通信網(wǎng)的應(yīng)用設(shè)計(jì).pdf
    發(fā)表于 12-15 18:17 ?23次下載

    手機(jī)ESP8266模塊TCP協(xié)議通信

    手機(jī)ESP8266模塊通信本人在搞手機(jī)ESP8266通信
    發(fā)表于 12-16 16:47 ?24次下載
    <b class='flag-5'>手機(jī)</b>與<b class='flag-5'>ESP8266</b>模塊TCP協(xié)議<b class='flag-5'>通信</b>

    stm32f103c8t6控制ESP8266手機(jī)APP通信

    stm32f103c8t6控制ESP8266手機(jī)APP通信之前已經(jīng)發(fā)表過(guò)利用stm32控制藍(lán)牙模塊與手機(jī)
    發(fā)表于 12-27 18:53 ?79次下載
    stm32f103c8t6控制<b class='flag-5'>ESP8266</b>與<b class='flag-5'>手機(jī)</b><b class='flag-5'>APP</b><b class='flag-5'>通信</b>

    CC2530無(wú)線通信模塊使用串口通信參考方法

    CC2530無(wú)線通信模塊使用串口通信參考方法
    發(fā)表于 04-24 17:20 ?13次下載

    基于CC2530的ZigBee通信網(wǎng)絡(luò)的應(yīng)用設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《基于CC2530的ZigBee通信網(wǎng)絡(luò)的應(yīng)用設(shè)計(jì).pdf》資料免費(fèi)下載
    發(fā)表于 10-26 09:34 ?3次下載
    基于<b class='flag-5'>CC2530</b>的ZigBee<b class='flag-5'>通信</b>網(wǎng)絡(luò)的應(yīng)用設(shè)計(jì)

    cc2530繼電器模塊使用

    繼電器模塊的基本原理、類型、應(yīng)用領(lǐng)域以及使用方法。 一、CC2530繼電器模塊的基本原理 CC2530繼電器模塊采用了TI公司的CC2530芯片作為主控,并通過(guò)無(wú)線
    的頭像 發(fā)表于 12-21 14:47 ?1515次閱讀
    主站蜘蛛池模板: 男女疯狂一边摸一边做羞羞视频| 欧美狂野乱码一二三四区| 欧美6O老妪与小伙交| 翁止熄痒禁伦短文合集免费视频| 一二三区乱码不卡手机版| brazzers欧美最新版视频| 国产精品亚洲国产三区| 美女挑战50厘米长的黑人| 熟女理发厅| 51国产偷自视频在线视频播放| 成人国产亚洲欧美成人综合网| 国产亚洲精品线视频在线| 女人色极品影院| 亚洲人成www在线播放| 边摸边吃奶边做带声音| 九九热精品在线| 色妹子综合| 91情国产l精品国产亚洲区| 国产精品自在在线午夜蜜芽tv在线 | 前后灌满白浆护士| 亚洲无吗精品AV九九久久| 成人午夜精品久久久久久久秋霞| 久久精品电影院| 无限资源在线观看完整版免费下载 | 永久免费的污视频网站| 国产传媒18精品A片在线观看| 老师给美女同学开嫩苞| 亚洲国产黄色| 钉钉女老师| 欧美6O老妪与小伙交| 曰批国产精品视频免费观看| 国产精品99久久久久久AV色戒| 欧美97色伦影院在线观看| 夜夜精品视频一区二区| 国产精品人成在线播放新网站| 欧美乱妇15p图| 中文字幕在线观看亚洲视频| 国产午夜三区视频在线| 日韩男明星| proburn中文破解版下载| 久久足恋网|