CHÚ Ý:Từ 2019 ebestbuyvn.net tất cả thêm một website mang đến riêng Raspberry Pi và vươn lên là website chính về Raspberry Pi trên ebestbuyvn.net, các thông tin về thành phầm - tin tức update về Raspberry Pi - nội dung bài viết kỹ thuật cung cấp cho Raspberry Pi, ... ebestbuyvn.net update tại website:pivietnam.com.vn

ebestbuyvn.net trân trọng thông báo tới người sử dụng hàng!!!

*

Các bạn có thể tham khảo các nội dung bài viết hỗ trợ chuyên môn và những tin tức tiên tiến nhất tại phần "tin tức"trên trang web PVIETNAM.COM.VN

*

Bài viết cung ứng kỹ thuật tại website PIVIETNAM.COM.VN - bài 1: xây dựng cơ phiên bản Raspberry Pi với GPIO (Link here)

*

Khi bọn họ bắt tay làm quen với một mẫu vi xử lý bắt đầu nào đó, bọn họ luôn cần sẵn sàng những tin tức và con kiến thức quan trọng trước khi bắt đầu.

Bạn đang xem: Sơ đồ chân raspberry pi 4

Đầu tiên là tin tức về phần cứng: dòng vi xử lý, tốc độ của nó, dung lượng của Ram, dương lượng bộ lưu trữ cứng (bộ nhớ nhằm ghi chương trình) số lượng và địa chỉ của GPIO, giỏi các chuẩn chỉnh giao tiếp được hỗ trợ.

Tiếp đó là kỹ năng và kiến thức về lập trình mang lại vi xử lý. Ví như asembly – ngôn từ cấp thấp, ngôn từ C – phần lớn được cung cấp trên những công nuốm lập trình, python – chính sách trên cái vi xử lý chạy hệ điều hành, hay bất cứ ngôn ngữ nào mà khí cụ cho vị xử lý đó hỗ trợ.

1. Kiến thức phần cứng


Trước hết hãy thuộc xem GPIO mapping của Raspberry Pi. Đây là sơ trang bị trên Raspberry 2 mã sản phẩm B

Trong 40 chân GPIO bao hàm :

- 26 chân GPIO. Khi tùy chỉnh cấu hình là input, GPIO hoàn toàn có thể được sử dụng như chân interupt, GPIO 14 và 15 được cấu hình thiết lập sẵn là chân input.

- 1UART, 1 I2C, 2 SPI, 1 PWM (GPIO 4)

- 2 chân nguồn 5V, 2 chân mối cung cấp 3.3V, 8 chân GND

- 2 chân ID EEPROM

Vi giải pháp xử lý ARMv7 32bit quad vi xử lý core 900Mhz, dung lượng Ram 1G, và bộ lưu trữ kiểu micro SD dung lượng tùy lựa chọn ( bắt buộc >=4G).

Khi một chân GPIO lên mức cao đã đạt năng lượng điện áp 3.3V, cái ra buổi tối đa Imax = 5mA.

Kiến thức cơ bạn dạng cho Pi như trên là đủ để sở hữu thể bắt đầu lập trình. Chúng ta cùng chuyển qua phần kỹ năng tiếp theo.

*

2. Kiến thức và kỹ năng về ngôn từ lập trình


Lập trình trên Pi có khá nhiều sự lựa chọn. Hoàn toàn có thể lập trình trực tiếp từ bash-shell của linux, hoặc xây dựng với C solo thuần, dường như còn bao gồm python, perl tuyệt Ruby (bạn rất có thể xem những code mẫu ở đây) . Chúng ta nên chọn lựa một bộ thư viện thay vị chỉ xây dựng với ngôn từ đơn thuần, vì đơn giản và dễ dàng bạn để gạch xây nhà nhanh hơn là có tác dụng từng viên gạch mang đến ngôi nhà của mình. Thư viện sẽ giúp bạn bỏ qua lượng các bước vừa tinh vi và tốn công sức của con người như gán địa chỉ cửa hàng của chân GPIO hay làm việc với thanh ghi ..v.v. Chúng ta cũng có thể tập trung rộng vào xây dựng áp dụng của mình.

Thư viện mang đến Pi cũng phong phú và đa dạng không kém. Một thư viện xuất sắc khi nó hỗ trợ nhiều hàm cách xử lý linh hoạt, cung ứng nhiều tiếp xúc và tốc độ của thư viện cấp tốc ( tức là nó mất không vô số lần gọi lệnh tuyệt hàm trung gian để có thực hiện mong mỏi muốn của khách hàng ). Vấn đề vận tốc chỉ xứng đáng quan tâm khi bạn thực sự thao tác với yêu cầu vi xử lý tiến hành lệnh nhanh chóng (giả như PWM). Bạn cũng có thể xem quaBenchmarkingcho những thư câu hỏi của Raspberry Pi.

