Bài Viết Mới Nhất

14/04/2020

Hướng dẫn cài đặt và cấu hình Samba trên Raspberry Pi để làm server lưu trữ dữ liệu



Bạn có HDD Portable chứa dữ liệu, film, nhạc, vv... nhưng muốn truy xuất từ nhiều thiết bị khác nhau (laptop, smart TV, smart phone, tablet,...) cùng lúc thì phải làm sao. Đơn giản thôi, hãy cài đặt và cấu hình Samba trên Raspberry Pi để làm file server chia sẻ dữ liệu. Như vậy bạn hoàn toàn có thể xem film, nghe nhạc từ HDD portable qua mạng mà ko cần dây cáp lằng nhằng

Tải về Wireless Network Watcher để tìm IP của Pi (cũng có thể dùng để xem IP các thiết bị khác đang kết nối wifi của bạn). 
Mật khẩu: hano.cf

Giao diện chương trình như ở hình dưới, bạn kiếm tên thiết bị Pi ở mục Device Name, nhìn tương ứng qua có địa chỉ IP của nó hiện là 192.168.100.9


Tải Putty (SSH – telnet client) bản mới nhất về
Mở Putty và nhập vào như sau 
- Hostname: nhập vào địa chỉ IP của Pi, ở bước trên đã tìm được là 192.168.100.9
- Port 22


Bấm Open. Màn hình terminal đến Pi sẽ hiện lên như sau nếu không có lỗi


Nhập vào thông tin đăng nhập như sau: 
- User: pi (nếu nhập sai tên đăng nhập, tắt putty và mở lại) 
- Password : raspberry
Sau khi đăng nhập thành công màn hình sẽ hiện lên như thế này


Cập nhật các gói hiện có bằng cách nhập lần lượt 2 lệnh sau
sudo apt-get update
sudo apt-get upgrade

Cài đặt Samba
sudo apt-get install samba

Chỉnh sửa cấu hình Samba

sudo nano -cl /etc/samba/smb.conf

Dán đoạn mã ở phía đưới vào cuối tập tin để chia sẻ folder pi trong đường dẫn /media/pi. Sở dĩ chọn folder này là vì khi cắm usb/hdd portable vào pi thì pi sẽ nhận ổ đĩa gắn ngoài và xuất hiện trong folder này. Nếu bạn muốn chia sẻ folder khác thì chỉ việc thay đổi đường dẫn đến folder tương ứng đó

[HanO-NAS] 
path = /media/pi 
comment = No comment
create mask = 0777 
directory mask = 0777 
browseable = yes 
writeable = yes
public = no

Sau đó nhấn Ctrl+X rồi chọn Y, Enter để lưu lại

Tạo mật khẩu cho samba với user là pi 
(tên tùy ý do bạn chọn)
$ sudo smbpasswd -a pi

Sau đó nhập bất kỳ mật khẩu mà bạn muốn, để sau này có thể truy cập vào folder share trên Samba

pi@pi:~ $ sudo smbpasswd -a pi
New SMB password:
Retype new SMB password:
Added user pi

Khởi động lại samba service
$ sudo service smbd restart

08/04/2020

Hướng dẫn cài OpenCV 4.3.0 trên Raspberry Pi



Hôm nay chúng ta cùng cài đặt OpenCV, một thư viện mã nguồn mở hàng đầu cho thị giác máy tính (computer vision), xử lý ảnh, máy học và các tính năng tăng tốc GPU trong hoạt động thời gian thực. Chúng ta sẽ dùng thư viện này ứng dụng vào việc xử lý ảnh và nhận dạng các đối tượng (Người, vật thể ...) với Raspberry Pi và Camera CSI cho Raspberry Pi.

Tải về Wireless Network Watcher để tìm IP của Pi (cũng có thể dùng để xem IP các thiết bị khác đang kết nối wifi của bạn). 
Mật khẩu: hano.cf

Giao diện chương trình như ở hình dưới, bạn kiếm tên thiết bị Pi ở mục Device Name, nhìn tương ứng qua có địa chỉ IP của nó hiện là 192.168.100.9


Tải Putty (SSH – telnet client) bản mới nhất về
Mở Putty và nhập vào như sau 
- Hostname: nhập vào địa chỉ IP của Pi, ở bước trên đã tìm được là 192.168.100.9
- Port 22


