Tag Archives: mysql

Update Zigbee Project (Wireless Sensor Network)

และแล้วทุกอย่างก็สำเร็จไปได้ด้วยดี ทั้งการสอบโปรเจ็กต์ สอบสัมภาษณ์ป.โท แต่วันนี้เราจามาพูดกันเรื่องโปรเจ็กต์ที่ได้ทำไปตอนปี 4 ดีกว่า ว่าคืออะไร ทำอะไรได้บ้าง แล้วมานดีอย่างไร? มาเริ่มกานเรย !!!

โปรเจ็กต์ที่ทำมา ก็คือ Wireless Network Sensor มี Sensor Node กระจายตามจุดต่างๆ เป็นบริเวณกว้าง ที่สนใจใช้กับโปรเจ็กต์นี้ก็คือ ใช้ทางด้านเกษตรกรรม คือวัด อุณหภูมิ และวัดความชื้น โดย Sensor Node ต่างๆจะส่งข้อมูล ผ่านโปรโตคอล Zigbee มายังที่ Zigbee Coordinator และทำการแปลงข้อมูลเหล่านั้นผ่าน Gateway เพื่อที่จะส่งต่อไปยังตัว Server อีกทีหนึ่ง โดย Packet ในระบบที่วิ่งไปวิ่งมาตัว Gateway จะเป็นตัวบริหารจัดการ เก็บข้อมูล Packet API เหล่านั้น ลงใน Log บน Gateway (จริงๆในอนาคตอยากจะทำการเก็บข้อมูลลงใน SD Card ได้ เพื่อที่จะตรวจสอบข้อมูล Log เชิงระยะยาว) ทีนี้ข้อมูล API นอกจากที่จะอ่านบน Gateway คือ (ARM7 Cortex-M3 แล้ว) ยังถูกส่งต่อให้กับ Server อีกด้วย ข้อมูล API เหล่านั้น จะถูกแปลงโดย GUI ที่เขียนขึ้นโดย C#.NET โดยมีหน้าต่างบริหาร ให้ผู้ใช้เข้าใจได้โดยง่าย

นอกจาก Server รอรับข้อมูลจาก Gateway แล้ว ยังทำการเก็บข้อมูลลง ฐานข้อมูล MySQL โดยเก็บข้อมูลอย่างเป็นระบบ เพื่อที่จะให้ผู้ใช้ผู้อื่น ตรวจสอบ/ดึงข้อมูลที่ถูกเก็บในระยะยาว ผ่าน เว็บไซต์ ที่ถูกออนไลน์ผ่าน โปรโตคอล TCP/IP ได้อีก

จากรูปแรก นอกจากที่เก็บข้อมูลจากโหนดปลายทางแล้ว เป็นการเฝ้าระวังระบบ ของเรามีสิ่งที่พิเศษก็คือ สามารถควบคุมระบบได้อีกด้วย ซึ่งสามารถใช้งานได้ในระบบปิด เป็นระบบ เฝ้าระวังและควบคุม อย่างเช่น รับค่าอุณหภูมิมา แล้วที่โหนด server ทำงานในโหมดเฝ้าระวังและควบคุมอยุ่ แล้วตรวจสอบได้ว่าอุณหภูมินั้นมีค่าสูงกว่าค่าอุณหภูมิขอบเขต (Temperature Threshold) ที่ถูกเซ็ตค่าไว้ ก็จะทำการส่งสัญญาณบางอย่างกลับไปควบคุมที่โหนดปลายทางได้ เช่น อุณหภูมิสูง ก็ส่งไปควบคุมวงจรรีเลย์ให้ทำการเปิดสวิต ทำให้พัดลมหมุน (จำลองจากเครื่องปรับอากาศ) อุณหภูมิก็จะสามารถเข้าสู่สมดุลได้ดังที่เคย

ต่อมามาดูอีกโหนดที่เป็นความชื้นก็เช่นกัน ถ้าค่าความชื้นที่ถูกส่งมา มีค่าต่ำกว่าที่เราต้องการในระบบปิด ระบบก็จะส่งสัญญาณออกไปควบคุมที่โหนดปลายทางนั้นๆ ให้ทำการเปิดสวิต โดยไปขับรีเลย์ ให้เครื่องกำเนิดความชื้นทำงาน (Humidifier)

ซึ่งระบบทั้งหมดที่ออกแบบมานี้ ได้ทดลอง แล้วสามารถใช้งานได้จริง โดยจำลองระบบขึ้นมา และทำการวัด ทั้งมอนิเตอร์ 24 ชั่วโมงเพียงอย่างเดียว / ทดสอบควบคุมอุณหภูมิระบบปิด / ทดสอบควบคุมความชื้นระบบปิด

นอกจากนี้ยังได้ศึกษาเซ็นเซอร์ต่างๆ เข้าใจวิธีการนำเซ็นเซอร์มาใช้งาน ตั้งแต่เข้าใจหลักการพื้นฐานของเซ็นเซอร์ เข้าใจ Datasheet / ทำการสอบเทียบ ดูช่วงการใช้งานเซ็นเซอร์ และผลตอบสนอง / สร้างวงจรเพิ่มเติมให้เซ็นเซอร์เหล่านั้นมาใช้งานกับระบบของเราได้ เป็นต้น

จากด้านบนเป็นโปรแกรม GUI เฝ้าระวังและควบคุม ระบบ Zigbee Network ที่มีอยู่ในระบบทั้งหมด โดยทุกตัวเชื่อมต่อเป็นลักษณะ เครือข่ายแบบ MESH TOPOLOGY ด้านขวามือเป็นการมอนิเตอร์ข้อมูลที่จำเป็นในการแสดงผล ให้ผู้ใช้งาน ตรวจสอบแม้เพียงตาผ่านได้ว่า ข้อมูลในขณะนั้นๆเป็นยังไง

ส่วนด้านซ้ายมือจะแยกเป็นส่วนๆดังนี้

ส่วนล่างสุด เป็นการ Monitor Command สำหรับผู้รู้ระบบลึกๆ คือข้อมูลในระบบ API ทั้งหลาย ที่วิ่งไปวิ่งมา ผ่านตัว Coordinator จะถูกแสดงผลที่จุดนี้ แสดงข้อมูลตั้งแต่ เวลา วันที่ API Packet ที่ได้รับ หน้าที่ต่างๆ MAC ที่ถูกส่งมาจากปลายทาง สถานะเอาท์พุท ค่า ADC ที่ได้รับจากเซ็นเซอร์ต่างๆ เป็นต้น

ต่อมา เป็นการแสดง Information อย่างคร่าวๆ ว่าสถานะออนรึเปล่า ข้อมูลส่งมาล่าสุดเมื่อไหร่ อุณหภูมิ และ ความชื้นมีค่าเท่าใด สถานะเอาท์พุท อุปกรณ์ที่ต่อพ่วงอยู่นั้น เปิดหรือปิดอยู่เป็นต้น

ส่วนต่อมา จุดสำคัญคือ Network Mode Control ว่าจะเป็นแบบ Manual (เฝ้าระวังเพียงอย่างเดียว) หรือแบบ Auto (เฝ้าระวังและควบคุม)  ต่อมาด้านขวา คาบเวลาที่ใช้ในการเก็บข้อมูล (หน่วยเป็นวินาที) โดยสามารถเซ็ตได้จาก เมนู Setting ในโปรแกรม

เอาเป็นว่าน้ำจิ้มแค่นี้ก่อนละกัน เพราะว่ามันมีฟังก์ชั่นที่เซ็ตค่าในโปรแกรมเยอะ เดวจะพิมพ์กันไม่เสร็จวันนี้…

ต่อมาเป็นหน้าเว็บไซต์ โดยที่ ตัว server ที่รัน GUI นั้นยังทำหน้าที่เป็น Webserver เชื่อมต่อ Database อีกด้วย เพื่อเรียกดูข้อมูลผ่านออนไลน์ได้

นี่คือหน้าเว็บไซต์ที่ได้ออกแบบไว้…

โดยตัวเว็บนี้สามารถ ดูข้อมูลที่จำเป็น ณ.เวลานั้นๆได้ สามารถ พล๊อตกราฟตลอด 24 ชั่วโมงที่ผ่านมา / 7 วันที่ผ่านมา / 1 เดือนที่ผ่านมา หรือ 1 ปีที่ผ่านมาได้ และยังสามารถแสดงผลข้อมูลเหล่านั้น ลงสู่ไฟล์ Excel เพื่อให้ผู้ใช้งานสามารถใช้งาน Export ข้อมูลออกไป ทำ Report อื่นๆ หรือ ไปพล๊อตกราฟรูปแบบอื่นๆ หรือ ได้ข้อมูลตามช่วงเวลาที่ต้องการได้

รูปแรก โหนดนี้เอาไว้ควบคุมอุณหภูมิ อ่ะนะ เป็นบอร์ด Demo เฉยๆ

รูปสอง รูปภาพรวมของทุกโหนด ที่สามารถนำไปไว้ตามจุดต่างๆเพื่อทดสอบได้จริง โดย ซ้ายสุดเป็น Gateway เชื่อมต่อกับ Server และ Xbee Coordinator

รูปสาม เป็นภายในของโหนด Zigbee ว่ามีอะไรบ้าง แต่ละโหนดจะไม่มี MCU ตัวอื่นนอกจาก โมดูล Xbee อยู่เลย เพราะอาจารย์บอกว่า ถ้าเอา MCU ไปทิ้งไว้ตัวนึง เหมือนเพิ่ม Cost ที่โหนดนั้นๆ แสดงว่าต้องทำอะไรที่ได้มากกว่านี้ อย่างเช่นอาจจะเก็บ Log File หรือทำอะไรด้วยตัวเองได้ นอกจากนี้ที่ทำแบบนี้ จะได้ใช้โมดูล Xbee Series2 ได้อย่าง Full-Function

(เห็นรูปนี้แล้วรู้สึกเสียดายที่กลุ่มอื่นหลายๆกลุ่ม ใช้ Zigbee เพียงแค่ แทนสายเส้นนึง คือต่อแทนสายอากาศ และก้อไม่ได้ใช้ Digital IO หรือ Analog Input ของมันเลย รู้สึกเสียดายจิงๆนะ… เพราะตัวนึงก้อไม่ใช่ถูกเลย ถ้าเอามาใช้แทนเสาอากาศนี่ น่าจะใช้พวก โมดูล RF แบบอื่นๆ ที่ราคาไม่แพง น่าจะเหมาะสมกว่า)

รูปสี่ เป็นโรงเรือนจำลอง ที่ใช้ตอนทำการทดลอง ทั้งเพิ่มอุณหภูมิ และ ลดความชื้นในระบบ แล้วดูว่า ระบบของเราสามารถที่จะควบคุมปัจจัยสิ่งเหล่านั้นได้รึเปล่า ปรากฎว่าควบคุมได้จิงๆอ่ะนะ…

รูป 5 เป็นรูปคืนก่อนสอบโปรเจ็กต์ ต้องเอาเข้าไปหมดนี่เลย แถมโน๊ตบุคอีก 2 ตัวด้วยกัน ตัวนึง Present ตัวนึงทำเป็น WebServer

รูป 6 อีกซักรูป

รูป 7 THESIS หนามากๆ อาจารย์ให้ทำซะเยอะเลย ทั้งหมดก็ประมาณ 214 หน้าได้  T^T  ทำเล่มทีจนเลย เหอๆ

หลังจากที่สอบโปรเจ็กต์เสร็จ ก็ถึงเวลาจากลา จัดห้องคืนอาจารย์ อิอิ ขอบคุณอาจารย์ กสิน วิเชียรชม มากๆ ที่ดูแลทุกอย่างตั้งแต่ต้นจนจบเลย จะมีอาจารย์ที่ไหนที่ดีขนาดนี้อีก T^T อยู่ช่วยพรีเซ้น 2-3 วัน ตั้งแต่เช้า วันสุดท้ายเสร็จเกือบตีสอง ซาบซึ้งมากๆ….

ในที่สุดก็จบแล้วซะที เห็นว่าโปรเจ็กต์นี้มีบริษัทติดต่อมาขอซื้อ แต่ยังอยู่ในช่วงเจรจากันอยู่ ว่าไงก็ว่ากัน ถ้าไม่ได้ใช้อะไรมันก็ไม่ได้ประโยชน์ใช่มั๊ยหละ ก้อเอาไปเป็นวิทยาทานเผื่อจะทำขายได้จริงๆอ่านะ = =’

ต่อไปก้อต้อง…สู้ต่อไป วิศวกรรมชีวการแพทย์ อาจารย์ให้ Paper มาอ่านตั้งเยอะ ยังอ่านไปไม่ถึงไหน เหอๆๆๆ T^T

ต่อไปคงไม่ได้ทำต่อกับอาจารย์กสินแล้วหล่ะ อาจารย์ถนัดเรื่อง VLSI หรือพวกออกแบบ IC อ่ะนะ รู้สึกมานยากแน่ๆ ไม่ค่อยถนัดคำนวณหนักหน่วงเยอะๆซะเท่าไหร่ ประกอบกับ พี่เรียนหมอ แล้วเมื่อเทอมที่แล้วเคยเรียนวิชาเลือก Biomedical Electronics รู้สึกว่าชอบวิชานี้มากๆ ก็เลยตัดสินใจแล้วว่าจะต่อทางด้าน Biomedical Engineering อ่ะนะ ทำงานวิจัย คงหนีไม่พ้น Instrumentation หรือพวก Signal Processing แหละ

สู้กันต่อไป ทาเคชิ!

ความคืบหน้า KMITL-HotSpot

โหะๆ

วันนี้กลับมาบ้านแล้วหล่ะ

กลับมาก้อมานั่งทำงานตลอดเลยอ่า ตั้งแต่บ่ายๆยันเย็นเลย แล้วก้อลุล่วง ไปได้ด้วยดี คือ ตอนนี้ งาน KMITL-HotSpot ที่จะเอาของเก่ามา แก้ระบบทั้งหมดแล้ว ยังเอาของ หอใน 7 8 ที่เพิ่งไปติดตั้งด้วย

ภายในเว็บจะหนักไปที่ระบบ check เนี่ยแหละ แมร่งอย่างงงอ่ะ คือมาไล่ทำของเก่าด้วย ของหอใน 7 8 ก้อทำเสร็จแล้วหล่ะ TCP Check ผ่าน script โดยวิธี crontab เอา เหอๆ โดย script ตัวนั้น ทำการไล่ TCPCheck จากทุก Access Point ตามจุดต่างๆของสถาบัน แล้วมายัดใส่ใน MySQL ไว้ก้อนนึง โดยทำการ Crontab ทุกๆ 3 นาที แหละ เหอๆ

ก้อผ่านไปได้ด้วยดีแหละ สำหรับหอใหม่ แต่ไอหอเก่าเนี่ยดิ คือได้ IP ยกชุดมา จากพี่กิตติ แล้วพี่กิตติบอกว่าให้เช็คผ่าน port 22 ซึ่งก้อได้ลองแล้ว ลองเข้าไปดูกานดิ https://161.246.34.149 แล้วกดตรง จุดบริการ KMITL-HotSpot เหอๆ แม้งแดงเถือกเลย สำหรับ หอในเก่า เป็นแค่ ชั้นลอย กะ ชั้น 2 งงชิบเป๋ง งานนี้แก้เองไม่ได้แล้วหล่า คงต้องเรียกพี่กิตติมาดู

วันนี้เสียเวลากับ ภาษา php นิดนึง เพราะตอนแรก เคยจำได้ว่า มันมีวิธีการ get ค่าตัวแปรออกมา แล้วเอาชื่อของค่าตัวแปรนั้น มาใส่เป็น array ของอีกตัวแปรนึง เหอๆ กว่าจะระลึกได้แทบตายอ่ะ จดไว้ๆ

สมมุติว่าเรา get ค่า มาจาก mysql ใช่ป่ะ

$db   = new MySQLtcp();
$sql  = "select * from ตารางในdb order by id";
$rs   = $db->query($sql);
$num   = $rs->size();
     
for($i=0;$i<$num;$i++) {  // ทำการวน LOOP เพื่อที่จะเปลี่ยน PORT กะ IP
                                   ของ Access Point ไปเรื่อยๆ
$row  = $rs->next();
      
$point = $row[point];     // GET ค่าของ point ออกมา เช่น หมายเลข AP ตัวที่ 711
$status = $row[status];   // GET ค่าของสถานะ Access Point ออกมา คือ 0 กะ 1
//echo "$point";          // อันนี้ไม่เกี่ยวนะเอาไว้ทดสอบตอนแรกที่เขียน เหอๆ
//echo "$status";
$ap[$point] = $status;    // บรรทัดนี้สำคัญมาก คือเอาตัวแปรของ $point
                                   มาเป็น Array ใน $ap อีกทีนึง แล้วมีค่าเท่ากับ
                                   $status (สถานะของ Hotspot นั่นเอง)
}

เอ่อนะ ผลที่ได้จากการวน Loop ตาม List.txt ที่เรา Add IP กะ PORT เอาไว้ ก้อจะได้

EXAMPLE*  เช่น  AP ของหอในตึก 7 ชั้นที่ 1 ตัวที่ 1 ก้อจะเป็นตัวแปร $ap[711] แบบนี้เลย

เจ๋งป่ะหละ อิอิ

หลังจากนั้น เราจึงเอา $ap[711] เนี่ยไปใช้งานต่อ เข้า else if เช็คว่า ถ้ามีค่าเป็น 1 ให้แสดง output เรียก class css ที่ชื่อว่า .online ออกมา แต่ถ้า มีค่าเป็น 0 ให้ใช้ class css .offline ออกมา นั่นเอง

ง่ายจิง แต่ใช้เวลาเกือบ 5 ชั่วโมงได้ เหอๆ

เหนื่อยดีมาก วันนี้

ตอนนี้เหลืออีกนิดนึง คือ ภาพรวมของระบบ กะ วิธีการใช้งานนั่นแหละ คงเร่งทำให้เสร็จภายในคืนนี้ ถ้าเป็นไปได้

ที่ช่วงนี้เร่งทำงานก้อเพราะว่ายังมีเวลาไง เดวก้อสอบแล้ว คงไม่มีเวลา แล้วก้อแบบ มีงานเว็บสถาบันเข้ามาอีก ก้อเลยต้องรีบเคลียงานเก่าๆทิ้ง เหอๆ ดูมานเหมือนนิดเดียวเนอะ แต่แบบ กว่าจะหา solution อะไรแต่ละอย่างนี่ อย่างโหดเลยอ่ะ เหอๆ

เอ่อ บันทึกไว้ด้วย เวลาเรา crontab  หน่ะ ใน ubuntu server

ก้อพิม crontab -e

แล้วก้อ ทำการเพิ่มบรรทัดเข้าไป ในการรัน

อย่างเช่น ของ Hotspot ตัวใหม่ ก้อจะได้

# m h  dom mon dow   command
*/3 * * * *   /usr/bin/php -q /var/www/CENSOR/CENSOR.php

3 ไอข้างหน้าคือ ทุกๆ 3 นาที ให้ทำการรัน CENSOR.php อะไรแบบนี้

ซึ่งใน CENSOR.php อะไรของเราอันนี้ สามารถเอาไปทำอะไรได้หลายอย่างเลย ไม่ว่าจะรันแล้ว เก็บไว้เป็น LOG หรือ รันแล้วประมวลผลอะไรซักอย่าง อย่างเช่นงานนี้ รันแล้วก้อ เก็บข้อมูลที่ค้นหา tcpcheck ไปเก็บไว้ใน MySQL นั่นเอง

โหะๆๆ

สนุกดีเนอะ 555+

พรุ่งนี้กลับลาดกระบังแล้วหล่า อ่อ อย่าลืมไปใช้สิทธิ์ใช้เสียงกานด้วยน้า

อิอิ

เลือกเบอร์อารัย พอจารู้แล้วหล่า อิอิ

ไปแระ ^_^  เดวจาไปสรุป LAB อ่า เอา LAB กลับมาบ้าน ยังไม่ได้สรุปเลย เดี๋ยววันจันทร์ ฝ้ายไม่มีลอก – -’

ฝันดีเน้อ