《樹莓派應(yīng)用開發(fā)》課件 第07、8章-樹莓派軟件開發(fā)應(yīng)用、樹莓派GPIO應(yīng)用_第1頁(yè)
《樹莓派應(yīng)用開發(fā)》課件 第07、8章-樹莓派軟件開發(fā)應(yīng)用、樹莓派GPIO應(yīng)用_第2頁(yè)
《樹莓派應(yīng)用開發(fā)》課件 第07、8章-樹莓派軟件開發(fā)應(yīng)用、樹莓派GPIO應(yīng)用_第3頁(yè)
《樹莓派應(yīng)用開發(fā)》課件 第07、8章-樹莓派軟件開發(fā)應(yīng)用、樹莓派GPIO應(yīng)用_第4頁(yè)
《樹莓派應(yīng)用開發(fā)》課件 第07、8章-樹莓派軟件開發(fā)應(yīng)用、樹莓派GPIO應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩92頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第一季度工作報(bào)告XXXXXX公司名稱LOGO站長(zhǎng)之家PPT模板樹莓派應(yīng)用開發(fā)第七章樹莓派軟件開發(fā)應(yīng)用7.1開源的OpenJDK和tomcat7.2CMake編譯工具7.3C語(yǔ)言7.4Python語(yǔ)言7.5PyCharm7.6Arduino

開源的OpenJDKJava是用于構(gòu)建各種應(yīng)用程序和系統(tǒng)的最流行的編程語(yǔ)言之一Java有兩種不同的實(shí)現(xiàn),OracleJava和OpenJDKOracleJava具有其他一些商業(yè)功能,并且許可僅允許非商業(yè)用途。OpenJDK是Java平臺(tái)的開源實(shí)現(xiàn)

開源的OpenJDK在LX終端中運(yùn)行以下命令可以安裝最新版本的OpenJDK,目前OpenJDK17是最新版本:sudoaptinstalldefault-jdk安裝default-jdk時(shí)

,軟件包default-jdk、default-jdk-headless、default-jre、openjdk-11-jdk、openjdk-11-jre也將被同步安裝。安裝完成后,可以通過(guò)以下命令驗(yàn)證Java版本:java-version

開源的OpenJDK多個(gè)Java版本共存于樹莓派系統(tǒng)不會(huì)發(fā)生沖突,多版本共存時(shí)可以根據(jù)實(shí)際需要設(shè)置默認(rèn)的版本,例如,如果需要用到目前依然被廣泛使用Java8

版本??梢允褂靡韵掳惭b命令:sudoaptinstallopenjdk-8-jdk安裝結(jié)束后,檢查默認(rèn)的Java版本:java-version如果需要修改默認(rèn)的Java版本,可以使用update-alternatives命令:

sudoupdate-alternatives--configjava

開源的OpenJDK如果安裝了多個(gè)JDK版本,需要設(shè)置JAVA_HOME和JRE_HOME環(huán)境變量,編輯/etc/environment文件:sudonano/etc/environment假設(shè)要將JAVA_HOME設(shè)置為OpenJDK17,那么可以在文件末尾添加:JAVA_HOME="/usr/lib/jvm/java-17-openjdk-armhf/bin"JRE_HOME="/usr/lib/jvm/java-8-openjdk-armhf/jre/bin"上面這兩個(gè)路徑就是使用update-alternatives命令所輸出的路徑。

然后運(yùn)行命令使設(shè)置生效:source/etc/environment如果需要卸載default-jdk軟件包,運(yùn)行命令是:sudoaptremovedefault-jdk

開源的tomcatTomcat是一款非常常見的一款WEB服務(wù)軟件,是由APACHE標(biāo)準(zhǔn)和基金會(huì)發(fā)行的一個(gè)項(xiàng)目。Tomcat是由APACHE,SUN公司等共同開發(fā)的一款免費(fèi)的開源軟件。Tomcat的設(shè)計(jì)結(jié)構(gòu)先進(jìn)并且運(yùn)行穩(wěn)定高效,所以經(jīng)常被用于JAVA的WEB開發(fā)。安裝和配置OpenJDK結(jié)束后,就可以安裝Tomcat服務(wù)并配置運(yùn)行環(huán)境了。

開源的tomcat首先下載和安裝tomcat,打開LX終端依次輸入以下命令:sudowget/dist/tomcat/tomcat-9/v9.0.69/bin/apache-tomcat-9.0.69.tar.gz

下載tomcat壓縮包

sudotarzxvfapache-tomcat-9.0.69.tar.gz解壓tomcat壓縮包

開源的tomcat然后設(shè)置TOMCAT和JAVA的環(huán)境變量。為Tomcat添加Java環(huán)境變量JAVA_HOME和JRE_HOME,Tomcat的bin目錄下面的setclasspath.sh文件會(huì)用到這兩個(gè)變量,在LX終端使用nano編輯器打開用戶主目錄下的.bash_profile:sudonano~/.bash_profile在.bash_profile文件中添加如下內(nèi)容,Java路徑需要根據(jù)實(shí)際的安裝路徑修改:exportJAVA_HOME="/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt"exportJRE_HOME="/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt/jre"保存.bash_profile文件并退出。

開源的tomcat接著修改用戶目錄下/apache-tomcat-9.0.69/webapps

的訪問(wèn)權(quán)限,webapps目錄下存放java網(wǎng)站文件:(1)修改apache-tomcat-9.0.69目錄的訪問(wèn)權(quán)限:chmod777~/apache-tomcat-9.0.69/(2)僅修改webapps目錄的訪問(wèn)權(quán)限:chmod777~/apache-tomcat-9.0.69/webapps(3)或者,修改webapps目錄及其子目錄的訪問(wèn)權(quán)限:chmod-R777~/apache-tomcat-9.0.69/webapps完成以上安裝和環(huán)境配置后重啟樹莓派

