เครือข่ายไร้สายราคาถูก -Low Cost Wireless Networks

Started by i2k, February 23, 2015, 05:42:10 PM

Previous topic - Next topic

i2k

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

จุดประสงค์ คือต้องการหาเครื่อข่ายไร้สาย เครือข่ายส่วนบุคคล Personal area network (PAN) สำหรับใช้ในการทดลองศึกษาในเรื่อง IoT หรือนำมาใช้ในงาน  Automation แบบพื้นๆ, Control, Data Acqusition หลังจากค้นหาข้อมูลอยู่หลายๆแบบพอสมควร ได้ไปเจออันนี้ panStamp หลายท่านคงผ่านตามาบ้างแล้ว ตอนนี้เขาก็พัฒนามาซักระยะหนึ่ง (ทำคนเดียว) ดูแล้วก็ค่อนข้างสมบูรณ์ครบถ้วน

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

ทำระบบสื่อสารไร้สายด้วยตัวเอง ในกรณีที่เป็น networks (เล็กๆ) หรือแม้ไม่เป็นก็ตาม สามารถใช้  wireless module อะไรก็ใช้ได้ทั้งนั้น แต่ถ้าเป็น networks ใหญ่ๆ ก็จะเริ่มยากและซับซ้อน ถ้าเลือกใช้โดยเพียงแต่ดูปัจจัยเรื่องราคาเป็นหลัก บางแบบราคาถูกมากแต่ต้องมาพัฒนา software ที่เกี่ยวข้องมากมาย ใช้เวลามาก รวมๆแล้วกลายเป็นของแพงไปเลย แล้วก็ยังไม่ใช้มาตราฐาน  ขยายไม่ได้ ผูกติดกับ platform เฉพาะเกินไป

