在本篇文章中,我們將學習如何將ENC28J60以太網模塊與Arduino Web服務器進行連接,以在LAN局域網或無線網絡中的計算機與Arduino之間建立通信。我們將ENC28J60以太網控制器與Arduino連接,以便我們的Arduino成為該網絡的成員之一。一旦完成,arduino可以控制該網絡中的事物,或者arduino可以由該網絡的其他設備控制。 ENC28J60以太網模塊與Arduino的連接將進一步為我們提供在Arduino上自由使用互聯網。
ENC28J60以太網模塊簡介
ENC28J60以太網模塊使用Microchip ENC28J60獨立式以太網控制器IC,具有許多功能,可滿足大多數網絡協議要求。該板通過標準SPI接口直接連接到大多數微控制器,傳輸速度高達20MHz。
該以太網網模塊是向基于微控制器的產品和項目添加LAN連接的最簡單方法。
1.使用此模塊為您的產品啟用以太網接口。它可與任何工作于3. 3V或5V的微控制器一起使用。
2.該模塊工作在3.3V電壓下,并與5V接口兼容。
3.使用SPI進程與其他連接。
4.托管Web服務器,對模塊執行ping操作或通過Internet將其添加到家庭自動化中。
5.該模塊的核心是Microchip的ENC28J60以太網控制器。
6.使用集成磁性裝置的RJ45網口可以減小電路板的尺寸。
框圖和連接方式:
以下是一個簡單的框圖,介紹了Arduino和ENC28J60模塊如何與路由器和計算機連接。
路由器應與LAN連接,并應具有多個輸入輸出端口。從路由器將一根以太網電纜連接到計算機系統,將另一根以太網電纜連接到ENC28J60模塊。同樣,ENC28J60模塊連接到Arduino。 Arduino和ENC28J60之間的連接如下。
如何將ENC28J60以太網模塊與Arduino Web服務器連接:
1.從此處下載ENC28J60庫:ENC28J60庫
2.將庫文件添加到您的Arduino IDE庫中:
3.添加完成后,打開示例,然后從 Master Library中選擇以下示例:
4.編譯代碼,然后將代碼上傳到Arduino UNO開發板:
5.打開串口監視器并復制IP地址:
6. 打開網絡瀏覽器并粘貼IP地址,然后按下Enter:
Arduino連接ENC28J60以太網模塊的示例代碼:
#include
#define STATIC 0 // set to 1 to disable DHCP (adjust myip/gwip values below)
#if STATIC
// ethernet interface ip address
static byte myip[] = { 192,168,1,200 };
// gateway ip address
static byte gwip[] = { 192,168,1,1 };
#endif
// ethernet mac address - must be unique on your network
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };
byte Ethernet::buffer[500]; // tcp/ip send and receive buffer
const char page[] PROGMEM =
"HTTP/1.0 503 Service Unavailable "
"Content-Type: text/html "
"Retry-After: 600 "
" "
""
"
"Service Temporarily Unavailable"
"
"
""
This service is currently unavailable
""
"
"The main server is currently off-line.
"
"Please try again later."
"
"""
""
;
void setup(){
Serial.begin(57600);
Serial.println(" [backSoon]");
if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)
Serial.println( "Failed to access Ethernet controller");
#if STATIC
ether.staticSetup(myip, gwip);
#else
if (!ether.dhcpSetup())
Serial.println("DHCP failed");
#endif
ether.printIp("IP: ", ether.myip);
ether.printIp("GW: ", ether.gwip);
ether.printIp("DNS: ", ether.dnsip);
}
void loop(){
// wait for an incoming TCP packet, but ignore its contents
if (ether.packetLoop(ether.packetReceive())) {
memcpy_P(ether.tcpOffset(), page, sizeof page);
ether.httpServerReply(sizeof page - 1);
}
}
編輯:hfy
-
以太網
+關注
關注
40文章
5380瀏覽量
171128 -
ENC28J60
+關注
關注
0文章
35瀏覽量
21605 -
Arduino
+關注
關注
187文章
6464瀏覽量
186660 -
控制器IC
+關注
關注
0文章
19瀏覽量
5834
發布評論請先 登錄
相關推薦
評論