Bấm Open. 
Màn hình terminal đến Pi sẽ hiện lên như sau nếu không có lỗi



Nhập vào thông tin đăng nhập như sau: 

- User: pi (nếu nhập sai tên đăng nhập, tắt putty và mở lại) 
- Password : raspberry
Sau khi đăng nhập thành công màn hình sẽ hiện lên như thế này


Nhập lệnh sau vào terminal:
sudo raspi-config


 Sau đó, chọn mục Advanced Options


 Tiếp theo, chọn mục Expand Filesystem


 Bấm OK


Bấm Finish


Bấm Yes


Sau khi khởi động lại hệ thống, tập tin của bạn đã được mở rộng bao gồm tất cả không gian có sẵn trên thẻ MicroSD của bạn. Bạn có thể kiểm tra bằng cách nhập lệnh
df -h


Gỡ bỏ Wolfram Engine and LibreOffice để làm trống ~1GB bộ nhớ Raspberry Pi
sudo apt-get purge wolfram-engine
sudo apt-get purge libreoffice*
sudo apt-get clean
sudo apt-get autoremove

Cập nhật các gói hiện có bằng cách nhập lần lượt 2 lệnh sau
sudo apt-get update && sudo apt-get upgrade

Cài đặt công cụ phát triển
sudo apt-get install build-essential cmake pkg-config

Cài đặt một số gói I/O hình ảnh cho phép tải các định dạng hình ảnh khác nhau như JPEG, PNG, TIFF…
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng-dev

Cài đặt gói video I/O cho phép tải các định dạng video khác nhau 
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev

Cài đặt thư viện phát triển GTK (công cụ tạo giao diện đồ họa) để biên soạn module phụ của OpenCV, cho phép hiển thị hình ảnh trên màn hình và xây dựng các giao diện GUI đơn giản
sudo apt-get install libfontconfig1-dev libcairo2-dev
sudo apt-get install libgdk-pixbuf2.0-dev libpango1.0-dev
sudo apt-get install libgtk2.0-dev libgtk-3-dev

Cài đặt các gói tối ưu hóa (cải thiện các phép toán ma trận cho OpenCV) 
sudo apt-get install libatlas-base-dev gfortran


Cài đặt thư viện HDF5 datasets và Qt GUIs
sudo apt-get install libhdf5-dev libhdf5-serial-dev libhdf5-103
sudo apt-get install libqtgui4 libqtwebkit4 libqt4-test python3-pyqt5

Cài đặt python 3pip
sudo apt-get install python3-dev
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
sudo python3 get-pip.py
sudo rm -rf ~/.cache/pip

Cài đặt virtualenvvirtualenvwrapper
sudo pip install virtualenv virtualenvwrapper
nano ~/.bashrc



Di chuyển con trỏ đến cuối cùng của file



Thêm vào những dòng sau
# virtualenv and virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh


Khi hoàn thành các bạn sử dụng tổ hợp phím để thoát Ctrl + X, sau đó nhấn chọn Y và Enter để lưu file

Reload lại
source ~/.bashrc

Tạo Python 3 virtual environment
mkvirtualenv cv -p python3

Tùy theo phiên bản mà một số bạn có thể mắc lỗi environment ‘/home/pi/.virtualenvs/cv’ does not contain an activate script

Để fix lỗi này cần edit lại file virtualenvwrapper.sh
sudo nano +85 /usr/local/bin/virtualenvwrapper.sh


Tìm dòng VIRTUALENVWRAPPER_ENV_BIN_DIR="usr/lib/bin" và đổi thành VIRTUALENVWRAPPER_ENV_BIN_DIR="bin"


Sau đó, tạo lại Python 3 virtual environment
mkvirtualenv cv -p python3

Cài PiCamera API để dùng Module Raspberry Pi Camera
pip install "picamera[array]"

Tải xuống OpenCV 4.x.x (phiên bản bao nhiêu tùy bạn lựa chọn). Để biết thêm về các phiên bản OpenCV hiện có, bạn truy cập vào đây 
Tính đến thời điểm này thì OpenCV 4.3.0 đang là bản mới nhất nên chúng ta sẽ tải nó về.
cd ~
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.3.0.zip
unzip opencv.zip
mv opencv-4.3.0 opencv

