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ả

Một cách tiếp cận khác với sóng vô tuyến 315 hay 433Mhz

Yeah, cộng đồng Arduino Việt Nam chúng ta đã có một bài viết về sóng vô tuyến rất hay của NTP_PRO phải không nào! Tuy nhiên, mình thấy một số ý kiến về sự đụng độ thư viện VirtualWire và Servo (của Arduino). Vì vậy, qua cách tiếp cận này của mình sẽ giúp các bạn giải quyết vấn đề trên nhé. Ngoài ra, qua bài viết, mình muốn chia sẻ cho các bạn cách "hack" những thiết bị vô tuyến hiện có như xe điều khiển từ xa. Từ đó, tự các bạn chế ra những bộ remote của riêng mình. heart

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

Hướng dẫn điều khiển động cơ bước với thư viện Accel Stepper và driver điều khiển động cơ bước A4988 hoặc DRV8825

Mình thấy có nhiều bạn hỏi về stepper và cách điều khiển nó. Đồng thời thấy vấn đề điều khiển động cơ bước là một vấn đề kinh điển nhưng lại chưa có trên Cộng đồng. Ngoài ra, vì chức năng điểm cộng đồng khá hay và mình cũng muốn có quà nên hôm nay mình sẽ hướng dẫn rất kỹ với các bạn! Thư viện mình dùng là thư viện AccelStepper chứ không phải thư viện stepper mặc định của Arduino nên có thể điều khiển đồng thời nhiều stepper và kết hợp với các thư viện bất đồng bộ khác.

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