Tag Archives: senior project

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 แหละ

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

Zigbee API Frame (Zigbee API Packet)

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

ไหนๆก็ทำโปรเจ็กต์เรื่องนี้โดยตรง อยู่แล้ว แบ่งปันให้คนอื่นรู้มั่ง…

ของผมเป็น โมดูล Xbee Series2 จำนวน 3 ตัว และ Xbee-Pro Series2 จำนวน 1 ตัว

เรื่องแรกวันนี้ ของการเซ็ตค่า API

สำหรับโปรเจ็กต์ครึ่งปีแรกนี้ คือในโปรเจ็กต์ จะมี xbee ตอนนี้อยู่ 4 ตัว

1. ทำหน้าที่เป็น Coordinator 1 ตัว ต่ออยู่กับ ARM7 Cortex-M3

2. ทำหน้าที่เป็น Router 3 ตัว

ในส่วนของ Router นั้น สามารถแบ่งออกเป็น 3 แบบดังนี้

1. ไม่ได้ทำอะไรเลย เป็นทางผ่านส่งข้อมูลเฉยๆ 1 ตัว

2. เซ็ตค่า Pin Change Detection จำนวน 1 ตัว หน้าที่ของโหนดนี้คือ ต่ออยู่กับ PIR Sensor เวลามีอะไรผ่านหน้าเลนส์ จะยก logic ให้เป็น High เมื่อ logic เปลี่ยนก็จะทำการส่งข้อมูล API Frame ผ่าน Router ข้อ 1 ไปยัง Coordinator

3. รับค่าค่า Analog Input ทุกๆ 20 วินาที เพื่อส่งเป็น API Frame กลับไปยัง Coordinator

ในส่วนของ Coordinator นั้น ต่อกับ ARM7 ผ่านทาง UART (RS232) เมื่อรับค่าเข้ามาเป็น Packet หลักการของโปรแกรมใน ARM ทำดังนี้

หลักการเช็คข้อมูล Packet ที่ได้รับจาก Zigbee API Frame

1. รับค่า UART แล้วทำการเก็บใน DMA เพื่อหาจำนวน Bytes ทั้งหมด ว่ามีทั้งหมดกี่ bytes

2. ตรวจสอบ byte แรก ต้องเป็น 0x7E

3. byte 2-3 นั้นจะเป็นค่าความยาว Length ของขบวนข้อมูลที่รับมา ซึ่งจะสัมพันธ์กับ Bytes ทั้งหมด ที่อยู่กับด้านบน

4.ทำการตรวจสอบ byte ที่ 4 ว่าเป็น 0×92 รึเปล่า ถ้าใช่ จะเป็น Zigbee IO Data Sample RX Indicator ซึ่งเป็นการแซมปลิ้งค่าจาก Digital Input ทุกขา ของ โมดูล Xbee ซึ่งอาจจะเป็นเลขรหัสอื่น ซึ่งการตีความใน API Frame ก็จะแตกต่างกันไป แต่ในโครงงานนี้ ตีความโดย 0×92

5. ทำการบวกเลขทั้งหมด ตั้งแต่ byte ที่ 4 จนถึง byte ก่อน checksum ทั้งหมด แล้วหักด้วย 0xFF ซึ่งค่าที่ได้ byte low จะอยู่ในส่วนของ checksum (เวลาคำนวณให้ตัด byte high ออกไปได้เลย)

6. ถ้าถูกต้องทั้งหมดใน 5 ข้อที่กล่าวมาข้างต้น แสดงว่า ส่งข้อมูลรูปแบบ API Frame ถูกต้องแล้ว ให้ไปทำอะไรก็ได้หลังจากนี้

ตัวอย่าง ซึ่งเช่นข้อมูลเป็นดังนี้ (รับค่า Pin Change Detection อย่างเดียว ถูกส่งจากโหนด มายัง Coordinator) ถ้าเป็น Analog ด้วย Packet จะยาวกว่านี้ แต่สามารถส่งรวมกันได้เลยนะ

