Warning: in_array() expects parameter 2 to be array, string given in /home/content/31/10462331/html/babedev/blog/wp-content/plugins/facebook-button-plugin/facebook-button-plugin.php on line 380

Warning: in_array() expects parameter 2 to be array, string given in /home/content/31/10462331/html/babedev/blog/wp-content/plugins/facebook-button-plugin/facebook-button-plugin.php on line 383

DSC_6194

ห่างหายไปนาน ทั้งเที่ยว ต่อกันดั้ม และสารพัดกิจกรรม รอบนี้กลับมามีสาระกันบ้าง

ช่วงเทรนด์ที่ผ่านมานี้ IoT หรือ Internet of Things กำลังเป็นที่กล่าวขวัญ มากกว่า Mobile app อย่าง Android หรือ iOS เสียอีก

เนื่องด้วยผมไม่รู้ชะตากรรมว่า Android จะมีชีวิตต่อไปอีกนานแค่ไหน ครั้นจะกลับไปเขียน back-end หรือเว็บอีกครั้งก็คงจะไม่ใช่เรื่องดีนัก ผมจึงต้องหาของใหม่มาเสริมความรู้ เพื่อต่ออายุการเป็น developer ของผม

Internet of Things

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

ในปัจจุบันที่ผมเห็นว่าเทคโนโลยีที่ทำสิ่งเหล่าได้ง่ายสุดก็คงจะเป็นอุปกรณ์มือถืออย่าง Smart phone ที่มีอุปกรณ์ครบครันทั้งกล้อง, จอ, เซนเซอร์ต่างๆ และระบบเชื่อมต่อไร้สายหลากหลายระบบ แต่ติดที่ว่าอุปกรณ์เหล่านี้มีราคาสูงและยังขาดอุปกรณ์เสริมหลายอย่าง วิธีการก็คงจะต้องสร้างฮาร์ดแวร์ขึ้นมาเอง แต่ก็แน่นอน คงจะไม่ใช่เรื่องง่ายแน่ๆ ไหนจะต้องออกแบบวงจร โปรแกรมชิพขึ้นมาเอง และอีกมากมาย

ในยุคก่อนก็มีไมโครคอนโทรลเลอร์ (MCU) มากมายให้เลือกใช้ ทั้ง PIC, MCS51 แต่ก็ยังไม่ตอบสนองความรวดเร็วในการพัฒนา ผ่านมาหลายปีก็ได้มีกลุ่มคนให้กำเนิดฮาร์ดแวร์สุดล้ำที่ช่วยแก้ไขปัญหาให้เหล่านักพัฒนาทั้งหลาย นั้นก็คือ Arduino นั้นเอง (จริงๆมีอีกหลายเจ้า อย่าง Raspberry Pi แต่ผมถูกชะตาหน้าตาของบอร์ดเจ้านี้ เลยเลือกใช้ตัวนี้ก่อน)

Arduino

ไม่รู้จะนิยามมันยังไงดี ผมขอเรียกว่าบอร์ดไมโครคอนโทรลเลอร์สำเร็จรูป ที่มีทุกอย่างครบครันทั้ง MCU, USB port, I/O port ที่สามารถเอาอุปกรณ์เสริมมาเสียบต่อขยาย เพิ่มความสามารถได้อย่างง่ายดาย อ้อ สำคัญคือราคาถูกมาก

ผมขอข้ามรายละเอียดต่างๆของบอร์ด มาเรื่องการเริ่มต้นใช้งานเลยดีกว่า

ตัวบอร์ดของ Arduino มีมากมายหลายรุ่น มีตั้งแต่รุ่นจิ๋วที่มีแค่ MCU อย่างเดียวไปจนถึงใหญ่ยักษ์ที่มี Socket I/O เพียบจนเสียบไม่หมด ตัวที่ผมใช้คือรุ่น UNO ที่หลายสำนักบอกว่าเหมาะสำหรับผู้เริ่มต้น เพราะเว็บส่วนใหญ่จะอ้างอิงจากรุ่นนี้เป็นหลัก

