Day: January 30, 2018

  • 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

             

    3.รอจนเสร็จ

    4.นำ microSD Card ไปใส่ใน Raspberry Pi จากนั้นทำการต่อสายอุปกรณ์ให้เรียบร้อย (Power, HDMI, Keyboard + Mouse)

    ** เพื่อป้องกันความเสียหายที่อาจเกิดขึ้นกับ microSD Card ให้ทำการ Power Off ทุกครั้งก่อนถอด/ใส่ การ์ดนะครับ **

     

    5.พร้อมแล้วสำหรับการ Power On (Raspberry Pi จะไม่มีสวิตซ์สำหรับเปิดนะครับ แค่เสียบเสีย micro USB ที่มีไฟ ก็จะทำการเปิดเองโดยอัตโนมัติ)

    ** เนื่องจากผมไม่มี Monitor ที่ Input HDMI ได้โดยตรง จึงต้องใช้ตัวแปลงจาก HDMI –> VGA ครับ **

     

        

    รูปซ้าย รูประหว่างการ boot (ถ่ายไม่ค่อยทัน)

    รูปขวา แสดงหน้า Desktop พร้อมใช้งานได้ทันทีครับ

     

    ตอนหน้า จะเป็นเรื่องของการเซ็ตอัพทั่วๆไป, การเชื่อมต่อ Wi-Fi และการติดตั้งโปรแกรมพื้นฐานอย่างง่ายครับ

     

    ผิดพลาดประการใด ขออภัยมา ณ โอกาสนี้ครับ

     

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

    ต่อจาก

    1. วิธีการใช้ Google Sheets เป็นฐานข้อมูล
    2. การใช้งาน Google Drive API ด้วย Google Client Library for Python
    3. วิธีการ 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 กันด้วยนะครับ)

    ขั้นตอนการใช้งานมีดังนี้

    1. ใช้คำสั่ง
      git clone https://github.com/nagarindkx/google.git
      cd google
    2. ติดตั้ง 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
    3. รูปแบบคำสั่งคือ
      $ 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]
    4. สิ่งที่ต้องมี คือ Google Sheets ที่สร้างไว้แล้ว ให้สังเกตที่ URL
      ตัวข้อความที่อยู่หลัง https://docs.google.com/spreadsheets/d/ จะเป็น “Sheet ID” ซึ่งจะใช้ในตัวแปร “sheetid” ในขั้นต่อไป
    5. ในแต่ละ Google Sheets จะประกอบด้วย หลาย Sheet ในที่นี้ จะเขียนลง Sheet ที่ชื่อว่า “Data” ซึ่งจะใช้ในตัวแปร “range” ในขั้นต่อไป
    6. ตัวอย่างการใช้งาน เมื่อระบบทำการสำรองข้อมูล จับเวลา ก็จะทำการส่งข้อมูลไปเก็บในลักษณะ CSV อย่างนี้ส่งไป เช่น
      20180129-12,37.0188,27.5338,943.7682,902.7372

      ซึ่งประกอบด้วย 5 ฟิลด์ คือ วันเวลาที่วัด และ ข้อมูล เป็นจำนวนวินาที อีก 4 ฟิลด์
      วิธีการส่งคำสั่งในการใช้งาน ครั้งแรก ต้องใส่  –noauth_local_webserver ด้วย

      python append2gsheet.py --data 20180129-12,37.0188,27.5338,943.7682,902.7372 --sheetid 1YV_W_k8VkJbYn1fG1XXXXXXXXXXXXF8y5YtQwRC0DAY --range 'Data!A1' --noauth_local_webserver
      

      จะได้ผลดังนี้

      ให้เอา URL ไปเปิดบนเว็บ Browser ที่สามารถยืนยันตัวตนกับ Google ได้ ผลดังนี้

      แล้วก็ให้การอนุมัติ

      ก็จะได้ Verification Code อย่างนี้

      เอาไปใส่

      สำเร็จ และ ผลที่ได้

    7. แต่จะเห็นว่า ข้อมูล ตัวเลขที่ใส่เข้ามา จะถูกแปลงเป็นข้อความ ซึ่ง สามารถแก้ไขได้ด้วยการใส่ –value-input-option USER_ENTERED
      python append2gsheet.py --data 20180129-12,37.0188,27.5338,943.7682,902.7372 --sheetid 1YV_W_k8VkJbYn1fG1XXXXXXXXXXXXF8y5YtQwRC0DAY --range 'Data!A1' --noauth_local_webserver --value-input-option USER_ENTERED

      ผลที่ได้คือ คือ บรรทัดล่าง จะได้ชนิดเป็น Numeric มาเลย

    8. เมื่อเก็บผลเรียบร้อยแล้ว สามารถดูเป็น Chart แบบ Realtime ได้

    เผื่อเป็นประโยชนครับ