開源的tomcat開機(jī)后進(jìn)入tomcat目錄并啟動(dòng)tomcat的命令如下:

cd~/apache-tomcat-9.0.69/bin進(jìn)入tomcat目錄

sudo./startup.sh啟動(dòng)tomcat

在需要退出tomcat的時(shí)候,可以使用

關(guān)閉tomcat的命令:sudo./shutdown.sh關(guān)閉tomcat

開源的tomcat最后通過(guò)瀏覽器訪問(wèn):8080來(lái)打開TOMCAT網(wǎng)頁(yè)并且會(huì)顯示ITWORKS等英文字樣,就表示TOMCAT已經(jīng)安裝并且配置成功了

CMake編譯工具CMake是一個(gè)跨平臺(tái)的安裝(編譯)工具,可以用簡(jiǎn)單的語(yǔ)句來(lái)描述所有平臺(tái)的安裝(編譯)過(guò)程。CMake能夠輸出各種各樣的makefile文件或者project文件,能測(cè)試編譯器所支持的C++特性。CMake的組態(tài)檔取名為CMakeLists.txt。Cmake并不直接建構(gòu)出最終的軟件,而是產(chǎn)生標(biāo)準(zhǔn)的建構(gòu)檔例,然后再依一般的建構(gòu)方式使用。

CMake編譯工具首先安裝CMake,在LX終端輸入下面的命令:sudoapt-getinstall-ycmake檢查CMake版本的命令:cmake--version然后測(cè)試CMake,創(chuàng)建一個(gè)新的目錄,用來(lái)保存項(xiàng)目文件:mkdirhelloworld&&cdhelloworld

CMake編譯工具創(chuàng)建文件main.c:sudonanomain.c編輯main.c文件,添加以下C語(yǔ)言代碼:#include<stdio.h>intmain(){

printf("Helloworld\n");

return0;}保存退出

CMake編譯工具創(chuàng)建CMake配置文件CMakeLists.txt:sudonanoCMakeLists.txt編輯CMakeLists.txt文件,添加下面的內(nèi)容:cmake_minimum_required(VERSION3.0)project(helloC)add_executable(hellomain.c)保存并關(guān)閉CMakeLists.txt文件。

CMake編譯工具建議創(chuàng)建單獨(dú)的目錄build來(lái)保存CMake生成的項(xiàng)目文件,命令如下:sudomkdirbuild&&cdbuild以helloworld為例,CMake生成的項(xiàng)目的文件結(jié)構(gòu)類似于:

helloworld/build/CMakeLists.txtmain.c在構(gòu)建目錄中運(yùn)行cmake命令,使用位于父目錄中的CMakeLists.txt文件生成構(gòu)建文件。默認(rèn)情況下,CMake將為原生構(gòu)建系統(tǒng)生成構(gòu)建文件。在我們的例子中是makefile。sudocmake..

CMake編譯工具命令運(yùn)行結(jié)束后,使用ls命令查看目錄會(huì)顯示下面的文件:CMakeCache.txt

CMakeFiles

cmake_install.cmake

Makefile我們看到Makefile文件已生成,就可以在構(gòu)建目錄中執(zhí)行make命令

:sudomake在構(gòu)建目錄中執(zhí)行編譯好的hello程序

:./hello返回信息如下:Helloworld

C語(yǔ)言C語(yǔ)言是一門面向過(guò)程的計(jì)算機(jī)編程語(yǔ)言。C語(yǔ)言描述問(wèn)題比匯編語(yǔ)言迅速、工作量小、可讀性好、易于調(diào)試、修改和移植,而代碼質(zhì)量與匯編語(yǔ)言相當(dāng)。C語(yǔ)言的普適較強(qiáng),在許多計(jì)算機(jī)操作系統(tǒng)中都能夠得到適用,且效率顯著。C語(yǔ)言是一種結(jié)構(gòu)化語(yǔ)言,有著清晰的層次,可按照模塊的方式對(duì)程序進(jìn)行編寫。

C語(yǔ)言GCC是以GPL許可證所發(fā)行的自由軟件,也是GNU計(jì)劃的關(guān)鍵部分。GCC支持多種計(jì)算機(jī)體系結(jié)構(gòu)芯片,如x86、ARM、MIPS等,并已被移植到其他多種硬件平臺(tái)。GCC原名為GNUC語(yǔ)言編譯器(GNUCCompiler),只能處理C語(yǔ)言。很快擴(kuò)展為可處理C++,后來(lái)又?jǐn)U展為能夠支持更多編程語(yǔ)言。在使用GCC編譯器的時(shí)候,必須給出一系列必要的調(diào)用參數(shù)和文件名稱。

C語(yǔ)言GCC編譯器的調(diào)用參數(shù)大約有100多個(gè),其中最基本、最常用的參數(shù)如下:GCC基本的用法∶gcc[選項(xiàng)或參數(shù)][文件名]

C語(yǔ)言首先安裝C語(yǔ)言調(diào)試器gdb,在LX終端運(yùn)行命令:sudoapt-getinstallgdb使用的編譯器是樹莓派系統(tǒng)自帶的gcc或g++編譯器。然后依次執(zhí)行下面的命令調(diào)試c++程序。cd~sudomkdirtestc&&cdtestc#新建目錄testc并進(jìn)入目錄sudovimtest.c

C語(yǔ)言在新建的test.c文件中輸入C語(yǔ)言代碼:#include<stdio.h>intmain(){inti,s;for(i=10;i>0;i--){s=s+i;}printf("%d/n",s);printf("Helloworld,RaspberryPi\n");}使用Vim編輯test.c,按下esc鍵然后輸入:wq!