Trong bài bác này, bản thân sẽ trình làng lập trình bên trên 2 ngôn ngữ được sử dụng thoáng rộng trên Pi là C với Python. Hai bộ thư viện tương xứng làWiringPivàRPiGPIO. WiringPi được viết dưới dạng framework củawiring, nó cũng chính là framework nhưng mà Arduino sử dụng.

3. Bước đầu với bài bác lập trình GPIO


Để bước đầu với chuỗi bài lập trình đến Raspberry Pi. Bọn họ hãy cùng ban đầu với những bài bác căn phiên bản nhất mà có lẽ hơi bi thương tẻ của lập trình – lập trình cho GPIO. Nhữngbài sau đây sẽ lập trình để tinh chỉnh và điều khiển LED. Chúng ta hãy chuẩn bị phần cứng cơ mà sơ vật dưới đây.

Nhiệm vụ của bọn họ sẽ điều khiển bật và tắt chiếc led này.Lưu ý rằng, lúc GPIO của Pi được tùy chỉnh cấu hình lên nấc cao thì hiệu điện cầm cố U = 3.3V cùng dòng buổi tối đa là Imax = 50mA .

Giả sử đèn điện Led thường được sử dụng sáng ở 2V cùng I = 5m thì năng lượng điện trở tương xứng sẽ được tính là :

R=(3.3 - 2)/0.005 = 260Ω

Bạn có thể chọn năng lượng điện trở quen thuộc hơn hẳn như 220 Ω ,270 Ω xuất xắc 330 Ω.

Sau khi kết thúc thiết kế phần cứng, chúng ta hãy hợp tác ngay vào lập trình.

*

a) lập trình với ngữ điệu C

Các bạn cần thiết lập thư viện wringpi trước lúc lập trình. Có thể tải thư viện và xem hướng dẫn thiết đặt tạiWiringpi-project.

Bài 1: lập trình tắt bật LED


#include

int main(void)

{

wiringPiSetupGpio();

pinMode(17, OUTPUT);

while(1)

digitalWrite(17, HIGH);


return 0;

1. Thêm tủ sách Wiringpi :#include

2. Tùy chỉnh thiết lập chọn loại đánh số chân GPIO

wiringPiSetupGpio();

Wiringpi tất cả 4 kiểu chọn đánh số chân.

- wiringPiSetup() : tùy chỉnh cấu hình đánh số theo phong cách riêng của Pi

- wiringPiSetupGpio() : khắc số theo Broadcom GPIO – tương xứng với chân của hình 1.

- wiringPiSetupPhys() : khắc số theo chân header trên board.

- wiringPiSetupSys() : viết số theo system class GPIO.

Để tiện thể sử dụng. Toàn bộ các chương trình họ sẽ thực hiện cách đặt số thứ 2.

3. Lựa chọn và tùy chỉnh Output chân LED

pinMode(pin,OUTPUT);

//pinMode(pin, INPUT);

4. Bật-tắt LED (2 kiểu)

digitalWrite(17,1); //digitalWrite(17, HIGH);

digitalWrite(17,0);//digitalWrite(17, LOW);

5. Thực hiện build chương trình trên terminal

gcc -Wall -o blink blink.c -lwiringPi

sudo ./blink

Các chúng ta có thể sẽ quá bất ngờ khi hoàn thành chương trình nhưng led vẫn sáng bởi trạng thái tùy chỉnh cấu hình hiện trên của chương trình không biến thành thay đổi. Mình trình bày phần này kỹ hơn ở mục cuối của bài.

Xem thêm: Bán Da Heo Cháy Tỏi Tphcm - Địa Chỉ Buôn Bán Sỉ Da Heo Cháy Tỏi Lá Chanh

Bài 2 : nhấp nháy LED

#include


int main(void)

wiringPiSetupGpio();

pinMode(17, OUTPUT);

while(1)

digitalWrite(17, HIGH);

delay(1000);

digitalWrite(17, LOW);

delay(1000);

return 0;


Bài 3 : Điều khiển LED bởi button

Chương trình tiến hành yêu cầu đối kháng giản, khi bạn nhất button thì đèn vẫn sáng. Sẵn sàng sơ vật dụng phần cứng như sau.

Khi button được thừa nhận thì trạng thái trên GPIO-2 sẽ xuống mức thấp.

Lưu ý rằng, khi set chân GPIO làm input thì tinh thần của GPIO đã lơ lửng (float) cơ hội cao, thời gian thấp không xác định. Để xác minh mức ví dụ cần cần sử dụng điện trở nhằm kéo GPIO lên đến mức cao hoặc kéo xuống thấp. Ở đây, áp dụng điện trở trong của GPIO để kéo lên mức cao (R=10kΩ).

*


#include

int main(void)

wiringPiSetupGpio();

pinMode(17, OUTPUT);

pinMode(2, INPUT);

pullUpDnControl (2, PUD_UP);

digitalWrite(17, 0);

while(1)

if(!digitalRead(2))

digitalWrite(17, 1);

// digitalWrite(17, !digitalRead(17));

delay(300);

return 0;

Thiết lập input mang đến chân button

pinMode(pin, INPUT);

- Đọc bộc lộ từ button

pullUpDnControl (pin, PUD_UP);

digitalRead(pin);

Kéo điện trở pin lên cao và đọc biểu lộ từ button.

- Để tiến hành ấn button để bật và tắt LED, chúng ta hãy sửa loại code này

//digitalWrite(17, 1);

digitalWrite(17, !digitalRead(17));

Nó đã đọc quý giá trên chân GPIO rồi tùy chỉnh cấu hình giá trị đảo ngược mang đến chân GPIO đó. (dù họ không mix chân sẽ là input).

b)Lập trình với ngữ điệu Python

Phần này chỉ dành riêng cho những chúng ta có kiến thức cơ bản về Python, tuy nhiên vì Python được xem như là ngôn ngữ cho người mới bắt đầu, rất giản đơn học đề nghị các bạn có thể nhanh chóng xem qua Python cơ phiên bản và ban đầu lập trình cùng với phần này.

Thư viện Rpi.GPIO được nhúng sẵn trên hệ điều hảnh Raspbian nên chúng ta cũng có thể sử dụng luôn. Tủ sách GPIO hỗ trợ cấu hình thiết lập input/output cho GPIO và PWM software.

Lưu ý : Python vâng lệnh nghiêm ngặt khoảng cách tương ứng giữa những câu lệnh. đầy đủ câu lệnh trong cùng một khối thì yêu cầu có khoảng cách bằng nhau. Nếu khách hàng copy đoạn code sau đây thì có thể sẽ bị lối sai khoảng cách (space error), các bạn nên sửa lại đến đúng.

Bài 1 : bật và tắt LED


#!/usr/bin/python3

import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)

GPIO.setup(17, GPIO.OUT)

GPIO.output(17, 1)


1. Từ bỏ giao diện màn hình chính lựa chọn main > Programming > Python3 (IDLE).

2. Gạn lọc tạo new file cùng save file kia với tên “led.py”

3. Bước thứ nhất là import tủ sách của GPIOzero

import RPi.GPIO as GPIO

4. Lựa chọn và tùy chỉnh cấu hình output chân LED

GPIO.setmode(GPIO.BCM)

GPIO.setup(pin, GPIO.OUT)

Thư viện Rpi.GPIO cung ứng 2 thứ hạng đánh số GPPIO làBCM cùng Board numberbạn bắt buộc chọn thứ hạng để thư viện rất có thể hiểu nhiều người đang dùng theo phong cách nào.

Thiết lập chân số 17 là output

5. Nhảy – tắt LED (có 3 vẻ bên ngoài thiết lập)

GPIO.output(pin, 1)

# GPIO.output(pin, True)

# GPIO.output(pin, GPIO.HIGH)

GPIO.output(pin, 0)

# GPIO.output(pin, False)

# GPIO.output(pin, GPIO.LOW)

6. Lưu file lại Ctrl+S, kế tiếp chạy code thừa nhận F5. Để kết thúc bạn nhận Ctrl + C

Cũng y hệt như bài thiết kế với C. Trạng thái của lịch trình trên GPIO vẫn còn đấy được lưu lại giữ.

Ngoài ra bạn có thể chạy file led.py từ bỏ terminal

1. Trước lúc chạy bạn phải khai báo thêm “shebang line” - địa điểm của trình biên dịch . Ở đây là python3 (phiên bạn dạng 3).

#!/usr/bin/python3

Dòng code này được đặt tại dòng đầu tiên của file. Ở ví dụ như trên bạn không đề nghị khai báo thêm bởi ban đang sử dụng Python3 IDLE nên nó biết được luôn luôn trình biên dịch của bạn.

