was successfully added to your cart.

TL-MR3020 และการนำมาประยุกต์ใช้งานเป็น WiFi and Ethernet to UART

By December 18, 2013tutorial

ในปัจจุบันการเชื่อมต่ออุปกรณ์ผ่าน WiFi หรือ Ethernet ได้เริ่มเป็นเรื่องไกล้ตัวมากขึ้น
Arduino เป็นบอร์ดที่สามารถประยุกต์ใช้งานได้หลากหลายแต่มีจุดอ่อนที่การเชื่อมต่อผ่าน internet หรือ intranet การจะเชื่อมได้เราจำเป็นต้องหาอุปกรณ์เช่น WiFi-shield เป็นต้นมาประยุกต์ หรือโมดูลต่างๆ

แต่โมดูลประเภทนั้นบางอย่างมีราคาค่อนข้างสูง ( ตัวถูกกว่า เราเตอร์ตัวนี้ก็มีครับ แต่ อ่านจากด้านล่าง )
โปรเจคนี้เนื่องจากผมลงทุนทีเดียวเพื่อต่อยอดได้ TL-MR3020 มันลง Linux ได้ทำให้มันมีความสามารถต่างๆ เพิ่มขึ้นดังนี้ถ้าเราต้องการในราคา 900 บาท

1. สามารถลง Webserver ขนาดเล็กได้

2. เชื่อมต่อกล้อง USB webcam แล้วส่งไปที่ Computer ได้ผ่าน network

3. เพื่อมีการต่อยอดใช้ซอฟแวร์ที่จัดการอุปกรณ์ network เยอะๆ เช่น snmp

4. เพื่อมี database เช่น SQLite

5. สามารถ encrypt ข้อมูลที่สื่อสารระหว่าง network ได้

6. และอีกมากมายหลากหลายที่ Linux ทำได้แต่ไม่เกินประสิทธิภาพเราเตอร์ตัวนี้

สรุปเทพครับ Arduino เราจะกลายเป็นดีไวซ์อีกประเภทไปเลยแต่วันนี้เราจะมาสอนแบบง่ายๆก่อนครับเอาแบบไครก็ทำได้ โดยการ ดาวน์โหลด image จาก internet มาแล้วแฟลชลงไปเลย ( ทางเราคอมไพล์ kernel, rootfs เองอาจจะเป็นการเสียเวลาโดยใช่เหตุ ฮาา )

วิธีการลง OpenWrt (Linux) และเชื่อมต่อกับ Arduino ( โปรเจคนี้มีความเสี่ยงตอน flash firmware ผู้ลงทุนควรศึกษาข้อมูลก่อนตัดสินใจ )
1. ศึกษาดูรูปก่อนว่าเราซื้อเราเตอร์มาถูกตัว

http://wiki.openwrt.org/toh/tp-link/tl-mr3020

ให้สังเกตุหา installation แล้วดูบรรทัดที่

Download the latest Attitude Adjustment from here

เข้าไปจัดการดาวน์โหลด image มา หรือจะจิ้มไปที่

http://downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/openwrt-ar71xx-generic-tl-mr3020-v1-squashfs-factory.bin

2. จัดการ flash ลงไปที่เราเตอร์ของเรา

โดยการเปิด browser ครับแล้วเข้าไปที่ IP default ของ TL-MR3020 ( หน้า setup router ) แล้วไปที่ tab
System tools -> firmware upgrade แล้ว browse ไปที่ file จากข้อที่หนึ่ง

http://www.youtube.com/watch?v=zfHZTpeGLRQ
นาทีที่ 1 เป็นต้นไป

รอซักคู่จังหวะนี้ อย่าหายใจ อย่าขยับสายไฟ สายแลน ไครเข้าไกล้ไล่ออกไปก่อน เพราะถ้าพลาดจะ brick แล้ววิธีแก้เหนื่อยแน่นอน

3. หลังจาก flash firmware เสร็จแล้วให้ SSH ไปที่ TL-MR3020

เข้าหน้าคอนโซลมา
<img class="aligncenter size-full wp-image-1443" alt="Capture" src="http://www.deaware.com/wp-content/uploads/2013/12/Capture.png" width="578" height="377" srcset="http://www.deaware.com/wp-content/uploads/2013/12/Capture.png 578w, http://www.deaware.com/wp-content/uploads/2013/12/Capture-300×195 look at here.png 300w” sizes=”(max-width: 578px) 100vw, 578px” />
ถึงตรงนี้มีชัยไปกว่าครึ่งแล้วครับให้ดำเนินการลง package ได้เลย

opkg update
opkg install kmod-usb-acm                       <—- ตัวนี้เฉพาะ Arduino รุ่นที่ไม่ใช่ FTDI ส่วนใหญ่จะเป็นรุ่นใหม่ๆ ครับ
opkg install ser2net

ลงครบสามตัวก็จะต่อ Arduino ได้ละครับให้ลองเสียบ Arduino แล้วลอง

ls /dev/ 

จะเจอ ttyACM0 ถ้าไม่เจอให้ทดลองรีสตาร์ทบอร์ดใหม่โดยเสียบ Arduino ทิ้งไว้

ทีนี้ต่อมาแก้ไขไฟล์ครับ

vi /etc/ser2net.conf

โดยการ ใส่บรรทัดนี้ลงไปด้านล่างสุด

1111:raw:0:/dev/ttyACM0:9600 NONE 1STOPBIT 8DATABITS

ถึงตรงนี้เราสามารถลองได้แล้วโดยการพิมพ์คอมมานด์ ser2net ใน terminal แล้วลอง telnet ไปที่ ip address ของ router โดยพอร์ตเป็นหมายเลข 1111 เท่านี้ก็ใช้ได้ละครับ ถ้ามีการเขียนโปรแกรมที่ Arduino ไว้ด้วย buadrate 9600 ก็น่าจะเรียบร้อยทุกอย่าง

4. หลังจากนั้นให้ setup เพื่อให้มันทำงานตอน boot ทุกครั้งโดยการ 

แก้ startup file

#!/bin/sh /etc/rc.common
START=10
STOP=15
start(){
ser2net
}
stop(){
killall ser2net
}

แล้วจัดการ enable service

/etc/init.d/ser2net enable

สุดท้ายนี้อยากจะบอกว่าไครสามารถหา เราเตอร์ที่ลง OpenWrt ที่ถูกกว่านี้ได้ก็ทำได้เหมือนกันครับเช่นรุ่น TL-WR703N เป็นต้น
ไครมี facebook กดไลค์เพจเราไว้ แล้วรอพบบทความจาก Deaware นะครับ

UPDATE
แจกซอร์สโค้ดในรูปตัวอย่างนะครับเป็นการกดปุ่มบน Qt Application แล้วไปสั่ง led pin 13 ที่ Arduino

https://drive.google.com/file/d/0B-IbzRNLM9hPTTlfRldZTVExMjQ/edit?usp=sharing

Leave a Reply

*