回車,保存文件后退出。

C語(yǔ)言

C語(yǔ)言保存并關(guān)閉test.c文件,在LX終端使用ls命令查看testc目錄下面會(huì)生成了一個(gè)test.c的文件,使用gcc編譯test.c的命令如下:

sudogcctest.c-otest1再次在LX終端使用ls命令查看testc目錄下面會(huì)生成的test1文件,運(yùn)行生成的test1文件,執(zhí)行命令:./test1test1運(yùn)行后的輸出結(jié)果為:55/nHelloworld,RaspberryPi

C語(yǔ)言

Python語(yǔ)言默認(rèn)情況下,樹莓派操作系統(tǒng)內(nèi)自帶最新版本的python

語(yǔ)言使用環(huán)境,我們可以直接使用python

語(yǔ)言。

樹莓派內(nèi)置了一個(gè)傳感器,可以用來(lái)獲取樹莓派的CPU溫度。在本節(jié),我們使用python語(yǔ)言來(lái)獲取CPU溫度、內(nèi)存使用情況、磁盤(MicroSD卡)使用情況和本機(jī)IP地址信息顯示出來(lái)。

Python語(yǔ)言使用nano編輯器或者Vim編輯器,例如使用nano編輯器編輯getinfo.py

的命令sudonanogetinfo.py

,或者直接從樹莓派開始菜單里直接找到并打開python語(yǔ)言

默認(rèn)編輯環(huán)境,然后輸入以下python代碼:

python代碼如下:【代碼請(qǐng)參考教材】

Python語(yǔ)言保存為getinfo.py退出后,我們?cè)贚X終端里使用命令行運(yùn)行:pythongetinfo.py運(yùn)行結(jié)果:

PyCharmPyCharm是一種PythonIDE。帶有一整套可以幫助用戶在使用Python語(yǔ)言開發(fā)時(shí)提高其效率的工具。提供了一些高級(jí)功能,可以用于支持Django框架下的專業(yè)Web開發(fā)。運(yùn)行PyCharm需要Java環(huán)境支持,如果樹莓派上還沒(méi)有安裝過(guò)JDK或JRE,需要提前安裝。

PyCharm使用樹莓派瀏覽器前往JetBrains官網(wǎng)下載Linux部分的PyCharm社區(qū)版,網(wǎng)址為/pycharm/download/#section=linux

PyCharm將文件下載到樹莓派的/home/pi目錄,或者使用其他電腦下載后上傳到樹莓派的/home/pi目錄。命令中的文件名以實(shí)際下載的版本為準(zhǔn),我們使用的是pycharm-community-2022.1.tar.gz:cd/home/pi#獲取文件后保存的目錄ls#檢查是否存在該文件并檢查文件名

使用解壓命令解壓文件:sudotar-zxvfpycharm-community-2022.1.tar.gz解壓完畢,運(yùn)行pycharm:cdpycharm-community-2022.1/bin./pycharm.sh

如果PyCharm不能正常運(yùn)行,可以根據(jù)PyCharm的安裝版本,選擇合適的JAVA版本。

PyCharm正常情況下,首次運(yùn)行PyCharm后會(huì)出現(xiàn)JETBRAINSCOMMUNITYEDITIONTERMS窗口,在窗口下方的IconfirmthatIhavereadandacceptthetermsofthisUserAdreement前面的復(fù)選框選中,單擊Continue按鈕

PyCharm接著會(huì)出現(xiàn)DATASHARING窗口

PyCharm單擊Don’tSend按鈕,閃過(guò)登錄窗口后,出現(xiàn)WelcometoPyCharm窗口

PyCharm為方便使用PyCharm,可以添加快捷方式到樹莓派的啟動(dòng)器和桌面。在啟動(dòng)器中添加圖標(biāo),編輯pycharm.desktop文件:sudonano/usr/share/applications/pycharm.desktop在pycharm.desktop文件中輸入以下內(nèi)容:[DesktopEntry]Name=PyCharmType=ApplicationExec=/home/pi/pycharm-community-2022.1/bin/pycharm.shIcon=/home/pi/pycharm-community-2022.1/bin/pycharm.pngCategories=Development

PyCharm保存文件后退出,就會(huì)在樹莓派菜單中找到PyCharm的菜單圖標(biāo)和菜單項(xiàng)

PyCharm在樹莓派桌面上添加圖標(biāo),編輯pycharm.desktop文件:sudonano~/Desktop/pycharm.desktop在pycharm.desktop文件輸入以下內(nèi)容:[DesktopEntry]Type=LinkName=PyCharmIcon=/home/pi/pycharm-community-2022.1/bin/pycharm.pngURL=/usr/share/applications/pycharm.desktop

PyCharm保存文件后退出,就會(huì)在樹莓派的桌面上看到PyCharm圖標(biāo)從樹莓派菜單或者桌面上任選其一運(yùn)行PyCharm,可以開始Python的編程了。

ArduinoArduino是一個(gè)開源的硬件開發(fā)平臺(tái),能夠用來(lái)感應(yīng)和控制現(xiàn)實(shí)物理世界,由一個(gè)基于單片機(jī)并且開放源碼的硬件平臺(tái)和ArduinoIDE開發(fā)環(huán)境組成。Arduino可以用來(lái)開發(fā)交互產(chǎn)品,比如它可以讀取大量的開關(guān)和傳感器信號(hào),并且可以控制各式各樣的電燈、電機(jī)和其他物理設(shè)備。Arduino項(xiàng)目可以是單獨(dú)的,也可以在運(yùn)行時(shí)和PC電腦或者樹莓派進(jìn)行通訊。ArduinoIDE可以在Windows、MacintoshOS(MacOS)、Linux三大主流操作系統(tǒng)上運(yùn)行,開源的IDE可以到官方網(wǎng)站免費(fèi)下載。在樹莓派上安裝ArduinoIDE進(jìn)行Arduino開發(fā),一般要經(jīng)過(guò)安裝ArduinoIDE、連接Arduino開發(fā)板、編譯測(cè)試這三個(gè)階段。