2. Bạn mở terminal lên từ màn hình hiển thị chính hoặc dấn Ctrl + Shift + T

3. Gõ lệnh đưa vị trí bây giờ của terminal tới folder led.py và triển khai các lệnh để chạy trương trình

*

Lệnh thứ hai để chuyển file kia thành file có thể chạy như file thực thi. Lệnh cuối để thực hiện chương trình. Để dứt bạn cũng ấn Ctrl + C

Tuy nhiên các bạn sẽ chỉ thấy lịch trình hiện lên rồi tắt đi ngay. Lí do là công tác python chỉ đọc từ trên đầu tới cuối và ngừng luôn. Mong mỏi chương trình rất có thể tiếp tục chúng ta có thể đặt vòng lặp phía bên ngoài hoặc đặt tùy chỉnh cấu hình pause() sinh hoạt cuối chương trình.


*


Hoặc


*


Bài 2 : nhấp nháy LED


*


*


Như đang biết sinh sống trên, để xong chương trình các chúng ta cũng có thể nhấnCtrl+C. Đó là keyboard interupt, chương trình có khả năng sẽ bị break với dừng chương trình. Nhưng nếu khách hàng chú ý, tâm trạng của chương trình vẫn còn đó được không thay đổi sau khi break, ví dụ như trước đó khi bị break chân GPIO được set lên đến mức cao thì nó vẫn còn không thay đổi mức cao đó sau khoản thời gian bị break. đang chẳng tác động gì nếu khách hàng thực hiện tại chạy tiếp một lịch trình mà không lo tới GPIO đó, nhưng sẽ có được vấn đề giả dụ Pi vẫn đang liên kết với phần cứng mặt ngoài, nghĩa là nó vẫn rất có thể tác động lên phần cứng này mà bạn không hề muốn (ví dụ đèn đã vẫn sáng trong chương trình tinh chỉnh và điều khiển led).

Nếu chạy lại file trên một lần nữa sẽ có được thông báo warning hiện ra :

"RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarning(False) to lớn disable warnings."

Thông báo này có nghĩa là chân PGIO đó đang được sử dụng. Các bạn có thể bỏ qua vì chưng chương trình vẫn sẽ tiếp tục chạy, hoặc ẩn nó đi bằng cách dùng một chiếc lệnh GPIO.setwarning(False) . Tuy thế warning này để cho chương trình của người sử dụng trở buộc phải “out of control”. Đó là vấn đề không thể đồng ý với lập trình sẵn viên.

Chúng ta cần khắc phục bằng phương pháp giải phóng toàn cục GPIO (hoặc 1 phần được sử dụng) ngay sau khoản thời gian phát hiện tại interrupt. Dẫu vậy trước không còn hãy cùng nâng cấp chương trình lên đến mức mới để rất có thể lập trình chuyên nghiệp hóa hơn.

Chương trình C bắt sự kiện"Ctr+C"


*


Thư viện C chưa hỗ trợ hàm chuyên dụng để chúng ta cũng có thể sử dụng, nên chúng ta phải xử lý bằng tay thủ công từng GPIO giỏi PORT. Hãy chăm chú phần example trong hàm bắt interrupt trên. Hàm này vẫn chay chủ quyền với hàm main. Còn đông đảo sự kiên interrupt khác chúng ta có thể bài viết liên quan ở một bài viết khá hữu íchở đây

Chương trình Python bắt sự kiện"CTR+C"

*

Chương trình chính hiện thời sẽ được để dưới hàm “try”. Khi bạn nhấnCtrl+Ctức là keyboard inturrupt, lịch trình sẽ ngay lập tức nhảy lịch sự vùng code mang đến keyboard interrupt, trường hợp là interrupt một số loại khác thì công tác sẽ nhảy sang vùng code mang đến interrupt loại khác, và sau thời điểm thực hiện chương trình cho interrupt chương trình sẽ nhảy đầm tới vùng code kết thúc chương trình. HàmGPIO.cleanup()có thể thay các bạn xử lý tổng thể các port.

Trong vùng code xong chương trình nhất quyết phải có câu lệnh GPIO.cleanup(). Nó để giúp giải phóng toàn bộ các GPIO đang được sử dụng, do đó trạng thái cũ của chương trình sẽ được xóa sổ hoàn toàn.


Viết tiến công giá

Họ với tên: Đánh giá của bạn: lưu giữ ý: Không cung cấp HTML! Bình chọn: Dở Hay Nhập mã bảo vệ:
*

Tiếp tục
Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *