Raspberry Pi 3 [Assemble & OS Installation]

ใน part นี้ขอพูดในส่วนของการติดตั้ง heat sink, ประกอบลงใน enclosure และติดตั้ง OS Raspbian ครับ   Heat Sink จำเป็นไหม โดยส่วนตัวผมว่าจำเป็นครับ เพราะอุปกรณ์อิเล็กทรอนิกส์เมื่อมีการทำงาน จะก่อให้เกิดความร้อน ความร้อนทำให้เกิดการเสื่อมของอุปกรณ์ และจากการหาข้อมูล พบว่าการติดตั้ง Heat Sink + พัดลม จะทำให้อุณหภูมิของอุปกรณ์ (โดยเฉพาะ CPU และ GPU) นั้นไม่สูงเกินไปครับ (อ้างอิงจาก https://www.youtube.com/watch?v=e6okZKRwnTQ)     Heat Sink อลูมิเนียมสีดำขนาดเล็ก เพียงพอต่อการใช้งานทั่วๆ ไป   ติดตั้งด้วยการใช้เทปกาวสองหน้าแบบนำความร้อน (ติดมากับ Heat Sink) แปะลงไปบนตัว CPU และ GPU ได้เลย ** กรณีที่ไม่มีเทปกาวสองหน้านำความร้อน ให้ใช้กาวซิลิโคน นำความร้อน แทนครับ **   Enclosure หรือกล่อง จำเป็นหรือไม่ ? บอกเลยว่า ขึ้นอยู่กับบุคคลครับ ซึ่ง Enclosure ก็มีหลายแบบให้เลือกใช้ ทั้งแบบเป็นกล่องเดี่ยวๆ (แบบที่จะแสดงให้ดูนี้), แบบที่เป็น Stack, แบบอลูมิเนียมเพื่อระบายความร้อนแบบ Passive และอีกมากมายครับ ประเด็นคือ เลือกให้ตรงกับความต้องการดีกว่าครับ ทั้งนี้ก็เพื่อความเป็นระเบียบและเรียบร้อยของอุปกรณ์นั่นเองครับ     ผมเลือกใช้เคสที่เป็นอะคริลิค พร้อมช่องพัดลม เพื่อติดตั้งไว้ระบายความร้อนของ Heat Sink อีกทีนึงครับ     ประกอบเรียบร้อยพร้อมติดตั้งพัดลมครับ ** ผมติดตั้งพัดลมแบบดูดเข้านะครับ เพื่อให้ลมเย็นจากภายนอกปะทะกับ Heat Sink โดยตรง ** ** พัดลมติดตั้งโดยใช้ไฟจาก GPIO PIN 4 (+5V) และ 6 (GND) ครับ **   พร้อมแล้วสำหรับการใช้งานครับ ต่อไปเตรียม microSD สำหรับติดตั้ง OS กันครับ ถ้าหลายท่านเคยผ่านตา จะเห็นว่าส่วนใหญ่จะใช้โปรแกรม SD Card Formatter ครับ แต่ผมจะใช้อีกตัวนึงตามคำแนะนำของ raspberrypi.org นั่นคือ Etcher ครับ สิ่งที่ต้องมีคือ SD Card 8GB ขึ้นไป (Class 4 หรือ 10 แล้วแต่ท่านสะดวกเลยครับ ผมลองแล้ว ความเร็ว ไม่ต่างกันเท่าไหร่) Card Reader และ microSD Adapter *ถ้าจำเป็น 7-Zip หรือโปรแกรมสำหรับ Extract Zip File โปรแกรม Etcher ดาวน์โหลดได้ที่นี่ ผมติดตั้ง Raspbian เพราะงั้นต้องมี image file ซึ่ง ดาวน์โหลดได้ที่นี่ ** เมื่อเข้าไปหน้าดาวน์โหลด ท่านจะเป็น NOOBS และ RASPBIAN ให้เลือก RASPBIAN นะครับ ซึ่งจะได้ Latest Version ** ** NOOBS (New Out Of the Box Software) คือตัวติดตั้งที่ออกมาจาก Official Raspberry Pi เอง โดยจะมีพื้นฐานจาก Raspbian นั่นเอง แต่มีการปรับให้สามารถทำการติดตั้งได้ง่ายขึ้น พร้อมโปรแกรมอื่นๆ สามารถเลือกติดตั้งได้ทันทีจาก internet **   Flash SD Card    1.ทำการใส่การ์ดใน Card Reader จากนั้นเปิดโปรแกรม Ether 2.เลือก Image File จากนั้นกด Flash

Read More »

วิธีใช้ Google Sheets เป็นฐานข้อมูล เพื่อการเฝ้าระวังระบบ โดยการใช้งานผ่าน Google API Client Library for Python

ต่อจาก วิธีการใช้ Google Sheets เป็นฐานข้อมูล การใช้งาน Google Drive API ด้วย Google Client Library for Python วิธีการ Upload ไฟล์ไปบน Google Drive File Stream ด้วย Google Client Library for Python คราวนี้ ใครมีข้อมูลที่เกิดขึ้นในเซิร์ฟเวอร์ภายในองค์กร แล้วต้องการส่งไปเขียนเก็บไว้ใน Google Sheets แบบต่อท้าย (Append) เช่น ในตัวอย่างนี้ วัดระยะเวลาการโอนย้ายข้อมูล เปรียบเทียบระหว่าง rsync เพื่อสำรองข้อมูลไปไว้ในเครื่องเซิร์ฟเวอร์สำรองที่ต่างวิทยาเขต กับ การนำไปเก็บไว้ใน Google Drive ตามวิธีการที่กล่าวไว้ใน วิธีการ Upload ไฟล์ไปบน Google Drive File Stream ด้วย Google Client Library for Python ผมได้เขียนโค๊ดเอาไว้ที่ https://github.com/nagarindkx/google.git สามารถโคลนไปใช้งานได้ (ช่วย Reference กันด้วยนะครับ) ขั้นตอนการใช้งานมีดังนี้ ใช้คำสั่ง git clone https://github.com/nagarindkx/google.git cd google ติดตั้ง python, pip, google-api-python-client ตามที่เขียนไว้ใน การใช้งาน Google Drive API ด้วย Google Client Library for Python และสร้างโปรเจคใน Google Developer Console เปิดใช้งาน Google Sheets API, สร้าง Credentials > OAuth Client ID แล้ว download JSON มาไว้ในชื่อว่า client_secret.json รูปแบบคำสั่งคือ $ python append2gsheet.py –help usage: append2gsheet.py [-h] [–auth_host_name AUTH_HOST_NAME] [–noauth_local_webserver] [–auth_host_port [AUTH_HOST_PORT [AUTH_HOST_PORT …]]] [–logging_level {DEBUG,INFO,WARNING,ERROR,CRITICAL}] –data DATA –sheetid SHEETID [–range RANGE] [–value-input-option VALUEINPUTOPTION] optional arguments: -h, –help show this help message and exit –auth_host_name AUTH_HOST_NAME Hostname when running a local web server. –noauth_local_webserver Do not run a local web server. –auth_host_port [AUTH_HOST_PORT [AUTH_HOST_PORT …]] Port web server should listen on. –logging_level {DEBUG,INFO,WARNING,ERROR,CRITICAL} Set the logging level of detail. –data DATA CSV format –sheetid SHEETID Google Sheets ID –range RANGE Simply Sheet Name like ‘Sheet1!A1’ –value-input-option VALUEINPUTOPTION Optional: [RAW,USER_ENTERED] สิ่งที่ต้องมี คือ Google Sheets ที่สร้างไว้แล้ว ให้สังเกตที่ URL ตัวข้อความที่อยู่หลัง https://docs.google.com/spreadsheets/d/ จะเป็น “Sheet

Read More »

Raspberry Pi 3 [Overview]

     Raspberry Pi (ราสเบอร์รี่ พาย) คือ เครื่องคอมพิวเตอร์ ขนาดเล็ก (ประมาณบัตรทั่วไป) ที่มีราคาถูกกว่าคอมพิวเตอร์ ราคาปกติมาก (1,xxx บาท ขึ้นอยู่กับว่าผลิตจากประเทศไหน China, UK หรือ Japan) สามารถต่อเข้ากับจอคอมพิวเตอร์ (ผ่าน HDMI) หรือจะใช้ตัวแปลง (HDMI to VGA)  และยังรองรับเมาส์/คีย์บอร์ด/อุปกรณ์อื่นๆ ผ่านทาง USB Port อีกทั้งยังสามารถต่อสายแลน (10/100 RJ45) ได้อีกด้วย (มี Bluetooth และ Wi-Fi 802.11n Controller On-Board)                   Specification (ข้อมูลจาก: https://www.raspberrypi.org/magpi/raspberry-pi-3-specs-benchmarks/) SoC: Broadcom BCM2837 CPU: 4× ARM Cortex-A53, 1.2GHz GPU: Broadcom VideoCore IV RAM: 1GB LPDDR2 (900 MHz) Networking: 10/100 Ethernet, 2.4GHz 802.11n wireless Bluetooth: Bluetooth 4.1 Classic, Bluetooth Low Energy Storage: microSD GPIO: 40-pin header, populated Ports: HDMI, 3.5mm analogue audio-video jack, 4× USB 2.0, Ethernet, Camera Serial Interface (CSI), Display Serial Interface (DSI)     (รูปจาก element 14) Raspberry Pi ทำอะไรได้บ้าง ? เรียกว่าเป็นเครื่องคอมพิวเตอร์ desktop เครื่องหนึ่งเลยก็ว่าได้ อาจจะไม่พลังสูงเหมือนกับเครื่อง PC แต่ก็เพียงพอสำหรับเด็กๆ ลูกๆ หลานๆ ได้ใช้งาน พิมพ์งาน เล่นเกมจำนวนหนึ่ง และที่สำคัญสามารถฝึกการเขียนโปรแกรม (เช่น Python) ได้อีกด้วย ซึ่งสามารถใช้งานได้ทันที สามารถต่อ I/O (Input/Output) ร่วมกับเซนเซอร์ต่างๆ อีกทั้งสามารถทำเป็น Media Center ได้อีกด้วย       Raspberry Pi VS Arduino ทั้งสองอย่างอย่างนี้ ถ้ามองกันจริงๆ แล้วแตกต่างกันพอสมควร โดยที่ Arduino (อา-ดู-อิ-โน่ หรือ อาดุยโน่) เป็น Microprocessor ตระกูล AVR เอาไว้รันโปรแกรมเล็กๆ หรือเอาไว้ต่อพ่วงกับอุปกรณ์อื่นๆ เช่น เซนเซอร์, รีเลย์ ได้อย่างง่ายกว่า Raspberry Pi ซึ่งอย่างที่กล่าวเอาไว้ก่อนหน้า Raspberry Pi คือ คอมพิวเตอร์ขนาดจิ๋ว สามารถลงระบบปฏิบัติการ (OS) ใช้งานแทนคอมพิวเตอร์ได้   แล้วจะเอา Raspberry Pi มาทำแบบ Arduino ได้มั้ย ? คำตอบคือ ได้ครับ เนื่องจาก Raspberry Pi ก็มี GPIO (General Purpose Input Output) ให้จำนวนหนึ่ง สามารถคอนโทรลให้เป็น “1” หรือ “0” ได้ตามใจชอบ ด้วยการเขียนโปรแกรมควบคุมแต่ละ Pin (เหมือนกับ Microcontroller) ด้วยภาษา C หรือ

Read More »

วิธีส่ง email ในนามหน่วยงาน ที่ออกจาก Gmail ให้เป็น @psu.ac.th หรือ @group.psu.ac.th

ไปที่ https://mail.google.com/mail/u/0/#settings/accounts คลิก Add Another email address ใส่ ชื่อที่ต้องการ email address ที่ต้องการส่งออกไป แล้วคลิก Next Step จากนั้น ใส่ SMTP Server: smtp2.psu.ac.th Username; yourpsuemail@psu.ac.th  <—– email address ของ psu ครับ Password: Password ของ psu email แล้วคลิก Add Account รอ email ที่เข้าสู่ Groupmail ที่กำหนดไว้ จะได้รับ email ประมาณนี้ ให้เอา Confirmation Code ไป หรือ จะคลิก Link ก็ได้ เมื่อเสร็จแล้วก็จะได้ผลลัพธ์ประมาณนี้ ครับ

Read More »

Windows CRLF to Unix LF Issues in Cygwin Shell Script

เมื่อเรารัน shell script ของโปรแกรม Cygwin for Windows ซึ่งมีการเขียนคำสั่งไปตัดเอาข้อความผ่านคำสั่ง (Command Line) ของ Windows มาใส่ในตัวแปรของ shell script เช่น ในตัวอย่างนี้คือคำสั่ง ipconfig เมื่อได้ข้อความที่ต้องการมาเราจะได้ \r แถมมาให้ด้วยต่อท้าย เพราะ Windows style line ending จะมี CRLF (\r\n)  ในขณะที่ Linux style line ending จะมี LF (\n) เท่านั้น น่าแปลกใจมากว่า เราเคยรัน shell script นี้ใน Windows 7 ใช้งานได้ แต่พอเป็น Windows 10 build 1709 มันรันไม่ได้   ปัญหา เมื่อเปิด Cygwin Terminal ขึ้นมา จะได้เป็น bash shell ในไฟล์ test.sh ดังตัวอย่างข้างล่างนี้ เมื่อสั่งรัน จะพบว่าพบข้อผิดพลาด ตัวแปร ZONEX จะไม่มีค่า ซึ่งจริง ๆ จะต้องได้คำว่า zone1 $ cat test.sh #!/bin/bash DHCPSERVER=$(ipconfig /all | grep -i “DHCP Server” | cut -d: -f2 | xargs) MAC=$(ipconfig /all | grep -A4 -i “^Ethernet Adapter Ethernet” | tail -1 | cut -d\: -f2 | tr – : | xargs) ZONEX=$(curl -s http://${DHCPSERVER}/dhcpd.txt | grep -i ${MAC} | awk ‘{print $2}’ | cut -d’_’ -f1) echo “DHCP SERVER is ${DHCPSERVER}” echo “MAC is ${MAC}” echo “Zone is ${ZONEX}” สั่งรันดูผลลัพธ์ด้วยคำสั่ง bash test.sh $ bash test.sh DHCP SERVER is 192.168.6.150 MAC is 50:7B:9D:30:2E:4B Zone is ผมก็ตรวจสอบด้วยวิธีการ debug คือ เพิ่ม -x ดังตัวอย่างนี้ $ bash -x test.sh ++ ipconfig /all ++ grep -i ‘DHCP Server’ ++ cut -d: -f2 ++ xargs + DHCPSERVER=$’192.168.6.150\r’ ++ ipconfig /all ++ grep -A4 -i ‘^Ethernet Adapter Ethernet’ ++ tail -1 ++ cut -d: -f2 ++ tr

Read More »