เมื่องาน OSSFestival 2014 ที่ผ่านมา มี workshop เกี่ยวกับ Arduino DIY ได้รับความสนใจมากจากหลายคนที่สนใจด้าน OpenSource Hardware ซึ่งโครงการอย่าง Arduino และ Raspberry Pi เป็นโครงการ OpenSource Hardware ที่ประสบความสำเร็จมาก เรียกได้ว่าใช้เครื่องมือทุกอย่างที่เป็น OpenSource ในการทำงานได้ ตั้งแต่การประกอบแบบ DIY,Arduino Bootloader สำหรับ Burn ลงในชิบ ATMEGA328, IDE ที่ใช้เขียนโปรแกรมและระบบปฏิบัติการที่ใช้งานได้ เรียกได้ว่าใช้งานเครื่องมือแบบ OpenSource ได้ในทุกกระบวนการเลยทีเดียว ดีจัง :) ใน workshop ได้แนวคิดหลายอย่าง ไม่ว่าจะเป็นบอลลูนติด Arduino ควบคุมด้วย Remote Control แบบ Infra Red หรือการใช้งาน Arduino DIY กับ RFID เป็นต้น เรียกได้ว่าทำได้หลายอย่างมากๆ

ในตอนแรกคิดว่าจะลองทำบอลลูนควบคุมด้วย Arduino แต่ต้องถอดใจก่อนเพราะไม่มีลูกโป่งและก๊าซฮีเลียม แนวคิดนี้ก็เลยขอพักไว้ก่อน ลองทำอะไรง่ายๆ ก่อนน่าจะดีกว่า อย่างเช่น Robot เอ่อ…ต้องเรียกรถ 2 ล้อน่าจะถูกกว่าเพราะมี 2 ล้อสำหรับควบคุมทิศทางและล้ออิสระอีก 2 ล้อเอาไว้พยุงตัวรถเท่านั้นเอง อุปกรณ์ที่ต้องใช้มีดังนี้ครับ

  • Robot Chassis Kit (Chassis + Motor + Wheel)
  • Arduino UNO
  • Motor Drive Shield (L298P)
  • Bluetooth Module HC-05
  • Battery ขนาด AA 6 ก้อน
  • Battery Box ขนาด AA 6 ก้อน

Continue reading

เขียนเรื่อง Arduino ไปหลายตอนก็เลยคิดว่าน่าจะเขียนเรื่อง Arduino Standalone บ้าง เพราะคงไม่มีใครเอาบอร์ด Arduino UNO ทั้งตัวเอาไปทำผลิตภัณฑ์ขายล่ะคับ ซึ่งคนทำผลิตภัณฑ์ก็ต้องออกแบบ PCB ที่มี ATMega + Regulator และวงจรที่ใช้งานมาด้วยในตัว ก็เลยน่าจะเขียนเรื่องนี้บ้าง จะได้เป็นจุดเริ่มต้นสำหรับท่านที่สนใจอยากทดลองหรืออยากเอาไปทำผลิตภัณฑ์ก็ได้เหมือนกัน ก่อนอื่นสิ่งที่ต้องมี

  • 1x ATMEGA328P-PU + Arduino UNO R3 Bootloader
  • 1x Crystal 16MHz
  • 2x 22pF capacitors
  • ถ่าน 3V หรือ Regulator 5.0-3.3V DC

อ้อและที่สำคัญผังขา ATMEGA328P อย่าลืมเอาไว้อ้างอิง :)
Continue reading

Genymotion เป็น Android Emulator ที่มาพร้อมกับ Android System Image และ AVD สำเร็จรูปมากกว่า 10 ตัว ช่วยให้นักพัฒนาไม่ต้องกังวลเรื่องการตั้งค่า AVD อีกต่อไป ที่สำคัญ Genymotion ทำงานเร็วกว่า Emulator ที่มากับ Android SDK มากๆ Genymotion มีเครื่องมือช่วยนักพัฒนาหลายอย่างทั้งการเชื่อมต่อกับ Webcam, GPS, Screencast และอีกมากมาย Genymotion สามารถดาวน์โหลดมาใช้งานได้ฟรี หรือเสียเงินเพื่อใช้งาน feature เสริมอื่นๆ ที่ต้องการได้ อย่าช้าสมัครสมาชิกแล้วดาวน์โหลดได้เลย

Continue reading

เขียน Blog เรื่อง Raspberry Pi ไปหลายตอนเพิ่งนึกออกว่าไม่เคยเขียนเรื่อง GPIO สักที เรียกใช้ Python Module ตลอด :P ครั้งนี้ก็เลยมาลองใช้งาน GPIO บ้าง GPIO เป็น digital interface ที่เราสามารถกำหนดโหมดเป็น input หรือ output ได้ ทำให้เราสามารถอ่านค่าแะส่งค่าได้ แต่เป็น digital นะครับ หน้าตา GPIO เป็นแบบนี้ จำนวน GPIO pin จะไม่เท่ากัน ถ้าใครใช้ Raspberry Pi A,B ก็จะมีจำนวนน้อยหน่อย สำหรับ Raspberry Pi B+ มี GPIO ให้เลือกใช้มากขึ้น

