
มาควบคุม Relay ผ่าน Network เบื้องต้นด้วย Raspberry PI กัน ( ตอนที่ 1 )
บทความนี้เน้นสำหรับผู้เริ่มต้นในการออกแบบระบบควบคุมอุปกรณ์ผ่านเครือข่าย สำหรับผู้ที่ต้องการนำใช้งานในระดับที่มากกว่าการทำใช้เองหรือทำเล่น ย่อมต้องศึกษาวิธีการที่มากกว่าบทความนี้ทั้งด้านการออกแบบซอฟแวร์ โพรโตคอลที่ใช้ในการจัดการเป็นต้น
ก่อนจะเริ่มควบคุมอุปกรณ์ผ่าน network เราต้องเข้าใจไดอะแกรมของโครงงานนี้ก่อนว่าจะทำอะไร
ในระบบตัวอย่างที่จะนำมาสาธิตถ้าวาดรูปออกมาจะได้คร่าวๆ ว่า
เริ่มต้นเตรียมอุปกรณ์ที่จำเป็นต้องใช้เลยก่อนอื่นคือ Raspberry PI และ Computer ที่ใช้ในการทดสอบติดต่อสื่อสารโดยในที่นี้ให้ตั้งค่า IP address ของ Raspberry PI เป็นอะไรก็ได้ หรือจะเอาตามตัวอย่างก็ไม่ว่ากัน
ขั้นตอนที่ 1 Ping ระหว่าง Computer และ Raspberry PI ให้ได้ก่อน
ขั้นตอนแรกเป็นวิธีที่ง่ายที่สุดที่จะทดสอบว่า Computer ของเรา และ Raspberry PI สามารถติดต่อสื่อสารกันได้แล้วหรือไม่ นั่นคือการ ping โดยก่อนจะ ping ได้ต้องมั่นใจก่อนนะครับว่า Raspberry PI เสียบสาย LAN และอยู่ในวงเดียวกันกับ Computer แล้ว
ถ้าเกิดมีการตอบรับจาก Raspberry PI ก็เรียกว่าใช้ได้แล้วครับ
ขั้นตอนที่ 2 เข้าใจสถาปัตยกรรมที่ออกแบบ พร้อมโพรโตคอลที่ใช้งานแบบง่ายๆ กันก่อน
หลังจากเราทดสอบ ping แล้วมั่นใจว่าคุยกันได้แน่นอนก็จะมาทำความเข้าใจกับการติดต่อสื่อสารของเรากันครับ ในการติดต่อสื่อสารเราจะกระทำผ่านสถาปัตยกรรมแบบ client/server
– Raspberry PI
เป็น Server รอรับการเชื่อมต่อจาก Client อย่างเดียวและเมื่อได้รับข้อมูลจาก Client จะไปประมวลผลและทำคำสั่งต่อไป
– Computer
เป็น Client มีหน้าที่ร้องขอเข้าไปเชื่อมต่อกับ Server และเราจะใช้ในการส่งชุดคำสั่งที่ต้องการไปหา Server
ในตัวอย่างของเรานี้ จะใช้วิธีการคุยกันโดยการเปิด Port เชื่อมต่อระหว่าง Raspberry PI และ Computer และคุยผ่าน TCP protocol ดังนั้นเรื่องของ Application layer ที่ควรใช้ในการจัดการอุปกรณ์เช่น snmp เป็นต้นนี้ลืมไปได้เลย เพราะว่าเราจะทำแบบ simple ที่สุดครับ
** แนะนำให้ศึกษาเพิ่มเติมเรื่อง Mac address, IP address, Socket, TCP, UDP, สถาปัตยกรรม Server/Clientซึ่งเรื่องพวกนี้ค่อนข้างมีแหล่งข้อมูลที่กว้างและเยอะพอสมควร
ขั้นตอนที่ 3 เริ่มต้นพัฒนาซอฟแวร์บน Raspberry PI กัน
ในการพัฒนาซอฟแวร์บน Raspberry PI เราจะใช้ภาษา Python และเน้นไปที่โมดูลที่ชื่อว่า socket
เจ้าโมดูล socket จะถูกติดตั้งมาพร้อมกับ Python อยู่แล้วดังนั้นจึงไม่จำเป็นต้องลงซอฟแวร์อะไรเพิ่ม , แล้วโมดูลนี้มันคืออะไร
โมดูล socket จะสามารถทำให้เราเชื่อมต่อ BSD socket interface ซึ่งเป็น API มาตรฐานสำหรับระบบ internet socket เป็นต้นโดย BSD socket interface จะมีบน Modern Unix system, Linux, Window, Mac Os และบนระบบปฏิบัติการอีกหลายๆ ตัวที่ไม่ได้กล่าวถึง
3.1 เริ่มต้นให้สร้างไฟล์ที่ชื่อว่า simple_server.py บน Raspberry PI กันก่อนโดยการพิมพ์คำสั่งดังนี้ไปบน Command line
nano simple_server.py
3.2 เริ่มต้นทดลองใส่ซอร์สโค้ดลงไปดังนี้
ตัวแปร HOST_NAME ให้ปล่อยเป็น ” ส่วน HOST_PORT ให้ปรับเปลี่ยนเป็น port ที่ต้องการใช้การติดต่อสื่อสารระหว่าง Computer และ Raspberry PI
ต่อมาให้ทดลองเชื่อมต่อระหว่าง Raspberry PI และคอมพิวเตอร์โดยการรันซอฟแวร์ simple_server.py บน Raspberry PI กันก่อน
sudo python simple_server.py
หลังจากรันโปรแกรมทางด้านบนแล้ว Raspberry PI จะทำตัวเป็น Server ที่เปิด Socket หมายเลข 1111 รอการเชื่อมต่อจาก client อยู่เบื้องต้นให้ทดลองใช้ซอฟแวร์ที่มี โพรโตคอล telnet แล้วเลือกพอร์ตเป็น 1111 จะสามารถเชื่อมต่อกับ RaspberryPI server ได้ และเมื่อพิมพ์อะไรจาก client จะมีการตอบกลับจาก Server มาเสมอ
*** ซอฟแวร์ที่แนะนำ putty, hyperterminal, teraterm ( Window ), Mac terminal ( Mac ), Linux terminal ( Linux )
รอพบบทความตอนต่อไปเรื่องการเชื่อมต่อระหว่างซอฟแวร์รอบนี้กับ Relay
0813633910 สั่งมาทดสอบและทำวิจัยจริงๆว่าทนแดดได้กี่องศาครับอ.
0813633910สั่งทดสอบสักชุดก่อนครับ อ.