DSC_6184

หน้าตาของกล่อง Arduino UNO

DSC_6185

ของแท้จาก Italy

DSC_6186

ภายในมีตัวบอร์ด, สติกเกอร์, ยางรอง, และใบขอบคุณ….

Let’s Start

เนื่องจากผมเริ่มง่วงนอนแล้ว งั้นมาเริ่มกันเลยดีกว่า

เริ่มแรกก็มาทำให้คอมพิวเตอร์ของเรารู้จักเจ้า Arduino กันก่อน วิธีการก็คือ เอาสาย USB มาเสียบตัวบอร์ดเข้ากับคอมพิวเตอร์ จากนั้นก็รอให้ Windows ทำการหา driver มาเอง (กรณี OSX หรือ Linux ลองหาข้อมูลจากที่อื่นนะครับ)

การจะรู้ได้ว่าบอร์ดนั้นทำงานอยู่หรือไม่ สามารถดูได้จากแสงไฟจาก LED บนบอร์ดจะกระพริบเรื่อยๆ

DSC_6187

เตรียมอุปกรณ์เชื่อมต่อให้พร้อม

DSC_6188

เสียบจึ๊ก

install_driver

รอลง driver

serial_port

เช็คความเรียบร้อย สังเกตุว่าจะมี Serial port ระบุไว้ จำตรงส่วนนี้ เพื่อใช้ในการ setup ในส่วนต่อไป

Blink

ต่อเนื่องกันเลยดีกว่า มาเริ่มเขียนโปรแกรมแรกกัน แต่ก่อนหน้านั้นต้องลง Arduino IDE ก่อน กดตรงนี้

เวอร์ชั่นที่ผมใช้ตอนเขียนบทความนี้คือ 1.0.5 อาจจะมีหน้าตาต่างไปบ้างนะครับ

เมื่อดาวน์โหลดเสร็จแล้วก็ทำการติดตั้งให้เรียบร้อย

install_ide

เตรียมการติดตั้ง

install_ide_progress

แตกไฟล์อย่างเมามันส์

arduino_ide

หน้าตา IDE ที่กระทัดรัด

เมื่อเข้าโปรแกรมแล้ว ก็มา set ระบบ โดยการเลือก board และ serial port ให้เรียบร้อย

choose_board

เลือกบอร์ดให้ตรงตาม spec ของ Arduino ของเรา

select_port

เลือก Serial port ให้ตรงกับตอนที่เห็นใน device manager

เสร็จเรียบร้อย มาเริ่มโปรแกรมแรกกันดีกว่า โปรแกรมแรกที่จะรันก็คือโปรแกรม Blink ที่สามารถเอามาจากตัวอย่างใน IDE ได้ โดยโปรแกรมนี้จะทำการกระพริบ LED ที่ขา I/O ที่ 13 เพราะฉะนั้นเราจะต้องเตรียม LED มาใส่ให้พร้อมก่อนที่จะรันโปรแกรม (ตามความจริงแล้วต้องใส่ตัวต้านทานเพื่อไม่ให้ไฟไหลเกิน แต่ผมขี้เกียจ ประกอบกับลืมวิธีคำนวนไปแล้ว ผมเลยจับใส่โต้งๆทั้งอย่างนั้น)

DSC_6190

เตรียมอุปกรณ์ให้พร้อม ขา anode (ยาว) เสียบลบช่อง 13 ส่วนขา cathode (สั้น) เสียบลงช่อง GND

DSC_6192

ตามความจริงต้องมีตัวต้านทานนะจ๊ะ

เตรียมกระด้างภัณฑ์เสร็จแล้ว ก็มาเตรียมละมุนภัณฑ์กันต่อ โดยไปเอา code จากใน example ชื่อ blink มา

พอโหลด code เสร็จเรียบร้อย ก็จะเห็น code ส่วนการควบคุม LED อยู่ด้านล่าง โดยการอัดไฟ ต่อด้วย delay 1 วิ จากนั้นดับไฟ แล้วก็ delay อีก 1 วิ สลับไปเรื่อย สรุปคือ เป็นโปรแกรมที่ทำให้ LED กระพริบทุก 1 วินั้นเอง blink blink

select_blink_example

เข้ามาส่อง code ได้ที่นี้

blink_source_code

หน้าตา code

พอได้ code แล้ว ก็สามารถลอง compile เพื่อตรวจสอบความถูกต้องของ code ก่อน โดยกดที่ลูกศร

compile_progress

กดจึ๊ก แล้วรอผล

compile_completed

ถ้าผ่านจะขึ้น Done

Compile ผ่านเป็นที่เรียบร้อย ต่อไปการมาเอาโปรแกรมยัดใส่บอร์ด โดยใช้ปุ่มลูกศรชี้ขวา เมื่อกดแล้ว IDE จะทำการ upload ชุดคำสั่งเข้าบอร์ด

ถ้าผ่าน ตัว LED จะกระพริบตาม code ที่วางไว้

uploading

Uploading

upload

Upload ผ่าน

DSC_6189

แสงสว่างวาบบบบบบบบบ (แต่รูปดูไม่สว่างซะงั้น)

ก็จบการเขียน Arduino เบื้องต้นแต่เพียงเท่านี้ ถ้าหากไม่ขี้เกียจ คงจะมีบทความ Arduino อันอื่นมาเรื่อยๆ ตอนนี้ไปนอนก่อน ฝันดี ราตรีสวัสดิ์ครับ


Warning: in_array() expects parameter 2 to be array, string given in /home/content/31/10462331/html/babedev/blog/wp-content/plugins/facebook-button-plugin/facebook-button-plugin.php on line 380

Warning: in_array() expects parameter 2 to be array, string given in /home/content/31/10462331/html/babedev/blog/wp-content/plugins/facebook-button-plugin/facebook-button-plugin.php on line 383

วันนี้ระหว่างที่ผมกำลังเขียน node.js อยู่ ก็รู้สึกชีวิตยุ่งยาก เพราะพอ code เริ่มเยอะแล้ว notepad++ มันก็ใช้งานลำบาก เลยจะหา editor ตัวอื่น

จากนั้นก็เจอ plugin nodeclipse บน eclipse เลยลองเอามาลงดู รอโหลดซักพัก ก็เข้าหน้า license เพื่อทำข้อตกลง ปกติผมก็ไม่ได้อ่านมันหรอก แต่รอบนี้มันมีบางอย่างสะดุดตาออกไป

DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE

ตอนแรกนึกว่าอ่านผิด เพราะไม่เคยเห็นข้อความอะไรแบบนี้มาตลอดการเป็น developer แต่พอดูอีกที มันก็ใช่จริงๆ พอเห็นแบบนั้นก็ตกใจนึกว่ามันคือไวรัสรึเปล่า แต่ก็ไม่น่าใช่เพราะมาจากเว็บหลัก nodeclipse เลย มันจะเป็นของปลอมได้ไง เลยลอง google ดูว่ามันคืออะไร ก็เลยรู้ความจริงว่ามันคือ license ชนิดหนึ่ง
…………………….

ใช่ครับ มันคือ license อีกตัวหนึ่ง เหมือน createtive commons, GPL, Apache พวกนั้น โดยตัวย่อของมันคือ WTFPL มีจุดมุ่งหมายให้ประกาศว่า โครงการหรือไฟล์ดิจิตอลต่อไปนี้คือของฟรีที่นับขึ้นให้สาธารณชนใช้ และผู้ใดคิดจะเอาไปทำอะไร ก็เชิญจัดการได้ตามสบาย หรือง่ายๆ เอ็งจะเอาเชี่ยนี้ไปทำไรต่อก็เรื่องพวกเอ็ง