ก่อนจะเขียนโปรแกรม เราต้องติดตั้ง python module ชื่อ rpi.gpio กันก่อน ดังนี้

sudo apt-get install python-rpi.gpio

Continue reading

มีคนถามเข้ามาเรื่อง Arduino IDE บน Ubuntu ผมก็สงสัยว่า IDE ก็มีอยู่ให้ดาวน์โหลดที่เว็บ arduino.cc พอเข้าเว็บไปดูอีกรอบก็ถึงทราบว่าเป็น zip ไฟล์นี่เอง เข้าใจว่าไม่รู้ว่าจะเปิดไฟล์ไหนยังไงล่ะมั๊ง ครั้งนี้ก็เลยมาแนะนำวิธีติดตั้ง Arduino IDE บน Ubuntu 14.04 กันสักหน่อย ตัว IDE สามาถติดตั้งได้ 2 วิธี วิธีแรกคือติดตั้งผ่าน Software Center พิมพ์คำว่า Arduino ลงไปก็สั่งติดตั้ง IDE ได้เลย ง่ายมากๆ

อีกแบบคือติดตั้งเอง สำหรับ Linux ค่ายอื่นๆ ที่ไม่มีคนใจดีทำ package มาให้ :) การติดตั้งแบบติดตั้งเองต้องติดตั้ง Java ด้วยนะครับ :) เริ่มจากติดตั้ง Java กันก่อนเลย

Continue reading

ครั้งที่แล้วเราใช้ Raspberry Pi เชื่อมต่อกับ Sensor วัดอุณหภูมิ DHT22 ครั้งนี้ลองมาใช้ 1 Wire Temperature Sensor อย่าง DS1820 บ้าง Sensor ตัวนี้มี 3 ขาหน้าตาคล้ายกับ TM/LM35 จ่ายไฟ 3.0 – 5.5V อ่านข้อมูลจากขาที่ 2 คล้ายกัน แต่ข้อมูลจะส่งออกมาเป็น digital สามารถต่อพ่วงใช้งานร่วมกันหลายตัวแบบ parallel ได้ ใครสนใจในรายละเอียดของ DS1820 ก็สามารถ ใน Raspberry Pi เราสามารถใช้ Kernel Module ชื่อ w1-gpio และ w1-therm ในการเชื่อมต่อกับ DS1820 ได้โดยตรงก่อนอื่นมาต่อวงจรกันก่อน

Continue reading

กลับมาเขียน Mobile App อีกรอบ ก่อนหน้านี้โดนลากไปเรียน Cloud Specialist ก็เลยต้องกลับไปดู Cloud เกือบ 1 ปีเหมือนย้อนอดีตเลย เรียน Cloud Specialist จบแล้วก็ได้เวลากลับมาเขียน Mobile App ล่ะครับ ครั้งนี้ตั้งใจว่าจะลองอะไรที่ยังไม่ได้ลอง เพราะหลุดวงโคจรไปเกือบ 2 ปีเลย T_T ถ้ายังจำกันได้ ผมเคยพยายามเขียนเกมส์ง่ายๆ ได้ไอเดียจากคุณธีระเรื่องเกมส์บวกเลข ผ่านไปเกือบ 2 ปีกลับมาเขียนเกมส์ใหม่ ที่อยากเขียนเกมเพราะอยากรู้เรื่อง Google Play Game Service ครับ :)

ผมไม่มีไอเดียเรื่องเกมส์เพราะไม่ค่อยได้เล่นเกมส์ แต่ได้แนวคิดดีๆ จาก Ake Exorcist ที่เอา Micro Controller ควบคุม Mouse ให้เล่นเกมส์ในเว็บไซต์แบบอัตโนมัติ เกมที่เล่นเป็นเกมส์ง่ายๆ กติกาคือให้เลือกสีอ่อนให้ถูกมากที่สุดในเวลาที่กำหนดไว้ ผมว่าเป็นเกมส์ที่ไอเดียดีมาก เล่นได้เรื่อยๆ สนุกดีครับ พอได้แนวคิดแล้วก็ดองเอาไว้ใน Any.Do เกือบ 1 เดือนถึงจะได้มานั่งเขียน T_T Google Play Game Services ถูกผนวกกับ Google Play Service มาเรียบร้อยแล้วไม่ต้องกังวลว่า Android เวอร์ชั่นเก่า/ใหม่จะไม่มี Google Play Service API ครับเพราะมันจะถูกอัพเดทให้อัตโนมัติ ตัดปัญหาเรื่องนี้ไปได้เลย สำหรับแหล่งเรียนรู้ก็คงไม่พ้นเว็บ Android Developer ซึ่งข้อมูลใน Google Play Game Services บนเว็บให้ข้อมูลได้ดีมาก และตามสไตล์ของ Google คือ อยากเรียนรู้แนะนำให้ดาวน์โหลดโค้ดตัวอย่าง อ่านตาม document แล้วลองทำตามไปเรื่อยๆ ก็เข้าใจได้เร็วขึ้น

