Cách thêm nút bấm trên máy Raspberry Pi

Học cách sử dụng các pin GPIO trên Raspberry Pi sẽ mở ra trước mắt bạn một thế giới đầy tiềm năng. Các nguyên tắc cơ bản có được thông qua các dự án dành cho người mới bắt đầu sẽ hữu ích cho việc mày mò chế tạo các thiết bị điện tử DIY và cả kỹ năng lập trình nữa.

Hướng dẫn này chỉ cho bạn hai cách để thêm một nút vào máy Raspberry Pi của mình. Nút này sẽ được sử dụng để điều khiển đèn LED. Các hướng dẫn bằng văn bản có sẵn bên dưới video.

 

Những thứ cần chuẩn bị

Để bắt đầu, hãy đảm bảo bạn có các thành phần sau:

  • 1 Raspberry Pi (Bất kỳ model nào. Tuy nhiên, hướng dẫn hôm nay sẽ sử dụng model 3B)
  • 1 nút ấn
  • 1 đèn LED
  • 1 điện trở 220 Ohm (giá trị cao hơn càng tốt, đèn LED của bạn sẽ chỉ sáng lờ mờ)
  • 1 Breadboard
  • Dây dẫn

Sau khi chuẩn bị đủ những công cụ cần thiết, hãy tập hợp mọi thứ lại như hình sau:

Các công cụ

Bạn cũng cần có thẻ SD với hệ điều hành Raspbian được cài đặt. Cách nhanh nhất để làm điều này là bằng image NOOBS (New Out Of the Box Software). Hướng dẫn về cách thực hiện điều này có sẵn trong video sau:

 

Thiết lập mạch điện

Bạn sẽ sử dụng các pin GPIO của Pi để tạo mạch. Hãy thiết lập mạch của bạn theo sơ đồ này:

Sơ đồ mạch

  • Các chân 5v và GND kết nối với đường dây nguồn của breadboard.
  • Pin 12 (GPIO 18) kết nối với cực dương của đèn LED.
  • Một chân của điện trở gắn vào cực âm của đèn LED và chân còn lại gắn vào dây tiếp đất của breadboard.
  • Pin 16 (GPIO 23) gắn vào một bên của nút, chân còn lại gắn vào dây tiếp đất của breadboard.

Sau khi thiết lập xong, mọi thứ trông sẽ giống như sau:

Mạch sau khi thiết lập

Kiểm tra mạch của bạn để chắc chắn rằng mọi thứ đã chính xác, và sau đó hãy tiếp tục các thao tác tiếp theo trên Raspberry Pi của bạn.

Phương pháp 1: Thư viện RPi.GPIO

Khi Pi đã khởi động, hãy vào menu và chọn Programming > Thonny Python IDE. Một tập lệnh Python mới sẽ mở ra. Nếu bạn hoàn toàn chưa biết gì về Python, thì đó là một ngôn ngữ tuyệt vời cho người mới bắt đầu và có nhiều nơi tuyệt vời để tìm hiểu thêm về Python, sau khi bạn hoàn thành mọi bước cần thiết với hướng dẫn này!

RPi.GPIO

Bắt đầu bằng cách nhập thư viện RPi.GPIO và thiết lập chế độ board.

import RPi.GPIO as GPIO
 
 GPIO.setmode(GPIO.BOARD)

Bây giờ khai báo các biến cho các số pin nút và đèn LED.

ledPin = 12
 
 buttonPin = 16

Lưu ý rằng vì bạn đã đặt chế độ board thành BOARD, nên bạn đang sử dụng số pin thay vì số GPIO. Nếu điều đó gây nhầm lẫn cho bạn, biểu đồ Raspberry Pi pinout có thể giúp bạn hiểu rõ hơn mọi thứ.

Sơ đồ pinout

Thiết lập nút

Đã đến lúc thiết lập các pin GPIO. Đặt chân LED là output và chân nút bấm là input cùng với một điện trở pull-up (điện trở treo).

GPIO.setup(ledPin, GPIO.OUT)
 GPIO.setup(buttonPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)

Đoạn sau GPIO.IN đề cập đến điện trở pull-up bên trong của Raspberry Pi. Bạn cần phải kích hoạt điện trở này để nhận tín hiệu từ nút bấm. Vì nút đang tiếp đất, nên ta cần một điện trở pull-up để giữ pin input ở vị trí HIGH cho đến khi bạn nhấn nó.

Trước khi tiếp tục, bạn hãy nhìn vào các điện trở pull-up và pull-down.

Ngắt kết nối: Các điện trở pull-up/pull-down

Khi bạn cấu hình một pin GPIO thành input, nó sẽ đọc pin đó để xác định trạng thái của pin. Trong mạch này, bạn cần phải biết pin đang ở vị trí HIGH hay LOW để kích hoạt đèn LED khi nhấn nút. Điều này sẽ đơn giản nếu đó chỉ là những trạng thái mà một pin có thể có, nhưng thật không may, còn một trạng thái thứ ba nữa là FLOATING.

Một FLOATING pin có giá trị nằm giữa HIGH và LOW, khiến đầu vào hoạt động mà không thể đoán trước. Điện trở pull-up/pull-down sẽ giải quyết vấn đề này.

Các điện trở