จริงๆ มันก็คือ free license เหมือนพวก Apache, MIT แต่ว่าไม่ได้เข้ากลุ่มไหน license เลยมีข้อความค่อนข้างอินดี้ ดังต่อไปนี้

DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004

Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>

Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.

DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

0. You just DO WHAT THE FUCK YOU WANT TO.

จากเลขปีก็นานอยู่ ประมาณ 10 ปีที่แล้ว แต่คิดว่าคงไม่ค่อยมีคนใช้เท่าไหร่ (แต่ทำไมใน nodeclipse ใช้หว่า) ด้วยข้อความที่อินดี้ซะขนาดนี้

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

วันนี้ก็สวัสดี ราตรีสวัสดิ์ครับ


Warning: in_array() expects parameter 2 to be array, string given in /home/content/31/10462331/html/babedev/blog/wp-content/plugins/facebook-button-plugin/facebook-button-plugin.php on line 380

Warning: in_array() expects parameter 2 to be array, string given in /home/content/31/10462331/html/babedev/blog/wp-content/plugins/facebook-button-plugin/facebook-button-plugin.php on line 383

เนื่องจากว่าระหว่างที่ทำการ deploy project เกิดปัญหาบางอย่างขึ้น เลยจะรวบรวมวิธีการแก้ปัญหาต่างๆเอาไว้ เผื่อว่าจะมีใครเจอแบบเดียวกัน จะได้ลองเอาไปใช้ดู โดยบทความนี้จะเป็นการ deploy บนระบบ Linux นะครับ

grunt ใช้งานไม่ได้

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

ก็คือสั่ง install grunt ต่างหากไปเลย และอย่าลืมใช้ -g เพื่อ install แบบ global นะครับ เพราะถ้าไม่ใส่ ถึงจะ install ได้ แต่ก็จะยังใช้งานไม่ได้อยู่ดี


 ขึ้นเตือน module ไม่สามารถใช้งานได้

จะเป็น error ที่ขึ้นตอนเริ่มสั่ง grunt ถ้าเกิดเจอข้อความประมาณว่า “xxx cb() never called” ซึ่งจะหมายถึง module นี้ไม่สามารถใช้งานได้ อาจจะเพราะยัง install ไม่สมบูรณ์ ถึงแม้จะสั่ง install ใหม่ ก็ยังทำงานไม่ได้ ให้ทำงาน clear cache เพื่อลบ cache เก่าทิ้งไป

จากนั้นให้ install อีกรอบ เพื่อดึง module ลงมาใหม่


 ไม่สามารถเรียกใช้ Bootstrap

หลังจากที่สั่ง run node ได้แล้ว พอลองเข้าหน้าเว็บ ตัวเว็บกลับไม่ render พอดูบน console ก็จะขึ้น app crashed และมีข้อความ “bootstrap-components not exist” พอไปดูใน folder ก็ไม่มีจริงๆ แถมไม่ใช่แค่อันเดียว แต่กลุ่ม bootstrap ไม่มาเลย โดยปัญหานี้เกิดจากการที่ลืมลง bower ไว้ วิธีแก้ก็ลงมันซะด้วย

เสร็จแล้ว ถ้ามันยังไม่มา ก็ให้ install ผ่าน bower ด้วย

จากนั้น web components ต่างๆ จะถูก download ลงมาใน project


ปัญหาหลักๆ ที่ผมเจอในการ deploy ครั้งแรกก็มีประมาณนี้ ที่เหลือก็มักจะเป็นเรื่อง environment กำหนดค่าไม่ถูกบลาๆ

ถ้าใครเจออะไรแปลกๆ หรือมีวิธีแก้ไขแบบอื่นๆ อย่าลืมคอมเม้นต์กันนะครับ วันนี้ สวัสดี ราตรีสวัสดิ์ครับ