Hướng tiếp cận với Raspberry Pi bằng python - Cài đặt thư viện và thử hiệu ứng nhấp nháy 1 đèn LED

Mô tả dự án: 

Hôm nay chúng ta sẽ tìm cách nói chuyện với Raspberry Pi bằng ngôn ngữ Python. Thay vì sử dụng ngôn ngữ khác như C++ và NodeJS, sử dụng Python trên Raspberry Pi là một điều cực kỳ tuyệt vời. Bởi vì, python là một ngôn ngữ rất dễ học. Mình cũng đang tự học python và vọc raspberry pi, vì vậy, mình sẽ giúp các bạn khám phá nó. Nào, cùng đi với mình thôi.

Cần chuẩn bị phần cứng

  • Raspberry Pi 2 trở lên (Bạn phải cài hệ điều hành Raspbian, có thể xem hướng dẫn tại các bài viết sau của raspi).
    • http://arduino.vn/bai-viet/688-cai-dat-raspbian-tren-raspberry-pi-he-dieu-hanh-danh-cho-developer-dua-tren-nen-debian
    • hoặc
    • http://arduino.vn/bai-viet/752-cai-dat-raspbian-tren-raspberry-pi-khong-can-man-hinh-va-khong-can-biet-dia-chi-ip
  • Bạn đã đăng nhập vào ssh của Raspberry Pi bằng tài khoản pi hoăc tài khoản root (khuyên nên là root để khỏi bị lỗi lắc nhắc).
  • 1 breadboard
  • Dây breadboard
  • 1 Đèn LED
  • Điện trở 220ohm.
  • Bản phân python hiện giờ có 2 phiên bản là python2.7 (gọi tắc là python2) và python3. Mình khuyên bạn nên chơi với python2 khi mới bắt đầu vì nó ít bug và hiện giờ rất thông dụng!

Sơ đồ chân của Pi2 cho các bạn chưa biết

Nối mạch

Trước khi nối mạch, mình muốn lưu ý với các bạn một điều, Raspberry Pi sử dụng điện thế hoạt động ở các chân GPIO là 3.3V nghĩa là nó chỉ xuất ra 3.3V và đọc ở mức 3.3V. Bạn nào xuất 5V vào Raspberry Pi thì ráng chịu nha. Nói vậy thôi, chứ cẩn thận một tí chứ không thì toi mất cái mạch.

Các bạn nối mạch như hình nhé.

Mình nối cực dương của LED vào GPIO18 và cực âm vào GND.

Chuẩn bị thư viện

Chúng ta sẽ dùng Python (một trong những ngôn ngữ chính thức của Raspberry Pi) để viết chương trình điều khiển khiển các chân GPIO.

Có 2 thư viện hỗ trợ bạn đó là thư viện GPIO Zero và thư viện RPi.GPIO. Cả 2 đều là những thư viện mã nguồn mở và đang được cộng đồng cùng chung tay xây dựng.

Lần lượt mình sẽ hướng dẫn các bạn sử dụng các thư viện này để tiếp cận với Raspberry Pi. Bản thân mình thích dùng RPi.GPIO hơn. Nhưng có thể bạn sẽ lại thích GPIO Zero, vì thế mình sẽ giúp bạn thông cả 2 cái trong bài này.

RPi.GPIO

Lưu ý:

Một lưu ý nhỏ là khi dùng RPi.GPIO, trong chương trình bạn phải có khai báo kiểu đánh số chân GPIO là kiểu BCM hay kiểu BOARD.

Nói gì thì nói, trước tiên ta phải cài thư viện RPi.GPIO phải không nào?

sudo apt-get install python-dev python-rpi.gpio

Sau khi đã cài xong, bạn có thể dùng nano hoăc vi để tạo file test_led.py với nội dung sau:

import RPi.GPIO as GPIO
import time
 
GPIO.setmode(GPIO.BCM)    # chọn kiểu đánh số chân GPIO là BCM. Đánh kiểu BCM là đánh kiểu theo GPIOx với x là tên của chân mà ta dùng, ví dụ ta đánh kiểu BCM thì dùng chân GPIO18 ta sẽ thiết đặt như dưới. Nhưng đánh kiểu board ý là dánh theo thứ tự từ chân 1 đến chân 28 hoặc 40 (tùy bản raspi). Trong ví dụ này, nếu dùng BOARD thì GPIO18 sẽ được gọi bởi số 12 (xem Pin number ở hình sơ đồ chân Rpi). Khuyên bạn dùng BCM, vì sao? Vì khi có lên bản mới thì GPIO number vẫn không đổi, còn thứ tự chân có thể đổi đó hehe
GPIO.setup(18, GPIO.OUT)
 
while True:
  GPIO.output(18, GPIO.HIGH) #digitalWrite(18, HIGH)
  time.sleep(1) #delay 1s
  GPIO.output(18, GPIO.LOW) #digitalWrite(18, LOW)
  time.sleep(1) #delay 1s

Nhìn vô là thấy yêu rồi :), phải không nào?

Sau đó chạy 

sudo python test_led.py 

là có ngay bài học đầu đời rồi.

GPIO Zero

Cài thư viện

sudo apt-get install python-gpiozero

Tạo file tên test_led.py với nội dung sau

# Khai báo các thư viện cần dùng
from gpiozero import LED
from time import sleep
 
led = LED(18) #khai báo GPIO, giống BCM với thư viện RPi.GPIO
 
while True:
    led.on()  # led sáng
    sleep(1)  # đợi 1s
    led.off() # led tắt
    sleep(1)  # đợi 1s

Công nhận nó ngắn hơn nhưng có vẻ đối tượng hóa quá, dân newbie như chúng ta khó quen :D. Phải như RPi.GPIO phải đã hơn không?

Chạy nào

sudo python test_led.py

 

Lời kết

Chúc các bạn thành công, mình sẽ làm một bài viết hướng dẫn sử dụng nanovi. Hai chương trình dòng lệnh dùng để sửa file phổ biến hiện nay trong môi trường linux.

lên
11 thành viên đã đánh giá bài viết này hữu ích.
Chuyên mục: 
Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

Lập trình Arduino bằng Javascript trong môi trường NodeJS - Chuyện thật hay đùa?

Hồi giờ đã nghe đến việc lập trình Arduino bằng C/C++, đã nghe đến việc lập trình Arduino kéo thả, tôi tự hỏi, liệu có thể dùng Javascript trong môi trường NodeJS - môi trường lập trình thần thánh hiện nay với lượng thư viện đến hơn 1 triệu trên toàn bộ thế giới này - để lập trình cho con Arduino cùi bắp của mình hay không? Và hãy tin tôi đi, bạn sẽ bất ngờ!

lên
12 thành viên đã đánh giá bài viết này hữu ích.

Breadboard là gì? Vì sao khi dùng Arduino lại cần breadboard

Lúc mình mới học về Arduino thì ngoài khái niệm về Arduino, thì mình còn gặp thêm một khái niệm mới nữa là breadboard. Khái niệm này cũng không quá khó, nhưng để giúp các bạn mới học đỡ phải tìm kiếm google (yêu hàng Việt) nên mình xin mạn phép viết ngắn lại giúp các bạn mới tiếp cận với Arduino có thể rút ngắn thời gian tìm tòi?

lên
27 thành viên đã đánh giá bài viết này hữu ích.
Từ khóa: