精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用ESP8266和LPC2148遠程控制設備的方式

科技觀察員 ? 來源:circuitdigest ? 作者:Pramoth Thangavel ? 2022-09-20 16:21 ? 次閱讀

ESP8266 Wi-Fi 收發器提供了一種將微控制器連接到網絡的方法。它被廣泛用于物聯網項目,因為它便宜、小巧且易于使用。

在本教程中,我們將ESP8266 Wi-Fi 模塊與 ARM7-LPC2148 微控制器連接,并創建一個網絡服務器來控制連接到 LPC2148 的 LED。工作流程將如下所示:

從 LPC2148 向 ESP8266 發送 AT 命令以將 ESP8266 配置為 AP 模式

將筆記本電腦或計算機 Wi-Fi 連接到 ESP8266 接入點

使用 ESP8266 網絡服務器的接入點 IP 地址在 PC 中創建 HTML 網頁

根據從 ESP8266 接收到的值,為 LPC2148 創建一個程序來控制 LED

pYYBAGMpd8CAa4uwAABPvtWwPfI791.png

所需組件

硬件

ARM7-LPC2148

ESP8266 Wi-Fi 模塊

FTDI(USBUART TTL)

引領

3.3V穩壓IC

面包板

軟件:

KEIL uVision

閃光魔法工具

油灰

ESP8266 Wi-Fi 模塊

poYBAGMpd7yAGLGFAAYGgBvGrIY874.png

ESP8266 是一款低成本、廣泛用于嵌入式項目的 Wi-Fi 模塊,需要 3.3V 的低功耗。它僅使用兩條線 TX 和 RX 在 ESP8266 和任何具有 UART 端口的微控制器之間進行串行通信和數據傳輸。

ESP8266 Wi-Fi 模塊引腳圖

pYYBAGMpd7eAWoVEAAErIXwED_o149.png

設置 ESP8266 電路板

ESP8266 需要恒定的 3.3V 電源,它對面包板不友好。所以在我們之前關于 ESP8266 的教程中,我們為 ESP8266 制作了一個電路板,帶有 3.3V 穩壓器、一個 RESET 按鈕和用于切換模式(AT 命令或閃光模式)的跳線設置。它也可以在不使用 perf board 的情況下在面包板上設置。

在這里,我們焊接了面包板上的所有組件以制作我們自己的 ESP8266 Wi-Fi 板

pYYBAGMpd7SAFU32AATOd2uiNIc707.png

連接LPC2148和ESP8266進行串行通信

為了將ESP8266 與 LPC2148 連接,我們必須在這兩個設備之間建立 UART 串??行通信,以將 AT 命令從 LPC2148 發送到 ESP8266 以配置 ESP8266 Wi-Fi 模塊。

因此,為了在 LPC2148 中使用 UART 通信,我們需要在 LPC2148 中初始化 UART 端口。LPC2148 有兩個內置的 UART 端口(UART0 和 UART1)。

LPC2148中的 UART 引腳

pYYBAGMpd66AGCdPAAQgP7LJcAA014.pngpoYBAGMpd6uAZYZCAAAIRHYDut8845.png

在 LPC2148 中初始化 UART0

我們知道 LPC2148 的引腳是通用引腳,所以我們需要使用 PINSEL0 寄存器來使用 UART0。在初始化 UART0 之前,讓我們了解 LPC2148 中用于使用 UART 功能的這些 UART 寄存器。

LPC2148 中的 UART 寄存器

下表顯示了編程中使用的一些重要寄存器。在我們未來的教程中,我們將簡要介紹 LPC2148 中用于 UART 的其他寄存器。

UART0 的 x-0 和 UART1 的 x-1:

pYYBAGMpd6aANR09AAAy6xM35n0980.png

電路圖和連接

pYYBAGMpd6KAdwtvAAHM0knWmcA285.png

LPC2148、ESP8266和FTDI之間的連接如下圖所示

pYYBAGMpd5yAci6SAAALaTL3sEY747.png

ESP8266 通過 3.3V 穩壓器供電,FTDI 和 LPC2148 通過 USB 供電。

為什么FTDI在這里?

在本教程中,我們將 FTDI(USB 轉 UART TTL)的 RX 引腳連接到 ESP8266 TX 引腳,該引腳進一步連接到 LPC2148 RX 引腳,以便我們可以使用任何終端軟件(如 putty、Arduino IDE)看到 ESP8266 模塊的響應。 但為此,請根據 ESP8266 Wi-Fi 模塊的波特率設置波特率。(我的波特率是 9600)。

poYBAGMpd5iAX1FwAAeLmqzokKI141.png