安裝ArduinoIDE首先安裝ArduinoIDE開發(fā)環(huán)境,在LX終端輸入以下命令進(jìn)行安裝:sudoapt-getinstallarduino若安裝出現(xiàn)問(wèn)題,可以使用以下命令修復(fù)后再次運(yùn)行安裝命令:sudoapt-getupdate--fix-missing

安裝ArduinoIDE安裝完成之后樹莓派的開始菜單中會(huì)出現(xiàn)ArduinoIDE的菜單項(xiàng)

,單擊ArduinoIDE菜單項(xiàng)

連接Arduino開發(fā)板1、通過(guò)USB數(shù)據(jù)線將Arduino開發(fā)板通過(guò)USB接口跟樹莓派連接起來(lái),同Arduino連接PC類似。因樹莓派USB接口限流,將Arduino開發(fā)板的供電接口同時(shí)外接9-12V的電源適配器供電效果會(huì)更好。2、配置通信端口:從ArduinoIDE主菜單中依次選擇:工具->端口:/dev/ttyxxx->選擇/dev/ttyACM0(ArduinoUno),常用的Arduino開發(fā)板一般會(huì)自動(dòng)選擇

連接Arduino開發(fā)板

編譯測(cè)試從ArduinoIDE主菜單中依次選擇:文件->示例->01.Basics->Blink,Blink示例出現(xiàn)如下代碼://thesetupfunctionrunsoncewhenyoupressresetorpowertheboardvoidsetup(){//initializedigitalpinLED_BUILTINasanoutput.pinMode(LED_BUILTIN,OUTPUT);}//theloopfunctionrunsoverandoveragainforevervoidloop(){digitalWrite(LED_BUILTIN,HIGH);//turntheLEDon(HIGHisthevoltagelevel)delay(1000);//waitforaseconddigitalWrite(LED_BUILTIN,LOW);//turntheLEDoffbymakingthevoltageLOWdelay(1000);//waitforasecond}單擊工具欄的驗(yàn)證按鈕確保正確,再單擊上傳按鈕,將自動(dòng)完成編譯后并上傳到Arduino開發(fā)板,界面下方會(huì)出現(xiàn)上傳完成信息,最后觀察Arduino開發(fā)板上的led指示燈是否閃爍,如果閃爍說(shuō)明ArduinoIDE安裝成功,可以繼續(xù)后續(xù)的開發(fā)。

本章小結(jié)本章主要講述了樹莓派在軟件開發(fā)方面的應(yīng)用,主要包括:開源的OpenJDK和tomcat:OpenJDK是Java平臺(tái)的開源實(shí)現(xiàn),Tomcat是由APACHE,SUN公司等共同開發(fā)的一款免費(fèi)的開源軟件;CMake編譯工具:CMake是一個(gè)跨平臺(tái)的安裝(編譯)工具,可以用簡(jiǎn)單的語(yǔ)句來(lái)描述所有平臺(tái)的安裝(編譯)過(guò)程;C語(yǔ)言:在樹莓派上通過(guò)GCC編譯器使用C語(yǔ)言;Python語(yǔ)言:在樹莓派上使用Python語(yǔ)言來(lái)獲取CPU溫度、內(nèi)存使用情況、磁盤(MicroSD卡)使用情況和顯示本機(jī)IP地址信息;PyCharmIDE:作為樹莓派上使用的PythonIDE,可以幫助用戶在使用Python語(yǔ)言開發(fā)時(shí)提高效率;ArduinoIDE:在樹莓派上進(jìn)行Arduino開發(fā);46經(jīng)驗(yàn)總結(jié)本章結(jié)束第一季度工作報(bào)告XXXXXX公司名稱LOGO站長(zhǎng)之家PPT模板樹莓派應(yīng)用開發(fā)第八章樹莓派GPIO應(yīng)用8.1GPIO基礎(chǔ)8.2C語(yǔ)言基于WiringPi庫(kù)讀取DHT11溫濕度傳感器8.3python語(yǔ)言基于AdafruitDHT庫(kù)讀取DHT11溫濕度傳感器8.4python語(yǔ)言基于GPIO庫(kù)讀取HC-SR04超聲波測(cè)距數(shù)據(jù)8.5python語(yǔ)言通過(guò)I2C驅(qū)動(dòng)LCD1602液晶屏8.6ScratchGPIO編程控制LED燈

GPIO基礎(chǔ)樹莓派的一個(gè)強(qiáng)大功能是在電路板頂部邊緣有兩排40針GPIO(通用輸入/輸出)引腳,可以通過(guò)引腳輸出高電平或是低電平,或者通過(guò)引腳讀入引腳的高電平或是低電平。用戶可以通過(guò)GPIO接口和其他硬件進(jìn)行數(shù)據(jù)交互,控制硬件工作(如LED、蜂鳴器等),讀取硬件的工作狀態(tài)信號(hào)(如中斷信號(hào))等。

GPIO基礎(chǔ)樹莓派40針GPIO引腳

GPIO基礎(chǔ)任何GPIO引腳都可以在軟件中指定為輸入或輸出引腳,并用于廣泛的用途。電壓:板上有兩個(gè)5V引腳和兩個(gè)3.3V引腳,以及一些不可配置的接地引腳。輸出:指定為輸出GPIO引腳,可以設(shè)置引腳是高電平(3.3V)或是低電平(0V)。輸入:指定為輸入GPIO引腳,可以讀取引腳的高電平(3.3V)或引腳的低電平(0V)。PWM(脈寬調(diào)制):軟件PWM在所有引腳上可用。SPI:SPI0包括MOSI(GPIO.10);MISO(GPIO.9);SCLK(GPIO.11);CE0(GPIO.8);CE1(GPIO.7);SPI1包括MOSI(GPIO.20);MISO(GPIO.19);SCLK(GPIO.21);CE0(GPIO.18);CE1(GPIO.17);CE2(GPIO.16);I2C:數(shù)據(jù)包括(GPIO.2);時(shí)鐘(GPIO.3);EEPROM:數(shù)據(jù)包括(GPIO.0);EEPROM時(shí)鐘(GPIO.1);串行:TX(GPIO.14);接收(GPIO.15)權(quán)限:為了使用GPIO端口,登錄用戶必須是該gpio組的成員。

GPIO引出線:通過(guò)打開LX終端窗口并運(yùn)行pinout命令,可以在樹莓派上方便的查詢管腳編碼表。

GPIO基礎(chǔ)運(yùn)行pinout命令后返回的樹莓派管腳編碼表

GPIO基礎(chǔ)樹莓派使用GPIO的方法有很多種,庫(kù)函數(shù)包括了wiringPi以及RPi.GPIO,其中RPi.GPIO庫(kù)是樹莓派系統(tǒng)自帶的。常用的RPi.GPIO庫(kù)規(guī)范有:導(dǎo)入庫(kù)代碼:importRPi.GPIOasGPIO設(shè)置編碼規(guī)范:gpio.setmode(gpio.BOARD)或GPIO.setmode(GPIO.BCM)獲取編碼規(guī)范:mode=GPIO.getmode()將引腳pin設(shè)置為輸入模式:GPIO.setup(pin,GPIO.IN)將引腳pin設(shè)置為輸出模式:GPIO.setup(pin,GPIO.OUT)為輸出的引腳pin設(shè)置默認(rèn)值:GPIO.setup(pin,GPIO.OUT,initial=GPIO.HIGH)引腳pin電平控制:GPIO.output(pin,state)讀取引腳pin的輸入狀態(tài):GPIO.input(pin)釋放GPIO資源:GPIO.cleanup()禁用警告:GPIO.setwarnings(False)

GPIO基礎(chǔ)如果想檢查RPi.GPIO庫(kù)是否引入成功,在測(cè)試代碼中可以使用類似于以下代碼:

try:

importRPi.GPIOasGPIO

exceptRuntimeError:

print(“引入GPIO庫(kù)錯(cuò)誤”)

GPIO基礎(chǔ)目前主要有三種編碼規(guī)范:第一種是Board編碼,這種就是按照樹莓派主板上引腳排針編號(hào)。分別對(duì)應(yīng)1-40號(hào)排針。第二種是BCM編碼,這種方式是參考BroadcomSOC的通道編號(hào),側(cè)重CPU寄存器,采用BCM庫(kù)。python編程常采用這種編碼。第三種是WPI編碼,就是WiringPi編碼,把擴(kuò)展GPIO端口從0開始編碼,使用wiringPi庫(kù)編程會(huì)使用到這種編碼。

GPIO基礎(chǔ)樹莓派GPIO引腳分為串口,i2C,SPI,GPIO和電源管腳,引腳的編號(hào)不是按數(shù)字順序排列的。三種編碼規(guī)范的引腳對(duì)照表WPI編碼BCM編碼功能名GPIO物理引腳BOARD編碼功能名GPIOBCM編碼WPI編碼

3.3V125V

82SDA.1345V

93SCL.156GND

74GPIO.778TXD1415

GND910RXD1516017GPIO.01112GPIO.1181227GPIO.21314GND

322GPIO.31516GPIO.4234

3.3V1718GPIO.52451210MOSI1920GND

139MISO2122GPIO.62561411SCLK2324CE0810

GND2526CE1711300SDA.02728SCL.0131215GPIO.212930GND

226GPIO.223132GPIO.2612262313GPIO.233334GND

2419GPIO.243536GPIO.2716272526GPIO.253738GPIO.82028

GND3940GPIO.292129

GPIO基礎(chǔ)先做點(diǎn)亮一個(gè)LED燈的實(shí)驗(yàn)。編寫代碼之前,首先需要將led燈的管腳通過(guò)杜邦線連接到樹莓派的引腳上,例如把led燈的正極通過(guò)杜邦線連接到樹莓派的11號(hào)引腳,負(fù)極連接到任一GND引腳。led燈的長(zhǎng)管腳一般是正極,短管腳是負(fù)極。

GPIO基礎(chǔ)然后打開LX終端,使用如下命令新建一個(gè)ledtest1.py文件:sudonanoledtest1.py在ledtest1.py文件中輸入如下代碼:importRPi.GPIOasGPIO#引入函數(shù)庫(kù)importtimeGPIO.setwarnings(False)#禁用警告GPIO.setmode(GPIO.BOARD)#設(shè)置引腳編號(hào)規(guī)范GPIO.setup(11,GPIO.OUT)#將11號(hào)引腳設(shè)置成輸出模式while(True):GPIO.output(11,GPIO.HIGH)#將引腳的狀態(tài)設(shè)置為高電平,此時(shí)LED點(diǎn)亮time.sleep(1)#程序休眠1秒鐘,讓LED點(diǎn)亮持續(xù)1秒鐘GPIO.output(11,GPIO.LOW)#將引腳狀態(tài)設(shè)置為低電平,此時(shí)LED熄滅time.sleep(1)#程序休眠1秒鐘,讓LED熄滅持續(xù)1秒鐘GPIO.cleanup()#最后清除所有資源保存ledtest1.py文件并退出。執(zhí)行python3ledtest1.py命令,查看程序運(yùn)行后的led燈點(diǎn)亮和熄滅的狀態(tài),使用Ctrl+C可以關(guān)閉程序。