การใช้งาน Google Play Game Services ต้องไปสร้าง Game Service ในหน้า Developer Console ก่อน เพื่อเป็น Service Endpoint ให้กับ App ของเรา

Continue reading

คราวที่แล้ว blog เรื่อง systemd เกี่ยวกับการใช้งานเบื้องต้นไป คิดว่าหลายท่านอาจจะเริ่มใช้งานกันได้แล้ว ปัญหาของ systemd ยังไม่จบแค่นั้น สำหรับท่านที่เขียน init script สำหรับ start, stop, restart service เอง แล้วพยายามจะใช้ init script เดิมปัญหาเกิดขึ้นทันที อันนี้ซวยสุด เพราะผมเองก็เขียน init script เหมือนกัน T_T ครั้งนี้ก็เลยมา blog เรื่อง unit file กันสักหน่อย เอ่อ…ถ้าหักดิบใช้ CoreOS ไปเลยทุกอย่างจะจบ โดนบังคับโดยบริยาย ไม่มีอะไรให้ใช้นอกจาก systemd ไม่มี unit file ก็ต้องเขียนผ่าน cloud init เอง เรียกได้ว่านอนหลับฝันเป็น systemd เลยทีเดียว ครั้งที่แล้วได้ลองจัดการ service ผ่าน systemd โดยใช้ systemctl ไปบ้างแล้ว ครั้งนี้ก็ต้องเขียน unit file แล้วล่ะครับ

ขอยกตัวอย่าง node.js ก็แล้วกันง่ายดี node.js ทำงานเป็น httpd service ได้ระบุ port ผ่านไฟล์ config ซึ่งเราก็จะไม่แก้ไขเหมือนเดิม ใช้ port 3000 ของที่มีมานั่นแหละ :) มาสร้าง project กันก่อน ถ้ามี node.js และ express generator ก็สร้างตัวอย่างง่ายๆ ขึ้นมาได้เลย

Continue reading

ผมว่าหลายคนที่จับ RHEL 7 หรือ CentOS 7 โดยที่ไม่ได้ใช้ Fedora 20 และไม่ได้เป็นสาวก Fedora มาก่อนจะไม่ทราบว่าอีก release ถัดไปของ RHEL, CentOS, Scientifix Linux จะเจออะไรใหม่บ้าง เพราะของเล่นใหม่ๆ จะไปโผล่ใน Fedora ก่อนอย่างน้อย 2 ปี จึงจะย้ายเข้ามาใน RHEL จากนั้นถ่ายทอดไปยัง CentOS, Scientifix Linux และ Linux Distribution ที่พัฒนาต่อจาก RHEL หรือ CentOS ตามลำดับ การเปลี่ยนแปลงอย่างสายฟ้าแลบใน RHEL 7 ไม่ได้เกิดอย่างสายฟ้าแลบหรอกครับ เขาใช้กันมานานแล้ว สำหรับการเปลี่ยนแปลงที่รอมานาน คือ systemd ที่มาสดใหม่, Docker ที่คุม security ด้วย SELinux ทำให้ เรื่อง security บน Docker ที่หลายคนถากถางกันมาเกือบ 2 ปีนี้หยุดได้แล้ว เพราะนอกจากจะคุม syscall ได้แล้วยังคุมในระดับ SELinux ด้วย ส่วน feature อื่นๆ ไม่ค่อยได้สนใจมากครับ

การมาของ systemd เปลี่ยนวิธีการทำงานของ Linux Admin ไปโดยสิ้นเชิงเพราะ systemd มาจัดการ service และ run level ในระบบปฏิบัติการ คุณหนีมันไม่พ้น ก็ต้องมาเรียนกันใหม่ อ้อ init script ที่เรียนกันมาก็เปลี่ยนใหม่ด้วย เอาล่ะการที่จะเข้าใจ systemd ได้เร็วคือการหัดใช้งานมันครับ เรามาลองจัดการ service บน systemd คำสั่งที่เราใช้งานคือ systemctl

ลองใช้คำสั่ง systemctl กันดูครับ

systemctl

เราจะพบว่า systemctl จะแสดงรายการทุกอย่างที่ systemd ควบคุมได้ ทั้ง service, timer, mount, target, automount เยอะมาก

Continue reading

มีเรื่องตลกที่เกิดขึ้นกับตัวผมเองในช่วงที่ CentOS 7 ออกมาใหม่ๆ คือการเปลี่ยน hostname เนื่องจากว่าเคยชินกับการเปลี่ยนชื่อ host ก็ชอบไปเปลี่ยนที่ /etc/hostname แต่ใน CentOS 7 และ RHEL 7 ไม่ใช่แบบนั้น เค้ามีวิธีการเปลี่ยน hostname ได้น่ารักกว่า โดยการใช้คำสั่ง hostnamectl การใช้งานคำสั่งนี้ก็ง่ายมาก ถ้าต้องการดู hostname ก็ใช้คำสั่ง hostnamectl หรือ hostnamectl status ดังนี้

hostnamectl

จะได้ผลลัพท์ดังภาพ

Continue reading