在 LPC2148 中對 UART0 進行編程以連接 ESP8266 的步驟

以下是將 ESP8266 與 LPC2148 連接的編程步驟,這將使其與物聯網兼容。

第 1 步:-首先我們需要初始化 PINSEL0 寄存器中的 UART0 TX 和 RX 引腳。

(P0.0 作為 TX,P0.1 作為 RX)

PINSEL0 = PINSEL0 | 0x00000005;

第 2 步:-接下來在 U0LCR(行控制寄存器)中,將 DLAB(除數鎖存器訪問位)設置為 1,因為它啟用它們,然后將停止位設置為 1,數據幀長度設置為 8 位。

U0LCR = 0x83;

第 3 步:-現在要注意的重要步驟是根據 PCLK 值和所需的波特率設置 U0DLL 和 U0DLM 的值。通常對于 ESP8266,我們使用 9600 的波特率。所以讓我們看看如何為 UART0 設置 9600 的波特率。

波特率計算公式:

pYYBAGMpd5OAFRSSAABb8G8c5I4581.png

在哪里,

PLCK:外設時鐘頻率 (MHz)

U0DLM、U0DLL:波特率發生器分頻器寄存器

MULVAL、DIVADDVAL:這些寄存器是小數發生器值

對于 PCLK=15MHZ 的波特率 9600

poYBAGMpd4-AF4pZAABfABqiMc4867.png

MULVAL =1 & DIVADDVAL=0

256*U0DLM+U0DLL=97.65

所以 U0DLM=0,我們得到 U0DLL=97(不允許分數)

所以我們使用以下代碼:

U0DLM = 0x00;

U0DLL = 0x61;(十六進制值 97)

第 4 步:-最后,我們必須在 LCR 中將 DLA(除數鎖存訪問)禁用設置為 0。

所以我們有

U0LCR &= 0x0F;

第 5 步:- 對于 Transmitting a Character,將要發送的字節加載到 U0THR 中,并等待字節發送完畢,這由 THRE 變為 HIGH 表示。

無效 UART0_TxChar(char ch)

{

U0THR = ch;

而((U0LSR & 0x40)== 0);

}

第 6 步:- 對于傳輸字符串,使用以下函數。為了一一發送字符串數據,我們使用了上述步驟中的字符函數。

無效 UART0_SendString(char* str)

{

uint8_t i = 0;

而( str[i] != ‘\0’ )

{

UART0_TxChar(str[i]);

我++;

}

}

第 7 步:- 對于接收字符串,此處使用中斷服務程序函數,因為每當我們發送 AT 命令或每當 ESP8266 向 LPC2148 發送數據時,ESP8266 Wi-Fi 模塊都會將數據發送回 LPC2148 的 RX 引腳,就像我們發送數據到 ESP8266 的網絡服務器。

示例:當我們從 LPC2148(“AT\r\n”)向 ESP8266 發送 AT 命令時,我們會從 Wi-Fi 模塊收到“OK”回復。

所以我們在這里使用中斷來檢查從 ESP8266 Wi-Fi 模塊接收到的值,因為 ISR 中斷服務程序具有最高優先級。

因此,每當 ESP8266 向 LPC2148 的 RX 引腳發送數據時,都會設置中斷并執行 ISR 功能。

第 8 步:-要為 UART0 啟用中斷,請使用以下代碼

VICintEnable是向量中斷使能寄存器,用于使能 UART0 的中斷。

VICIntEnable |= (1《《6);

VICVecCnt10是為 UART0 分配插槽的向量中斷控制寄存器。

VICVectCntl0 = (1《《5) | 6;

接下來,VICVectaddr0是向量中斷地址寄存器,它具有中斷服務程序 ISR 地址。

VICVectAddr0 =(無符號)UART0_ISR;

然后我們必須為 RBR 接收緩沖寄存器分配中斷。所以在中斷使能寄存器(U0IER)中我們為 RBR 設置。這樣當我們接收到數據時,就會調用中斷服務程序(ISR)。

U0IER=IER_RBR;

最后,當我們從 ESP8266 Wi-Fi 模塊接收數據時,我們需要執行某些任務的 ISR 功能。在這里,我們只是從 U0RBR 中的 ESP8266 讀取接收到的值,并將這些值存儲在 UART0_BUFFER 中。最后,在 ISR 結束時,應該將VICVectAddr設置為零或虛擬值。

void UART0_ISR() __irq

{

unsigned char IIRValue;

IIR 值 = U0IIR; IIR 值 》》=1; IIR值&=0x02; if(IIRValue == IIR_RDA) { UART_BUFFER[uart0_count]=U0RBR; uart0_count++; 如果(uart0_count == BUFFER_SIZE) { uart0_count=0; } } VICVectAddr = 0x0; }

第 9 步:-由于 ESP8266 Wi-Fi 模塊應設置為 AP 模式,我們需要使用UART0_SendString()函數從 LPC2148 發送相應的 AT 命令。

從 LPC2148 發送到 ESP8266的AT 命令如下所述。發送每個 AT 命令后,ESP8266 響應“OK”

1. 發送 AT 到 ESP8266

UART0_SendString(“AT\r\n”);

延遲_毫秒(3000);

2. 發送 AT+CWMODE=2(設置 ESP8266 為 AP 模式)。

UART0_SendString(“AT+CWMODE=2\r\n”);

延遲_毫秒(3000);

3.發送AT+CIFSR(獲取AP的IP)

UART0_SendString(“AT+CIFSR\r\n”);

延遲_毫秒(3000);

4. 發送 AT+CIPMUX=1(用于多連接)

UART0_SendString(“AT+CIPMUX=1\r\n”);

延遲_毫秒(3000);

5. 發送 AT+CIPSERVER=1,80(用于啟用 ESP8266 SERVER with OPEN PORT)

UART0_SendString(“AT+CIPSERVER=1,80\r\n”);

延遲_毫秒(3000);

將十六進制文件編程和閃存到 LPC2148

要對 ARM7-LPC2148 進行編程,我們需要 keil uVision 和 Flash Magic 工具。此處使用 USB 電纜通過微型 USB 端口對 ARM7 Stick 進行編程。我們使用 Keil 編寫代碼并創建一個 hex 文件,然后使用 Flash Magic 將 HEX 文件閃存到 ARM7 棒。要了解有關安裝 keil uVision 和 Flash Magic 以及如何使用它們的更多信息,請點擊鏈接 Getting Started With ARM7 LPC2148 Microcontroller and Program it using Keil uVision。

完整的程序在教程的最后給出。

注意:將 HEX 文件上傳到 LPC2148 時,不得為 ESP8266 Wi-Fi 模塊和與 LPC2148 連接的 FTDI 模塊供電。

使用帶有 LPC2148 的 ESP8266 IoT Webserver 控制 LED

步驟 1:-將 HEX 文件上傳到 LPC2148 后,通過 USB 線將 FTDI 模塊連接到 PC,然后打開 putty 終端軟件。

pYYBAGMpd4OAHkstAABzsz4_K2o012.png

選擇Serial,然后根據您的PC或LAPTOP我的選擇COM端口(COM3)。波特率為 9600。

步驟 2:-現在重置 ESP8266 Wi-Fi 模塊或關閉電源并重新上電,putty 終端將顯示 ESP8266 Wi-Fi 模塊的響應,如下圖所示。\

poYBAGMpd32AUdg9AAAP_Ws2Zhc758.png

第 3 步:-現在按下 LPC2148 上的 RESET 按鈕。之后 LPC2148 開始向 ESP8266 發送 AT 命令。我們可以在 putty 終端中看到它的響應。

pYYBAGMpd3mANTJaAAAsJBr7_gE086.png

第 4 步:-如上圖所示,ESP8266 設置為 MODE 2,即 AP 模式,APIP 的地址為 192.168.4.1。請注意此地址,因為此地址將被硬編碼在網頁 HTML 代碼中,以控制連接到 LPC2148 的 LED。

重要提示:當 ESP8266 處于 AP 模式時,您必須將 PC 連接到 ESP8266 AP。見下圖,我的 ESP8266 模塊顯示 AP 名稱為 ESP_06217B(它已打開且沒有密碼)。

pYYBAGMpd3WAIoHPAABmr1ZPjvk154.png

最后將記事本文檔保存為 .html擴展名

pYYBAGMpd2yABvCLAAE3z8KRfQs263.png

該網頁將在網絡瀏覽器中顯示如下。

poYBAGMpd2iAIp6nAABQia15U9Q141.png

這里的地址是 AP IP 地址 192.168.4.1,我們使用 LPC2148 中的以下邏輯發送值 @ 和 % 來打開和關閉 LED。

while(1)

{

if(uart0_count !=0)

{

COMMAND[0]=UART0_BUFFER[uart0_count-1];

if(COMMAND[0] == LEDON) //根據從 ESP8266 接收到的值設置 LED 亮或滅的邏輯

{

IOSET1=(1《《20); //設置輸出

高 delay_ms(100);

}

else if(COMMAND[0]==LEDOFF)

{

IOCLR1=(1《《20); //設置輸出低

delay_ms(100);

}

}

}

這就是使用 ESP8266 和 ARM7 微控制器 LPC2148 遠程控制設備的方式。

#include

#include



#define IER_RBR 0X01

#define IIR_RDA 0X02

#define BUFFER_SIZE 0X40



無符號字符 UART0_BUFFER[BUFFER_SIZE];

無符號整數 uart0_count;

無符號字符命令[1];



無符號字符 LEDON='@',LEDOFF='%';



void UART0_ISR() __irq //ISR中斷服務程序函數

{

無符號字符 IIR 值;



IIR 值 = U0IIR;



IIR 值 >>=1;

IIR值&=0x02;

如果(IIRValue == IIR_RDA)

{

UART0_BUFFER[uart0_count]=U0RBR;

uart0_count++;

如果(uart0_count == BUFFER_SIZE)

{

uart0_count=0;

}



}

VICVectAddr = 0x0;

}



void delay_ms(uint16_t j) // 以毫秒為單位的延遲函數

{

uint16_t x,i;

for(i=0;i
{

對于(x=0;x<6000;x++);// 循環生成 1 毫秒延遲,Cclk = 60MHz

}

}



無效 UART0_initilize(無效)

{

VPBDIV = 0x00;

PINSEL0 = PINSEL0 | 0x00000005; // 使能 UART0 的 UART0 Rx0 和 Tx0 引腳

U0LCR = 0x83;// DLAB = 1,1 個停止位,8 位字符長度

U0DLM = 0x00;// 對于 9600 的波特率,Pclk = 15MHz

U0DLL = 0x61;// 我們從公式中得到這些 U0DLL 和 U0DLM 的值

U0LCR &= 0x0F; // DLAB = 0



VICIntEnable |= (1<<6); //開啟UART0中斷

VICVectCntl0 = (1<<5) | 6;//啟用UART IRQ插槽

VICVectAddr0 =(無符號)UART0_ISR;//UART ISR函數地址

U0IER=IER_RBR;//啟用RBR中斷

}



void UART0_TxChar(char ch) //在UART0上發送一個字節的函數

{

U0THR = 通道;

而((U0LSR & 0x40)== 0);//等到THRE位變為1表示傳輸完成

}



void UART0_SendString(char* str) //在UART0上發送字符串的函數

{

uint8_t 我 = 0;

而( str[i] != '\0' )

{

UART0_TxChar(str[i]);

我++;

}

}





無效 wifi_sendATcommands(無效)

{

延遲毫秒(5000);

UART0_SendString("AT\r\n"); //發送AT到ESP8266

延遲_毫秒(3000);

UART0_SendString("AT+CWMODE=2\r\n"); //發送 AT+CWMODE=2(設置 ESP8266 為 AP 模式)

延遲_毫秒(3000);

UART0_SendString("AT+CIFSR\r\n"); //發送AT+CIFSR(獲取AP的IP)

延遲_毫秒(3000);

UART0_SendString("AT+CIPMUX=1\r\n"); //發送 AT+CIPMUX=1 (用于多連接)

延遲_毫秒(3000);

UART0_SendString("AT+CIPSERVER=1,80\r\n"); //發送 AT+CIPSERVER=1,80 (用于啟用 ESP8266 SERVER with OPEN PORT)

延遲_毫秒(3000);

}



詮釋主要(無效)

{



IODIR1=(1<<20); //將引腳P1.20設置為輸出引腳

UART0_initilize(); //函數調用初始化UART0

wifi_sendATcommands(); //向ESP8266發送AT指令的函數調用



而(1)

{ if(uart0_count !=0)

{

命令[0]=UART0_BUFFER[uart0_count-1];

if(COMMAND[0] == LEDON) //根據從 ESP8266 接收到的值設置 LED 開或關的邏輯

{

IOSET1=(1<<20); //設置輸出高

延遲毫秒(100);

}

否則如果(命令 [0]==LEDOFF)

{

IOCLR1=(1<<20); //設置輸出低

延遲毫秒(100);

}

}

}

}
;i++)

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7496

    瀏覽量

    151086
  • led
    led
    +關注

    關注

    242

    文章

    23153

    瀏覽量

    658623
  • wi-fi
    +關注

    關注

    14

    文章

    2114

    瀏覽量

    124342
  • ESP8266
    +關注

    關注

    50

    文章

    962

    瀏覽量

    44852
