เชิญดูและทำตามเลยครับ
https://www.youtube.com/watch?v=tP70B-pdTH0
blog นี้จะกล่าวถึง Raspberry Pi Raspbian เป็นหลัก โดยจะอธิบายทั้งการใช้ windows และ Linux ในการเชื่อมต่อ วิธีอ่าน : ให้เริ่มอ่านตั้งแต่หัวข้อแรกๆขึ้นมา(ให้ดูที่ "คลังบทความ" ทางด้านขวามือ จะมี วัน-เวลา ไล่เรียงอยู่) ไม่งั้นอาจจะงงได้ สำหรับมือใหม่ หรือท่านใดที่ไม่เข้าใจ สามารถ mail มาถามกันได้ครับ ที่ kongimi1980@gmail.com หรือที่ line : 0814282425
วันพุธที่ 20 เมษายน พ.ศ. 2559
วันจันทร์ที่ 4 เมษายน พ.ศ. 2559
วิธีลง qt serial
ตอนแรกลองลง qt4 แล้วลง qt serial แต่ทำไม่ได้ ติดปัญหาว่าต้องเป็น qt5 ถึงจะลง qt serial ได้
จึงได้ทำใหม่ทั้งหมด
โดยการ upgrade เป็น raspbian jessie หรือจะโหลด image ใหม่เลยก็ได้ แล้วก็ลง qt5 ตาม ซึ่งใน link จะรวมถึงการลง qt serial ด้วยเลย
ต้องขอขอบคุณ Thai easy elect มากๆครับ ที่เผยแพร่ความรู้ให้คนที่มาเล่นที่หลัง
จึงได้ทำใหม่ทั้งหมด
โดยการ upgrade เป็น raspbian jessie หรือจะโหลด image ใหม่เลยก็ได้ แล้วก็ลง qt5 ตาม ซึ่งใน link จะรวมถึงการลง qt serial ด้วยเลย
ต้องขอขอบคุณ Thai easy elect มากๆครับ ที่เผยแพร่ความรู้ให้คนที่มาเล่นที่หลัง
วันพฤหัสบดีที่ 31 มีนาคม พ.ศ. 2559
ตัวอย่าง python gui
ตย.1
from Tkinter import * // เพื่อโหลดโปรแกรมการวาดภาพขึ้นมา
master = Tk() // กำหนดให้สิ่งที่เราจะวาด ชื่อว่า master
w = Canvas (master, width=300, height=200) // กำหนดขนาดสิ่งที่เราจะวาด
w.pack() // วาดภาพขึ้นจอ
mainloop() // main loop ไม่ทำไรเลย
ตย.2
from Tkinter import * // เพื่อโหลดโปรแกรมการวาดภาพขึ้นมา
w= Tk() // กำหนดให้สิ่งที่เราจะวาด ชื่อว่า w
w.title("Test gui python") // กำหนดชื่อ title bar
w.geometry('800x480') // กำหนดขนาดของสิ่งที่จะวาด
exitButton = Button(w, text="Exit", height=2, width=6) กำหนดให้ปุ่ม exit button อยู่ใน w
exitButton.pack() วาดปุ่ม exit
mainloop() // main loop ไม่ทำไรเลย
ตย.3 ใช้ pygame ในการวางรูปภาพ
import pygame
from pygame.locals import *
pygame.init()
pygame.display.set_caption("Test pygame.") // ตั้งชื่อ title bar
screen = pygame.display.set_mode((500,500),0,32) // วาด screen
pic1 = pygame.image.load("/home/pi/pic/xxx1.bmp").convert() // โหลดรูป1
pic2 = pygame.image.load("/home/pi/pic/xxx2.bmp").convert() // โหลดรูป2
while True: // ทำซ้ำไม่มีวันจบ
screen.blit(pic1,(0,0)) // วางรูปที่1
screen.blit(pic2,(50,0)) // วางรูปที่ 2
pygame.display.update() // update display
ตย.4 ใช้ pygame เปิด Full screen
import pygame
from pygame.locals import *
pygame.init()
pygame.display.set_caption("Test pygame.") // ตั้งชื่อ title bar
screen = pygame.display.set_mode() // วาด Full screen
pic1 = pygame.image.load("/home/pi/pic/xxx1.bmp").convert() // โหลดรูป1
pic2 = pygame.image.load("/home/pi/pic/xxx2.bmp").convert() // โหลดรูป2
while True: // ทำซ้ำไม่มีวันจบ
screen.blit(pic1,(0,0)) // วางรูปที่1
screen.blit(pic2,(50,0)) // วางรูปที่ 2
pygame.display.update() // update display
ตย.5
import pygame
import time
import thread
import sys
from pygame.locals import *
pygame.init()
pygame.display.set_caption("Sample")
screen = pygame.display.set_mode()
pic1=pygame.image.load("/home/pi/NIRAN/PY/image/pic1.jpg").convert()
pic_main=pygame.image.load("/home/pi/NIRAN/PY/image/main.png").convert()
def print_time(thread_name, delay):
while True:
count = 0;
while count < 5:
time.sleep(delay)
count +=1
print "%s: %s" %(thread_name,time.ctime(time.time()) )
try:
thread.start_new_thread(print_time, ("Thread-1",2) )
thread.start_new_thread(print_time, ("Thread-2",4) )
except:
print "Error : unable to start thread."
while True:
try:
count_main =0;
while count_main <1:
screen.blit(pic_main,(115,0) )
pygame.display.update()
time.sleep(2)
screen.fill([0,0,0]) #clear screen
screen.blit(pic1,(50,0))
pygame.display.update()
time.sleep(2)
screen.fill([0,0,0]) #clear screen
count_main +=1
except:
print "Keyboard interrupt exit."
thread.exit()
ที่มา
https://www.youtube.com/watch?v=El3j3hAPxr0
ถ้าอยากรู้คำสั่งเพิ่มเติมเกี่ยวกับ display ให้ไป ที่นี่
http://www.pygame.org/docs/ref/display.html
from Tkinter import * // เพื่อโหลดโปรแกรมการวาดภาพขึ้นมา
master = Tk() // กำหนดให้สิ่งที่เราจะวาด ชื่อว่า master
w = Canvas (master, width=300, height=200) // กำหนดขนาดสิ่งที่เราจะวาด
w.pack() // วาดภาพขึ้นจอ
mainloop() // main loop ไม่ทำไรเลย
ตย.2
from Tkinter import * // เพื่อโหลดโปรแกรมการวาดภาพขึ้นมา
w= Tk() // กำหนดให้สิ่งที่เราจะวาด ชื่อว่า w
w.title("Test gui python") // กำหนดชื่อ title bar
w.geometry('800x480') // กำหนดขนาดของสิ่งที่จะวาด
exitButton = Button(w, text="Exit", height=2, width=6) กำหนดให้ปุ่ม exit button อยู่ใน w
exitButton.pack() วาดปุ่ม exit
mainloop() // main loop ไม่ทำไรเลย
ตย.3 ใช้ pygame ในการวางรูปภาพ
import pygame
from pygame.locals import *
pygame.init()
pygame.display.set_caption("Test pygame.") // ตั้งชื่อ title bar
screen = pygame.display.set_mode((500,500),0,32) // วาด screen
pic1 = pygame.image.load("/home/pi/pic/xxx1.bmp").convert() // โหลดรูป1
pic2 = pygame.image.load("/home/pi/pic/xxx2.bmp").convert() // โหลดรูป2
while True: // ทำซ้ำไม่มีวันจบ
screen.blit(pic1,(0,0)) // วางรูปที่1
screen.blit(pic2,(50,0)) // วางรูปที่ 2
pygame.display.update() // update display
ตย.4 ใช้ pygame เปิด Full screen
import pygame
from pygame.locals import *
pygame.init()
pygame.display.set_caption("Test pygame.") // ตั้งชื่อ title bar
screen = pygame.display.set_mode() // วาด Full screen
pic1 = pygame.image.load("/home/pi/pic/xxx1.bmp").convert() // โหลดรูป1
pic2 = pygame.image.load("/home/pi/pic/xxx2.bmp").convert() // โหลดรูป2
while True: // ทำซ้ำไม่มีวันจบ
screen.blit(pic1,(0,0)) // วางรูปที่1
screen.blit(pic2,(50,0)) // วางรูปที่ 2
pygame.display.update() // update display
ตย.5
import pygame
import time
import thread
import sys
from pygame.locals import *
pygame.init()
pygame.display.set_caption("Sample")
screen = pygame.display.set_mode()
pic1=pygame.image.load("/home/pi/NIRAN/PY/image/pic1.jpg").convert()
pic_main=pygame.image.load("/home/pi/NIRAN/PY/image/main.png").convert()
def print_time(thread_name, delay):
while True:
count = 0;
while count < 5:
time.sleep(delay)
count +=1
print "%s: %s" %(thread_name,time.ctime(time.time()) )
try:
thread.start_new_thread(print_time, ("Thread-1",2) )
thread.start_new_thread(print_time, ("Thread-2",4) )
except:
print "Error : unable to start thread."
while True:
try:
count_main =0;
while count_main <1:
screen.blit(pic_main,(115,0) )
pygame.display.update()
time.sleep(2)
screen.fill([0,0,0]) #clear screen
screen.blit(pic1,(50,0))
pygame.display.update()
time.sleep(2)
screen.fill([0,0,0]) #clear screen
count_main +=1
except:
print "Keyboard interrupt exit."
thread.exit()
ที่มา
https://www.youtube.com/watch?v=El3j3hAPxr0
ถ้าอยากรู้คำสั่งเพิ่มเติมเกี่ยวกับ display ให้ไป ที่นี่
http://www.pygame.org/docs/ref/display.html
วันอังคารที่ 29 มีนาคม พ.ศ. 2559
ปิด console เพื่อทำเป็น serial port
พอดีว่ามีโปรเจคที่ต้องการใช้ serial port แต่ไม่อยากใช้ usb serial ก็เลยต้องหาเรื่องปิด console port
ที่เครื่อง RPI
sudo nano /boot/cmdline.txt
ลบข้อความนี้ออก console=ttyAMA0,115200
จะเหลือข้อความประมาณนี้
dwc_otg.lpm_enable=0 rpitestmode=1 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait
แต่ดูเหมือนว่าจะยังไม่พอ ต้องทำเพิ่มอีก
sudo nano /etc/inittab
ให้เติมเครื่องหมาย # ข้างหน้าบรรทัดนี้
2:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
ซึ่งอยู่ที่บรรทัดสุดท้ายของไฟล์
จากนั้นให้ reboot
ถ้าจะลองว่าได้ผลมั้ย ก็ให้ลง minicom ดู
sudo apt-get install minicom
minicom -b 115200 -o -D /dev/ttyAMA0
แล้วต่อ serial port ตามรูป
ลองดูกันครับพี่น้องงงง
ปล.วิธีออกจาก minicom กด ctrl+a แล้วปล่อย แล้วกด q แล้ว enter
ที่มา
http://www.irrational.net/2012/04/19/using-the-raspberry-pis-serial-port/
http://www.hobbytronics.co.uk/raspberry-pi-serial-port
ที่เครื่อง RPI
sudo nano /boot/cmdline.txt
ลบข้อความนี้ออก console=ttyAMA0,115200
จะเหลือข้อความประมาณนี้
dwc_otg.lpm_enable=0 rpitestmode=1 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait
แต่ดูเหมือนว่าจะยังไม่พอ ต้องทำเพิ่มอีก
sudo nano /etc/inittab
ให้เติมเครื่องหมาย # ข้างหน้าบรรทัดนี้
2:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
ซึ่งอยู่ที่บรรทัดสุดท้ายของไฟล์
จากนั้นให้ reboot
ถ้าจะลองว่าได้ผลมั้ย ก็ให้ลง minicom ดู
sudo apt-get install minicom
minicom -b 115200 -o -D /dev/ttyAMA0
แล้วต่อ serial port ตามรูป
ลองดูกันครับพี่น้องงงง
ปล.วิธีออกจาก minicom กด ctrl+a แล้วปล่อย แล้วกด q แล้ว enter
ที่มา
http://www.irrational.net/2012/04/19/using-the-raspberry-pis-serial-port/
http://www.hobbytronics.co.uk/raspberry-pi-serial-port
วันจันทร์ที่ 28 มีนาคม พ.ศ. 2559
วิธีแก้ ต่อ hdmi to vga กับ rpi แล้วใช้ไม่ได้
ก่อนหน้านี้ผมเจอปัญหาว่า ใช้ hdmi to vga แล้วมันใช้กับ rpi ไม่ได้ ลงทุนซื้อหลายรุ่นก็ไม่ได้ ไม่ยอมขึ้นจอ ขึ้นบ้างไม่ขึ้นบ้าง จนเลิกล้มไป ต้องหาจอที่มี hdmi มาต่อ
วันนี้ลองเล่นอีกที ได้ไปเจอเวปของ thaieasyelect ทำเอาตาสว่างเลย
คือมันจะมีคอนฟิกไว้ให้
ทำตามนี้เลยครับ จะมีการ download .zip ไม่ต้องตกใจนะครับ หรือจะไปเปิดในนี้ก็ได้ เพื่อความสบายใจ
# Force to display to HDMI even no HDMI device attach
hdmi_force_hotplug=1
# uncomment to use with computer monitor resolution 1024 x 768 @ 60Hz
#hdmi_group=2
#hdmi_mode=16
# uncomment to use with computer monitor resolution 1280 x 1024 @ 60Hz
#hdmi_group=2
#hdmi_mode=35
# uncomment to use with computer monitor resolution 1920 x 1080 @ 60Hz
#hdmi_group=2
#hdmi_mode=82
# uncomment to use with television monitor resolution 1920 x 1080 @ 60Hz
#hdmi_group=1
#hdmi_mode=16
สวัสดี
วันนี้ลองเล่นอีกที ได้ไปเจอเวปของ thaieasyelect ทำเอาตาสว่างเลย
คือมันจะมีคอนฟิกไว้ให้
ทำตามนี้เลยครับ จะมีการ download .zip ไม่ต้องตกใจนะครับ หรือจะไปเปิดในนี้ก็ได้ เพื่อความสบายใจ
# Force to display to HDMI even no HDMI device attach
hdmi_force_hotplug=1
# uncomment to use with computer monitor resolution 1024 x 768 @ 60Hz
#hdmi_group=2
#hdmi_mode=16
# uncomment to use with computer monitor resolution 1280 x 1024 @ 60Hz
#hdmi_group=2
#hdmi_mode=35
# uncomment to use with computer monitor resolution 1920 x 1080 @ 60Hz
#hdmi_group=2
#hdmi_mode=82
# uncomment to use with television monitor resolution 1920 x 1080 @ 60Hz
#hdmi_group=1
#hdmi_mode=16
สวัสดี
วันเสาร์ที่ 5 ธันวาคม พ.ศ. 2558
วิธี upgrade จาก wheezy to jessie
เมื่อเครื่องในมือเราเป็น rpi2 wheezy ต้องการทำให้เป็น jessie ทำดังนี้
1. โหลด image ใหม่เลย ทำตั้งแต่เริ่มต้นใหม่ทั้งหมด
2. upgrade โดยทำตามวิธีต่อไปนี้
2.1 copy sources.list ไว้ก่อน
sudo cp /etc/apt/sources.list /etc/apt/sources.list.old
2.2 เข้าไปแก้ไข sources.list
sudo nano /etc/apt/sources.list
แก้ไขจากคำว่า wheezy เป็น jessie
กด ctrl+x, y เพื่อออกและบันทึกไฟล์
จากนั้น
sudo apt-get update
sudo apt-get dist-upgrade นานเบยยยย 4 ชม.
sudo reboot
จบ
ที่มา
https://www.youtube.com/watch?v=54BF-SJpkGI
1. โหลด image ใหม่เลย ทำตั้งแต่เริ่มต้นใหม่ทั้งหมด
2. upgrade โดยทำตามวิธีต่อไปนี้
2.1 copy sources.list ไว้ก่อน
sudo cp /etc/apt/sources.list /etc/apt/sources.list.old
2.2 เข้าไปแก้ไข sources.list
sudo nano /etc/apt/sources.list
แก้ไขจากคำว่า wheezy เป็น jessie
กด ctrl+x, y เพื่อออกและบันทึกไฟล์
จากนั้น
sudo apt-get update
sudo apt-get dist-upgrade นานเบยยยย 4 ชม.
sudo reboot
จบ
ที่มา
https://www.youtube.com/watch?v=54BF-SJpkGI
วันพุธที่ 22 กรกฎาคม พ.ศ. 2558
kill process by python script
โดยปกติ เวลาที่ผมใช้โปรแกรม python ผมจะเปิด terminal แล้วสั่ง sudo python AAA.py
แต่มีความต้องการว่าให้ user ที่ไม่ค่อยมีพื้นฐาน linux ใช้งานง่ายๆ ก็เลยต้องเขียนเวป แล้วให้ user กดปุ่มสั่งให้ python ทำงานอีกทีนึง
แต่ก็ติดปัญหาอีกว่าจะให้ user สั่งให้โปรแกรมหยุดทำงานได้ยังไง ก็นั่งหากันอยู่นาน ทดสอบไปมา ได้ผลดังนี้
ในโปรแกรมที่เราสั่งให้ทำงาน(AAA.py) ผมได้แทรก code ลงไป ให้สร้างไฟล์ขึ้นมาไฟล์นึง ในนั้นให้บันทึก PID เอาไว้ มี code ดังนี้
import os
pid = os.getpid()
f = open('PID.txt',"w")
f.write(str(pid))
จาก code ด้านบน เมื่อเราสั่งให้ AAA.py ทำงาน, จะได้ไฟล์ที่ชื่อว่า PID.txt ที่มีหมายเลข PID อยู่ข้างใน
PID คือ Process ID เป็นหมายเลขประจำโปรแกรมที่ทำงานอยู่
จากนั้นผมก็ได้สร้างไฟล์ใหม่อีกไฟล์นึง ที่มีชื่อว่า killAAA.py มี code ดังนี้
import os
import sys
import signal
f = open('PID.txt',"r")
pid = f.readline()
print pid
os.kill(int(pid), signal.SIGKILL)
sys.exit()
ถ้าเราสั่งให้ killAAA.py ทำงาน โปรแกรมนี้ก็จะไปสั่งให้ AAA.py หยุดทำงาน ได้ตามต้องการ
สรุป
บนหน้าเวป จะมีปุ่มที่สั่งให้หยุดการทำงานของโปรแกรมได้ เพื่อให้ user สามารถใช้งานได้ง่ายๆ ไม่ต้องเข้า terminal
แต่มีความต้องการว่าให้ user ที่ไม่ค่อยมีพื้นฐาน linux ใช้งานง่ายๆ ก็เลยต้องเขียนเวป แล้วให้ user กดปุ่มสั่งให้ python ทำงานอีกทีนึง
แต่ก็ติดปัญหาอีกว่าจะให้ user สั่งให้โปรแกรมหยุดทำงานได้ยังไง ก็นั่งหากันอยู่นาน ทดสอบไปมา ได้ผลดังนี้
ในโปรแกรมที่เราสั่งให้ทำงาน(AAA.py) ผมได้แทรก code ลงไป ให้สร้างไฟล์ขึ้นมาไฟล์นึง ในนั้นให้บันทึก PID เอาไว้ มี code ดังนี้
import os
pid = os.getpid()
f = open('PID.txt',"w")
f.write(str(pid))
จาก code ด้านบน เมื่อเราสั่งให้ AAA.py ทำงาน, จะได้ไฟล์ที่ชื่อว่า PID.txt ที่มีหมายเลข PID อยู่ข้างใน
PID คือ Process ID เป็นหมายเลขประจำโปรแกรมที่ทำงานอยู่
จากนั้นผมก็ได้สร้างไฟล์ใหม่อีกไฟล์นึง ที่มีชื่อว่า killAAA.py มี code ดังนี้
import os
import sys
import signal
f = open('PID.txt',"r")
pid = f.readline()
print pid
os.kill(int(pid), signal.SIGKILL)
sys.exit()
ถ้าเราสั่งให้ killAAA.py ทำงาน โปรแกรมนี้ก็จะไปสั่งให้ AAA.py หยุดทำงาน ได้ตามต้องการ
สรุป
บนหน้าเวป จะมีปุ่มที่สั่งให้หยุดการทำงานของโปรแกรมได้ เพื่อให้ user สามารถใช้งานได้ง่ายๆ ไม่ต้องเข้า terminal
วันอังคารที่ 9 มิถุนายน พ.ศ. 2558
เปลี่ยน keyboard layout
พอดีผมได้ซื้อ Rpi2 มาใหม่ ก็เลยลองเล่นดู เล่นไปเล่นมา ปรากฎว่าต้องการจะพิมพ์เครื่องหมาย # ไม่ได้ ก็เลยไปหาดูในเน็ต ก็ง่ายๆ ไม่มีไรมาก ตามนี้เลยครับ
sudo nano /etc/default/keyboard
ให้เราแก้จาก "gb" เป็น "us"
แล้วกด control+x เพื่อ save และออก
จากนั้น sudo reboot
แค่นี้เราก็พิมพ์ # ได้แล้ว
ที่มา
https://www.youtube.com/watch?v=L1F-TxTPyiM
sudo nano /etc/default/keyboard
ให้เราแก้จาก "gb" เป็น "us"
แล้วกด control+x เพื่อ save และออก
จากนั้น sudo reboot
แค่นี้เราก็พิมพ์ # ได้แล้ว
ที่มา
https://www.youtube.com/watch?v=L1F-TxTPyiM
สมัครสมาชิก:
บทความ (Atom)