7E 00 12 92 00 13 A2 00 40 3D C7 1D 40 CB 01 01 FF FF 00 00 01 4B

เวลาตีความ จะสามารถตตีความได้ดังนี

0x7E คือ byte start ของข้อมูลขบวนรถไฟที่ถูกส่งมา

0×00 0×12 คือ จำนวน bytes ทั้งหมดตั้งแต่ byte ที่ 4 จนถึง byte ก่อนหน้า checksum ซึ่ง 0×12 แปลงเป็นฐานสิบได้ 18 ซึ่งถูกต้อง ลองนับดู (ตัวอักษรสีฟ้า)

7E 00 12 92 00 13 A2 00 40 3D C7 1D 40 CB 01 01 FF FF 00 00 01 4B

ได้ครบ 18 ตัวจริงๆด้วยอ่ะนะ…

0×92 คือ API Frame นี้ถูกส่งมาโดยข้อมูลที่ตามมาเป็น Zigbee IO Data Sample RX Indicator

0×00 0×13 0xA2 0×00 0×40 0x3D 0xC7 0x1D คือ 0013A200 403DC71D ซึ่งเป็น DH และ DL Address 64bit ของโหนดปลายทางที่ส่งข้อมูลมา (ระบุตัวตนของโหนดที่ส่งข้อมูลมา)

0×40 0xCB คือ 16bit Address อันนี้ไม่ต้องสนใจ เนื่องจากเราเช็คผ่าน 64 bit address ไปแล้ว

0×01 (byte ที่ 15) คือ Packet ACK คือ ปรกติจะมี ACK กะ NACK อ่ะนะ แปลง่ายๆ Acknowledge นั่นเอง

0×01 (byte ที่ 16) คือ Number sample sets โดยปกติแล้วจะเป็นค่านี้ตลอด

0xFF 0xFF คือ Digital Channel Mask ก็คือถ้า สอง byte นี้ มีค่าเป็น FF FF แสดงว่ามีการส่งค่าดิจิตอล Input มา ถ้าเป็น 00 00 ก็แสดงว่าไม่มีการส่งค่าดิจิตอล Input มา

0×00 (byte ที่ 19) Analog Channel Mask คือถ้าเป็น 00 แสดงว่าไม่มีการส่งค่า analog มา ถ้ามีการส่งค่า analog มา มันจะมีค่าเป็น FF

0×00 0×01 (byte ที่ 20 และ 21) อันนี้เป็น RAW Data จริงๆ คือ มันมีทั้งหมด 2byte (รองรับ 16bit) สำหรับดิจิตอล แต่จริงๆ โมดูล xbee มีไม่ถึงนะ ปกติมีแค่ 12bit โดยเรียงขาดังนี้

bit12         bit11         bit10         bit9         bit8         bit7         bit6         bit5         bit4         bit3         bit2         bit1         bit0

DIO12      DIO11      DIO10       N/A        N/A       DIO7      DIO6      DIO5      DIO4      DIO3      DIO2      DIO1       DIO0

เช่นค่าที่ได้มา 00 01 ก็จะเป็น

0             0               0               0              0              0              0               0             0               0               0              0              1

แสดงค่า DIO0 ที่ต่ออยู่กับ PIR Sensor Detect ค่าได้ว่าเป็น 1 นั่นเอง…

ต่อมา…

0x4B คือค่า Check Sum ซึ่งหาได้จาก

Check Sum = 0xFFFF – ( 0×92 + 0×00 + 0×13 + 0xA2 + 0×00 + 0×40 + 0x3D + 0xC7 + 0x1D + 0×40 + 0xCB + 0×01 + 0×01 + 0xFF + 0xFF + 0×00 + 0×00 + 0×01 )

Check Sum = 0xFFFF – 0x5B4

Check Sum = 0xFA4B ซึ่ง byte high เราไม่เอา เอาแต่ byte low ก็จะได้ 4B ดัง Packet สุดท้ายที่มันส่งมา

จบแล้ว ง่ายมั๊ย ศึกษามา 3-4 เดือน = =’ โปรเจ็กต์ยังไม่ไปไหน ฮ่าๆ