Nếu muốn tải phiên bản OpenCV khác thì thay vào phần tô đỏ 4.3.0
Ví dụ, muốn tải phiên bản OpenCV 4.1.1 thì thay thành dòng lệnh
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.1.1.zip

Cài kho lưu trữ opencv_contrib. Lưu ý: Đảm bảo phiên bản opencv và opencv_contrib của bạn giống nhau (trong trường hợp này là 4.3.0). Nếu số phiên bản không khớp nhau, có khả năng bạn sẽ gặp phải lỗi compile-time hoặc runtime errors.
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.3.0.zip
unzip opencv_contrib.zip
mv opencv_contrib-4.3.0 opencv_contrib


Tăng kích thước swap space để cho phép OpenCV biên dịch với tất cả bốn lõi của Raspberry PI mà không bị treo biên dịch do vấn đề bộ nhớ
sudo nano /etc/dphys-swapfile



Các bạn thực hiện tăng kích thước swap space của mình bằng việc sửa đổi từ CONF_SWAPSIZE  = 100 thành CONF_SWAPSIZE = 2048



Khi hoàn thành các bạn sử dụng tổ hợp phím để thoát Ctrl + X, chọn Y và Enter để lưu file. 

Để kích hoạt swap space mới, hãy khởi động lại swap service
sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start


Vào virtual environment cv
workon cv


Cài đặt numpy
pip install numpy

Biên dịch và cài đặt OpenCV 4.x.x cho Python 3
$ cd opencv
$ mkdir build 
$ cd build 
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
 -D CMAKE_INSTALL_PREFIX=/usr/local \
 -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
 -D ENABLE_NEON=ON \
 -D ENABLE_VFPV3=ON \
 -D BUILD_TESTS=OFF \
 -D INSTALL_PYTHON_EXAMPLES=OFF \
 -D OPENCV_ENABLE_NONFREE=ON \
 -D CMAKE_SHARED_LINKER_FLAGS=-latomic \
 -D BUILD_EXAMPLES=OFF ..



Giờ chúng ta có thể biên dịch chương trình một cách bình thường.
make -j4

-j4 là viết tắt của số lõi để sử dụng khi biên soạn OpenCV. Vì chúng ta đang sử dụng Raspberry Pi 3 nên sẽ tận dụng tất cả bốn lõi của bộ vi xử lý để xử lý nhanh hơn.

Cài đặt OpenCV vào hệ thống bằng lệnh
sudo make install
sudo ldconfig

Đổi kích thước swap space về ban đầu 
sudo nano /etc/dphys-swapfile
CONF_SWAPSIZE  = 100 

Khi hoàn thành các bạn sử dụng tổ hợp phím để thoát Ctrl + X, chọn Y và Enter để lưu file. Kích hoạt lại swap space
sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start

Tạo sym-link
cd /usr/local/lib/python3.7/site-packages/cv2/python-3.7
sudo mv cv2.cpython-37m-arm-linux-gnueabihf.so cv2.so
cd ~/.virtualenvs/cv/lib/python3.7/site-packages/
ln -s /usr/local/lib/python3.7/site-packages/cv2/python-3.7/cv2.so cv2.so

Kiểm tra python, virtual environment và OpenCV sau khi cài đặt
cd ~
workon cv
python
>>> import cv2
>>> cv2.__version__

07/04/2020

Hướng dẫn nâng cấp Raspberry Pi lên Raspbian Buster



Vì một vài lý do như phải cấu hình và cài đặt lại các phần mềm nên bạn lười fresh install Raspbian Buster? Không sao cả, chúng ta có thể nâng cấp upgrade lên Raspbian Buster dễ dàng chỉ với vài bước sau.

Tải về Wireless Network Watcher để tìm IP của Pi (cũng có thể dùng để xem IP các thiết bị khác đang kết nối wifi của bạn). 
Mật khẩu: hano.cf

Giao diện chương trình như ở hình dưới, bạn kiếm tên thiết bị Pi ở mục Device Name, nhìn tương ứng qua có địa chỉ IP của nó hiện là 192.168.100.9


Tải Putty (SSH – telnet client) bản mới nhất về
Mở Putty và nhập vào như sau 
- Hostname: nhập vào địa chỉ IP của Pi, ở bước trên đã tìm được là 192.168.100.9
- Port 22


Bấm Open. 
Màn hình terminal đến Pi sẽ hiện lên như sau nếu không có lỗi


Nhập vào thông tin đăng nhập như sau: 
- User: pi (nếu nhập sai tên đăng nhập, tắt putty và mở lại) 
- Password : raspberry
Sau khi đăng nhập thành công màn hình sẽ hiện lên như thế này


Cập nhật các gói hiện có bằng cách nhập lần lượt 2 lệnh sau
sudo apt-get update
sudo apt-get upgrade

Khởi động lại Pi sau khi cập nhật phần mềm
sudo reboot

Khi Pi khởi động xong và được kết nối lại, bạn có thể bắt đầu thiết lập Pi để nâng cấp. Raspbian, giống như Debian, sử dụng một file cấu hình tại /etc/apt/sources.list để kiểm soát các kho phần mềm của nó. File đó cũng chỉ định phiên bản nào của hệ điều hành để lấy các gói. Vì vậy, thay đổi file đó để sử dụng Buster thay vì Stretch sẽ cho phép Raspbian tự nâng cấp.
sudo nano /etc/apt/sources.list


Thay đổi từ stretch ở mọi nơi thành buster. Kết quả cuối cùng sẽ giống như hình ảnh bên dưới.


Khi hoàn thành bạn sử dụng tổ hợp phím để thoát Ctrl + X, chọn Y và Enter để lưu file. 

Với file đã chỉnh sửa, bạn có thể chạy bản cập nhật của distro trên Raspberry Pi để tải xuống tất cả các gói và chính thức thay đổi sang phiên bản mới - Buster. 

sudo apt update && sudo apt dist-upgrade

Sau khi cập nhật kho lưu trữ và đánh giá các gói cần thiết, trình quản lý gói sẽ hỏi bạn có muốn cài đặt các gói mới để nâng cấp hiệu quả lên bản phát hành mới không. Hãy xác nhận để bắt đầu nâng cấp. 

Bước này sẽ mất một chút thời gian, đặc biệt là trên phiên bản Pi cũ hoặc qua một kết nối WiFi. Hãy kiên nhẫn và chờ đợi cho đến khi tất cả mọi thứ kết thúc. Bạn sẽ nhận được thông báo khi việc nâng cấp được thực hiện xong.

Khởi động lại Pi sau khi nâng cấp
sudo reboot

Sau đó, kiểm tra phiên bản Raspbian để đảm bảo rằng bạn đang chạy Buster
cat /etc/*-release

06/04/2020

Hướng dẫn Backup Raspberry Pi MicroSD Card


Nếu bạn là một người thích vọc, thì chuyện backup trước khi vọc hẳn là một việc rất quen thuộc rồi. 

Để backup Raspbian cho Raspberry Pi thì có nhiều cách, nhưng chúng ta sẽ chọn cách đơn giản nhất là backup MicroSD Card.

Đầu tiên, bạn hãy tháo thẻ nhớ MicroSD Card ra khỏi Pi rồi gắn vào laptop. Lúc này, bạn sẽ thấy xuất hiện 2 ổ đĩa mới, 1 ổ đĩa có tên là boot với dung lượng khoảng 43mb và 1 ổ đĩa windows ko truy xuất được (ở đây là ổ D và ổ F)


Tải Win32DiskImager mới nhất về, cài đặt và chạy
Chọn ổ đĩa thẻ nhớ ở ô Device (ổ D hoặc F đều được, thường chọn ổ boot)
Nhập đường dẫn file ảnh muốn backup từ MicroSD Card, nhớ đuôi file là .img
Tiếp theo, bấm Read để Win32DiskImager đọc thẻ nhớ và sao lưu lại


Sau khi Read xong thì bấm Verify Only  để kiểm tra lại file ảnh đã sao lưu



Vậy là xong, quá đơn giản file không nào. Lưu ý file ảnh sao lưu có dung lượng khá lớn, bạn nên dùng 7zip để nén lại cho đỡ tốn dung lượng lưu trữ nhé.

Câu hỏi tiếp theo là để sử dụng file ảnh này thế nào thì bạn chỉ cần dùng Win32DiskImager để ghi ngược ra thẻ nhớ khác thôi. Có thể dùng để clone thẻ nhớ gắn vào Pi khác, cũng có thể để Pi quay về thời điểm khi backup. Cách dùng có thể xem lại trong bài này.