วันนี้เราลองมาดูการใช้ Arduino ของเราติดต่อกับคอมพิวเตอร์เพื่อการแสดงผล หรือการสั่งการผ่านเครือข่าย Internet กันนะครับ
มาดูอุปกรณ์ที่ต้องใช้กันก่อนครับ วันนี้ผมจะลองทำให้ Ethernet Shield ซึ่งปกติต้องใช้สาย LAN มาต่อ ทำงานแบบไร้สายด้วยอุปกรณ์เสริมคือ Tenda Portable Router กันครับ เจ้า Tenda นี้จะทำหน้าที่ติดต่อกับ WIFI ที่อยู่ในบริเวณที่ Arduino ต้องการทำงาน ผ่าน Ethernet Shield แต่ถ้าผู้อ่านไม่มี Tenda นี้ก็ไม่เป็นไรครับ ต่อ Ethernet Shield เข้ากับ Rounter ตามปกติผ่านสาย LAN ได้เลยครับ
เจ้า Tenda Portable Router นี้ผมได้มาจากพันธ์ทิพย์ ค่าตัวก็ 800 บาทนะครับ (ถ้าขยันเดินไปชั่นบนๆ หน่อยจะได้ราคาถูกอีกนิด) ผมใช้ Model W150M ตามรูปนะครับ แต่ถ้าใครได้รุ่น W150M+ มาก็จะยิ่งดีเพราะจะได้สัญญาณที่แรงกว่าเนื่องจากมีเสาอากาศ แต่ถ้าจะใช้ยี่ห้อ TP Link ก็ไม่ผิดกติกาอะไรนะครับ ทำงานได้เหมือนๆกัน
เอาละครับ อุปกรณ์ที่ให้มาในกล่องของ Tenda เมื่อเอามารวมกับ Ethernet Shield และ Arduino UNO ของเราก็จะครบถ้วนพร้อมทำงาน ดังที่จะเล่าให้ฟังต่อไปครับ
ก่อนอื่นเรามารู้จักกับคำศัพท์ที่สำคัญกันก่อนที่จะลุยนะครับ จะได้ใช้ภาษาเดียวกัน
Ehternet คำนี้จะหมายถึงส่วนของการสื่อสารระหว่างคอมพิวเตอร์ที่อยู่ภายใน Local Area Network (LAN) ซึ่งจะใช้เป็นส่วนพื้นฐานในการส่งผ่านข้อมูล โดยที่การสื่อสารผ่าน Ethernet จะต้องมีการระบุที่อยู่ของผู้ส่งและผู้รับ หรือ MAC Address (Media Address Control)
TCP และ IP (Transmission Control Protocol and Internet Protocol) สำหรับการติดต่อผ่านระบบอินเตอร์เน็ตซึ่งสามารถติดต่อกันได้ทั่วโลกนั้นต้องมีการระบุโดยใช้ IP address โดยเป็นการทำงานครอบบน Ethernet ภายใน LAN อีกที IP Address นั้นจะเป็นตัวเลขที่ไม่ซ้ำกันจากผู้ส่งไปถึง IP Address ของผู้รับ โดยเป็นตัวเลข 4 ไบต์ แยกกันแต่ละไบต์ด้วยจุด เช่น 192.168.1.25 เป็นต้น โดยค่า IP Address นี้จะถูกแปลงให้เป็น URL เช่น www.google.com โดยผ่านอุปกรณ์ที่แปลงเป็น IP address เรียกว่า DNS หรือ Domain Name System
Local IP Address ทีนี้ถ้าในบ้านหรือใน Local network ของเรามีเครื่องคอมพิวเตอร์หลายเครื่องผ่าน Router และ Gateway ของเรา แต่ละเครื่องคอมพิวเตอร์ในบ้านจะต้องใช้ Local IP address ที่สามารถแจกให้โดย DHCP หรือ Dynamic Host Configuration Protpcol นะครับ อันนี้เป็นฟังก์ชั่นของ Router ที่มีขายกันทุกยี่ห้อ แต่เราก็สามารถใช้ IP Address แบบคงที่ได้ครับ โดยกำหนดให้ใช้แบบ Fixed IP
ทีนี้มาที่ Ethernet Shield ของเราเวลาใช้งานอาจจะต้องระบุ IP address ให้ชัดเจนใน Sketch ที่เราจะเขียน
อีกนิดครับ
ทีนี้เจ้า web browser ที่เราใช้ ไม่ว่าจะเป็น Internet Explorer Chrome หรือ Safari ก็จะใช้วิธีการสื่อสารที่เรียกว่า HTTP หรือ Hyper Text Transfer Protocol สื่อสารระหว่างคอมพิวเตอร์ กับอุปกรณ์ หรือ Server โดยที่ Web Browser มีหน้าที่แปลงข้อความ ภาพ และ อื่นๆ ที่ส่งให้โดยใช้ Hypertext Markup Language (HTML) มาแปลความและแสดงผลบนหน้าจอคอมพืวเตอนร์ของเรานั่นเอง
มาดูครับว่าเจ้า TENDA W150 อยู่ตรงไหน
ทีนี้ Arduino UNO กับ Ethernet Shield ของเราสามารถทำงานโดยใช้ Protocol เดี่ยวกับ Notebook หรือ PC ครับ ดังนั้นจึงสามารถติดต่อกับ Server บน Internet ได้เหมือนกัน หมายถึงทั้งรับ และส่งข้อความผ่านระบบ Internet ได้
เอาละครับ คราวนี้มาลองดูครับว่าเราพร้อมจะใช้งาน EThernet Shield รึเปล่า
ก่อนอื่นต้อง setup อุปกรณ์ Tenda W150m ของเราให้พร้อมก่อนนะครับ ให้แน่ใจว่าสามารถต่อออก internet ได้ โดยไม่ต้องใส่ security นะครับ วิธีการ Setup อุปกรณ์ Tenda +150m ของเราให้ดูที่นี่ครับ
ผมใช้ Client+AP mode โดยไม่ใส่ Security นะครับ ส่วนชื่อ SSID ก็ตั้งเป็นค่าอะไรก็ได้
คราวนี้เราลองมาดูที่ Sketch นะครับ ลองดูด้านล่างนี้ จะเห็นว่าเราใช้ library มาตรฐาน ที่ชื่อ Ethernet.h ซึ่งไม่ต้องติดตั้งเพิ่มนะครับ มีอยู่แล้ว แค่เรียกชื่อตอนต้น
ขั้นตอนใช้งาน Sketch นี้มีอีกนิดหน่อยครับ คือเราต้องหา IP Address ของ Ethernet Shield ที่เราจะใช้ก่อน โดยใช้ Sketch ที่ให้ดังนี้ครับ
/*
* Simple Client to display IP address obtained from DHCP server
* Arduino 1.0 version
*/
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte server[] = { 173,194,126,119 }; // www.google.co.th
EthernetClient client;
void setup()
{
Serial.begin(9600);
if(Ethernet.begin(mac) == 0) { // start ethernet using mac & DHCP
Serial.println("Failed to configure Ethernet using DHCP");
while(true) // no point in carrying on, so stay in endless loop:
;
}
delay(1000); // give the Ethernet shield a second to initialize
Serial.print("This IP address: ");
IPAddress myIPAddress = Ethernet.localIP();
Serial.print(myIPAddress);
if(client.connect(server, 80)>0) {
Serial.println(" connected");
client.println("GET /search?q=arduino HTTP/1.0");
client.println();
} else {
Serial.println("connection failed");
}
}
void loop()
{
if (client.available()) {
char c = client.read();
// uncomment the next line to show all the received characters
// Serial.print(c);
}
if (!client.connected()) {
Serial.println();
Serial.println("disconnecting.");
client.stop();
for(;;)
;
}
}
|
ดูใน Serial Monitor จะได้ตามนี้ครับ
แล้วเปลี่ยนใน Sketch ตามที่ highlight ไว้เลยครับ คราวนี้เราจะลองเรียก www.google.com ดูครับ ว่าจะตอบสนองการเรียกของ Arduino รึเปล่า
/*
* Simple Web Client
* Arduino 1.0 version
*/
#include
#include
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 1, 44 }; // เปลี่ยนเป็น IP Address ของอุปกรณ์ของคุณ
byte server[] = { 173,194,126,119 }; // IP Address ของ www.google.co.th
// see text for more on IP addressing
EthernetClient client;
void setup()
{
Serial.begin(9600); // start the serial library:
Ethernet.begin(mac,ip);
delay(1000); // give the ethernet hardware a second to initialize
Serial.println("connecting...");
if (client.connect(server, 80)) {
Serial.println("connected");
client.println("GET /search?q=arduino HTTP/1.0"); // the HTTP request
client.println();
}
else {
Serial.println("connection failed");
}
}
void loop()
{
if (client.available()) {
char c = client.read();
Serial.print(c); // echo all data received to the Serial Monitor
}
if (!client.connected()) {
Serial.println();
Serial.println("disconnecting.");
client.stop();
for(;;)
;
}
}
|
ถ้า Ethernet Shield ของเราจะได้ Serial monitor ตามนี้นะครับ
ที่ว่ามาทั้งหมดเป็นการทดลองใช้งานว่า Ethernet Shield ของเราทำงานได้ปกติ แต่การใช้งานจริงๆนั้นสามารถทได้มากกว่า ดังนี้ตรับ
จากตั้งอย่างด้านบนจะเห็นว่าเราสามารถใช้งาน Arduino กับ Ethernet Shield ได้อีกหลากหลายมากๆนะครับ อันนี้สุดแต่จะจินตนาการแล้วครับ
เอาละครับ วันนี้เยอะแล้วขอพักไว้เท่านี้ ติดตาม ตอนที่ 2 นะครับ
ถ้ามีคำถามหรืออยากจะแนะนำอะไร เชิญได้ที่ facebookของเรานะครับ
โดย Mountain "A"
หน้านี้เป็นสารบัญของบทความที่ปรากฏในเว็บของ Arduitronics.com นะครับ จะขอแบ่งออกเป็นหัวข้อตามกลุ่มของสินค้าในร้านดังต่อไปนี้
หน้าที่เข้าชม | 15,387,561 ครั้ง |
ผู้ชมทั้งหมด | 5,890,639 ครั้ง |
เปิดร้าน | 21 พ.ค. 2556 |
ร้านค้าอัพเดท | 13 ก.ย. 2568 |