CHÚ Ý:Từ 2019 h3qvn.com có thêm một website mang lại riêng Raspberry Pi và thay đổi website bao gồm về Raspberry Pi tại h3qvn.com, những 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 ứng cho Raspberry Pi, ... h3qvn.com update tại website:pivietnam.com.vn
h3qvn.com trân trọng thông tin tới người tiêu dùng hàng!!!
Các chúng ta có thể tham khảo các bài viết hỗ trợ chuyên môn và những tin tức mới 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 bác 1: lập trình cơ bạn dạng Raspberry Pi cùng với GPIO (Link here)
Khi họ bắt tay làm quen cùng với một loại vi xử lý bắt đầu nào đó, bọn họ luôn cần sẵn sàng những thông tin và kiến thức cần thiết trước lúc bắt đầu.
Bạn đang xem: Lập trình raspberry pi bằng python
Đầu tiên là thông tin về phần cứng: loại 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 kia là kỹ năng và kiến thức về lập trình cho vi xử lý. Ví như asembly – ngữ điệu cấp thấp, ngôn từ C – phần lớn được cung ứng trên các công nắm lập trình, python – cách thức trên chiếc vi cách xử lý chạy hệ điều hành, hay bất kể ngôn ngữ nào mà pháp luật cho vị xử trí đó hỗ trợ.
1. Kiến thức phần cứng
Trước không còn hãy thuộc xem GPIO mapping của Raspberry Pi. Đây là sơ vật trên Raspberry 2 mã sản phẩm B
Trong 40 chân GPIO bao gồm : - 26 chân GPIO. Khi tùy chỉnh thiết lập là input, GPIO có thể được áp dụng như chân interupt, GPIO 14 và 15 được tùy chỉnh cấu hình sẵn là chân input. - 1UART, 1 I2C, 2 SPI, 1 PWM (GPIO 4) - 2 chân mối cung cấp 5V, 2 chân nguồn 3.3V, 8 chân GND - 2 chân ID EEPROM Vi cách xử lý ARMv7 32bit quad chip core 900Mhz, dung tích Ram 1G, và bộ lưu trữ kiểu micro SD dung lượng tùy lựa chọn ( buộc phải >=4G). Khi một chân GPIO lên mức cao sẽ đạ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 cho Pi như bên trên là đủ để có thể ban đầu lập trình. Chúng ta cùng chuyển sang phần kỹ năng tiếp theo.
|
2. Kỹ năng về ngôn ngữ lập trình
Lập trình bên trên Pi có khá nhiều sự lựa chọ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 đối chọi thuần, trong khi còn tất cả python, perl giỏi Ruby (bạn có thể xem các code chủng loại ở đây) . Chúng ta nên lựa chọn một bộ thư viện thay vị chỉ lập trình sẵn với ngôn từ đơn thuần, vì đơn giản dễ dàng bạn để gạch xây nhà ở nhanh rộng là có tác dụng từng viên gạch cho ngôi nhà của mình. Thư viện sẽ giúp bạn làm lơ lượng các bước vừa tinh vi và tốn sức lực như gán add của chân GPIO hay làm việc với thanh ghi ..v.v. Bạn có thể tập trung hơn vào xây dựng vận dụng của mình.
Thư viện mang đến Pi cũng đa dạng mẫu mã không kém. Một thư viện tốt khi nó cung ứng nhiều hàm cách xử trí linh hoạt, cung cấp nhiều giao tiếp và vận tốc của thư viện cấp tốc ( có nghĩa là nó mất không quá nhiều lần call lệnh xuất xắc hàm trung gian để có thực hiện ý muốn muốn của người sử dụng ). Vấn đề tốc độ chỉ đáng quan tâm khi chúng ta thực sự làm việc với yêu cầu vi xử lý triển khai lệnh lập cập (giả như PWM). Chúng ta có thể xem quaBenchmarkingcho những thư câu hỏi của Raspberry Pi.
Trong bài này, bản thân sẽ giới thiệu lập trình bên trên 2 ngữ điệu được sử dụng rộng rãi trên Pi là C cùng Python. Hai bộ thư viện khớp ứng làWiringPivàRPiGPIO. WiringPi được viết dưới dạng framework củawiring, nó cũng chính là framework nhưng Arduino sử dụng.
3. Ban đầu với bài bác lập trình GPIO
Để ban đầu với chuỗi bài xích lập trình mang lại Raspberry Pi. Chúng ta hãy cùng ban đầu với những bài bác căn phiên bản nhất mà chắc hẳn rằng hơi buồn tẻ của thiết kế – lập trình mang lại GPIO. Nhữngbài sau đây sẽ lập trình sẵn để tinh chỉnh LED. Các bạn hãy sẵn sàng phần cứng nhưng sơ đồ dưới đây.
Nhiệm vụ của bọn họ sẽ điều khiển bật tắt chiếc đèn led chiếu sáng này.Lưu ý rằng, lúc GPIO của Pi được tùy chỉnh cấu hình lên nút cao thì hiệu điện thế U = 3.3V cùng dòng về tối đa là Imax = 50mA . Giả sử bóng đèn Led hay được dùng sáng sinh sống 2V và I = 5m thì năng lượng điện trở cân xứng sẽ được xem là : R=(3.3 - 2)/0.005 = 260Ω Bạn rất có thể chọn năng lượng điện trở quen thuộc hơn hoàn toàn như là 220 Ω ,270 Ω xuất xắc 330 Ω. Sau khi hoàn thành thiết kế phần cứng, chúng ta hãy bắt tay ngay vào lập trình. |
a) lập trình với ngôn ngữ C
Các bạn cần thiết lập thư viện wringpi trước khi lập trình. Có thể tải thư viện và xem hướng dẫn cài đặ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 thư viện Wiringpi :#include
2. Tùy chỉnh thiết lập chọn loại đánh số chân GPIO
wiringPiSetupGpio();
Wiringpi có 4 kiểu lựa chọn đánh số chân.
- wiringPiSetup() : tùy chỉnh thiết lập đánh số theo phong cách riêng của Pi
- wiringPiSetupGpio() : đặt số theo Broadcom GPIO – tương ứng với chân của hình 1.
- wiringPiSetupPhys() : đặt số theo chân header bên trên board.
- wiringPiSetupSys() : đặt số theo system class GPIO.
Để một thể sử dụng. Toàn bộ các chương trình chúng ta sẽ thực hiện cách viết số thứ 2.
3. 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 bạn có thể sẽ quá bất ngờ khi kết thúc chương trình mà led vẫn sáng vì trạng thái thiết lập cấu hình hiện tại 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ỹ rộng ở mục cuối của bài.
Xem thêm: Cách Sử Dụng Nồi Áp Suất Điện Sunhouse Đơn Giản Nhất, Hướng Dẫn Cách Dùng Nồi Áp Suất Điện An Toàn
Bài 2 : lập loè 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 triển khai yêu cầu đơn giản, khi chúng ta nhất button thì đèn sẽ sáng. Chuẩn bị sơ vật phần cứng như sau.
Khi button được nhấn thì tâm lý trên GPIO-2 sẽ xuống mức thấp. Lưu ý rằng, lúc set chân GPIO có tác dụng input thì tâm lý của GPIO sẽ lơ lửng (float) cơ hội cao, thời điểm thấp không xác định. Để xác định mức rõ ràng cần cần sử dụng điện trở nhằm kéo GPIO lên tới mức cao hoặc kéo xuống thấp. Ở đây, sử dụng điện trở trong của GPIO nhằm kéo lên tới 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 cho chân button
pinMode(pin, INPUT);
- Đọc tín hiệu từ button
pullUpDnControl (pin, PUD_UP);
digitalRead(pin);
Kéo năng lượng điện trở pin lên rất cao và đọc biểu thị từ button.
- Để tiến hành ấn button để tắt bật LED, chúng ta hãy sửa mẫu code này
//digitalWrite(17, 1);
digitalWrite(17, !digitalRead(17));
Nó đang đọc quý giá trên chân GPIO rồi tùy chỉnh giá trị đảo ngược đến chân GPIO đó. (dù họ không mix chân đó là input).
b)Lập trình với ngôn từ Python
Phần này chỉ giành riêng cho những chúng ta có kiến thức và kỹ năng cơ bản về Python, tuy nhiên vì Python được coi là ngôn ngữ cho người mới bắt đầu, rất dễ dàng học bắt buộc các chúng ta cũng có thể nhanh nệm xem qua Python cơ bạn dạng và bước đầu lập trình 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 bạn có thể sử dụng luôn. Thư viện GPIO hỗ trợ cấu hình thiết lập input/output mang lại GPIO với PWM software.
Lưu ý : Python vâng lệnh nghiêm ngặt khoảng cách tương ứng giữa các câu lệnh. Phần nhiều câu lệnh trong và một khối thì buộc phải có khoảng cách bằng nhau. Nếu bạn copy đoạn code tiếp sau đây thì rất có thể sẽ bị lối sai khoảng cách (space error), chúng ta nên sửa lại mang lại đú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ừ giao diện màn hình hiển thị chính chọn main > Programming > Python3 (IDLE).
2. Chọn lựa tạo new file và save file đó với thương hiệu “led.py”
3. Bước đầu tiên là import thư viện của GPIOzero
import RPi.GPIO as GPIO
4. Lựa chọn và thiết lập cấu hình output chân LED
GPIO.setmode(GPIO.BCM)
GPIO.setup(pin, GPIO.OUT)
Thư viện Rpi.GPIO cung cấp 2 vẻ bên ngoài đánh số GPPIO làBCM và Board numberbạn phải chọn đẳng cấp để thư viện có thể hiểu nhiều người đang dùng theo kiểu nào.
Thiết lập chân số 17 là output
5. Bật – tắt LED (có 3 kiểu dáng 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 tệp tin lại Ctrl+S, sau đó chạy code nhấn F5. Để xong bạn thừa nhận Ctrl + C
Cũng y hệt như bài lập trình với C. Tâm lý của công tác trên GPIO vẫn tồn tại được lưu lại giữ.
Ngoài ra bạn cũng có thể chạy file led.py từ 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 trước tiên của file. Ở lấy ví dụ trên bạn không phải khai báo thêm vì chưng ban đang áp dụng Python3 IDLE cho nên nó biết được luôn trình biên dịch của bạn.
2. Bạn mở terminal lên từ screen chính hoặc nhấn Ctrl + Shift + T
3. Gõ lệnh gửi vị trí hiện tại của terminal tới thư mục led.py và triển khai các lệnh nhằm chạy trương trình
Lệnh thứ 2 để chuyển file đó thành file rất có thể chạy như file thực thi. Lệnh cuối để tiến hành chương trình. Để xong xuôi bạn cũng ấn Ctrl + C
Tuy nhiên các bạn sẽ chỉ thấy chương trình hiện lên rồi tắt đi ngay. Lí bởi là lịch trình python chỉ đọc từ đầu tới cuối và hoàn thành luôn. Mong muốn chương trình rất có thể tiếp tục chúng ta có thể đặt vòng lặp bên phía ngoài hoặc đặt tùy chỉnh cấu hình pause() sinh sống cuối chương trình.
Hoặc
Bài 2 : lập loè LED
Như đã biết sinh hoạt trên, để xong xuôi chương trình các bạn cũng có thể nhấnCtrl+C. Đó là keyboard interupt, chương trình sẽ bị break với dừng chương trình. Nhưng nếu bạn chú ý, trạng thái của chương trình vẫn còn đó được giữ nguyên sau lúc break, ví dụ như trước đó khi bị break chân GPIO được set lên tới mức cao thì nó vẫn còn không thay đổi mức cao đó sau khoản thời gian bị break. Vẫn chẳng tác động gì nếu như khách hàng thực hiện nay chạy tiếp một công tác mà không phải lo ngại tới GPIO đó, nhưng sẽ sở hữu vấn đề trường hợp Pi vẫn đang liên kết với phần cứng bên ngoài, tức thị nó vẫn rất có thể tác hễ lên phần cứng này mà bạn không hề muốn (ví dụ đèn đã vẫn sáng sủa trong chương trình tinh chỉnh led).
Nếu chạy lại tệp tin trên một lần nữa sẽ có thông báo warning hiện ra :
"RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarning(False) khổng lồ disable warnings."
Thông báo này tức là chân PGIO đó đang được sử dụng. Các bạn có thể bỏ qua vày chương trình vẫn sẽ thường xuyên chạy, hoặc ẩn nó đi bằng phương pháp dùng một loại lệnh GPIO.setwarning(False) . Nhưng lại warning này khiến cho chương trình của bạn trở buộc phải “out of control”. Đó là vấn đề không thể gật đầu với lập trình sẵn viên.
Chúng ta yêu cầu khắc phục bằng cách giải phóng toàn thể GPIO (hoặc một trong những phần được sử dụng) ngay sau khi phát hiện tại interrupt. Nhưng mà trước hết 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 bài bản 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 được sự dụng để bạn có thể sử dụng, nên bạn phải xử lý bằng tay từng GPIO hay PORT. Hãy chăm chú phần example vào hàm bắt interrupt trên. Hàm này đang chay chủ quyền với hàm main. Còn đông đảo sự kiên interrupt khác các bạn có thể tìm hiểu thêm ở 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 đặt dưới hàm “try”. Khi bạn nhấnCtrl+Ctức là keyboard inturrupt, công tác sẽ ngay lập tức nhảy thanh lịch vùng code cho keyboard interrupt, nếu là interrupt một số loại khác thì lịch trình sẽ nhảy sang vùng code đến interrupt các loại khác, và sau khoản thời gian thực hiện chương trình đến interrupt lịch trình sẽ dancing tới vùng code hoàn thành chương trình. HàmGPIO.cleanup()có thể thay bạn xử lý toàn bộ các port.
Trong vùng code xong xuôi chương trình nhất quyết phải gồm câu lệnh GPIO.cleanup(). Nó để giúp giải phóng tất cả các GPIO đang rất được sử dụng, như vậy trạng thái cũ của chương trình sẽ được xóa khỏi hoàn toàn.
Viết tiến công giá
Họ với tên: Đánh giá chỉ của bạn: giữ ý: Không cung ứng HTML! Bình chọn: Dở Hay Nhập mã bảo vệ:Tiếp tục