Tải bản đầy đủ (.pdf) (25 trang)

Raspberry pi căn bản

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.08 MB, 25 trang )

Tài liệu học Raspberry Pi
Sưu tập:
Nguồn />Tài liệu học Raspberry Pi thì đã có nhiều tuy nhiên đa số đều viết bằng tiếng Anh. Ở
đây mình sẽ tập hợp tất cả bài viết và giới thiệu các nguồn tài liệu hay để các bạn mới
học Raspberry Pi có thể nắm bắt nhanh nhất. Danh mục đang trong quá trình hoàn
thiện nên mình viết tới đâu sẽ bổ sung tới đó. Các bạn muốn mình viết thêm phần nào thì
cứ thoải mái comment ở dưới nha, mình sẽ cố gắng bổ sung.


1.
2.
3.
4.
5.
6.
7.


1.
2.
3.
4.
5.


1.
2.


1.
2.


3.
4.


1.
2.

Kiến thức cơ sở:
Giới thiệu Raspberry Pi
Cấu tạo của Pi
ARM vs x86
Linux căn bản
20 command line cần biết trên Linux
Web và vài điều căn bản
Tìm hiểu firmware và raspi-config trên Pi
Raspberry Pi căn bản:
Cài đặt hệ điều hành
Thực hành đầu tiên: bật tắt LED
Viết ứng dụng gửi email bằng Python
Dự báo thời tiết qua API
Kết nối webcam, nhận diện khuôn mặt với SimpleCV
Raspberry Pi nâng cao
Project: Điều khiển thiết bị qua internet
Project: Handmade time lapse camera
Thủ thuật cho Pi:
Gõ tiếng Việt trên Pi
Điều khiển Pi từ xa bằng máy tính
Chụp ảnh màn hình trên Pi
Tùy chỉnh firmware và raspi-config
Nên đọc thêm:

Website và diễn đàn chính thức của Raspberry Pi : raspberrypi.org
Tạp chí miễn phí về Raspberry Pi : The MagPi

Giới thiệu Raspberry Pi: chiếc máy tính tí hon kỳ diệu
I. Raspberry Pi là gì?
Raspberry Pi là một chiếc máy tính tí hon giá chỉ 25$ chạy hệ điều hành Linux ra mắt
vào tháng 2 năm 2012. Ban đầu Raspberry Pi được phát triển dựa trên ý tưởng tiến sĩ
Eben Upton tại đại học Cambridge muốn tạo ra một chiếc máy tính giá rẻ để học sinh
có thể dễ dàng tiếp cận và khám phá thế giới tin học. Dự định khiêm tốn của ông đến
cuối đời là có thể bán được tổng cộng 1000 bo mạch cho các trường học. Vậy thì điều
1


gì đã làm nên thành công ngoài sức tưởng tượng của Raspberry Pi khi đã bán được
hơn một triệu bo mạch chỉ trong vòng chưa đầy một năm?
1. Raspberry Pi có mức giá quá hấp dẫn: 25$ cho một chiếc bo mạch có thể làm được
hầu như mọi ứng dụng hằng ngày như lướt web, học lập trình, xem phim HD đến
những ý tưởng mà bạn không ngờ đến như điều khiển robot, nhà thông minh..v.v.
2. Raspberry Pi chạy hệ điều hành Linux: 99% những thứ bạn làm trên máy tính
Windows đều có thể thực hiện được trên Linux và quan trọng là: tất cả đều miễn phí!
3. Raspberry Pi có 8 ngõ GPIO: tức là bạn có thể kết nối và điều khiển các thiết bị trong
cuộc sống thực tế như đèn, động cơ, GPS… Rất nhiều ứng dụng nhà thông minh đã sử
dụng Raspberry Pi làm bộ điều khiển trung tâm.
4. Raspberry Pi có kích thước tí hon: chỉ tương đương một chiếc thẻ ATM và nặng chưa
đầy 50 gram! Gắn với chiếc tivi, bạn có thể biến thành nó thành một thiết bị giải trí
thông minh trong phòng khách. Gắn với màn hình và bàn phím, chuột, bạn có thể biến
nó thành một chiếc máy tính đúng nghĩa. Nhỏ gọn và tiện lợi.
5. Cộng đồng Raspberry Pi phát triển rất nhanh trên thế giới: hầu hết những thắc mắc
của bạn đều được giải đáp rất nhanh và còn hơn thế nữa: bạn có thể tìm thấy hàng
ngàn dự án đã thực hiện và vô số ý tưởng độc đáo.

Với nhưng ưu điểm độc đáo trên, Raspberry Pi đã vượt ra khỏi biên giới của trường
học và trở thành thiết bị ưa thích của rất nhiều người đam mê điện tử và lập trình. Sự
thành công của nó đã mở ra một bước phát triển mới cho tin học: đem máy tính và cảm
hứng lập trình đến gần mọi người hơn bao giờ hết.
Raspberry Pi có gì?
Thiết kế phần cứng thông minh của Raspberry Pi là một trong những lý do khiến nó trở
nên phổ biến. Hãy xem qua Raspberry Pi có gì:

2


1. Trái tim của Pi là
à chip SOC (System-On-Chip)
(System
Broadcom BCM2835 chạy
ạy ở tốc độ
700mHz. Chip này tương đương với
v nhiều loại được
ợc sử dụng trong smartphone phổ
thông hiện nay, và có thể
ể chạy được
đ
hệ điều hành Linux. Tích hợp trên
ên chip này là
nhân đồ họa (GPU) Broadcom VideoCore IV. GPU này đủ
ủ mạnh để có thể ch
chơi 1 số
game phổ thông và
à phát video chuẩn
chu full HD.

2. 8 ngõ GPIO (General Purpose Input Output): đúng như tên gọi
gọi của nó, từ đây bạn có
thể kết nối và điều
ều khiển rất nhiều thiết bị điện tử/cơ
tử/c khí khác.
3. Ngõ HDMI: dùng để
ể kết nối Pi với màn
m hình máy tính hay tivi có hỗ
ỗ trợ cổng HDMI.
4. Ngõ RCA Video (analog): khi thiết
thi kế Pi người ta cũng tính đến trường
ờng hợp ng
người sử
dụng ở các nước
ớc đang phát triển không có điều kiện sắm một chiếc tivi đời mới tíc
tích
hợp cổng HDMI. Vì vậy
ậy cổng video analog này
n được thêm vào, giúp bạn
ạn có thể kết nối
với chiếc tivi đời cũ mà
à không phải
ph lo lắng.
5. Ngõ audio 3.5mm: kết
ết nối dễ dàng
d
với loa ngoài hay headphone. Đối
ối với tivi có cổng
HDMI, ngõ âm thanh được
ợc tích hợp theo đường tín hiệu HDMI nên

ên không ccần sử dụng
ngõ audio này.
6. Cổng USB: một
ột điểm mạnh nữa của Pi là
l tích hợp
ợp 2 cổng USB 2.0. Bạn có thể kết nối
với bàn phím, chuột
ột hay webcam, bộ thu GPS..v.v qua đó có thể mở rộng phạm vi ứng
3


dụng. Vì Pi chạy Linux nên hầu hết thiết bị chỉ cần cắm-và-chạy (Plug-n-Play) mà không
cần cài driver phức tạp.
7. Cổng Ethernet: cho phép kết nối Internet dễ dàng. Cắm dây mạng vào Pi, kết nối với
màn hình máy tính hay tivi và bàn phím, chuột là bạn có thể lướt web dễ dàng!
8. Khe cắm thẻ SD: Pi không tích hợp ổ cứng. Thay vào đó nó dùng thẻ SD để lưu trữ
dữ liệu. Toàn bộ hệ điều hành Linux sẽ hoạt động trên thẻ SD này vì vậy nó cần kích
thước thẻ nhớ tối thiểu 4 GB và dung lượng hỗ trợ tối đa là 32 GB.
9. Đèn LED: trên Pi có 5 đèn LED để hiển thị tình trạng hoạt động.
10. Jack nguồn micro USB 5V, tối thiểu 700mA: nhờ thiết kế này mà bạn có thể tận dụng
hầu hết các sạc điện thoại di động trên thị trường để cấp nguồn điện cho Pi.
Linux căn bản trên Raspberry Pi
Nhắc đến Linux là người ta nhắc đến sự tự do. Khác với Windows hay MacOS, mã nguồn
mở của Linux cho phép người dùng có thể tiếp cận và tùy chỉnh toàn bộ mã nguồn tùy
theo ý muốn, hoàn toàn miễn phí. Chính vì vậy Linux được chọn để sử dụng làm hệ điều
hành cho Raspberry Pi.
Dựa trên nền tảng Linux, nhiều bản phân phối (distribution) khác nhau được phát triển
như Debian, Ubuntu, Fedora. Một trong số đó, Debian, được chỉnh sửa để hoạt động tối
ưu trên Pi và được gọi là Raspbian (=Raspberry+Debian). Raspbian cũng là hệ điều hành
được phát triển chính thức cho Pi. Hiện nay phiên bản Raspbian mới nhất là Raspbian

Wheezy.
Linux hoạt động trên 2 môi trường chính: môi trường Desktop (giống như Windows) và
môi trường Terminal sử dụng command line (giống như DOS). Trước đây Linux hầu như
chỉ hoạt động trên Terminal gây khó khăn cho người đã quen sử dụng Windows nhưng
gần đây Linux đã chú ý phát triển giao diện đồ họa đẹp mắt không kém gì Windows 8 hay
MAC. Trên Raspberry Pi được cài đặt sẵn giao diện LXDE (Light X11 Desktop
Environment) là một môi trường đồ họa không ngốn nhiều tài nguyên, không đẹp long
lanh nhưng vừa đủ để sử dụng.
Để làm quen với Linux thì các bạn cần biết một số thuật ngữ cơ bản thường được sử dụng
sau:










Command line: là câu lệnh thực hiện một chức năng nào đó trong Linux
Shell: là nơi nhận command line, gửi đến kernel để tính toán và nhận kết quả trả
về từ kernel
Distribution: là bản phân phối của Linux. Thí dụ như Ubuntu, Debian, Fedora,
ArchLinux…
Package: chứa nhiều files và folder để cài chương trình, tương tự như phần mềm
của Windows.
Super user: tương đương với admin
Root = super user
Directory: tương đương với folder ở Windows

GNU: tên của dự án phần mềm miễn phí, rất nhiều phần mềm của GNU được cài
đặt cho Linux
Bootloader: phần mềm chịu trách nhiệm load kernel của Linux khi khởi động.

4


20 command line cần biết trên Linux
Command line rất quan trọng trong Linux vì sử dụng command line người dùng mới có
thể can thiệp sâu vào hệ thống. Ngoài ra mặc dù Linux không yêu cầu cấu hình phần cứng
cao như Windows và LXDE cung cấp hầu hết chức năng cơ bản của hệ điều hành, để thao
tác nhanh và tận dụng hết sức mạnh của Pi thì sử dụng command line trên Terminal là
rất cần thiết vì hệ thống không phải tốn tài nguyên cho giao diện đồ họa.
Sau đây là 20 command line cần biết khi sử dụng Linux. Tuy nhiên các bạn không
cần học thuộc lòng ngay một lúc mà hãy coi như đây là sổ tay các lệnh cần thiết để tra cứu
mỗi khi gặp phải.
man – manual guide. Hướng dẫn. Ví dụ bạn không biết lệnh cd là gì thì hãy gõ man cd
startx – start x environment. Khởi động môi trường desktop X.
ls – listing. Liệt kê tất cả file và folder hiện có trong thư mục
cd – change directory. Chuyển sang thư mục khác
mkdir – make directory. Giống như tạo New Folder trong Windows vậy
rmdir – remove directory. Giống như lệnh delete trong Windows.
mv – move. Di chuyển file hay folder.
rm – remove. Tương đương với delete.
pwd – print working folder. In đường dẫn đầy đủ của thư mục hiện hành.
nano – open Nano text editor. Mở trình soạn thảo văn bản Nano, giống như Notepad ở
Windows.
sudo shutdown -h now Shutdown
sudo reboot Khởi động (restart) lại máy tính
sudo apt-get install Cài đặt phần mềm (package) mới

sudo apt-get remove Gỡ bỏ (uninstall) package
sudo apt-get purge Uninstall hoàn toàn. Kể cả những settings và log.
sudo apt-get update Cập nhật danh sách package mới nhất
sudo apt-get upgrade Nâng cấp tất cả package hiện có trong máy lên phiên bản mới nhất
sudo apt-get autoclean Gỡ bỏ những file setting hay log không sử dụng
sudo apt-get autoremove Dọn dẹp những package không dùng đến
sudo apt-cache search Tìm kiếm 1 package đã được cài đặt hay chưa
Nhóm lệnh thứ 2 liên quan đến những thao tác quan trọng trong hệ thống nên Linux yêu
cầu người sử dụng phải làsuperuser (root) thì mới được thực hiện. Do đó ta phải thêm
từ sudo (=superuser do) trước câu lệnh. Nếu không thêm sudo thì Linux sẽ từ chối thực
hiện và kèm theo giải thích.
Tips: gõ trên command line nghe có vẻ dài dòng so với click chuột trên desktop nhưng
thực ra bạn có thể thao tác rất nhanh bằng cách nhấn phím Tab để Linux auto-complete
câu lệnh của bạn. Ví dụ như muốn tắt máy thì chỉ cần gõ su nhấn Tab, Linux sẽ auto-

5


complete thành sudo rồi gõ shu nhấn Tab sẽ được shutdown. Sử dụng vài lần bạn sẽ thấy
command line không khó như bạn tưởng đâu.
Raspberry Pi căn bản
Cài đặt hệ điều hành cho Raspberry Pi
Sau bài giới thiệu Raspberry Pi và cấu tạo của nó đã có bạn nhắn hỏi mình cách thực hành
với Pi. Khác với vi điều khiển có thể chạy ngay sau khi load chương trình điều khiển, Pi
cần có hệ điều hành để hoạt động. Đây cũng là ưu điểm của Pi vì nó cho phép người
tận dụng rất nhiều phần mềm và thiết bị ngoại vi để lập trình ứng dụng phức tạp một
cách nhanh chóng. Ở bài viết này mình sẽ hướng dẫn các bạn cài đặt hệ điều hành cho
Raspberry Pi một cách đơn giản bằng NOOBS.
NOOBS (New Out Of Box Software) là gói hệ điều hành của Raspberry Pi hỗ trợ cài đặt
nhanh. NOOBS chứa nhiều bản hệ điều hành khác nhau cho phép người dùng lựa

chọn trong lúc cài đặt. Ở đây mình khuyên dùng bản Raspbian, cũng là hệ điều hành
được hỗ trợ chính thức của Raspberry Pi. Cách cài đặt như sau:
Chuẩn bị phần cứng:
1. Raspberry Pi model B (khuyên dùng vì có thêm 1 cổng USB và có cổng Ethernet)
2. Sạc điện thoại microUSB 5V tối thiểu 700mA. Thông số thường ghi trên thân sạc.
3. Thẻ nhớ: tối thiểu 4 GB. Tốt nhất là 8 GB hoặc hơn, tốc độ từ class 6 trở lên.
4. Bàn phím, chuột sử dụng cổng USB. Nếu có loại tích hợp 2-trong-1 thì càng tốt, tiết
kiệm được 1 cổng USB như hình minh họa.
Chuẩn bị phần mềm:
1. Download phần mềm SD Formatter tại đây (click I Agree ở cuối trang) rồi cài đặt bình
thường.
2. Download hệ điều hành cho Raspberry Pi tại đây rồi giải nén.

6


Kết nối Raspberry Pi
Thực hiện:
1. Format thẻ SD: gắn thẻ SD vào máy tính. Khởi động SD Formatter, chọn đúng thẻ ở
phần Drive. Click Option, ở mục Format Size Adjustment chọn ON. Sau cùng, click
Format.
2. Giải nén toàn bộ file NOOBS_v1_2_1.zip vào thẻ SD. Sau đó lấy thẻ ra gắn vào
Raspberry Pi.
3. Kết nối Raspberry Pi với bàn phím, chuột, cáp internet, dây nối màn hình (HDMI hoặc
RCA Video). Nếu muốn nối Pi với màn hình máy tính sử dụng cổng VGA thì có thể
mua cáp chuyển HDMI->VGA. Kiểm tra kĩ một lượt trước khi cắm nguồn.
4. Cắm nguồn. Lúc này Pi sẽ tự khởi động hệ điều hành.
Lưu ý: Raspberry Pi sẽ mặc định hiển thị qua ngõ HDMI nên nếu bạn sử dụng ngõ
RCA Video thì sẽ không thấy hình. Muốn hiển thị đúng, bạn chọn 1 trong các phím sau
trên bàn phím:

 phím 1: HDMI mode
 phím 2: HDMI safe mode
 phím 3: composite PAL mode (analog)
 phím 4: composite NTSC mode (analog)
Mình đang dùng HDMI nên không gặp vấn đề gì về hiển thị, cắm là chạy thôi. Vậy nếu
bạn sử dụng ngõ RCA video thì thử nhấn phím 3 hoặc 4 nha.
5. Pi sẽ tiến hành cài đặt hệ điều hành. Trong quá trình này sẽ có nhiều lựa chọn nhưng tốt
nhất là bạn chọn hệ điều hành mặc định là Raspbian wheezy. Đây là hệ điều hành
Linuxđược tối ưu để hoạt động trên Pi.

7


6. Cài đặt xong Pi sẽ hỏi bạn login và password. Mặc định login là pi và password là
raspberry
7. Xong! Chúc mừng bạn đã cài đặt và khởi động Raspberry thành công!
Lưu ý: Nếu bạn có chút thất vọng vì màn hình màu đen buồn tẻ (Linux gọi là command
line) thì hãy gõ startx rồi Enter!
Một màn hình quen thuộc phải không? Không như Windows hay Mac luôn khởi động
thẳng vào môi trường desktop quen thuộc mà bạn sử dụng hàng ngày, Linux có 2 tùy
chọn để làm việc: môi trường Terminal sử dụng command line (giống như DOS ở
Windows) và môi trường desktop. Cả hai đều có mục đích sử dụng riêng mà mình sẽ
trình bày sau. Còn bây giờ để không phải bỡ ngỡ thì mình làm việc với môi trường
desktop trước.

Môi trường desktop của Raspberry Pi
Chúc các bạn thành công! Ở bài sau mình sẽ hướng dẫn thực hành ứng dụng đầu tiên
vớiRaspberry Pi: bật tắt LED.

Thực hành Raspberry Pi: bật tắt LED

Chuẩn bị:
 Raspberry Pi
 1 LED, 1 điện trở 1K và vài dây nối.
Kết nối Raspberry Pi với LED: khi kết nối nhớ chú ý sơ đồ chân GPIO của Pi như sau

8


Sơ đồ chân GPIO của Raspberry Pi
Các ngõ GPIO được đánh dấu màu xanh lá cây. Lưu ý là các ngõ này chỉ hoạt động ở mức logic
0V và 3V3. Tuyệt đối không kết nối với nguồn 5V.
Để thực hiện mình sẽ viết một chương trình nhỏ bằng ngôn ngữ Python. Python cũng như C hay
Java, là ngôn ngữ lập trình rất mạnh và hỗ trợ phong phú thư viện giúp cho việc lập trình hiệu trở
nên đơn giản và hiệu quả. Python được cài đặt sẵn trên Raspberry Pi. Ở những bài viết đầu tiên
mình sẽ cố gắng giới thiệu kĩ để các bạn beginners dễ hiểu. Sau này khi các bạn thành thạo mình
sẽ cô đọng vào nội dung chính.
Viết chương trình bật tắt LED bằng Python:





Bước 1: Để mở Python: từ màn hình desktop bạn double click vào icon IDLE3 hoặc
chọn Start – Programming – IDLE 3. Một cửa sổ Python Shell hiện lên: đây sẽ là nơi
hiển thị các kết quả tính toán của chương trình.
Bước 2: Để bắt đầu viết code: từ Python Shell chọn File – New Window hoặc Ctrl+N.
Một cửa sổ mới sẽ hiện lên và đây là nơi bạn viết chương trình.
Bước 3: Viết code. Dưới đây là chương trình mẫu thực hiện chớp tắt 1 đèn LED tại
chân số 22. Sau khi viết xong các bạn save vào /home/pi và đặt tên là blinkLED.py
1 # Blinking an LED

2 # By Chinh Nguyen
3
# import
4 import RPi.GPIO as GPIO
RPi.GPIO library and use with new name
9


5 GPIO
6 import time
# import
time library
7
GPIO.setmode(GPIO.BCM)
8
GPIO.setup(22, GPIO.OUT)
9
while True:
10
GPIO.output(22, GPIO.HIGH)
11
time.sleep(1)
12
GPIO.output(22, GPIO.LOW)
time.sleep(1)




Giải thích:

Rất đơn giản đúng không? Chương trình trên sử dụng một vòng lặp While thực hiên các
việc sau: cấp điện cho chân 22 (nối với đèn LED) làm đèn sáng, giữ trạng thái đó trong
1 giây, ngắt điện chân 22 làm đèn tắt, giữ trạng thái 1 giây. Rồi lặp lại.
 Để truy cập ngõ GPIO thì Python cần có thư viện RPi.GPIO. Thư viện này hỗ
trợ các lệnh cần thiết để điều khiển các chân GPIO. Ngoài ra Python cần có thư
viện time để thực hiện lệnh time.sleep(1): giữ nguyên tất cả trạng thái trong
vòng 1 giây. Đó là lý do của 2 dòng lệnh đầu tiên.
 Dòng lệnh thứ 3 và thứ 4 có tác dụng thiết lập chân 22 thành ngõ điều khiển
(output) để bật tắt LED. Trong ví dụ khác mình sẽ dùng chân 22 để theo dõi
một nút nhấn, lúc đó ta phải thiết lập chân này thành ngõ vào (input).
Qui ước khoảng trắng: tất cả 4 dòng lệnh nằm dưới vòng lặp While đều phải thụt vô 4
khoảng trắng (hoặc nhấn phím Tab 1 lần) so với chữ While. Khác với C, Python không
dùng cặp dấu {…} mà lại dùng 4 khoảng trắng để đánh dấu chương trình con. Điều này
làm chương trình nhìn thoáng hơn nhưng nếu không quen thì có thể dẫn đến lỗi. May
mắn là chương trình IDLE sẽ tự động làm việc này nhưng nếu bạn chỉnh sửa gì đó thì
hãy chú ý.
Ký hiệu # là comment (chú thích). Bạn có thể đặt chú thích tùy ý để giải thích hay ghi
chú cho chương trình. Thường xuyên comment là một thói quen rất cần thiết của người
lập trình. Khi cần xem lại một chương trình mình đã viết, comment giúp gợi nhớ rất
nhanh ý tưởng lập trình mà không cần đọc từng dòng code. Ngoài ra nó còn giúp người
khác dễ hiểu hơn, dễ sửa lỗi hơn.
Bước 4: Chương trình trên chưa thể chạy liền được vì thư viện RPi.GPIO chưa có sẵn
trong Raspberry Pi mà ta phải download về.
Mở LXTerminal hoặc chọn Start – Accessories – LXTerminal. LXTerminal tương tự
như command line mà bạn từng thấy. Gõ vào như sau (phần viết đậm)

10







sudo apt-get update (rồi Enter)
sudo apt-get install python-rpi.gpio (Enter)
Cuối cùng: CHẠY! Ở LXTerminal, gõ:
sudo python /home/pi/blinkLED.py
rồi nín thở quan sát!

Chúc các bạn thành công! Mình sẽ rất vui nếu các bạn chia sẻ kết quả ở đây

Viết ứng dụng gửi email với Raspberry Pi
Sau khi cài đặt hệ điều hành thì các bạn có thể viết rất nhiều ứng dụng từ dễ đến khó trên
Raspberry Pi. Ở bài này mình sẽ hướng dẫn các bạn viết ứng dụng gửi email bằng
ngôn ngữ Python.
Các dịch vụ email phổ biến như Gmail, Yahoo! Mail đều cho phép người dùng truy cập
và gửi email từ một ứng dụng khác. Ở đây ta sẽ tự tay viết ứng dụng đó bằng Python:
1 # Import smtplib for the actual sending function
2 import smtplib
3
4 # Import the email modules we will need
5 from email.mime.text import MIMEText
6
7 # Open a plain text file for reading. For this
8 example, assume that
9 # the text file contains only ASCII characters
10 fp =
11 open('/home/pi/My_python/Text_files/first_email.txt')
12 msg = MIMEText(fp.read())
13 fp.close()

14
15 from_addr = ""
16 pw = "sender-password"
17 to_addr = ""
18
19 msg['Subject'] = 'Hello from Pi!'
20 msg['From'] = from_addr
21 msg['To'] = to_addr
22
23 # Send the message via our own SMTP server, but don't
24 include the
25 # envelope header
26 server = smtplib.SMTP('smtp.gmail.com', 587)
27
28 server.set_debuglevel(1)
29 server.ehlo()
11


30 server.starttls()
31
server.login(from_addr, pw)
server.send_message(msg)
server.quit()
Giải thích:
Để gửi Gmail thì Python cần phải đóng vai trò như một Gmail server và thực hiện gửi
mail thông qua giao thức SMTP (Simple Mail Transfer Protocol). Để xác nhận tài khoản
email ta phải khai báo gồm địa chỉ email, password, SMTP server (stmp.gmail.com) và
cuối cùng là port (465 hoặc 587).
 Dòng 1: import thư viện SMTP.

 Dòng 25+26: khởi tạo server.
 Dòng 27: đặt kết nối SMTP vào TLS (Transport Layer Security) nhằm mã hóa dữ liệu,
đảm bảo tính bảo mật
Và đây là thành quả:

Email: Hello from Pi!

12


PS: nhân tiện nói luôn về phần nhận email từ phần mềm hoặc điện thoại di động: có 2
giao thức phổ biến là IMAP (Internet Message Access Protocol) và POP (Post Office
Protocol). Điểm khác biệt là IMAP cho phép đồng bộ 2 chiều giữa Gmail trên web và
phần mềm email, thí dụ như bạn tạo một folder ABC trên điện thoại thì nó sẽ lập tức
xuất hiện trên web. Ngoài ra IMAP cũng hoạt động ổn định hơn POP và do đó được
Gmail khuyên dùng. Muốn sử dụng IMAP thì bạn cũng phải khai báo username,
password và một số thông số mặc định khác.

Thực hành: Dự báo thời tiết bằng Raspberry Pi
Để thực hiện dự báo thời tiết bằng Raspberry Pi, bạn cần chuẩn bị phần cứng như sau: 1
Raspberry Pi kết nối Internet. Hết. Con người thường lên Internet tra cứu dự báo thời
tiết và Pi cũng sẽ làm tương tự. Điều khác biệt là Pi không như con người có thể tự mở
Internet Explorer lên và gõ www.weather.com rồi nhập tên thành phố và đọc kết quả
trên màn hình. Các dịch vụ trên Internet trao đổi thông tin với phần mềm máy tính thông
qua một hình thức khác là API (Application Programming Interface).
API cho phép Pi gửi một yêu cầu (request) đến server và nhận kết quả (get response).
Kết quả nhận được thường ở dưới một format nhất định, thường là JSON và XML. Pi sẽ
đọc file này và dữ liệu cần tìm. Ưu điểm của API là giúp developer có thể tận dụng sức
mạnh của các dịch vụ có sẵn. Bù lại, bạn phải có kết nối Internet.
Bài viết này sẽ hướng dẫn ví dụ thao tác với API của Weather Underground. Các API

khác bạn có thể làm tương tự.
1. Đăng kí: thông thường các trang web yêu cầu phải đăng kí trước khi sử dụng API.
Đăng kí miễn phí Sau khi đăng
kí bạn sẽ nhận được một Key để thực hiện request.
2. JSON format:
Như đã đề cập, đây là một format của dữ liệu được trả về Pi. Muốn lấy được dữ liệu
cần thiết thì bạn phải đọc tài liệu hướng dẫn (documentation) được viết rõ trên website.
Ví dụ như muốn xem dự báo thời tiết thì click vào feature forecast
( , kéo chuột xuống
cuối trang xem ví dụ. Chẳng hạn như đây là đoạn đầu tiên một file .JSON nhận được
khi request dự báo thời tiết ở California, San Francisco:
{
1
"response": {
2
"version": "0.1",
3
"termsofService":
4
" />5
"features": {

13


6

"forecast": 1

7


}

8

},

9

"forecast": {

10

"txt_forecast": {

11

"date": "2:00 PM PDT",

12

"forecastday": [{

13

"period": 0,

14

"icon": "partlycloudy",


15

"icon_url": " />
16
"title": "Tuesday",
17
"fcttext": "Partly cloudy in the morning, then clear.
18 High of 68F. Breezy. Winds from the West at 10 to 25 mph.",
19

"fcttext_metric": "Partly cloudy in the morning, then
20 clear. High of 20C. Windy. Winds from the West at 20 to 35
km/h.",
21
"pop": "0"
22
}, {
23
"period": 1,
24
"icon": "partlycloudy",
25
"icon_url": "http://icons26 ak.wxug.com/i/c/k/partlycloudy.gif",
27
28

"title": "Tuesday Night",
"fcttext": "Mostly cloudy. Fog overnight. Low of 50F.
Winds from the WSW at 5 to 15 mph.",

"fcttext_metric": "Mostly cloudy. Fog overnight. Low of

14


10C. Breezy. Winds from the WSW at 10 to 20 km/h.",
"pop": "0"
}
3. Lập trình Python:
Như vậy muốn lấy kết quả dự báo thời tiết bạn phải trích dữ liệu của fcttext_metric nằm
trong phần forecast/txt_forecast/forecastday/ đầu tiên. Ví dụ với thành phố New York
như sau:
import requests
1
2 key = 'your-API-key'

#replace your API key here

3 ApiUrl = ' + key +
'/forecast/q/NY/New_York.json'
4
5
6
7
8
9

r = requests.get(ApiUrl, timeout=1)
forecast = r.json
format


# since this api response in JSON

print r.status_code
print r.headers

1
print
0
forecast['forecast']['txt_forecast']['forecastday'][0]['fcttex
t_metric'] #extract data from JSON
Lưu ý:
 Nhớ thay your-API-key bằng key của bạn.
 Đoạn code trên sử dụng thư viện (library) Request cho Python. Library Request cung
cấp nhiều function hay và dễ sử dụng trên Python để giao tiếp với API. Bạn phải cài đặt
Request trước khi chạy chương trình. Cách cài đặt rất đơn giản, trên LXTerminal gõ
như sau:
1 sudo pip install requests
Lưu chương trình với tên text-forecast.py trong thư mục My_python rồi chạy bằng cách
mở LXTerminal gõ như sau:
15


1

sudo python /home/pi/My_python/textforecast.py

Sử dụng Webcam, truyền hình ảnh lên web với SimpleCV
*Test webcam
Nếu bạn đang chuẩn bị mua một chiếc webcam để sử dụng cho Raspberry Pi thì trước

hết bạn nên tham khảo danh sách này, cộng đồng người dùng Pi thế giới đã test và
đưa ra đánh giá về nhiều loại webcam cho bạn tham khảo.
Webcam list
Để test webcam bạn cài luvcview, đây là phần mềm hỗ trợ tốt nhất cho GPU của
Raspberry Pi:
pi@raspberrypi ~ $ sudo apt-get install luvcview
Sau khi cài đặt xong:
pi@raspberrypi ~ $ luvcview -s 320x240
Kích thước video 320×240 là do bạn tùy chỉnh, bạn có thể thay bằng 640×480 chẳng
hạn.
*Sử dụng SimpleCV
Trước khi cài SimpleCV cho Python, cần cài một thư viện khác mà SimpleCV phụ thuộc
vào:
pi@raspberrypi ~ $ sudo apt-get install python-opencv python-scipy
python-numpy python-pip
Việc cài đặt trên sẽ mất một chút thời gian bởi đó là thư viện khá lớn. Tiếp theo là cài
đặt SimpleCV với lệnh sau:
pi@raspberrypi ~ $ sudo pip install
/>Kiểm tra kết quả bằng cách import SimpleCV, nếu không có lỗi có nghĩa là việc cài đặt
đã thành công:
pi@raspberrypi ~ $ python
>>> import SimpleCV
Các ứng dụng với SimpleCV bạn có thể tham khảo trong tài liệu Practical Computer
Vision with SimpleCV của Kurt Demaagd. Sau đây mình chỉ xây dựng 1 ứng dụng thiết
thực nhưng ít được đề cập trong các tài liệu đó là “Truyền hình ảnh thu được từ video
lên web”:
1 # import các module cần dùng
2 from SimpleCV import Camera, JpegStreamer, Image
3 import time
4 from time import sleep

5
16


6 c = Camera(0, {"width": 320, "height": 240})
# Thiết
7 lập khung hình camera
8 js = JpegStreamer("192.168.0.103:8080")
# Địa chỉ IP
9 của Rasberry của bạn có thể khác, port 8080 do bạn tùy
10 chọn
11 while(True):
# Vòng lặp truyền 10
hình/s
img = c.getImage()
img.save(js)
sleep(0.1)
Sau khi chạy chương trình, bạn dùng một máy tính khác trong mạng và truy cập vào địa
chỉ 192.168.0.103:8080.
Chúc các bạn thành công!
Gõ tiếng Việt trên Raspberry Pi
Từ khi viết về Raspberry Pi mình bắt đầu có nhu cầu gõ tiếng Việt trên Pi để trực tiếp
soạn thảo nội dung lẫn cắt dán code và hình ảnh minh họa. Do đó tìm kiếm một bộ gõ
tiếng Việt là nhu cầu hết sức bức xúc trong những ngày qua
Trên Linux thì IBus (Intelligent Input Bus for Linux/Unix OS) là bộ gõ chính thức được
cài sẵn trên các phiên bản hệ điều hành gần đây. Để gõ tiếng Việt trên IBus thì bạn cần
cài đặt thêm gói IBus-unikey. Trên Raspberry Pi không được cài đặt sẵn IBus lẫn IBusunikey nhưng thao tác thực hiện rất đơn giản.
Cách cài đặt bộ gõ tiếng Việt IBus-unikey:
1 sudo apt-get update
2 sudo apt-get install ibus-unikey

Bạn có thể thấy ta chỉ cần cài ibus-unikey vì hệ thống sẽ tự động kiểm tra và cài đặt
những phần mềm cần thiết khác để ibus-unikey hoạt động (trong trường hợp này là
ibus). Sau khi cài đặt xong bạn sẽ thấy biểu tượng IBus ở góc dưới bên phải màn hình.
Chọn Preference:

17






IBus-unikey trên Raspberry Pi
Ở tab General nhớ chú ý tick vào ô Embed pre-edit text in application window. Nếu
không thì khi gõ tiếng Việt sẽ hiện ra thêm 1 cửa sổ nhỏ rất khó chịu.
Ở tab Input Method: click Select an input method chọn Vietnamese-Unikey rồi Add vào.
Ở tab Advanced nhớ tick vào cả 2 options.

Một số lưu ý:
Để chuyển đổi qua lại giữa gõ tiếng Việt và tiếng Anh: nhấn Ctrl-Space.
Bộ gõ sẽ mặc định sử dụng kiểu gõ Telex và bảng mã Unicode. Bạn có thể thay đổi
trong menu của IBus-Unikey.
Các options còn lại các bạn tự khám phá nhe! Chúc các bạn gõ tiếng Việt thành thạo
trên Raspberry Pi



Thiết lập USB Wifi cho Raspberry Pi
Một số bạn sử dụng usb wifi cắm vào Raspberry lập tức bị reset, đó là do usb wifi rút
dòng lớn quá mà port usb của Ras Pi thì cấp không đủ thế nên bạn phải dùng thêm hub

usb có nguồn riêng. Tuy nhiên vẫn có một số usb cắm trực tiếp vào Pi thì ok, không sao
hết, do nó sử dụng loại chip rút dòng ít. Nếu bạn chuẩn bị mua thì có thể tham khảo
18


trong danh sách này:
USB Wifi list
Bước 1: Truy cập vào file interfaces:
sudo nano /etc/network/interfaces
Bước 2: Sửa file interfaces trở thành như sau:
auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
auto wlan0
iface wlan0 inet dhcp
wpa-ssid “tên wifi”
wpa-psk “password”
Bước 3: Nếu wifi bạn là wifi ẩn:
auto lo
iface lo inet loopback
iface eth0 inet dhcp
auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-scan-ssid 1
wpa-ap-scan 1
wpa-key-mgmt WPA-PSK
wpa-proto RSN WPA
wpa-pairwise CCMP TKIP

wpa-group CCMP TKIP
wpa-ssid “tên wifi”
wpa-psk “password”
iface default inet dhcp
Bước 4: Thế là xong phần thiết lập cho usb wifi, nhưng mà chưa xong đâu bạn ^^, có
những loại usb wifi nó lại có chế độ saving power, thành ra nhiều bạn đang truy cập vào
Pi bằng putty thông qua wifi thì bị mất kết nối do usb wifi nó “sleep”, vậy nên bạn làm
thêm mấy bước sau cho chắc ăn nhé:
4a. Tạo file dùng lệnh như sau:
sudo nano /etc/modprobe.d/8192cu.conf
4b. Điền dòng sau vào file vừa tạo và save lại:
options 8192cu rtw_power_mgnt=0 rtw_enusbss=0
4c. Truy cập vào crontab:
sudo crontab -e
19


4d. Điền dòng sau vào và save lại,thay 192.168.0.1 bằng IP của Router của bạn:
*/1 * * * * ping -c 1 192.168.0.1
Bước 5 Xong xuôi, reboot và cắm usb wifi vào

Điều khiển Raspberry Pi từ xa bằng máy tính
Trong nhiều ứng dụng có không gian hạn chế chẳng hạn như dùng Raspberry Pi để điều khiển cửa tự
động thì người ta thường không muốn kết nối rườm rà màn hình, bàn phím, chuột lên Pi mà vẫn có thể
khiển được nó. Khi đó ta có thể sử dụng 2 công nghệ phổ biến để điều khiển Raspberry Pi từ xa bằng
một máy tính khác là SSH và VNC. Mỗi công nghệ có đặc điểm riêng phù hợp với từng ứng dụng mà
mình sẽ trình bày sau đây.
Yêu cầu chung: phải biết địa chỉ IP của thiết bị được điều khiển. Trong trường hợp này ta cần biết địa chỉ
IP của Pi bằng cách gõ từ LXTerminal ta gõ command line sau:
1 sudo ifconfig


ifconfig screenshot

Ở phần eth0, inet addr chính là địa chỉ IP. Trong hình minh họa trên, địa chỉ IP chính là 192.168.1.9. Mình
sẽ sử dụng địa chỉ này làm ví dụ trong bài viết nhưng nhớ là địa chỉ IP của bạn có thể khác. Lưu ý: đây là
địa chỉ IP động nên có thể thay đổi sau mỗi lần restart Pi.

1. Điều khiển Raspberry Pi bằng SSH:
SSH là viết tắt của Secure Shell, là một phương thức trao đổi dữ liệu an toàn và đơn giản. Để sử dụng
SSH ta phải cài đặt trên cả Pi lẫn máy tính.

20


1.1 Cài đặt SSH server trên Raspberry Pi
Điều duy nhất bạn cần làm là activate SSH server ở menu Rasp-config bằng cách gõ ở LXTerminal:
1 sudo raspi-config

Lúc này màn hình Raspi-config sẽ hiện ra cho phép tùy chỉnh nhiều thông số hệ thống của Pi. Chọn mục
Advance Options – SSH – Enable rồi OK.

Giao diện raspi-config

1.2 Cài đặt SSH client trên máy tính Windows:
Download phần mềm PuTTY tại đây và chạy không cần cài đặt.
Trên giao diện của PuTTY bạn chỉ cần nhập địa chỉ IP của Pi vào rồi click Open. Pi sẽ yêu cầu xác nhận
username và password của Pi (mặc định là pi và raspberry). Nếu thành công thì máy tính sẽ xác nhận và
hiển thị màn hình command line của Pi. Lúc này bạn có thể điều khiển Pi bằng command line thoải mái:

21



Giao diện PuTTY trên máy tính

22


Màn hình điều khiển Raspberry Pi bằng SSH

Như bạn đã thấy,
ấy, điều khiển Pi bằng SSH khá đơn
đ giản. SSH sử dụng rất ít tài
ài nguyên máy ccủa Pi do
không phải chạy phần đồ họa vì vậy
ậy thích hợp cho các ứng dụng cần nhiều tài
ài nguyên tính toán.Tuy
nhiên nhược điểm của SSH là chỉỉ cho phép bạn truy cập vào
v môi trường
ờng command line. Trong tr
trường
hợp
ợp cần điều khiển desktop của Pi thì
th VNC (Virtual Network Computing) là một
ột giải pháp tốt.

2. Điều khiển Raspberry Pi bằ
ằng VNC:
VNC là công nghệ
ệ cho phép máy tính truy cập vào
v môi trường desktop lẫn bàn

àn phím và chu
chuột của một
máy tính khác. Để sử dụng VNC thìì ta cần
c cài đặt VNC server lên máy tính được
ợc điều khiển, vvà VNC
client lên máy tính điều
ều khiển. Trong trường
tr
hợp này ta muốn điều khiển Pi từ xa thìì ta cài VNC server
lên Pi.

2.1 Cài đặtt VNC server trên Raspberry Pi:
Có nhiều
ều phần mềm có chức năng làm
l
VNC server trong đó tốt nhất là sử
ử dụng TightVNCserver. Cách
thức cài đặt và mở
ở TightVNCserver trên
tr LXTerminal như sau:
1 sudo apt-get install tightvncserver
2 tightvncserver

23


Khi chạy VNC lần đầu thì nó sẽ yêu
êu cầu
c bạn tạo một password truy cập. Đây cũng là
à password mà b

bạn
sẽ được hỏi khi muốn truy cập vào
ào Pi nhằm
nh
tránh tình trạng truy cập trái phép. Ngoài
ài ra TightVNC còn
cho phép bạn
ạn đặt password dạng view-only
view
tức là chỉ cho phép bạn thấy màn hình nhưng
ưng không đi
điều
khiển được bàn phím hay chuột,
ột, rất hữu dụng trong trường
tr
hợp muốn chia sẻ màn
àn hình khi thuy
thuyết trình
chẳng hạn.
Sau khi đặt password thìì TightVNC sẽ
s tạo một màn hình ảo của Pi để máy tính khác truy cập vvào. Muốn
truy cập màn hình này bạn
ạn cần có password xác nhận ở trên,
tr
địa chỉ IP của Pi và cổng
ổng truy cập (port).
Port mặc định của VNC là
à 5900. Như vậy
v muốn truy cập vào màn hình số 1 thì bạn dùng
ùng đ

địa chỉ:
192.168.1.9::5901. Tương tự
ự nếu có một máy tính khác muốn truy cập màn
m hình số
ố 2 th
thì sẽ dùng địa chỉ
192.168.1.9::5902. Lưu ý là màn hình số
s 1 hay số 2 chỉ là màn hình ảo và độc
ộc lập với nhau, ai cũng điều
khiển được nhưng không ai thấy
ấy người
ng
khác đang làm gì.

2.2 Cài đặtt VNC client trên Windows:
Link download TightVNC tại đây. Sau khi cài đặt
đ ta mở VNC client lên bằng
ằng cách click Start – TightVNC –
TightVNC Viewer, rồi nhập địa chỉ truy
ruy cập,
c
click Connect và điền password truy cập.

Giao diện
di TightVNC Viewer trên máy tính

24


Màn hình điều khiển Pi từ máy tính


Ngoài ra phần mềm TightVNC này
ày còn tích hợp
h cả VNC server lẫn client nên có thể
ể sử dụng trong
trường hợp ngược lại: dùng Pi để điều
đi khiển máy tính.

Các link tham khảo
Tạp chí PI : />Diễn đàn PI: />website chính thức : />
25


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×