Khác biệt giữa các bản “ShieldEthernet ENC28J60”
Từ ChipFC Wiki
(→Chương trình 1: Làm Server mạng LAN - kho chứa thông tin) |
(→Chương trình 1: Làm Server mạng LAN - kho chứa thông tin) |
||
Dòng 100: | Dòng 100: | ||
* Chương trình này sử dụng thư viện Arduinno cho mạng LAN, chương trình mẫu sau đây biến Arduino với shield motor thành một server và sẽ phản hồi lại thông tin mỗi khi client hỏi, client ở đây bạn có thể dùng các trình duyệt phổ biến như IE, Firefox, Chrome ... và dùng nhập địa chỉ như bình thường. | * Chương trình này sử dụng thư viện Arduinno cho mạng LAN, chương trình mẫu sau đây biến Arduino với shield motor thành một server và sẽ phản hồi lại thông tin mỗi khi client hỏi, client ở đây bạn có thể dùng các trình duyệt phổ biến như IE, Firefox, Chrome ... và dùng nhập địa chỉ như bình thường. | ||
* Một số hàm: | * Một số hàm: | ||
− | ** Khai báo kiểu | + | ** Khai báo kiểu '''ETHER_28J60''' để chúng ta có thể sử dụng đối tượng ethernet |
{| style="border-radius: 6px 6px 6px 6px;border: 1px dotted" | {| style="border-radius: 6px 6px 6px 6px;border: 1px dotted" | ||
|<syntaxhighlight lang="cpp"> | |<syntaxhighlight lang="cpp"> | ||
Dòng 106: | Dòng 106: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
|} | |} | ||
− | ** Hàm void setup(uint8_t macAddress[], uint8_t ipAddress[], uint16_t port) sử dụng để thiết lập các thông số về địa chỉ MAC, IP, port cho shield ethernet, được gọi một lần và đầu tiên trong hàm setup. | + | ** Hàm '''void setup(uint8_t macAddress[], uint8_t ipAddress[], uint16_t port)''' sử dụng để thiết lập các thông số về địa chỉ MAC, IP, port cho shield ethernet, được gọi một lần và đầu tiên trong hàm setup. |
{| style="border-radius: 6px 6px 6px 6px;border: 1px dotted" | {| style="border-radius: 6px 6px 6px 6px;border: 1px dotted" | ||
|<syntaxhighlight lang="cpp"> | |<syntaxhighlight lang="cpp"> | ||
Dòng 112: | Dòng 112: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
|} | |} | ||
− | ** Hàm char* serviceRequest() trả về một chuỗi request nếu có, không thì trả về NULL, được sử dụng thường xuyên trong loop để lấy request | + | ** Hàm '''char* serviceRequest()''' trả về một chuỗi request nếu có, không thì trả về NULL, được sử dụng thường xuyên trong loop để lấy request |
{| style="border-radius: 6px 6px 6px 6px;border: 1px dotted" | {| style="border-radius: 6px 6px 6px 6px;border: 1px dotted" | ||
|<syntaxhighlight lang="cpp"> | |<syntaxhighlight lang="cpp"> | ||
Dòng 118: | Dòng 118: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
|} | |} | ||
− | ** Hàm void print(char* text) hoặc void print(int value) dùng để thêm chuỗi kí tự hoặc giá trị vào phản hồi | + | ** Hàm '''void print(char* text)''' hoặc '''void print(int value)''' dùng để thêm chuỗi kí tự hoặc giá trị vào phản hồi |
{| style="border-radius: 6px 6px 6px 6px;border: 1px dotted" | {| style="border-radius: 6px 6px 6px 6px;border: 1px dotted" | ||
|<syntaxhighlight lang="cpp"> | |<syntaxhighlight lang="cpp"> | ||
Dòng 124: | Dòng 124: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
|} | |} | ||
− | ** Hàm void respond() dùng để phản hồi lại cho client sau khi đã dùng những hàm print ở trên | + | ** Hàm '''void respond()''' dùng để phản hồi lại cho client sau khi đã dùng những hàm print ở trên |
{| style="border-radius: 6px 6px 6px 6px;border: 1px dotted" | {| style="border-radius: 6px 6px 6px 6px;border: 1px dotted" | ||
|<syntaxhighlight lang="cpp"> | |<syntaxhighlight lang="cpp"> |
Phiên bản lúc 13:49, ngày 5 tháng 10 năm 2014
Bài viết này đang được phát triển hoặc chỉnh sửa lớn. |
Mục lục
Giới thiệu
- Shield Ethernet ENC28J60 là một board mạch mở rộng cho Arduino, tương thích hoàn toàn với Arduino và cả ChipPRO, ChipUNO của ChipFC. Shield này được sử dụng với Arduino để có thể lập trình truy cập qua mạng, giao tiếp mạng nội bộ hoặc mạng Internet, để từ đó có thể khám phá kho tàng dữ liệu vô tận từ hệ thống mạng máy tính đang vô cùng phát triển.
- Ethernet Shield cung cấp cho board Arduino tất cả những thứ cần thiết để bạn có thể kết nối Ethernet, giao tiếp đơn giản, có hỗ trợ khe cắm thẻ nhớ micro sd để lưu trữ dữ liệu.
Đặc điểm
- Điện thế hoạt động: 5v (cung cấp bởi Arduino Board)
- Sử dụng chip Ethernet: ENC28J60, Tốc độ Ethernet: 10Mb/s
- Sử dụng Ethernet Jack RJ45 chuẩn, có đèn báo tín hiệu truyền nhận
- Hoàn toàn tương thích Arduino,Kết nối với Arduino qua SPI
- Hỗ trợ khe cắm thẻ nhớ microSD.
Mô tả các chân kết nối
Kết nối tới Arduino
Thứ tự chân | Tên gọi | Loại | Mô tả |
---|---|---|---|
1 | SCK | Input | chân clock của SPI |
2 | MISO | Output | chân master in - slave out của SPI |
3 | MOSI | Input | chân master out - slave in của SPI |
4 | NET_CS | Input | chân select cho ethernet |
5 | SD_CS | Input | chân select cho sdcard |
6 | NET_INT | Output | chân interrupt cho ethernet |
- Các shield của chipfc được thiết kế hoàn toàn tương thích với Arduino, ChipiUno, ChipiPro ...
Sử dụng như một module độc lập
- Không dùng Arduino? Hãy dùng hàng rào mở rộng khi bạn sử dụng Shield này như một module riêng lẻ kết nối với các loại board khác
Thứ tự chân | Tên gọi | Loại | Mô tả |
---|---|---|---|
1 | CLK | Output | |
2 | INT | Output | |
3 | WOL | Output | |
4 | SO | Output | |
5 | SI | Output | |
6 | SCK | Output | |
7 | CS | Output | |
8 | Reset | Output | |
9 | 5V | Power | |
10 | GND | Power |
Sử dụng
Sử dụng ethernet với Arduino
- Cắm shield Ethernet vào Arduino
- Cắm dây mạng đã kết nối ethernet shield Ethernet
- Kết nối dây nạp cho Arduino
- Cấp nguồn cho Arduino, tải thư viện cho Ethernet tại trang giới thiệu sản phẩm của chipfc và nạp chương trình mẫu
Giải nén file zip etherShield_v1.1_for_Arduino_v1.0 được 2 thư mục etherShield và ETHER28J60
Giải nén file zip Ethernet28J60Full được thư mục cùng tên
- Sau đây là một số chương trình mẫu sử dụng Arduino với Shield Ethernet:
Chương trình 1: Làm Server mạng LAN - kho chứa thông tin
- Kết nối Shield Ethernet với Arduino như mô tả ở trên
- Chương trình này sử dụng thư viện Arduinno cho mạng LAN, chương trình mẫu sau đây biến Arduino với shield motor thành một server và sẽ phản hồi lại thông tin mỗi khi client hỏi, client ở đây bạn có thể dùng các trình duyệt phổ biến như IE, Firefox, Chrome ... và dùng nhập địa chỉ như bình thường.
- Một số hàm:
- Khai báo kiểu ETHER_28J60 để chúng ta có thể sử dụng đối tượng ethernet
ETHER_28J60 ethernet; |
- Hàm void setup(uint8_t macAddress[], uint8_t ipAddress[], uint16_t port) sử dụng để thiết lập các thông số về địa chỉ MAC, IP, port cho shield ethernet, được gọi một lần và đầu tiên trong hàm setup.
ethernet.setup(mac, ip, port); // thiết lập địa chỉ mac, ip và port |
- Hàm char* serviceRequest() trả về một chuỗi request nếu có, không thì trả về NULL, được sử dụng thường xuyên trong loop để lấy request
char* param = ethernet.serviceRequest()) ; |
- Hàm void print(char* text) hoặc void print(int value) dùng để thêm chuỗi kí tự hoặc giá trị vào phản hồi
ethernet.print("<H1>ChipiUno, ChipiPro, ChipiLeo</H1>"); |
- Hàm void respond() dùng để phản hồi lại cho client sau khi đã dùng những hàm print ở trên
ethernet.respond(); |
- Nạp Example có tên là EchoParams hoặc đoạn code sau tới Arduino
#include "etherShield.h"
#include "ETHER_28J60.h"
int ledPin = 5; //Định nghĩa chân nháy led để báo tín hiệu
static uint8_t mac[6] = {0x54,0x55,0x58,0x10,0x00,0x24}; //định nghĩa địa chỉ MAC cho thiết bị
static uint8_t ip[4] = {192,168,1,15}; //định nghĩa địa chỉ IP cho shield, địa chỉ IP này có thể xem bằng lệnh ipconfig trong cmd
static uint16_t port = 80; // định nghĩa port
ETHER_28J60 ethernet; //Khai báo đối tượng ethernet để ta làm việc trên nó
void setup()
{
ethernet.setup(mac, ip, port); // thiết lập địa chỉ mac, ip và port
}
void loop()
{
char* param;
if (param = ethernet.serviceRequest()) //nếu có yêu cầu tới shield này
{
ethernet.print("<H1>Arduino</H1>"); // thì in ngược lại với dòng chữ Arduino và yêu cầu đó
ethernet.print("<H2>");
ethernet.print(param);
ethernet.print("</H2>");
ethernet.respond(); //Re lệnh phản hồi lại cho client
}
} |
Sau đó bạn mở trình duyệt web trên máy bạn lên và nhập vào url như hình sau:
Như bạn thấy, sau địa chỉ IP của bo (theo code ở đây là 192.168.1.15/, có thể tùy chỉnh tùy theo mạng) là dòng lệnh gửi xuống bo Arduino và thông tin chúng ta đọc được cũng chính là dòng lệnh này
Ngoài thông tin là chữ thì bạn cũng có thể lập trình để lấy các thông tin khác như cảm biến, dữ liệu ...
- Chương trình 3: Làm Client - người truyền tin
- Chương trình 4: Lên Internet - Search google
- Chương trình 5: Lên Internet - Đăng twitter
/**
* Tự động bật relay
* Sử dụng kết hợp với Chipiuno của chipfc
*
* Viết bởi: Thophi
* Tham khảo tại http://chipfc.com/
*/ |