收藏 人收藏

    評論

    相關推薦

    遠程控制通訊--基于Arduino + ESP8266控制LED燈

    Arduino是許多智能硬件愛好者的首選,使用簡單快捷,而ESP8266模塊也是當前最為熱門的WIFI模塊。本項目完成了Arduino使用EDP協議通過ESP8266 WIFI模塊接入OneNET服務器,并通過在接入設備中創建的
    的頭像 發表于 02-27 09:10 ?4w次閱讀
    <b class='flag-5'>遠程控制</b>通訊--基于Arduino + <b class='flag-5'>ESP8266</b><b class='flag-5'>控制</b>LED燈

    ESP8266 通過 MQTT 協議實現 LED 的遠程控制

    本文簡要介紹了搭建 EMQX 服務器實現基于 MQTT 協議遠程控制 NodeMCU ESP8266 板載 LED 的解決方案。
    的頭像 發表于 09-25 09:11 ?1813次閱讀
    <b class='flag-5'>ESP8266</b> 通過 MQTT 協議實現 LED 的<b class='flag-5'>遠程控制</b>

    【PDF】ICDEV的lpc2148資料

    本帖最后由 eehome 于 2013-1-5 10:09 編輯 【PDF】ICDEV的lpc2148資料
    發表于 03-11 09:35

    ESP8266模塊想實現手機遠程控制

    arduino開發板,ESP8266WiFi模塊想實現手機遠程控制,哪位大神有這方面的經驗資料,幫忙發一份吧,拜求
    發表于 05-08 17:50

    LPC2148單片USB控制器電子資料

    概述:LPC2148是飛利浦半導體公司生產的一款控制器,它為64腳封裝。
    發表于 04-21 06:58

    ESP8266遠程控制開關的方法分享

    ESP8266遠程控制開關示例超全面詳細1 背景描述ESP8266模塊是比較標準方便的wifi開發模塊,把他當做為單片機,有輸入輸出引腳和操作指令、內存,就是一個計算機了。引腳收發接口可做串口通訊
    發表于 02-28 14:34

    基于LPC2148和MCP2510的高速USB-CAN卡

    本文介紹了基于LPC2148和MCP2510的USB-CAN接口卡。LPC2148是基于ARM7TDMI-S核的微控制器,處理器速度高,內置USB2.0全速控制器和SPI接口。MCP2
    發表于 02-25 11:47 ?35次下載

    基于LPC2148的電機測速系統

      步進電機的調速和測速系統一般都采用ARM作為控制器,外加分立的數字邏輯電路和模擬電路構成。該系統以LPC2148作為控制核心,合理選擇電動機的頻率控制和閉環反饋
    發表于 12-13 09:56 ?1412次閱讀
    基于<b class='flag-5'>LPC2148</b>的電機測速系統

    LPC2148驅動例程

    LPC2148開發板所有設備驅動例程 有需要的下來看看
    發表于 12-30 15:58 ?6次下載

    LPC2148原理圖

    LPC2148數據手冊,有需要的下來看看
    發表于 02-22 16:55 ?21次下載

    ESP8266制作能通過手機遠程控制的智能插座

    ESP8266制作智能插座!手機遠程控制,讓家電瘋狂起來~
    的頭像 發表于 06-04 06:26 ?6769次閱讀

    ESP8266連接手機

    esp8266的三種模式1為Station 模式:ESP8266 模塊通過路由器連接互聯網,手機或電腦通過互聯網實現對設備遠程控制。2為AP 模式:
    發表于 11-30 16:06 ?37次下載
    <b class='flag-5'>ESP8266</b>連接手機

    遠程控制)App inventor 編寫安卓app控制 ESP8266

    App inventor 編寫安卓app控制 ESP8266第一 下載ESP8266示例(arduino ide 編程開發)第二 修改demo例程第三 app inventor 開發原理簡述:利用
    發表于 12-08 17:06 ?28次下載
    (<b class='flag-5'>遠程控制</b>)App inventor 編寫安卓app<b class='flag-5'>控制</b> <b class='flag-5'>ESP8266</b>

    使用ESP8266-01制作WIFI遙控小車(一)

    互聯網實現對設備遠程控制。AP 模式:ESP8266 模塊作為熱點,手機或電腦直接與模塊連接,實現局域網無線控制。STA+AP 模式:兩種模式的共存模式,即可以通過互聯網
    發表于 01-12 19:47 ?46次下載
    使用<b class='flag-5'>ESP8266</b>-01制作WIFI遙控小車(一)

    使用ESP8266(NodeMCU)控制遠程電源插座

    電子發燒友網站提供《使用ESP8266(NodeMCU)控制遠程電源插座.zip》資料免費下載
    發表于 02-06 10:44 ?3次下載
    使用<b class='flag-5'>ESP8266</b>(NodeMCU)<b class='flag-5'>控制</b><b class='flag-5'>遠程</b>電源插座