ก่อนอื่น  :( วิธีทำผมไม่ได้เปิดเผยนะครับ เพราะของเขาเป็น opensource อยู่แล้ว และผมมีความคิดที่จะนำไปทำผลิตภัณท์ เดี๋ยวจะหาว่ายังมากั๊กไว้อีก ซึ่งจริงแล้วไม่ได้ยาก ผมพึ่งเล่น  Arduino platform มาได้ไม่กี่เดือน พอมีพื้นฐานโปรแกรมมิ่งและอิเลคฯ  คิดว่าท่านจะทำออกมาดีกว่าผมแน่นอน

ผมสรุปมาให้ดู  ลองดูว่าคุ้มค่าที่ท่านจะลองทำต่อหรือเปล่า รายละเอียดเข้าไปที่  www.panstamp.com  หรือไปดู  www.youtube.com/watch?v=jaa0yf6LiJ8 เห็นภาพคร่าวๆ



ลองมาดูต้นฉบับก่อน

- ในรูปบอร์ด panStamp ใช้ atmega328p run ที่ 8Hz  *** สามารถนำบอร์ด Arduino ทั่วๆไปที่มีขายมาดัดแปลงใช้แทนได้ ***

- ใช้ wireless chip ของ TI  (Sub 1GHz ISM) เบอร์ cc1101, บอร์ดรุ่นใหม่ใช้ cc430 ซึ่งรวม msp430 กับ cc1101 ไว้ในตัวเดียวกัน , ชิป cc1101 ออกมานานแล้วนะครับ

- เขาขายอยู่ประมาณ 15 ยูโร (แต่เป็นความถี่ย่าน 800 MHz) แพงเหมือนกันเมื่อเทียบกับบอร์ดอย่าง xbee

- กินไฟต่ำ กินกระแสน้อยกว่า 30 mA, sleep mode < 20 uA จึงใช้แบตฯได้อย่างสบายสำหรับทำ wireless sensor

- Simple Wireless Abstract Protocol (SWAP) คือชื่อ protocol ไร้สายที่ใช้ในการสื่อสาร ไม่ได้เป็นมาตราฐาน ชื่อก็บอกอยู่แล้วว่า simple อย่าไปเทียบกับ Zigbee หรือ BLE

- เครือข่ายต่อเป็นแบบ star ทำ repeater ได้, ระยะรับส่งที่ผมทดลอง โดยตั้ง gateway ไว้ในบ้าน End device (mote) อยู่ข้างนอก ระยะรับส่งเกือบ 50 เมตร (ขึ้นอยู่กับเสาอากาศ) เมื่อติด repeaterไว้หน้าบ้าน ก็มองไม่เห็นแล้ว >150  เมตร ซึ่งพอสำหรับ Personal networks

- การพัฒนาใช้  Arduino ต้องเข้าใจว่า  *** สามารถพัฒนาทำเป็นอุปกรณ์นั้นๆได้เลย ไม่จำเป็นต้องไปต่อผ่านบอร์ดอื่นๆ  *** แต่เชื่อมต่อเข้า LAN โดยตรงไม่ได้ ต้องผ่าน gateway ของเขา

- Software อื่นๆที่เกี่ยวข้องใช้ Python , มีโปรแกรมจัดการเครือข่าย,  มี Gateway -REST Server มาให้พร้อม ซึ้งทั้งหมด opensource ฟรีครับ!!! และเพราะว่าใช้ Python จึงสามารถนำมาใช้ได้หมดบน Windows, Linux, Embedded Linux ทั้งหมด

- devices ต่างๆ เขาก็ทำมาให้ครบ แทบไม่ต้องเขียนขึ้นเองเลย ตัวแรกที่ต้องมีคือ modem (Serial gateway) เพื่อทำหน้าที่เชื่อมเครือข่ายเข้ากัน, Binary input ouput , Temperature & Humidity, Soil moisture sensor, Energy meter, ...

- ถ้าอยากจะเขียน Devices แบบใหม่ขึ้นเองก็ต้องศึกษา Protocol ของเขาอีก เนื่องจากว่าไม่ได้ใช้มาตราฐาน  ถ้าจะทำต้องคิดว่าคุ้มเพราะจะเอาไปใช้กับอย่างอื่นไม่ได้



*** รูปผมนำลงโดยไม่ได้ขออนุญาต  https://rackingwoes.wordpress.com/2012/04/06/some-iot-slides/

รูปแบบการต่อใช้งาน ดูก็ไม่ต่างจากเครือข่ายไร้สายอื่นๆ
- ที่เป็นรูปสี่เหลี่ยมด้านบนคือ SWAP Network
- Largarto Server คือ REST Server
- PanStick+PanStamp ทำหน้าที่เป็น modem/serial gateway
- ส่วน Application คือที่เราต้องทำ  เมื่อมี REST Server ให้ใช้ก็ง่ายแล้วครับ


i2k

เนื่องจากขั้นตอนในการทำโมดูลขึ้นมาใช้เองรายละเอียดค่อนข้างมาก webboard อาจไม่เหมาะที่จะโพสข้อความยาวๆ เข้าไปดูต่อที่ ittisris.blogspot.com ขอบคุณครับ.

Raspberry pi กับ board panStamp ที่ผม port มาใช้ PIC, ทั้งหมดทำหน้าที่เป็น Wireless network gateway


ด้านซ้าย RESTful Service ด้านขวาคือ client ในรูปแสดง device 3 ตัว เป็น Temperature sensor ใช้ Thermistor , อีก 1 ตัวคือ Binary output + PWM Output + repeater


แสดง End point ซึ่งเราสามารถดูค่า และส่งค่าไปสั่งอุปกรณ์ต่างๆให้ทำงานได้อย่างง่ายๆ


Node-red คือ node packages ของ node.js เป็น Application ที่ใช้ส่งค่าไปแสดงผลที่ xively โดยใช้ MQTT protocol
Node-RED A visual tool for wiring the Internet of Things
Node-RED is a tool for wiring together hardware devices, APIs and online services in new and interesting ways.
Node-RED is a creation of IBM Emerging Technology


MQTT API สำหรับ xively ต่างจาก broker ทั่วๆไปเพราะต้องมีการ Authentication เพิ่มขึ้นมา https://xively.com/dev/docs/api/communicating/mqtts/


i2k

สมมุติว่าเราจะทำระบบ monitor อุณหภูมิภายในอาคารขนาดใหญ่ที่ใช้เครื่องปรับอากาศ นอกจากต้องการบันทึกค่า อยากให้ระบบคอยเตือนว่าบริเวณไหนของอาคารมีอุณหภูมิสูงเกินปรกติ

การนำค่าไปแสดงผลบน xively แต่เพียงอย่างเดียวยังเอาไปใช้งานไม่ได้ เพราะคงไม่มีใครมาคอยดูกราฟเปลี่ยนแปลงของอุณหภูมิตลอด

ในกรณีนี้ต้องใช้ Trigger และ xively ก็มีให้ใช้อย่าง https://xively.com/dev/tutorials/zapier ดูแล้วดีทีเดียว แต่เสียเงินและแพง จึงคิดว่าจะใช้วิธีเดิมๆ คือให้ระบบ tweet เตือน ส่วน xively ก็เอาไว้ดูรายละเอียด

- สำหรับ Node-RED เพียงแค่ลากปุ่ม ลากเส้นเชื่อมโยง เขียน script นิดเดียวก็สามารถใช้ได้แล้วครับ


- ให้อ่านค่าอุณหภูมิทุก 1 นาที กำหนดอุณภูมิเตือนที่ 25c


- อ่านอุณหภูมิและดูว่าอุณหภูมิสูงเกินกว่าค่าที่กำหนดไว้หรือเปล่า




- จัดรูปแบบข้อความและส่ง  tweet






i2k

จากตัวอย่างก่อน ถ้าต้องการตั้งค่าอุณหภูมิเตือนไว้ใน xively เลย จะได้ไม่ต้องแก้ code

- สร้าง channel บน xively ชื่อว่า "SetPoint" ตัวอย่างกำหนดอุณหภูมิไว้ที่ 27c


- แก้ไขและสร้าง flow ขึ้นใหม่นิดหน่อย


- ในส่วน mqtt subscribe ตั้งค่า topic ให้ถูกต้องตาม API ที่เขากำหนดมา


- เขียน script เพิ่มอีกนิด เพื่อเอาค่าไปเก็บไว้ที่ตัวแปร Global


แค่นี้ก็ทำงานได้แล้วครับ

i2k

MQTT  หาอ่านเพิ่มเติมได้ที่ google play ฟรีครับ ละเอียดมาก ท้ายๆมีตัวอย่างเกี่ยวกับ Arduino
MQTT และ Node-RED เป็นผลผลิตของ IBM


ถ้าอยากทดลอง publish/subscribe ติดตั้งและทดลองก่อนได้
http://www-01.ibm.com/support/docview.wss?rs=171&uid=swg24006006&loc=en_US&cs=utf-8&lang=en



มี broker ฟรี iot.eclipse.org, m2m.eclipse.org

* ต่อไปจะเป็นการติดตั้ง local mqtt broker และนำมาใช้แบบไม่เป็น Internet of things คือไม่ต่อ Internet และก็คงจบกระทู้ของผมครับ

yupetch

สนใจครับ อ่านมาตั้งแต่ต้น แต่ไม่ได้แสดงความเห็นครับ
;D  ;D  ;D

pickkajoo_en

ขอบคุณมากครับ กำลังสนใจพอดี