วันพุธที่ 24 สิงหาคม พ.ศ. 2559

เปลี่ยน logo ตอน boot

ผมได้พยายามลองเปลี่ยนโลโก้ตอน boot ขึ้นมาใหม่ แต่ว่าทำได้แค่ใกล้เคียงที่อยากได้ มีขั้นตอนดังนี้
1. sudo apt-get install fbi
2. copy รูปภาพที่ต้องการให้โชว์ตอน boot ลงใน /etc แล้วตั้งชื่อว่า splash.png
3. สร้าง script ที่ /etc/init.d/asplashscreen ดังนี้

#! /bin/sh ### BEGIN INIT INFO # Provides: asplashscreen # Required-Start: # Required-Stop: # Should-Start: # Default-Start: S # Default-Stop: # Short-Description: Show custom splashscreen # Description: Show custom splashscreen ### END INIT INFO do_start () { /usr/bin/fbi -T 1 -noverbose -a /etc/splash.png exit 0 } case "$1" in start|"") do_start ;; restart|reload|force-reload) echo "Error: argument '$1' not supported" >&2 exit 3 ;; stop) # No-op ;; status) exit 0 ;; *) echo "Usage: asplashscreen [start|stop]" >&2 exit 3 ;; esac :

4. sudo chmod a+x /etc/init.d/asplashscreen (ทำให้ script สามารถใช้งานได้)
5. sudo insserv a+x /etc/init.d/asplashscreen
6. sudo nano /boot/cmdline.txt
6.1 เพิ่ม logo.nologo quiet เข้าไปข้างหลังสุด
7. sudo nano /etc/rc.local
7.1 เพิ่ม clear ก่อน exit 0
8. sudo reboot

ผลที่ได้คือ เราจะไม่เห็นลูก raspberry ตอนเริ่ม และจะเห็น logo ของเราในเวลาถัดมา
enjoy!!!

 

พฤ.18/02/2564

ผมได้มาทำใหม่ โดยทำตาม link ด้านล่างนี้ พบว่าได้ผลดี จึงนำมา share

https://www.thedigitalpictureframe.com/customize-your-raspberry-pi-splash-screen-raspbian-stretch-april-2019-version/ 

เริ่มต้นด้วยการ putty เข้าไป แล้วพิมพ์

fbset

จะได้หน้าตาคล้ายๆแบบนี้ออกมา

จะเห็นว่า ภาพที่เราจะใช้นั้น จะมีขนาด 480*800

จากนั้นเราก็ไปทำรูปของเราให้มีขนาดดังกล่าว ด้วยวิธีการอะไรก็แล้วแต่ ตามสบายเลย

แต่จะต้องตั้งชื่อรูปนั้นว่า splash.png

แล้วก็ remote รูป splash.png ที่เราสร้างมา ไปไว้ที่ /home/pi

แล้วก็ใช้คำสั่ง

sudo cp /home/pi/splash.png /usr/share/plymouth/themes/pix/splash.png

เพื่อนำรูปไปวางในตำแหน่งที่จะใช้เป็น logo ตอน boot

จากนั้น

sudo nano /boot/cmdline.txt

และเพิ่มนี่เข้าไปด้านท้าย

logo.nologo vt.global_cursor_default=0  

และเปลี่ยนจาก console=tty1 ให้เป็น tty3

ctrl+o, enter, ctrl+x

 

sudo nano /boot/config.txt 

เพิ่มนี่เข้าไปด้านล่างสุด

disable_splash=1

ctrl+o, enter, ctrl+x

 

sudo reboot

โชคดีครับ


วันจันทร์ที่ 11 กรกฎาคม พ.ศ. 2559

qt timer slot

ดูตามนี้เลยครับ ไม่มีเสียง ทำตามอย่างเดียวเลย
https://youtu.be/W1CTuOg2JLA

qt ตัวอย่างการส่ง serial port hex charactor, การรับค่า serial, การเปรียบเทียบ QByteArray กับ int

#include <QtSerialPort>
#include <QtSerialPort/QSerialPort>

void class::my_class()
{
    serial->setPortName("COM9");
    if (serial->isOpen()){
        serial->close();
        qDebug() << "serial close";
    }
    else{
        qDebug() << "serial already close.";
    }
    if (serial->open(QIODevice::ReadWrite)) {
        serial->setBaudRate(19200);
        serial->setDataBits(QSerialPort::Data8);
        serial->setParity(QSerialPort::EvenParity);
        serial->setStopBits(QSerialPort::OneStop);
        serial->setFlowControl(QSerialPort::NoFlowControl);          
    }
}

my_function()
{
    char buff[16];
    int hhh;
    for(hhh=0;hhh<=15;hhh++)
    {
        buff[0] = hhh;
        serial->write(buff,1);
    }
}


my_function2()
{
    QByteArray input;
    char buff[16];
    int hhh;
    for(hhh=0;hhh<=15;hhh++)
    {
        buff[0] = hhh;
        serial->write(buff,1);

        serial->waitForBytesWritten(100);
        serial->waitForReadyRead(100);
        input = serial->readAll();
        if (input == ""){
            qDebug() << "status" << hhh << " = Lost.";
        }else if( quint8(input[0]) == quint8(0x60+hhh)){
            qDebug() << "status" << hhh << " = Hot.";
        }
    }

    serial->flush();
}

วันศุกร์ที่ 29 เมษายน พ.ศ. 2559

RPI ป้องกัน sleep mode

ถ้าต้องการให้ RPI ไม่เข้า sleep mode (หน้าจอดับ ถ้าไม่มีการเคลื่อนไหวสักระยะ) ให้ทำดังนี้

1. sudo nano /etc/lightdm/lightdm.conf

2. ให้เพิ่มบรรทัดนี้เข้าไป
[SeatDefaults]
xserver-command=X -s 0 -dpms

3. restart

จอบอ.

ที่มา
http://raspberrypi.stackexchange.com/questions/4773/raspberry-pi-sleep-mode-how-to-avoid

แต่ถ้ายังไม่ได้ผล ให้ใช้วิธีนี้ครับ
sudo apt-get install xscreensaver
แล้วไปที่เมนู preferences (ด้านล่างซ้ายมือ jessie) ==> Screensaver
แล้วไปเลือก disable screen saver
จอบอ

ที่มา
http://stackoverflow.com/questions/30985964/how-to-disable-sleeping-on-raspberry-pi

วันพฤหัสบดีที่ 28 เมษายน พ.ศ. 2559

RPI LCD 7 นิ้ว touch screen ยี่ห้อ waveshare

วันนี้ผมได้ซื้อ LCD 7 นิ้ว touch screen ยี่ห้อ waveshare มาจาก thaieasylect ตอนนี้ก็ราคา 2,850 บาท บวก vat บวกค่าขนส่งก็ 3,1xx บาท





พอจะใช้งาน เราก็ต้องศึกษากันสักหน่อยว่าใช้งานยังไง
ก็เจอ เวปนี้ ที่ thaieasyelect เขาแนะนำมา
ซึ่งเขาก็บอกรายละเอียดที่สำคัญหลายอย่าง เช่น
- ต้องใช้ power supply 5V 2A ไม่งั้นจะจ่ายไฟไม่พอ
- ต้องลง driver เพิ่ม จึงจะใช้งานได้
- image ที่ให้มา เป็น image เปล่าที่ใช้กับจอ LCD นี้เท่านั้น อะไรที่เราเคยลงไว้ใน sd card จะหายหมด

ซึ่งตอนแรกผมก็ลองลง image ที่เขาให้มา แต่ว่าใช้ไม่ได้ จอไม่ขึ้นภาพ ก็เลยศึกษาต่อ
เห็นในหน้าเวปมีลิงค์ไปให้อ่าน manual ก็คลิกเข้าไป
พอเข้าไปดู ก็ถึงบางอ้อออออ ต้อง config ก่อน โดย
เข้าไปแก้ไข /boot/config.txt ดังนี้
ให้เพิ่ม
max_usb_current=1
และแก้ไข
hdmi_group=2
hdmi_mode=87
hdmi_cvt 1024 600 60 6 0 0 0
save แล้วก็นำออกมา เอาไปใส่ rpi
เมื่อ boot เสร็จแล้ว เราก็ควรทำให้มันเปิดหน้า startx ขึ้นมาอัตโนมัติ โดยใช้คำสั่งดังนี้
sudo raspi-config
เข้าไปเมนู Enable boot to desktop...
แล้วเลือก Login as user PI at the graphical desktop
เลือก finish เพื่อ restart

ทีนี้แสดงผลได้ละ สวยงาม



แต่พอลองแตะที่หน้าจอ เอ๊ะ!!! ใช้ไม่ได้
ก็ลองอ่านๆๆต่อไปจากของเดิม เจอมันบอกว่า ให้อ่าน manual firmware rev2.1 ก่อนนะก๊ะ  โอเค อ่านก็อ่าน

 เจอว่ามันมี driver ให้ download ก็เอามาลงที่เครื่องเรา



แล้วทำตามขั้นตอนต่อไป


เมื่อได้ไฟล์มาแล้ว ก็ remote เอาลงที่เครื่อง RPI ตรงไหนก็ได้ วางๆไปเถอะ
แล้วเราก็แตกไฟล์
- sudo tar zxvf filename.tar.gz

แล้วก็เข้าไปในโฟลเดอร์นั้นๆ
- cd dir_file_name

แล้วก็รันคำสั่ง
- sudo ./USB_TOUCH_CAP_7.0_RASBIAN

เมื่อรันเสร็จ เครื่องจะ restart อัตโนมัติ และเมื่อ boot ขึ้นมาใหม่ก็จะใช้งาน touch screen ได้เลย

หรือจะทำตามนี้ก็ได้เหมือนกัน

https://www.waveshare.com/wiki/7inch_HDMI_LCD_(B)

จอบอ.

วันพฤหัสบดีที่ 21 เมษายน พ.ศ. 2559

qt แสดงรูป ด้วย qpixmap

ขั้นแรก เราต้องเข้าไปที่ mainwindow.ui เสียก่อน ด้วยการ double click เป็นหน้า ui ขึ้นมา
แล้วเพิ่ม qlabel เข้าไป ด้วยการลาก qlabel จากเมนูด้านซ้ายมือ เข้าไปใน ui
แล้วก็เพิ่มรูปภาพเข้าไป ด้วยการเลือกที่เมนู pixmap (property)
กลับมาที่หน้า mainwindow.cpp และ พิมพ์เพิ่ม
#include <QPixmap>
และเพิ่ม
QPixmap pix("path_of_your_pic/pic.png");
ui -> label -> setPixmap(pix);
เข้าไปในโปรแกรม ตรงส่วนที่ต้องการแสดงรูป
โดย label คือ ชื่อของ label ที่เราลากไปวางใน ui ตอนแรก


ที่มา

https://www.youtube.com/watch?v=pzzccU9mErg

qt เปลี่ยน title ของหน้าต่าง

this->setWindowTitle("change your title name.");