วันนี้ขอแค่นี้ก่อนละกัน รู้สึกเมื่อยๆ ^^

เมื่อคืนได้เข้าไปที่บล๊อก http://www.10logic.com/ มา พอดีสนในเรื่อง gsm module เลยไปขอวงจรจากพี่เค้ามาครับ

ไม่ถึงวัน พี่เค้าส่งให้เลย ต้องขอขอบคุณพี่ B.Uthen มากๆเลยนะครับ ที่อนุเคราะห์ให้

ซาบซึ่งๆ ^^

Zigbee API Mode with AT Mode Project

ในที่สุดดด…

โปรเจ็กต์ครึ่งเทอมแรก ก็น่าจะเริ่มต้นไปได้ด้วยดี

หลังจากที่ ใช้เวลางมกับ Zigbee API Packet มาเป้นเวลา 3 อาทิตย์เต็มๆ

อันนี้คือภาพรวมของระบบที่ออกแบบไว้ เอา Xbee มาทำงานเป็นลักษณะระบบควบคุมอะไรซักอย่าง ซึ่งเป็นลักษณะ Prototype แน่นอนว่า จากในรูปปลายภาคจะต้องมี GUI ซึ่งจะต้องพึ่ง C# อีกแน่นอน = =’

แต่เทอมแรกนี้ ก็เป็นการส่งข้อมูลจาก Zigbee จาก Router ทั้งหลาย ส่งกลับมาที่ Coordinator อ่ะนะ แล้วทำ Packet ที่ได้ เนื่องจากใช้พวกพอร์ต GPIO และ ADC ของ Xbee อ่ะ ก็เลยใช้เวลานานมาก ในการอ่านข้อความ Packet ศึกษาเรื่องนี้ประมาณ 1 อาทิตย์เต็มๆอ่ะนะ

ก็ถ้า Coordinator ได้ข้อมูล Packet ขนาด 22-30 bytes ที่ตัว Zigbee Router แต่ละโหนดส่งมาให้ ก็เขียน ARM7 ให้แปรความหมายต่างๆใน Packet เหล่านั้น ซึ่งจะต้องผ่านขบวนการแปลงเช็คต่างๆ เช่นเช็ค Length หรือพวก Checksum ว่าข้อมูลที่ได้รับมานั้นถูกรึเปล่า แค่ส่วนนี้ก็เสียเวลาไปประมาณ 2-3 วันได้อีกอ่ะนะ

ในที่สุดก็ทำได้ซะที คือ การทดลองจะเป็นลักษณะ Coordinator เชื่อมต่อ Xbee Router 3 ตัว ซึ่งคุยกันแบบ API Command ทั้งหมดอ่ะนะ เวลาได้รับ Package ออกมาแล้วก็ให้มันมาโชว์ที่ ARM7 อ่ะ ซึ่ง xbee ตัวแรกต่อกับ PIR Sensor ของ Inex ต่อกับขา DIO0 ซึ่งถูกตั้งค่าเอาไว้ว่า เมื่อมีการเปลี่ยนแปลง Logic ให้ส่งข้อมูล Packet กลับมาที่ Coordinator ทันที ส่วนอีกอันนึงจะเป็นการต่อกับ R ปรับค่าได้ เปลี่ยนแปลง Analog 0-1.2V ซึ่งจะได้ค่า Analog ตั้งแต่ 0×0000 จนถึง 0x03FF อ่ะนะ ทั้งหมดก็ 10 bit ทำการส่งข้อมูลกลับมาที่ Coordinator ทุกๆ 30 วินาที

รูปข้างบนนี้เป็นส่วนของที่ทำในเทอมนี้อ่ะนะ