GPIO基礎(chǔ)運(yùn)行正常后,把ledtest1.py代碼稍做改動(dòng),可以利用PWM來(lái)制作呼吸燈效果,代碼如下:importRPi.GPIOasGPIO#引入函數(shù)庫(kù)importtimeGPIO.setwarnings(False)#禁用警告GPIO.setmode(GPIO.BOARD)#設(shè)置引腳編號(hào)規(guī)范GPIO.setup(12,GPIO.OUT)#將12號(hào)引腳設(shè)置成輸出模式p=GPIO.PWM(12,50)#將12號(hào)引腳初始化為PWM實(shí)例,頻率為50Hzp.start(0)#開始脈寬調(diào)制,參數(shù)范圍為:(0.0<=dc<=100.0)try:while1:fordcinrange(0,101,5):p.ChangeDutyCycle(dc)#修改占空比,參數(shù)范圍為:(0.0<=dc<=100.0)time.sleep(0.1)fordcinrange(100,-1,-5):p.ChangeDutyCycle(dc)time.sleep(0.1)exceptKeyboardInterrupt:passp.stop()#停止輸出PWM波GPIO.cleanup()#清除

GPIO基礎(chǔ)蜂鳴器的實(shí)驗(yàn),蜂鳴器一共兩個(gè)管腳,區(qū)分正負(fù)極,蜂鳴器的正極連接樹莓派的24引腳,負(fù)極連接樹莓派的GND引腳,把以下代碼輸入文件后運(yùn)行:importRPi.GPIOasGPIOimporttimetrig=24#連接24引腳definit():GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(trig,GPIO.OUT,initial=GPIO.HIGH) passdefbeep(seconds): GPIO.output(trig,GPIO.LOW) time.sleep(seconds) GPIO.output(trig,GPIO.HIGH)defbeepBatch(seconds,timespan,counts): foriinrange(counts): beep(seconds) time.sleep(timespan)init()#beep(0.1)beepBatch(0.2,0.5,5)GPIO.cleanup()

C語(yǔ)言基于WiringPi庫(kù)

讀取DHT11溫濕度傳感器DHT11是一款有已校準(zhǔn)數(shù)字信號(hào)輸出的溫濕度傳感器,濕度精度±5%RH,溫度精度±2℃,濕度量程5-95%RH,溫度量程-20-+60℃。DHT11應(yīng)用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù)。傳感器包括一個(gè)電阻式感濕元件和一個(gè)NTC測(cè)溫元件,并與一個(gè)高性能8位單片機(jī)相連接,具有品質(zhì)卓越、超快響應(yīng)、抗干擾能力強(qiáng)、性價(jià)比極高等優(yōu)點(diǎn)。每個(gè)DHT11傳感器都在極為精確的濕度校驗(yàn)室中進(jìn)行校準(zhǔn)。校準(zhǔn)系數(shù)以程序的形式存在OTP內(nèi)存中。一般為4針單排引腳封裝,連接方便。

DHT11溫濕度傳感器的規(guī)格

DHT11溫濕度傳感器DHT11溫濕度傳感器一般有四個(gè)引腳,但是其中一個(gè)沒(méi)有被使用到,有的傳感器模塊會(huì)簡(jiǎn)化成3個(gè)引腳。不建議讀取頻率小于2秒,如果讀取頻率太小,讀取的溫濕度數(shù)據(jù)可能會(huì)有錯(cuò)誤。DHT11溫濕度傳感器的引腳定義:Pin引腳名稱引腳說(shuō)明1VDD供電引腳,直流電3V-5.5V2DATA串行數(shù)據(jù),單總線3NC空引腳,若有則懸空4GND接地引腳,連接電源負(fù)極或接地

WiringPi庫(kù)本節(jié)我們使用C語(yǔ)言的WiringPi庫(kù)來(lái)讀取DHT11溫濕度傳感器的數(shù)據(jù)。WiringPi是一個(gè)用C語(yǔ)言編寫的、基于PIN的GPIO訪問(wèn)庫(kù),提供了GPIO、I2C、SPI、UART和PWM等庫(kù),對(duì)于樹莓派的GPIO編程相當(dāng)方便。

硬件連接樹莓派和DHT11溫濕度傳感器的硬件連接請(qǐng)使用合適的杜邦線把樹莓派和DHT11溫濕度傳感器進(jìn)行正確的硬件連接。序號(hào)DHT11樹莓派1Vcc引腳3.3V或5V2DATA引腳WiringPi編碼73GND引腳GND

安裝WiringPi庫(kù)獲取wiringPi庫(kù)有兩種方式,兩種方式任選其一。方式一是從官方獲取deb包來(lái)安裝,命令如下:cd~sudowget/wiringpi-latest.debsudodpkg-iwiringpi-latest.deb方式二是從GitHub獲取WiringPi源碼來(lái)安裝,目前/WiringPi倉(cāng)庫(kù)支持的版本有:C/C++、Python、PHP、Node、Ruby、Perl等各種編程語(yǔ)言。sudoapt-getupdate如果之前沒(méi)有安裝過(guò)git,執(zhí)行下面的命令安裝:sudoapt-getinstallgit下載wiringPi庫(kù)的命令獲取源碼,保存目錄是/home/pi:sudogitclone/WiringPi/WiringPi編譯安裝wiringPi庫(kù)的命令:cdWiringPisudo./build后期如果不再需要WiringPi庫(kù),可以使用卸載命令:sudo./builduninstall安裝成功后,在LX終端輸入命令gpio-v,可以查看WiringPi的版本信息

