Tôi yêu Arduino gửi vào
- 81227 lượt xem
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!
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 nano và vi. 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.