วิธีขยาย Disk ใน VM/Virtualbox แล้วให้ Ubuntu

ในกรณีใช้ VMWare/VirtualBox  บางครั้งเราต้องการขยาย Disk ให้ Ubuntu มีพื้นที่มากขึ้น เดิมมี Disk 100 GB แก้ไขให้เป็น 300 GB Login เข้าไป ดูข้อมูล ด้วยคำสั่ง df -h จะเห็น 100 GB อยู่ แล้ว sudo reboot ลอง Login ใหม่ แล้วใช้คำสั่ง sudo su fdisk -l ก็จะ ขนาดเพิ่มเป็น 300 GB จากนั้นใช้คำสั่ง growpart /dev/sda 1 resize2fs /dev/sda1 แล้วลอง df -h ก็จะพบว่า ได้ขนาดมาเป็น 300 GB แล้ว

Read More »

Raspberry Pi 3 [Writing Text to 16×2 LCD]

จากตอนที่แล้วเราได้ทำการเชื่อมต่อ hardware ซึ่งได้แก่ จอ LCD ขนาด 16×2 ผ่าน I2C Module ไปเรียบร้อยแล้วนั้น เราจะเริ่มทำการ Config I2C และเขียน Python เพื่อแสดงข้อความตัวอักษรอย่างง่าย   Enable I2C Module เริ่มด้วยการ login เข้าสู่ Raspberry Pi และใช้คำสั่ง sudo raspi-config บนหน้าจอ Terminal จากนั้นเลือก 5 Interfacing Option และเลือก P5 I2C (Enable/Disable automatic loading…) ทำการคอนเฟิร์ม ด้วยการตอบ YES จากนั้น Reboot   จากนั้นทำการอัพเดทไฟล์ /boot/config.txt ด้วยคำสั่ง sudo nano /boot/config.txt ใส่ข้อความ (หรือ uncomment) ต่อไปนี้ dtparam=i2c1=on dtparam=i2c_arm=on จากนั้นทำการ reboot ครับ   ลองใช้คำสั่ง sudo i2cdetect -y 1 เพื่อดูว่าเจอ I2C Module หรือไม่ ซึ่งผลที่ได้คือ address ของอุปกรณ์ (อาจแตกต่างกันไปในแต่ละเครื่อง ซึ่งในที่นี้คือ address 0x3f นั่นเอง)   จากนั้นทำการตรวจสอบว่ามีการติดตั้ง Python ไว้หรือยัง ด้วยการทดลองเรียกใช้ซะเลย ด้วยคำสั่ง python3 จะพบกับหน้าจอดังนี้ (ใช้คำสั่ง exit() เพื่อออกกลับไปยัง prompt เดิม) แต่ถ้าหากยังไม่เคยติดตั้ง ให้ติดตั้งด้วยคำสั่ง sudo apt-get install python ครับ   เริ่มเขียน Python เพื่อแสดงตัวอักษรบน LCD กันเลย เนื่องจากเราไม่ใช่คนแรกในโลกที่ใช้งานส่วนนี้ เพื่อเป็นการประหยัดเวลา เราจะทำการดาวน์โหลด library มาใช้งาน ซึ่ง ดาวน์โหลดได้ที่นี่ (ต้อง Extract Zip จะเจอไฟล์  RPi_I2C_Driver.py) โดยจะต้องทำการแก้ไข บันทัดที่ 54 ADDRESS = 0x3f ให้เป็น Address ของเราเอง (ต้นฉบับจากที่นี่ https://gist.github.com/DenisFromHR/cc863375a6e19dce359d)   จากนั้นลองทำการเขียนกันดูครับ import RPi_I2C_Driver from time import * mylcd = RPi_I2C_Driver.lcd() mylcd.lcd_display_string(“Hello PSU !”, 1) เซฟไฟล์ชื่อ hello.py จากนั้นสั่งรันด้วยคำสั่ง python hello.py จะพบว่า LCD สามารถแสดงข้อความได้แล้ว   คำสั่งพื้นฐานอื่นๆ ที่อาจต้องใช้ได้แก่ mylcd.lcd_display_string(“Hello PSU !”, 2, 3) แสดงข้อความที่ row 2, column 3 mylcd.lcd_clear() เพื่อเคลียร์หน้าจอ เป็นต้นครับ   สำหรับตอนหน้า จะเป็นเรื่องของการแสดงข้อความอื่นๆ ในระบบ เช่น วัน/เวลา, IP Address, CPU/Memory/Disk Usage ครับ   ผิดพลาดประการใด ขออภัยมา ณ โอกาสนี้ครับ        

Read More »

เทคนิคการใช้ Word ในการทำบรรณานุกรม

ในการทำเอกสารงานวิชาการ/งานวิจัย เมื่อเราอ่านเอกสารจากบทความหรือหนังสือต่าง ๆ แล้วมาเขียนในงานของเราจะต้องมีการอ้างอิงที่มาของเนื้อหาดังกล่าว โดยไปที่ References คลิก Insert Citation  คลิก Add New Source จะแสดง Dialog ดังรูป Type of Source ให้เลือกประเภทของแหล่งข้อมูลเนื้อหาตามต้องการ ไม่ว่าจะเป็นหนังสือ, เอกสารวิชาการ, Conference Proceeding, รายงาน, เอกสารอิเล็กทรอนิกส์, จาก Website ต่าง ๆ ก็สามารถทำอ้างอิงได้ ในที่นี้ขอเลือก Book Author ระบุชื่อผู้แต่ง Title ระบุชื่อหนังสือ Year ระบุปีที่พิมพ์ City ระบุชื่อเมืองที่พิมพ์ Publisher ระบุสำนักพิมพ์ จากนั้นคลิก OK ก็จะได้อ้างอิง ดังรูป พอเราทำเอกสารเสร็จทั้งหมดไปถึงหน้าสุดท้ายแล้ว ถึงเวลาที่เราต้องทำบรรณานุกรมแล้ว ไปที่ References ที่ Style เราสามารถเลือกได้ว่าจะใช้มาตรฐานการอ้างอิงแบบไหน ส่วนใหญ่ก็จะเป็น APA จากนั้นคลิกที่ Bibliography คลิกเลือก Bibliography ก็จะได้บรรณานุกรม ดังรูปโดยที่เราสามารถปรับแต่งขนาดตัวอักษร จัดรูปแบบ และยังสามารถอัพเดตอ้างอิงและบรรณานุกรมได้ด้วยค่ะ อาจจะเป็นเทคนิคเล็ก ๆ น้อย ๆ แต่คิดว่าคงมีประโยชน์กับผู้ที่ทำเอกสารงานวิชาการ/งานวิจัยนะคะ   

Read More »

Raspberry Pi 3 [Drive 16×2 LCD with I2C Interface]

หลังจากตอนที่แล้วเราได้ทำการ setup โปรแกรมที่เราต้องการ ในตอนนี้ขอพูดถึงอุปกรณ์ต่อพ่วงกันบ้าง เพื่อให้ดูเหมือนเข้าสู่ยุค IoT (Internet Of Things) มากขึ้น นั่นคือจอ LCD ระดับเบื้องต้น ขนาด 16×2 ดังรูปนี้ ซึ่งอุปกรณ์ตัวนี้ สามารถแสดงผลได้ 2 แถว แถวละ 16 ตัวอักษร ซึ่งเพียงพอในระดับเบื้องต้นสำหรับการเรียนรู้การเขียนโปรแกรมครับ โดยในตลาดจะมีขายหลายรุ่น เช่น 16×2, 20×4 ไปจนถึง 128×64 อีกทั้งยังมี จอสีประเภท TFT 2.4 นิ้ว, 3 นิ้ว, 3.2 นิ้ว, 4 นิ้ว เป็นต้น และมีแบบหน้าจอสัมผัสให้เลือกใช้งานอีก มากมาย   การเชื่อมต่อจอ 16×2 กับบอร์ด Raspberry Pi 3 โดยทั่วไปแล้ว จะต้องทำการเชื่อมต่อดังรูปด้านล่างนี้             การเชื่อมต่อแบบ 4 bits (ซ้าย) – การเชื่อมต่อแบบ 8 bits (ขวา) จะเห็นว่าเป็นการเชื่อมต่อที่ยุ่งยาก ใช้สายหลายเส้น และยากต่อการปรับเปลี่ยนการใช้งาน ดังนั้นจึงมึโมดูลที่เข้ามาช่วยตรงนี้คือ I2C   I2C คืออะไร I2C คือบัสการเชื่อมต่ออนุกรมแบบ Synchronous ด้วยสายสัญญาณเพียง 2 เส้น (แต่จริงๆ ต่อ 4 เส้น ได้แก่ SDA, SLC, +5V และ GND) โดยจะมีสายสัญญาณข้อมูล คือ SDA (Serial Data Line) และสายสัญญาณนาฬิกา คือ SLC (Serial Clock Line) โดยแบ่งการทำงานออกเป็น 4 โหมดตามความเร็วดังนี้ Normal Mode ความเร็ว 100Kbps Fast Mode ความเร็ว 400Kbps Fast Mode Plus ความเร็ว 1Mbps High Speed ควาามเร็ว 3.4Mbps   ซึ่งเมื่อเป็นการเชื่อมต่อแบบอนุกรม ทำให้เราสามารถใช้งาน I2C ได้มากกว่าหนึ่งอุปกรณ์บนสายเพียง 2 เส้น โดยจะเลือกติดต่อกับอุปกรณ์ใดได้ด้วยการกำหนดที่อยู่ (Address) ของ Hardware ให้กับอุปกรณ์   และเนื่องด้วยความง่ายของการใช้งานของ I2C ทำให้อุปกรณ์จอ LCD ส่วนใหญ่จะทำการติดตั้งมาพร้อมกับจอแล้ว ดังรูป            I2C Module คือโมดูลสีเข้มในรูป บอร์ดสีเขียวคือ ด้านหลังของจอ LCD 16×2 ซึ่งได้ทำการเชื่อมต่อเรียบร้อยแล้ว   เริ่มทำการเชื่อมต่อกับ Raspberry Pi โดย I2C จะต้องทำการเชื่อมต่อ 4 เส้น คือ +5V, GND, SDA, SLC กับ Pinout ของ Raspberry Pi 3 ดูจากข้อมูล Alternate Function เราจะต้องทำการต่อสาย SDA ที่ Pin 3, SCL ที่ Pin 5 และ +5V ที่ Pin 2 หรือ ส่วน GND นั้นมี Pin 6, 9, 25, 39, 14, 20, 30 หรือ 34 ให้เลือก         จากนั้นทำการ Power On Raspberry PI 3

Read More »

Raspberry Pi 3 [Basic Configuration]

หลังจากเราได้ติดตั้ง OS แล้ว ต่อไปจะเป็นการเชื่อมต่อกับเครือข่าย LAN หรือ Wi-Fi ถ้าเป็นสายแลน ก็ไม่ยากครับ เสียบสายเข้าไปเลย โดย default config eth0 จะเป็น DHCP Client อยู่แล้ว ส่วน Wi-Fi นั้น จากการหาข้อมูลชิบBroadcom BCM43438 Wireless Controller นั้น เหมือนจะรองรับเฉพาะ 2.4GHz ครับ   ผมจะเลือกทำการ connect Wi-Fi ก่อนนะครับ หลังจากนั้นค่อยเซ็ตอัพวัน/เวลา และโปรแกรม เรื่องของการ connect เข้า Wi-Fi ที่เป็น WPA2 Enterprise นั่นก็อาจจะเป็นปัญหาเบื้องต้นที่เจอครับ คือ โดย default แล้วนั้น จะไม่ support ดังรูปข้างล่างนี้ ทำให้ connect เข้าโดยตรงไม่ได้ ต้องทำการแก้ไขปัญหาดังนี้ครับ 1.เปิด terminal จากนั้นแก้ไฟล์ wpa_supplicant.conf โดยใช้คำสั่ง sudo nano /etc/wpa_supplicant/wpa_supplicant.conf   2.เพิ่มบรรทัดต่อไปนี้เข้าไป network={ ssid=“PSU WiFi (802.1x)“ priority=1 proto=RSN key_mgmt=WPA-EAP pairwise=CCMP auth_alg=OPEN eap=PEAP identity=”YOUR_PSU_PASSPORT_USERNAME“ password=hash:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx phase1=“peaplabel=0” phase2=“auth=MSCHAPV2” }   เซฟไฟล์ด้วยการกด Ctrl + X ตอบ Y กด Enter กลับมาที่หน้าจอ Terminal ตามเดิม ข้อมูลที่ท่านสามารถปรับแก้ได้คือตัวอักษรสีแดงด้านบน ได้แก่ ssid <= ชื่อ ssid ซึ่งบางที่อาจจะไม่ใช่ดังในตัวอย่าง identity <= username ของ psu passport อยู่ภายใต้เครื่องหมาย ” ” password=hash: มาจากการคำนวณ hash ด้วยคำสั่งต่อไปนี้ echo -n ‘YOUR_PASSWORD‘ | iconv -t utf16le | openssl md4 จากนั้นเอาค่ามาใส่แทนที่ xxxxxxxx ตามตัวอย่างข้างบน   3.เมื่อเรียบร้อยแล้วให้ restart service networking ซักครั้งหนึ่งด้วยคำสั่ง sudo service networking restart   4.หากไม่เกิดการเปลี่ยนแปลงอะไร ให้ reboot ซักครั้ง sudo reboot   5.เมื่อ reboot กลับมาแล้ว ท่านจะพบว่ามีการเชื่อมต่อ SSID ตามที่ท่านได้เซ็ตเอาไว้เรียบร้อยแล้ว ดังรูปด้านล่างนี้   ** คำสั่งที่ท่านพิมพ์ผ่าน Terminal จะถูกเก็บ History เอาไว้ รวมทั้งรหัสผ่านที่ท่านได้สร้างเป็น hash เอาไว้ ท่านจะต้องทำการเคลียร์ออก ด้วยคำสั่ง history -c (เพื่อเคลียร์ทั้งหมด) หรือ   history | tail เพื่อดูหมายเลขบรรทัด เช่น 300  จากนั้นใช้คำสั่ง history -d 300 เพื่อลบเฉพาะบรรทัดนั้น   เมื่อเสร็จเรื่องการเชื่อมต่อแล้ว จากนั้นควรทำการเซ็ตอัพวันเวลา / timezone ให้เรียบร้อย เปิด Terminal จากนั้นพิมพ์คำสั่ง sudo dpkg-reconfigure tzdata           เลือก Asia และเลือก Bangkok กด Enter เป็นอันเสร็จสิ้นครับ   จากนั้นควรทำการ sync

Read More »