樹莓派引腳圖在LX終端輸入命令gpioreadall查看樹莓派引腳圖

編寫C語(yǔ)言程序使用C語(yǔ)言編寫的源代碼如下,使用編輯器新建一個(gè)dht11.c,輸入如下代碼:#include<wiringPi.h>#include<stdio.h>#include<stdlib.h>

typedefunsignedcharuint8;typedefunsignedintuint16;typedefunsignedlonguint32;【剩余代碼請(qǐng)參考教材】保存DHT11.c文件并退出編輯器。

編譯C語(yǔ)言程序并運(yùn)行編譯C語(yǔ)言程序DHT11.c并運(yùn)行的命令如下:sudogcc-Wall-odht11dht11.c-lwiringPisudo./dht11

如果有錄入錯(cuò)誤和編譯錯(cuò)誤請(qǐng)修改C語(yǔ)言源代碼,忽略編譯過(guò)程中的警告。程序運(yùn)行之后將連續(xù)顯示溫濕度的數(shù)據(jù)

python語(yǔ)言基于AdafruitDHT庫(kù)

讀取DHT11溫濕度傳感器樹莓派和DHT11溫濕度傳感器的硬件連接請(qǐng)使用合適的杜邦線把樹莓派和DHT11溫濕度傳感器進(jìn)行正確的硬件連接。序號(hào)DHT11樹莓派1Vcc引腳3.3V或5V2DATA引腳GPIO.0(BCM.17)3GND引腳GND6或9或其他GND

Python庫(kù)DHT11溫濕度傳感器的數(shù)據(jù)讀取需要遵循特定的信號(hào)協(xié)議完成,我們使用AdafruitDHT庫(kù)。安裝AdafruitDHT庫(kù)之前需要更新軟件包:sudoapt-getupdatesudoapt-getinstallbuild-essentialpython-dev從GitHub獲取AdafruitDHT庫(kù):sudogitclone/adafruit/Adafruit_Python_DHT.gitcdAdafruit_Python_DHT給Python2和Python3安裝AdafruitDHT庫(kù),Python2使用的命令是:sudopipinstallAdafruit_Python_DHTsudopythonsetup.pyinstallPython3使用的命令是:sudopip3installAdafruit_Python_DHTsudopython3setup.pyinstall

修改配置文件Adafruit_DHT庫(kù)的更新有時(shí)候跟不上樹莓派的硬件更新,如果我們使用的是樹莓派4B型號(hào),還需要修改一下配置文件以匹配對(duì)應(yīng)的樹莓派cpu。有兩種解決方法,其一是使用這個(gè)傳感器的新庫(kù),位置在/adafruit/Adafruit_CircuitPython_DHT,其二是在原來(lái)的Adadruit_DHT庫(kù)中手動(dòng)更新。

具體操作命令和過(guò)程具體操作命令和過(guò)程如下:sudonano/home/pi/Adafruit_Python_DHT/Adafruit_DHT/platform_detect.py在platform_detect.py文件的末尾內(nèi)容如下:#Matchalinelike'Hardware:BCM2709'match=re.search('^Hardware\s+:\s+(\w+)$',cpuinfo,flags=re.MULTILINE|re.IGNORECASE)ifnotmatch:#Couldn'tfindthehardware,assumeitisn'tapi.returnNoneifmatch.group(1)=='BCM2708':#Pi1return1elifmatch.group(1)=='BCM2709':#Pi2return2elifmatch.group(1)=='BCM2835':#Pi3orPi4return3elifmatch.group(1)=='BCM2837':#Pi3b+return3else:#Somethingelse,notapi.returnNone

具體操作命令和過(guò)程在文件尾部里增加一個(gè)分支:elifmatch.group(1)=='BCM2711':#Pi4b

return3

python程序Adafruit在/Adafruit_Python_DHT/examples目錄提供了示例程序AdafruitDHT.py,程序的源碼如下所示:importsysimportAdafruit_DHTsensor_args={'11':Adafruit_DHT.DHT11,#傳感器型號(hào)DHT11'22':Adafruit_DHT.DHT22,#傳感器型號(hào)DHT22'2302':Adafruit_DHT.AM2302}#傳感器型號(hào)AM2302。。。。。?!臼S啻a請(qǐng)參考教材】最后運(yùn)行以下的命令對(duì)AdafruitDHT.py進(jìn)行測(cè)試:cd~cdAdafruit_Python_DHTcdexamplespython3AdafruitDHT.py111711和17這兩個(gè)參數(shù)分別表示DHT11和數(shù)據(jù)引腳所接的樹莓派GPIO編號(hào)。運(yùn)行成功會(huì)輸出當(dāng)前環(huán)境的溫度和相對(duì)濕度信息,輸出的溫度以攝氏度為單位,相對(duì)濕度是以百分比的形式呈現(xiàn):Temp=24.4*Humidity=53.6%

python語(yǔ)言基于GPIO庫(kù)

讀取HC-SR04超聲波測(cè)距數(shù)據(jù)超聲波的方向性好,反射能力強(qiáng),易于獲得較集中的聲能。人們利用超聲波的特性制成超聲波傳感器,廣泛應(yīng)用于汽車領(lǐng)域。日常所說(shuō)的倒車?yán)走_(dá)就是使用了超聲波傳感器。HC-SR04超聲波測(cè)距模塊可提供2cm-400cm范圍的非接觸式距離感測(cè)功能,測(cè)距精度可達(dá)高到3mm。HC-SR04超聲波測(cè)距模塊包括超聲波發(fā)射器、接收器與控制電路,常用于機(jī)器人避障、物體測(cè)距、液位檢測(cè)、公共安防、停車場(chǎng)檢測(cè)等場(chǎng)所