สิ่งที่ได้ความรู้เพิ่มขึ้นเกี่ยวกะ ARM ตอนนี้คือ สามารถใช้ไอตัวลำโพงมันได้หละ คือตอนแรกไม่รู้เว้ยว่ามันใช้อะไรยังไง แต่พอปรึกษาอาจารย์ว่าลำโพงแบบนี้ทำงานยังไง ก็ทำจนออกเลย คือต้องใช้ PWM ส่ง Pulse ออกไปที่ตัว IC drive ลำโพงของบอร์ด ARM อ่ะ ซึ่งความถี่ที่มันใช้ Support ในการส่ง Pulse ออกไปนั้นอ่ะ รองรับตั้งแต่ 100Hz จนถึง 10kHz รู้สึกว่าลำโพงแบบนี้ใช้เปิดเพลงพวก MP3 ไม่ได้อ่ะนะ มันเป็นพวกเปียโซ ธรรมดานี่เองแหละ

มาดูชิ้นงานกันดีกว่า

รูปแรกนี่เป็น Coordinator ตัวนึงที่ต่ออยู่กับ ARM7 แสดงผลผ่านจอ LCD ซึ่งก็จะมีข้อมูลส่งมาจาก Xbee โหนดต่างๆอ่ะนะ เห็นได้จากไฟแวบๆ

อุปกรณ์ที่ทำออกมาทั้งหมด สำหรับเทอมนี้

ก็ใช้ Xbee ทั้งหมด 4 ตัวอะนะ มีเยอะกว่านี้ได้จนแน่ๆ 55+

จริงๆมันมีฝาปิดด้านบนอีกนะ รู้สึกว่าอาจารย์บอกว่าปิดได้เลยไม่เป็นไร การลดทอนของมันไม่ค่อยมีผลกับพวกพลาสติดเท่าไหร่ เพราะว่ามันเป็นไดอิเล็กตริกอะนะ สนามไฟฟ้าผ่านได้สบายๆ

อะไรจะเยอะแยะ ขนาดเน้

ถ้าถามว่า ทำออกมายากที่อะไร

บอกได้เลยว่า ยากที่ Zigbee API เนี่ยแหละ แต่พอได้ทำจริงๆแล้วสนุกดีอ่ะนะ

คือข้อมูลที่ได้มามันจะยาวเป็นขบวนรถไฟจริงๆ มีหลายๆส่วน ทั้งเชค ทั้งบอกหน้าที่ ทั้งบอก address ทั้งหมดข้อมูล อะไรแบบนี้ ซึ่งจะเป็นหน้าที่ของ ARM7 ที่จะรับค่าข้อมูลเหล่านี้มาตีความ ปลอกเปลือก ให้เหลือเฉพาะ Raw Data จริงๆ เพื่อที่จะนำไปตีความและแสดงผลอีกทีนึง

ปัญหาต่อไปที่เจอแน่ๆก็คือ เทอมสอง ต้องมีการโต้ตอบระหว่าง GUI กับ ARM กับ Xbee แต่ละโหนด ซึ่งตอนนี้จาก PC ส่งไปคุยกับ Xbee ได้แล้วในรูปแบบ API Packet Frame แต่ว่า ยังคิดไม่ออกว่า จะให้มันเป็นทางผ่าน ส่งไปที่ ARM7 ก่อนยังไง ต้องมีปัญหาในเรื่อง function ของ ARM อ่ะนะ function uart ของมันส่งเป็นพวก char กับ string แต่ที่เราจะส่งเนี่ย เป็นข้อมูล 8 บิตล้วนๆเลย ซึ่งจะส่งในรูปแบบของ เลขฐาน 16 อ่ะ

คงไม่น่ายากมาก อาจจะกังวลไปเอง คงทำได้แหละ ไม่น่ามีปัญหา

คนไทย ไม่ค่อยมีคนทำ API Packet เลย ที่เป็นของ Xbee Series2 หาไม่ได้เลยอ่ะ ต้องไปอ่านจากหลายๆเวบ แต่ก็ไม่ค่อยมีเท่าไหร่ ต้องอ่านเองใน datasheet ของมันเลย เซงมากๆ กว่าจะแกะได้ เหอๆ นั่งงมหลายวันเลย = =’

วันนี้อัพแค่นี้แหละ ไว้ถ้ามีอะไรเพิ่มเติมจะมาอัพเพิ่ม