Hình trên là một sơ đồ đơn giản có một nút và một Raspberry Pi. Pin GPIO tiếp đất thông qua nút bấm. Điện trở pull-up trong gắn pin GPIO vào nguồn cấp điện Pi bên trong. Dòng điện này và pin được kéo lên HIGH một cách an toàn.

Khi bạn nhấn nút, pin GPIO kết nối trực tiếp với pin tiếp đất và nút đọc vị trí lúc này là LOW.

LOW

Điện trở pull-down là khi công tắc được kết nối với pin nguồn. Lần này, điện trở trong gắn với pin GPIO tiếp đất, giữ ở mức LOW cho đến khi bạn nhấn nút.

Lý thuyết điện trở pull-up và pull-down có vẻ khá khó hiểu, nhưng đây là kiến ​​thức quan trọng cần có khi làm việc với các bộ vi điều khiển. Bây giờ, nếu bạn chưa hoàn toàn hiểu hết về chúng, thì cũng đừng lo lắng!

Hãy tiếp tục với các bước tiếp theo.

Vòng lặp chương trình

Tiếp theo, thiết lập vòng lặp chương trình:

while True:
 buttonState = GPIO.input(buttonPin)
 if buttonState == False:
 GPIO.output(ledPin, GPIO.HIGH)
 else:
 GPIO.output(ledPin, GPIO.LOW)

Vòng lặp while True liên tục chạy code bên trong nó cho đến khi chúng ta kết thúc chương trình. Ở mỗi vòng lặp, nó cập nhật buttonState bằng cách đọc đầu vào từ buttonPin. Khi nút bấm chưa được nhấn, nó vẫn ở mức HIGH.

Khi nút được nhấn, buttonState trở thành LOW. Điều này kích hoạt câu lệnh if, vì False giống như LOW và đèn LED bật. Câu lệnh khác sẽ tắt đèn LED bất cứ khi nào nút buttonPin không ở trạng thái False.

Lưu và chạy tập lệnh

Lưu tập lệnh của bạn bằng cách nhấp vào File > Save As và chọn tên file. Bạn có thể chạy bản phác thảo bằng cách nhấp vào nút Play màu xanh lục trên thanh công cụ Thonny.

Chạy tập lệnh

Bây giờ nhấn nút, và đèn LED của bạn sẽ sáng lên! Nhấn nút Stop màu đỏ bất kỳ lúc nào để dừng chương trình.

Nhấn nút

Nếu bạn gặp khó khăn, hãy kiểm tra code và thiết lập mạch của bạn kỹ lưỡng để tìm ra lỗi và thử lại.

Phương pháp 2: Thư viện GPIO Zero

Thư viện RPi.GPIO thật tuyệt vời, nhưng ta vẫn còn một lựa chọn khác. Thư viện GPIO Zero được tạo ra bởi người quản lý cộng đồng Raspberry Pi, Ben Nuttall với ý định làm cho code đơn giản, dễ đọc và dễ viết hơn.

Để thử nghiệm thư viện mới này, hãy mở một file Thonny mới và nhập thư viện.

from gpiozero import LED, Button
 from signal import pause

Bạn sẽ nhận thấy rằng bạn đã không nhập toàn bộ thư viện. Vì bạn chỉ sử dụng đèn LED và nút bấm, nên bạn chỉ yêu cầu những mô-đun đó trong tập lệnh. Chúng tôi cũng nhập Pause từ thư viện signal (đây là một thư viện Python để quản lý sự kiện).

Thiết lập các pin dễ dàng hơn nhiều với GPIO Zero:

led = LED(18)
 button = Button(23)

Vì thư viện GPIO Zero có các mô-đun cho đèn LED và nút bấm, nên bạn không cần thiết lập các input và output như trước. Bạn sẽ nhận thấy rằng mặc dù các pin không thay đổi, nhưng các con số ở đây khác với các số ở trên. Đó là bởi vì GPIO Zero chỉ sử dụng số pin GPIO (còn được gọi là số Broadcom hoặc BCM).

Phần còn lại của tập lệnh chỉ có ba dòng:

button.when_pressed = led.on
 button.when_released = led.off
 pause()

pause() ở đây chỉ đơn giản là ngăn tập lệnh thoát ra khi nó chạy đến cuối. Các sự kiện liên quan đến hai nút được kích hoạt bất cứ khi nào nút được nhấn và nhả ra. Lưu và chạy tập lệnh của bạn, sau đó bạn sẽ thấy kết quả tương tự như trước đây!

Trong hai cách để thêm nút bấm vào Raspberry Pi, phương pháp GPIO Zero có vẻ dễ nhất. Nhưng thư viện RPi.GPIO vẫn đáng để hầu hết người mới bắt đầu với các dự án Raspberry Pi học cách sử dụng. Đơn giản như dự án này, kiến ​​thức về RPi.GPIO vẫn có thể được sử dụng ở một số điểm.

Sử dụng các pin GPIO là một cách tuyệt vời để tìm hiểu và phát minh ra thiết bị của riêng bạn, nhưng nó hơi xa với đối với mọi thứ bạn có thể làm với Pi. Tham khảo bài viết: 10 dự án tuyệt vời kết hợp giữa Raspberry Pi và Windows 10 IoT Core để có thêm nhiều ý tưởng khác.

Chúc bạn thành công!

Xem thêm:

Thứ Năm, 22/11/2018 16:44
52 👨 241
Video đang được xem nhiều