HC-SR04超聲波模塊HC-SR04超聲波模塊主要是由兩個(gè)通用的壓電陶瓷超聲傳感器,并加外圍信號(hào)處理電路構(gòu)成的。兩個(gè)壓電陶瓷超聲傳感器,一個(gè)用于發(fā)出超聲波信號(hào),一個(gè)用于接收反射回來(lái)的超聲波信號(hào)。

基本工作原理HC-SR04超聲波模塊的基本工作原理是:采用IO口TRIG觸發(fā)測(cè)距,給最少10us的高電平信呈;模塊自動(dòng)發(fā)送8個(gè)40khz的方波,自動(dòng)檢測(cè)是否有信號(hào)返回;若有信號(hào)返回,通過(guò)IO口ECHO輸出一個(gè)高電平,高電平持續(xù)的時(shí)間就是超聲波從發(fā)射到返回的時(shí)間,計(jì)算公式是:測(cè)試距離=(高電平時(shí)間*聲速(340M/S))/2;

HC-SR04模塊的主要電氣參數(shù)序號(hào)主要電氣參數(shù)數(shù)值1電壓DC5V2靜態(tài)電流小于2mA3電平輸出高5V4電平輸出低0V5感應(yīng)角度不大于15度6探測(cè)距離2cm-400cm7精度0.3cm8Trigger引腳輸入信號(hào)10usTTL脈沖9Echo引腳輸出信號(hào)5V脈沖信號(hào)

測(cè)距過(guò)程HC-SR04超聲波模塊有4個(gè)引腳,分別為Vcc、Trig(控制端)、Echo(接收端)、GND;其中VCC接5V電源、GND接地,Trig控制發(fā)出的超聲波信號(hào),Echo接收反射回來(lái)的超聲波信號(hào)。通過(guò)Trig引腳發(fā)送一個(gè)10US以上的高電平,就可以在Echo接收口等待高電平輸出;一旦有輸出信號(hào)就開定時(shí)器計(jì)時(shí),當(dāng)Echo接收口變?yōu)榈碗娖綍r(shí),就可以讀定時(shí)器的值,這個(gè)時(shí)間數(shù)值就是測(cè)距的時(shí)間,通過(guò)公式計(jì)算出距離。如果不斷的循環(huán)測(cè)試并返回時(shí)間數(shù)值,還可以計(jì)算移動(dòng)物體的距離。

硬件連接樹莓派與HC-SR04超聲波測(cè)距模塊的硬件連接序號(hào)HC-SR04樹莓派1Vcc引腳5V2GND引腳GND3Trig引腳GPIO.3-BCM.23Echo引腳GPIO.5-BCM.3

python程序初始化相關(guān)引腳的代碼為:importRPi.GPIOasGPIO#導(dǎo)入GPIO庫(kù)importtimeGPIO.setmode(GPIO.BCM)#設(shè)置GPIO模式為BCMGPIO_TRIGGER=2#定義GPIO.2引腳連接TrigGPIO_ECHO=3#定義GPIO.3引腳連接EchoGPIO.setup(GPIO_TRIGGER,GPIO.OUT)#設(shè)置GPIO.2的工作方式OUTGPIO.setup(GPIO_ECHO,GPIO.IN)#設(shè)置GPI.3O的工作方式IN。。。。。?!臼S啻a請(qǐng)參考教材】保存hcsr04.py文件后退出,在LX終端輸入以下命令運(yùn)行:python3hcsr04.py

python語(yǔ)言通過(guò)I2C

驅(qū)動(dòng)LCD1602液晶屏I2C是一種同步、半雙工的通信總線。同步方式要求發(fā)送端和接收端要嚴(yán)格同步,一般設(shè)計(jì)有同步時(shí)鐘線。半雙工方式I2C只有一條數(shù)據(jù)線,所以發(fā)數(shù)據(jù)與收數(shù)據(jù)不能同時(shí)進(jìn)行。為方便CPU與外設(shè)之間通信,信號(hào)線盡量少并且速率要盡量高,可以減少引腳占用。標(biāo)準(zhǔn)的I2C需要兩根信號(hào)線:SCL(SerialClock):時(shí)鐘線,時(shí)鐘都是有master提供的。SDA(SerialData):雙向數(shù)據(jù)線,發(fā)數(shù)據(jù)或者收數(shù)據(jù)(收發(fā)不能同時(shí))。

LCD1602液晶屏LCD1602液晶屏是廣泛使用的一種字符型液晶顯示模塊,分為帶背光和不帶背光兩種。LCD1602液晶屏本身有16個(gè)引腳,配合I2C模塊后可以使用四根信號(hào)線連接到樹莓派,極大的簡(jiǎn)化硬件連線和開發(fā)驅(qū)動(dòng)程序。帶I2C模塊的LCD1602液晶屏模塊:

硬件連接樹莓派與帶I2C驅(qū)動(dòng)LCD1602液晶屏的硬件連接序號(hào)I2C樹莓派1Vcc引腳5V2GND引腳GND3SDA引腳GPIO.3-I2C數(shù)據(jù)4SCL引腳GPIO.5-I2C時(shí)鐘

啟用樹莓派的I2C功能首先安裝python3-smbus和i2c-tools軟件,使用如下命令:sudoapt-getinstall-ypython3-smbussudoapt-getinstall-yi2c-tools接著使用命令sudoraspi-config->3InterfaceOptions->I5I2C或者使用樹莓派菜單->首選項(xiàng)->RaspberryPiConfiguration->Interfaces,設(shè)置開啟I2C功能。

最后重啟樹莓派使設(shè)置設(shè)置開啟I2C

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論