![《物聯(lián)網(wǎng)技術(shù)及應(yīng)用》課件全套 查娟 1 操作系統(tǒng)配置-29 登錄界面設(shè)計(jì)_第1頁(yè)](http://file4.renrendoc.com/view10/M03/1B/08/wKhkGWXtPWCAYAWEAAFKwNSy8Dc075.jpg)
![《物聯(lián)網(wǎng)技術(shù)及應(yīng)用》課件全套 查娟 1 操作系統(tǒng)配置-29 登錄界面設(shè)計(jì)_第2頁(yè)](http://file4.renrendoc.com/view10/M03/1B/08/wKhkGWXtPWCAYAWEAAFKwNSy8Dc0752.jpg)
![《物聯(lián)網(wǎng)技術(shù)及應(yīng)用》課件全套 查娟 1 操作系統(tǒng)配置-29 登錄界面設(shè)計(jì)_第3頁(yè)](http://file4.renrendoc.com/view10/M03/1B/08/wKhkGWXtPWCAYAWEAAFKwNSy8Dc0753.jpg)
![《物聯(lián)網(wǎng)技術(shù)及應(yīng)用》課件全套 查娟 1 操作系統(tǒng)配置-29 登錄界面設(shè)計(jì)_第4頁(yè)](http://file4.renrendoc.com/view10/M03/1B/08/wKhkGWXtPWCAYAWEAAFKwNSy8Dc0754.jpg)
![《物聯(lián)網(wǎng)技術(shù)及應(yīng)用》課件全套 查娟 1 操作系統(tǒng)配置-29 登錄界面設(shè)計(jì)_第5頁(yè)](http://file4.renrendoc.com/view10/M03/1B/08/wKhkGWXtPWCAYAWEAAFKwNSy8Dc0755.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
3/10/20241物聯(lián)網(wǎng)技術(shù)及應(yīng)用
操作系統(tǒng)配置
3/10/20242設(shè)備介紹組件認(rèn)識(shí)系統(tǒng)安裝123操作系統(tǒng)配置3/10/20243物聯(lián)網(wǎng)架構(gòu)3/10/20244智能車火星車智能車行業(yè)現(xiàn)狀3/10/20245硬件設(shè)備:硬件設(shè)備采用創(chuàng)樂(lè)博科技有限公司開(kāi)發(fā)的樹(shù)莓派4BAI智能小車,產(chǎn)品型號(hào)為創(chuàng)樂(lè)博CLB-LRB-AI02。操作系統(tǒng)配置3/10/20246操作系統(tǒng)配置3/10/20247操作系統(tǒng)配置這款產(chǎn)品的控制板為4BRaspberryPi主板,主要的組件有:3/10/20248先進(jìn)芯片進(jìn)口受到越來(lái)越多的限制。操作系統(tǒng)配置芯片價(jià)格近年持續(xù)上漲3/10/20249操作系統(tǒng)配置操作系統(tǒng)安裝分為三步:格式化存儲(chǔ)卡準(zhǔn)備系統(tǒng)鏡像文件燒錄工具開(kāi)始燒錄文件3/10/202410操作系統(tǒng)配置格式化存儲(chǔ)卡3/10/202411操作系統(tǒng)配置準(zhǔn)備系統(tǒng)鏡像文件樹(shù)莓派操作系統(tǒng)根據(jù)對(duì)應(yīng)的主板型號(hào)去下載(樹(shù)莓派官網(wǎng))。Raspbian.img3/10/202412操作系統(tǒng)配置燒錄工具開(kāi)始燒錄文件下載地址:https://www.balena.io/etcher/3/10/202413操作系統(tǒng)配置點(diǎn)擊添加系統(tǒng)鏡像文件點(diǎn)擊選擇讀卡器盤(pán)符點(diǎn)擊開(kāi)始燒錄3/10/202414操作系統(tǒng)配置系統(tǒng)燒錄成功顯示如下:3/10/202415操作系統(tǒng)配置將存儲(chǔ)卡插入樹(shù)莓派主板中:3/10/202416小結(jié)智能車的組件能夠?qū)崿F(xiàn)的功能樹(shù)莓派系統(tǒng)的安裝步驟3/10/202417課后作業(yè)及思考(1)分析智能車,完成硬件組件名稱、外觀以及功能的梳理。(2)開(kāi)機(jī)確定電量,判斷是否需要充電。(3)觀察開(kāi)機(jī)指示燈亮滅情況,判斷系統(tǒng)是否正常安裝。3/10/202418Thankyou3/10/202419物聯(lián)網(wǎng)技術(shù)及應(yīng)用
IP地址獲取
3/10/202420地址介紹網(wǎng)絡(luò)設(shè)置網(wǎng)絡(luò)連接及IP地址獲取123IP地址獲取3/10/202421地址有兩種:MAC地址(MediaAccessControlAddress)IP地址(InternetProtocolAddress)IP地址獲取3/10/202422地址介紹網(wǎng)絡(luò)設(shè)置網(wǎng)絡(luò)連接及IP地址獲取123IP地址獲取3/10/202423環(huán)境準(zhǔn)備:樹(shù)莓派操作系統(tǒng)是基于linux的操作系統(tǒng),網(wǎng)絡(luò)環(huán)境配置需要在Linux操作系統(tǒng)的PC機(jī)上完成操作。IP地址獲取兩種主流虛擬機(jī)(二選一)Linux主要發(fā)行版本3/10/202424IP地址獲取3/10/202425地址介紹網(wǎng)絡(luò)設(shè)置網(wǎng)絡(luò)連接及IP地址獲取123IP地址獲取3/10/202426IP地址獲取1、將存儲(chǔ)卡插入樹(shù)莓派主板中3、打開(kāi)智能車開(kāi)關(guān)2、打開(kāi)手機(jī)熱點(diǎn)3/10/202427IP地址獲取華為手機(jī)熱點(diǎn)已連接設(shè)備3/10/202428IP地址獲取3/10/202429小結(jié)MAC地址和IP地址的區(qū)別樹(shù)莓派系統(tǒng)的WIFI設(shè)置方式樹(shù)莓派設(shè)備連接網(wǎng)絡(luò),查詢樹(shù)莓派設(shè)備的ip地址3/10/202430Thankyou3/10/202431物聯(lián)網(wǎng)技術(shù)及應(yīng)用
樹(shù)莓派文件運(yùn)行
3/10/202432VNC工具介紹FileZilla工具使用樹(shù)莓派系統(tǒng)文件運(yùn)行123樹(shù)莓派文件運(yùn)行3/10/202433VNC工具:客戶端的應(yīng)用程序(VNCViewer)
服務(wù)器端的應(yīng)用程序(VNCServer)樹(shù)莓派文件運(yùn)行3/10/202434樹(shù)莓派文件運(yùn)行3/10/202435VNC工具介紹FileZilla工具使用樹(shù)莓派系統(tǒng)文件運(yùn)行123樹(shù)莓派文件運(yùn)行3/10/202436樹(shù)莓派文件運(yùn)行FileZilla工具是一款免費(fèi)的傳輸工具,能夠?qū)崿F(xiàn)PC和樹(shù)莓派之間的雙向文件傳輸功能。3/10/202437樹(shù)莓派文件運(yùn)行3/10/202438VNC工具介紹FileZilla工具使用樹(shù)莓派系統(tǒng)文件運(yùn)行123樹(shù)莓派文件運(yùn)行3/10/202439樹(shù)莓派文件運(yùn)行樹(shù)莓派系統(tǒng)中運(yùn)行文件可以有兩種方式第一種是可以將PC端本地的文件上傳到樹(shù)莓派上去運(yùn)行第二種是在樹(shù)莓派系統(tǒng)中直接編寫(xiě)模塊代碼運(yùn)行。3/10/202440樹(shù)莓派文件運(yùn)行3/10/202441小結(jié)VNC遠(yuǎn)程登錄樹(shù)莓派系統(tǒng)FileZilla文件傳輸樹(shù)莓派系統(tǒng)中如何查找文件、創(chuàng)建文件、運(yùn)行文件和查看日志結(jié)果3/10/202442本地pc端編寫(xiě)模塊代碼,輸出內(nèi)容不限。本地pc端VNC和FileZilla環(huán)境安裝。使用FileZilla工具完成文件從pc端傳輸?shù)綐?shù)莓派系統(tǒng)中。采用VNC工具登錄樹(shù)莓派系統(tǒng),找到文件并運(yùn)行文件,輸出運(yùn)行結(jié)果。作業(yè)3/10/202443Thankyou3/10/202444物聯(lián)網(wǎng)技術(shù)及應(yīng)用
輸出helloworld
3/10/202445輸出helloworldPython之父:吉多·范羅蘇姆,是一名荷蘭計(jì)算機(jī)程序員3/10/202446輸出helloworldPython安裝3/10/202447輸出helloworldPython開(kāi)發(fā)環(huán)境3/10/202448輸出helloworld3/10/202449小結(jié)熟悉python的編程環(huán)境python的shell界面輸出helloworld創(chuàng)建了python文件,打印輸出helloworld3/10/202450Thankyou3/10/202451物聯(lián)網(wǎng)技術(shù)及應(yīng)用
BMI計(jì)算
3/10/202452BMI計(jì)算BMI指數(shù)(身體質(zhì)量指數(shù),BodyMassIndex,簡(jiǎn)稱BMI),是用體重公斤數(shù)除以身高米數(shù)平方得出的數(shù)字,是目前國(guó)際上常用的衡量人體胖瘦程度以及是否健康的一個(gè)標(biāo)準(zhǔn)。3/10/202453函數(shù)的創(chuàng)建及調(diào)用函數(shù)入?yún)⒑瘮?shù)的返回值123BMI計(jì)算3/10/202454BMI計(jì)算def函數(shù)名(函數(shù)參數(shù)): 函數(shù)體在文件中頂格在python中創(chuàng)建函數(shù)用關(guān)鍵字def實(shí)現(xiàn),具體格式如下:一個(gè)空格英文冒號(hào)一個(gè)table距離,也等于四個(gè)空格位置def:固定的關(guān)鍵字函數(shù)名:自定義,最好能夠通過(guò)函數(shù)名了解函數(shù)功能函數(shù)參數(shù):可以有,可以沒(méi)有,可以一個(gè),也可以多個(gè)函數(shù)體:具體功能代碼3/10/202455BMI計(jì)算3/10/202456函數(shù)的創(chuàng)建及調(diào)用函數(shù)入?yún)⒑瘮?shù)的返回值123BMI計(jì)算3/10/202457BMI計(jì)算函數(shù)入?yún)ⅲ篸efhelloworld(i):print(i)helloworld(“helloworld”)defhelloworld():print("helloworld")helloworld()無(wú)入?yún)⒂幸粋€(gè)入?yún)i=“helloworld”3/10/202458BMI計(jì)算3/10/202459函數(shù)的創(chuàng)建及調(diào)用函數(shù)入?yún)⒑瘮?shù)的返回值123BMI計(jì)算3/10/202460BMI計(jì)算defhelloworld(i): print(i) returni+1函數(shù)返回值:3/10/202461BMI計(jì)算3/10/202462BMI任務(wù)練習(xí)deffun_bmi(person,height,weight):print(person+"的身高"+str(height)+"米")print(person+"的體重"+str(weight)+"千克")bmi=weight/(height*height)print(person+"的BMI指數(shù)為"+str(bmi))fun_bmi("小明",1.83,60)任務(wù)要求:通過(guò)輸入?yún)?shù)姓名、身高和體重,獲取BMI值打印3/10/202463小結(jié)函數(shù)的創(chuàng)建及調(diào)用函數(shù)入?yún)⒌氖褂毛@取函數(shù)返回值3/10/202464Thankyou3/10/202465物聯(lián)網(wǎng)技術(shù)及應(yīng)用
計(jì)算圓形周長(zhǎng)和面積
3/10/202466計(jì)算圓形周長(zhǎng)和面積(1)if語(yǔ)句if表達(dá)式1:
語(yǔ)句1elif表達(dá)式2:
語(yǔ)句2…else:
語(yǔ)句n3/10/202467計(jì)算圓形周長(zhǎng)和面積舉個(gè)例子,有如下一段代碼,運(yùn)行之后打印顯示哪些內(nèi)容呢?i=3ifi<5: print("helloworld") print("hi")else: print("nodata")3/10/202468計(jì)算圓形周長(zhǎng)和面積(2)for語(yǔ)句for循環(huán)變量in遍歷序列:
循環(huán)體for循環(huán)是已知循環(huán)次數(shù)的情況下,進(jìn)行遍歷序列的循環(huán)??崭窨崭窨崭裆鲜龈袷街醒h(huán)變量在遍歷序列中遍歷取值,每取值一次,執(zhí)行一次循環(huán)體內(nèi)容。3/10/202469計(jì)算圓形周長(zhǎng)和面積forjinrange(5):print(j)for循環(huán)舉例:forjin[0,1,2,3,4]:print(j)運(yùn)行結(jié)果:運(yùn)行過(guò)程:j=0Print(j)j=1Print(j)j=2Print(j)j=3Print(j)j=4Print(j)3/10/202470計(jì)算圓形周長(zhǎng)和面積(3)while語(yǔ)句while循環(huán)是一種不計(jì)次數(shù)的循環(huán),只要滿足條件就
一直循環(huán),while循環(huán)格式如下:while條件表達(dá)式:
循環(huán)體3/10/202471計(jì)算圓形周長(zhǎng)和面積while語(yǔ)句舉例1:i=3whilei<10:print(i)i=i+1i=3,滿足i<10,執(zhí)行print(i),i=i+1------i=4i=4,滿足i<10,執(zhí)行print(i),i=i+1------i=5i=5,滿足i<10,執(zhí)行print(i),i=i+1------i=6i=6,滿足i<10,執(zhí)行print(i),i=i+1------i=7i=7,滿足i<10,執(zhí)行print(i),i=i+1------i=8i=9,滿足i<10,執(zhí)行print(i),i=i+1------i=10i=10,不滿足i<10,故而不進(jìn)入while循環(huán)體內(nèi)容運(yùn)行過(guò)程:3/10/202472計(jì)算圓形周長(zhǎng)和面積while語(yǔ)句舉例2:i=3whileTrue:print(i)i=i+1ifi>=10:breaki=3,進(jìn)入while循環(huán),執(zhí)行print(i),i=i+1------i=4,進(jìn)入if判斷,不滿足if條件,返回while語(yǔ)句print(i),i=i+1------i=5進(jìn)入if判斷,不滿足if條件,返回while語(yǔ)句……print(i),i=i+1------i=10進(jìn)入if判斷,滿足if條件,執(zhí)行break語(yǔ)句,跳出while循環(huán),程序結(jié)束。運(yùn)行過(guò)程:3/10/202473計(jì)算圓形周長(zhǎng)和面積while語(yǔ)句舉例1和2的運(yùn)行結(jié)果:3/10/202474創(chuàng)建模塊area.py。在area.py模塊中編寫(xiě)函數(shù)mianji(r),入?yún)表示圓形半徑,函數(shù)功能為計(jì)算圓的面積,并返回面積值。在area.py模塊中編寫(xiě)函數(shù)zhouchang(r),入?yún)表示圓形半徑,函數(shù)功能為計(jì)算圓的周長(zhǎng),并返回周長(zhǎng)值。調(diào)用mianji(r)函數(shù),計(jì)算半徑為2的圓形面積,根據(jù)mianji(r)函數(shù)返回值,采用if語(yǔ)句判斷面積如果大于10,則打印“面積大于10”,如果小于10,則打印“面積小于10”。采用for語(yǔ)句,遍歷計(jì)算圓半徑分別為1,2,3的圓形周長(zhǎng),并打印周長(zhǎng)的值。計(jì)算半徑為5的圓形周長(zhǎng),并采用while語(yǔ)句判斷計(jì)算的周長(zhǎng)值是否大于20,如果大于20,則打印“周長(zhǎng)大于20”,并退出while循環(huán)。任務(wù)練習(xí)3/10/202475小結(jié)if語(yǔ)句for語(yǔ)句while語(yǔ)句3/10/202476Thankyou3/10/202477物聯(lián)網(wǎng)技術(shù)及應(yīng)用
統(tǒng)計(jì)姓名和學(xué)號(hào)
3/10/202478統(tǒng)計(jì)姓名和學(xué)號(hào)Python數(shù)據(jù)結(jié)構(gòu)3/10/202479統(tǒng)計(jì)姓名和學(xué)號(hào)(1)列表列表中包含元素,相鄰元素之間需要用“,”隔開(kāi),且列表中所有元素要放在“[]”中。列表的格式如下:列表名稱=[元素1,元素2,…,元素n]liebiao1=[8,’python’,”人生苦短,我用Python”,[“物聯(lián)網(wǎng)”,”云計(jì)算”,”大數(shù)據(jù)”]]舉個(gè)例子:列表名稱元素1元素3元素4元素23/10/202480統(tǒng)計(jì)姓名和學(xué)號(hào)如果列表中沒(méi)有元素,創(chuàng)建一個(gè)空列表:emptylist=[]列表創(chuàng)建好之后,我們可以使用for循環(huán)來(lái)遍歷列表:liebiao1=[8,'python',"人生苦短,我用Python",["物聯(lián)網(wǎng)","云計(jì)算","大數(shù)據(jù)"]]forjinliebiao1:print(j)3/10/202481統(tǒng)計(jì)姓名和學(xué)號(hào)liebiao1=[8,'python',"人生苦短,我用Python",["物聯(lián)網(wǎng)","云計(jì)算","大數(shù)據(jù)"]]print(liebiao1[0])print(liebiao1[1])print(liebiao1[2])print(liebiao1[3])采用下標(biāo)訪問(wèn)指定列表元素:運(yùn)行結(jié)果:3/10/202482統(tǒng)計(jì)姓名和學(xué)號(hào)(2)字典定義字典時(shí),所有元素放在{}中,每個(gè)元素都包含“鍵”和“值”兩部分內(nèi)容,相鄰元素之間用逗號(hào)分隔。字典的語(yǔ)法格式如下:dictname={'key':'value1','key2':'value2',...,'keyn':valuen}一個(gè)元素字典名稱元素的鍵元素的值3/10/202483統(tǒng)計(jì)姓名和學(xué)號(hào)同一字典中的元素各個(gè)鍵必須唯一,不能重復(fù);鍵是不可變的,字符串、元組和整數(shù)都可以作為鍵。注意:3/10/202484統(tǒng)計(jì)姓名和學(xué)號(hào)
#使用字符串作為keydict1={'數(shù)學(xué)':90,'科學(xué)':95,'語(yǔ)文':85}print(dict1)創(chuàng)建字典舉例1:創(chuàng)建字典舉例2:#使用元組和數(shù)字作為keydict2={(10,30):'good',10:[4,5,6]}print(dict2)3/10/202485統(tǒng)計(jì)姓名和學(xué)號(hào)創(chuàng)建字典舉例3:#創(chuàng)建空字典dict3={}print(dict3)三個(gè)案例的運(yùn)行結(jié)果:3/10/202486統(tǒng)計(jì)姓名和學(xué)號(hào)dict1={'數(shù)學(xué)':90,'科學(xué)':95,'語(yǔ)文':85}print(dict1['科學(xué)'])如何訪問(wèn)字典中的某一個(gè)元素?打印結(jié)果:3/10/202487統(tǒng)計(jì)姓名和學(xué)號(hào)3/10/202488小結(jié)列表字典Python的兩種數(shù)據(jù)類型:3/10/202489Thankyou3/10/202490物聯(lián)網(wǎng)技術(shù)及應(yīng)用
模塊引入
3/10/202491模塊引入哥白尼,布魯諾,開(kāi)普勒還有伽利略等科學(xué)巨人哥白尼,布魯諾,開(kāi)普勒還有伽利略等3/10/202492模塊引入Python也是站在巨人的肩膀上3/10/202493模塊引入(1)創(chuàng)建一個(gè)模塊3/10/202494模塊引入if__name__==“__main__”:雙下滑線空格3/10/202495模塊引入引入模塊采用關(guān)鍵字import,表示導(dǎo)入模塊,用法為:import模塊名mokuai2.py運(yùn)行模塊引入從mokuai2.py的角度去看,只能導(dǎo)入這部分內(nèi)容,下面的if語(yǔ)句是不導(dǎo)入的mokuai2.py中增加調(diào)用mokuai1的函數(shù)。調(diào)用格式為:模塊名.函數(shù)模塊引入保存mokuai2.py,并運(yùn)行mokuai2.py模塊引入以time模塊為例,導(dǎo)入time庫(kù),調(diào)用time庫(kù)中的sleep(delaytime)函數(shù),函數(shù)功能為延遲delaytime時(shí)間,入?yún)挝粸槊搿mporttimeforiinrange(5): print("helloworld") time.sleep(5)#延遲5s3/10/202499小結(jié)創(chuàng)建模塊,引入模塊(關(guān)鍵字import)模塊私有部分if__name__==“main”:模塊名.函數(shù)/變量3/10/2024100任務(wù)練習(xí)創(chuàng)建文件mokuai.py。在mokuai.py中導(dǎo)入math庫(kù)。在mokuai.py中定義計(jì)算圓形周長(zhǎng)的函數(shù),入?yún)閳A形半徑,周長(zhǎng)計(jì)算公式中的π采用math.pi來(lái)表示。打印計(jì)算的周長(zhǎng)值。調(diào)用函數(shù),計(jì)算圓形半徑為1的圓形周長(zhǎng)。3/10/2024101Thankyou3/10/2024102物聯(lián)網(wǎng)技術(shù)及應(yīng)用
變量未定義異常處理
3/10/2024103變量未定義異常處理根據(jù)變量的作用范圍,一般可以劃分為兩種:全局變量全局變量是在函數(shù)體內(nèi)和函數(shù)體外都能使用的變量,全局變量的定義是需要放在函數(shù)體外的。局部變量局部變量是一種作用在函數(shù)體內(nèi)的變量,只能在函數(shù)體內(nèi)使用3/10/2024104變量未定義異常處理value=3defb1():print(value)defb2(): value=2print(value)b1()b2()print(value)這段代碼的運(yùn)行結(jié)果是什么呢?代碼示例:3/10/2024105變量未定義異常處理3/10/2024106變量未定義異常處理局部變量全局化:global局部變量函數(shù)體內(nèi)變量的全局化可以加一個(gè)global關(guān)鍵詞定義,格式如下:變量未定義異常處理變量未定義異常處理value=3defb1():print(value)defb2():
globalvaluevalue=2print(value)b1()b2()print(value)增加一句globalvalue這段代碼的運(yùn)行結(jié)果又是什么呢?代碼示例:變量未定義異常處理Python中異常處理可以采用try…except語(yǔ)句。具體格式為:try:
語(yǔ)句1except:
語(yǔ)句23/10/2024110變量未定義異常處理try:
語(yǔ)句1except異常碼:
語(yǔ)句2帶有異常碼的格式:try:
語(yǔ)句1exceptKeyboardInterrupt:
語(yǔ)句2鍵盤(pán)中斷異常碼3/10/2024111變量未定義異常處理defshifanyanshi1(): globalj j=10defdayinghanshu(): try: print(j) except: print("tryerror")dayinghanshu()shifanyanshi1()dayinghanshu()3/10/2024112小結(jié)全局變量局部變量try……except……語(yǔ)句3/10/2024113任務(wù)練習(xí)定義loop()函數(shù),函數(shù)功能為循環(huán)打印“helloworld”,如果遇到鍵盤(pán)中斷則退出循環(huán),并打印輸出“keyboardinterrupthappens”。調(diào)用loop函數(shù)運(yùn)行,查看運(yùn)行結(jié)果。定義全局變量k,賦值為字符串類型“quanjubianliang”,編寫(xiě)函數(shù)1,函數(shù)1中對(duì)該全局變量k進(jìn)行重新賦值“newvalue”,打印變量k。編寫(xiě)函數(shù)2,函數(shù)2中定義局部變量k,k=“jububianliang”,打印變量k。調(diào)用a1(),a2()函數(shù),并打印變量k。查看運(yùn)行結(jié)果。3/10/2024114Thankyou3/10/2024115物聯(lián)網(wǎng)技術(shù)及應(yīng)用
類的創(chuàng)建及使用
3/10/2024116類的創(chuàng)建及使用面向過(guò)程:將衣服扔進(jìn)盆里→放入洗滌劑→放水→浸泡衣服→清洗衣服→擰干衣服→曬衣服面向?qū)ο螅含F(xiàn)在將這個(gè)洗衣服的部分流程動(dòng)作(放水,浸泡衣服,清洗衣服,擰干衣服)賦予給了洗衣機(jī),這時(shí)候?qū)ο笳Q生了,就是洗衣機(jī)!3/10/2024117類的創(chuàng)建及使用空間站:3/10/2024118類的創(chuàng)建及使用創(chuàng)建類創(chuàng)建__init__()方法創(chuàng)建其他方法屬性3/10/2024119類的創(chuàng)建及使用(1)創(chuàng)建類定義類采用關(guān)鍵字class實(shí)現(xiàn),定義格式如下:class類名: “類的注釋信息”
類體#具體內(nèi)容,包含屬性、方法等。3/10/2024120類的創(chuàng)建及使用3/10/2024121類的創(chuàng)建及使用(2)創(chuàng)建__init__()方法創(chuàng)建類通常也會(huì)創(chuàng)建一個(gè)__init__()函數(shù),該函數(shù)的第一個(gè)入?yún)⒐潭閟elf,其后還可以增加其他入?yún)ⅰC看蝿?chuàng)建該類的實(shí)例時(shí),__init__()函數(shù)都會(huì)執(zhí)行一遍,而不需要單獨(dú)調(diào)用。這就避免了有些代碼重復(fù),從而簡(jiǎn)化代碼。3/10/2024122類的創(chuàng)建及使用3/10/2024123類的創(chuàng)建及使用(3)創(chuàng)建其他方法在類中,變量稱之為類屬性,函數(shù)稱為類實(shí)例方法。除了__init__(self)方法外,還可以創(chuàng)建其他的函數(shù)。和__init__(self)方法不同的是,其他的函數(shù)要通過(guò)實(shí)例化訪問(wèn)后才可以執(zhí)行,不會(huì)自動(dòng)執(zhí)行。和__init__(self)方法相同的是,創(chuàng)建的其他函數(shù)必須包含第一個(gè)入?yún)elf,其他入?yún)⒖梢愿鶕?jù)需要設(shè)定,也可以沒(méi)有。3/10/2024124類的創(chuàng)建及使用3/10/2024125類的創(chuàng)建及使用(4)屬性python中屬性細(xì)分一下有三種:類屬性定義在類中且在類函數(shù)之外的變量方法屬性定義在類函數(shù)中的變量方法轉(zhuǎn)換屬性將類函數(shù)轉(zhuǎn)換為私有屬性的情況3/10/2024126類的創(chuàng)建及使用在python語(yǔ)言中,默認(rèn)的創(chuàng)建的類屬性和實(shí)例方法都是可以在類體外進(jìn)行修改的,如果要限制其在類體外修改,可以設(shè)置為私有屬性,變成只讀內(nèi)容。設(shè)置私有屬性采用@property關(guān)鍵詞,則可以將方法轉(zhuǎn)換為私有屬性。3/10/2024127類的創(chuàng)建及使用classfruit: aa="統(tǒng)計(jì)個(gè)人水果愛(ài)好"#類屬性 def__init__(self,xingming,zhonglei): print("initstarts") self.xingming=xingming#方法屬性
self.zhonglei=zhonglei#方法屬性print(fruit.aa) @property#方法轉(zhuǎn)換屬性 deftongji(self): return(str(self.xingming)+"最愛(ài)吃的是"+str(self.zhonglei))shuiguo=fruit("小紅","蘋(píng)果")print(shuiguo.xingming)print(shuiguo.aa)print(shuiguo.tongji)3/10/2024128類的創(chuàng)建及使用classfruit: aa="統(tǒng)計(jì)個(gè)人水果愛(ài)好"#類屬性 def__init__(self,xingming,zhonglei): print("initstarts") self.xingming=xingming#方法屬性
self.zhonglei=zhonglei#方法屬性print(fruit.aa) @property#方法轉(zhuǎn)換屬性 deftongji(self): return(str(self.xingming)+"最愛(ài)吃的是"+str(self.zhonglei))shuiguo=fruit("小紅","蘋(píng)果")print(shuiguo.xingming)print(shuiguo.aa)print(shuiguo.tongji)3/10/2024129類的創(chuàng)建及使用classfruit: aa="統(tǒng)計(jì)個(gè)人水果愛(ài)好"#類屬性 def__init__(self,xingming,zhonglei): print("initstarts") self.xingming=xingming#方法屬性
self.zhonglei=zhonglei#方法屬性print(fruit.aa) @property#方法轉(zhuǎn)換屬性 deftongji(self): return(str(self.xingming)+"最愛(ài)吃的是"+str(self.zhonglei))shuiguo=fruit("小紅","蘋(píng)果")print(shuiguo.xingming)print(shuiguo.aa)print(shuiguo.tongji)3/10/2024130小結(jié)類的創(chuàng)建Init方法類其他方法屬性3/10/2024131任務(wù)練習(xí)定義一個(gè)類,類名為vegetables。vegetables類中創(chuàng)建__init__()方法,需要增加兩個(gè)參數(shù)xingming和zhonglei,功能為打印“蔬菜的品種有很多”。將xingming和zhonglei兩個(gè)參數(shù)分別賦值到新定義的兩個(gè)方法屬性中。創(chuàng)建方法1,函數(shù)名為shucai,功能為打印字符串:xingming+"最喜歡的蔬菜是"+zhonglei。創(chuàng)建方法2,函數(shù)名為mytaste,功能為打印字符串:xingming+"最喜歡的蔬菜是"+zhonglei。將方法2轉(zhuǎn)換成私有屬性。實(shí)例化類,實(shí)例化名稱為veg1,入?yún)?小強(qiáng)","西蘭花"。采用veg1訪問(wèn)shucai。重新賦值方法屬性zhonglei為“青菜”,再訪問(wèn)一次shucai。實(shí)例化類,實(shí)例化名稱為veg2,入?yún)?小明","胡蘿卜",采用veg2訪問(wèn)mytaste,重新賦值方法屬性zhonglei為“洋蔥”,再訪問(wèn)一次shucai。3/10/2024132Thankyou3/10/2024133物聯(lián)網(wǎng)技術(shù)及應(yīng)用
蜂鳴器報(bào)警
3/10/2024134蜂鳴器報(bào)警生活中常見(jiàn)的各種報(bào)警裝置3/10/2024135RPi.GPIO是一個(gè)包含了樹(shù)莓派GPIO引腳控制的庫(kù),官方的樹(shù)莓派系統(tǒng)中默認(rèn)已經(jīng)安裝了RPi.GPIO。importRPi.GPIOasGPIO#as表示重命名蜂鳴器報(bào)警RPi.GPIO庫(kù)3/10/2024136蜂鳴器報(bào)警使用RPi.GPIO庫(kù),需要了解RaspberryPi上的IO引腳編號(hào):WiringPiBCM功能名物理引腳功能名BCMWiringPi
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.282028
GND3940GPIO.2921293/10/2024137在RPi.GPIO中,引腳編號(hào)方式常用的有三種,第一種是使用BOARD編號(hào)系統(tǒng)第二種是BCM編號(hào)系統(tǒng)第三種是WiringPi編號(hào)3/10/2024138RPi.GPIO庫(kù)中常用的函數(shù)介紹蜂鳴器報(bào)警GPIO.setmode(boardmode)函數(shù)GPIO.setup(pin,mode)GPIO.PWM(pin,frequency)函數(shù)GPIO.setwarnings(True/Flase)函數(shù)GPIO.input(pin)函數(shù)GPIO.output(pin,value)函數(shù)GPIO.cleanup()函數(shù)3/10/2024139GPIO.setmode函數(shù)GPIO.setmode(GPIO.BCM/GPIO.BOARD)函數(shù)的功能是設(shè)置樹(shù)莓派引腳的編號(hào)方式。參數(shù)可以是BCM模式或者BOARD模式。如果是C語(yǔ)言編程還可以是wringPi編號(hào)方式。蜂鳴器報(bào)警3/10/20241402.GPIO.setup(pin,mode)函數(shù)的功能是設(shè)置樹(shù)莓派引腳的模式。函數(shù)共有兩個(gè)參數(shù),第一個(gè)參數(shù)pin代表樹(shù)莓派引腳,取值范圍為1~40。第二個(gè)參數(shù)mode為要設(shè)置的引腳模式,一般有兩種,GPIO.IN模式和GPIO.OUT模式。GPIO.IN模式表示該引腳為輸入模式,GPIO.OUT模式表示該引腳為輸出模式。如果需要對(duì)輸出模式的引腳設(shè)置初始電平,GPIO.setup(pin,GPIO.OUT,initial=GPIO.HIGH)或GPIO.setup(pin,GPIO.OUT,initial=GPIO.LOW)。蜂鳴器報(bào)警3/10/20241413.GPIO.PWM函數(shù)GPIO.PWM(pin,frequency)函數(shù)的功能是設(shè)定引腳pin的驅(qū)動(dòng)PWM方波,第二個(gè)參數(shù)frequency表示方波頻率。通常GPIO.PWM函數(shù)需要實(shí)例化后使用啟動(dòng)和停止操作,例如:gpiopwm=GPIO.PWM(pin,frequency),啟動(dòng)PWM采用gpiopwm.start(dutyration),參數(shù)dutyration表示方波占空比,取值范圍為0~100。關(guān)閉PWM則采用gpiopwm.stop(),無(wú)需參數(shù)。蜂鳴器報(bào)警3/10/20241424.GPIO.setwarnings函數(shù)
GPIO.setwarnings(False)函數(shù)的功能是移除告警。
GPIO.setwarnings(True)函數(shù)的功能是保留告警。5.GPIO.input函數(shù)GPIO.input(pin)函數(shù)的功能是讀取引腳pin的值。6.GPIO.output函數(shù)GPIO.output(pin,value)函數(shù)的功能是輸出value值給引腳pin。value可以是1,表示輸出高電平給引腳pin。Value如果是0,表示輸出低電平給引腳pin。蜂鳴器報(bào)警3/10/20241437.GPIO.cleanup函數(shù)GPIO.cleanup()函數(shù)的功能是清除腳本中的編號(hào)方式以及釋放腳本中使用到的引腳。通常在腳本文件最后使用,相當(dāng)于格式化引腳。蜂鳴器報(bào)警3/10/2024144
蜂鳴器,采用直流電壓供電,是一種常見(jiàn)的發(fā)聲器件,廣泛應(yīng)用于電子計(jì)算機(jī)、報(bào)警器、玩具等等領(lǐng)域。
無(wú)源蜂鳴器具有如下優(yōu)點(diǎn):價(jià)格便宜、結(jié)構(gòu)簡(jiǎn)單、使用方便可以調(diào)節(jié)頻率,發(fā)出不同的聲音蜂鳴器報(bào)警3/10/2024145擴(kuò)展板中蜂鳴器電路圖原理圖默認(rèn)為BCM編碼方式,如果設(shè)置為BOARD編碼方式:GPIO.setmode(GPIO.BOARD),則蜂鳴器的引腳編號(hào)是?蜂鳴器報(bào)警3/10/2024146蜂鳴器報(bào)警物理引腳即BOARD編碼方式,BCM和BOARD對(duì)應(yīng)關(guān)系WiringPiBCM功能名物理引腳功能名BCMWiringPi
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.282028
GND3940GPIO.2921293/10/2024147蜂鳴器報(bào)警任務(wù)要求:使用板載自帶蜂鳴器循環(huán)播放一首歌曲。任務(wù)效果:以上海灘的簡(jiǎn)譜為例,播放上海灘簡(jiǎn)譜純音樂(lè)。3/10/2024148Buzzer=11def
setup():
#初始化函數(shù)
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
#
設(shè)置樹(shù)莓派編號(hào)方式
GPIO.setup(Buzzer,
GPIO.OUT)
#
設(shè)置蜂鳴器引腳模式為輸出模式
global
Buzz
Buzz
=
GPIO.PWM(Buzzer,
440)
#
給蜂鳴器PWM驅(qū)動(dòng)方波,初始頻率為440
Buzz.start(50)
#
設(shè)定PWM占空比50%初始化蜂鳴器報(bào)警3/10/2024149def
loop():
while
True:
'\n
Playing
song...'
for
i
in
range(1,
len(song)):
Buzz.ChangeFrequency(song[i])
#
根據(jù)樂(lè)譜改變蜂鳴器的頻率
time.sleep(beat[i]
*
0.5)
#
延遲時(shí)間
time.sleep(1)
播放函數(shù)蜂鳴器報(bào)警3/10/2024150def
destory():
Buzz.stop()
#
停止蜂鳴器
GPIO.output(Buzzer,
1)
#
設(shè)置引腳為高電平GPIO.cleanup()
#
釋放資源資源釋放蜂鳴器報(bào)警3/10/2024151if
__name__
==
'__main__':
#
python程序運(yùn)行入口
setup()
try:
loop()
except
KeyboardInterrupt:
#
鍵盤(pán)中按下ctrl+c,則運(yùn)行destory函數(shù)
destory()主程序蜂鳴器報(bào)警3/10/2024152任務(wù)練習(xí)完成兩只老虎蜂鳴器播放,簡(jiǎn)譜如下:1,2,3,1,1,2,3,1,3,4,5,3,4,5,5,6,5,4,3,1,
5,6,5,4,3,1,
1,5,1,
1,5,1。3/10/2024153Thankyou3/10/2024154物聯(lián)網(wǎng)技術(shù)及應(yīng)用
開(kāi)關(guān)控制蜂鳴器發(fā)聲
3/10/2024155開(kāi)關(guān)控制蜂鳴器發(fā)聲擴(kuò)展板上開(kāi)關(guān)電路圖3/10/2024156開(kāi)關(guān)控制蜂鳴器發(fā)聲擴(kuò)展板上紅綠燈電路圖3/10/2024157開(kāi)關(guān)控制蜂鳴器發(fā)聲演示任務(wù):用擴(kuò)展板上的按鈕開(kāi)關(guān)控制兩個(gè)板載LED燈,實(shí)現(xiàn)按鈕按下,綠燈亮,按鈕彈起紅燈亮。不按時(shí)紅燈常亮。3/10/2024158開(kāi)關(guān)控制蜂鳴器發(fā)聲3/10/2024159任務(wù)練習(xí)要求:采用開(kāi)關(guān)控制蜂鳴器發(fā)出指定頻率的聲音。提示:結(jié)合任務(wù)1蜂鳴器報(bào)警的知識(shí)點(diǎn),完成蜂鳴器初始化設(shè)置,報(bào)警頻率采用Buzz.ChangeFrequency()
函數(shù)來(lái)設(shè)置,例如Buzz.ChangeFrequency(350)使得蜂鳴器發(fā)出350頻率的中音,頻率可自行設(shè)定。3/10/2024160Thankyou3/10/2024161物聯(lián)網(wǎng)技術(shù)及應(yīng)用
電機(jī)驅(qū)動(dòng)車輛運(yùn)動(dòng)
3/10/2024162電機(jī)驅(qū)動(dòng)車輛運(yùn)動(dòng)3/10/2024163電機(jī)驅(qū)動(dòng)車輛運(yùn)動(dòng)四個(gè)電機(jī)兩個(gè)驅(qū)動(dòng)器3/10/2024164電機(jī)驅(qū)動(dòng)車輛運(yùn)動(dòng)輸入端輸出端TB6612FNG直流電機(jī)驅(qū)動(dòng)器3/10/2024165電機(jī)驅(qū)動(dòng)車輛運(yùn)動(dòng)What’sthedifference?TB6612FNG直流電機(jī)驅(qū)動(dòng)器1TB6612FNG直流電機(jī)驅(qū)動(dòng)器23/10/2024166電機(jī)驅(qū)動(dòng)車輛運(yùn)動(dòng)AIN1AIN2BIN1BIN2PWMAPWMB輸出101011正轉(zhuǎn)010111反轉(zhuǎn)111111制動(dòng)000011停止TB6612FNG直流電機(jī)驅(qū)動(dòng)器有4種電機(jī)控制方式,分別是正轉(zhuǎn)、反轉(zhuǎn)、制動(dòng)和停止。3/10/2024167電機(jī)驅(qū)動(dòng)車輛運(yùn)動(dòng)AIN1AIN2BIN1BIN2輸出正轉(zhuǎn)1010AIN1:高電平AIN2:低電平BIN1:高電平BIN2:低電平正轉(zhuǎn)3/10/2024168電機(jī)驅(qū)動(dòng)車輛運(yùn)動(dòng)停止前進(jìn)后退左轉(zhuǎn)右轉(zhuǎn)車輛的五種運(yùn)動(dòng)方向:3/10/2024169電機(jī)驅(qū)動(dòng)車輛運(yùn)動(dòng)小車前進(jìn)時(shí),車輪是如何轉(zhuǎn)動(dòng)的?3/10/2024170電機(jī)驅(qū)動(dòng)車輛運(yùn)動(dòng)3/10/2024171電機(jī)驅(qū)動(dòng)車輛運(yùn)動(dòng)舉一反三:編寫(xiě)后退功能AIN1AIN2BIN1BIN2輸出1010正轉(zhuǎn)0101反轉(zhuǎn)3/10/2024172電機(jī)驅(qū)動(dòng)車輛運(yùn)動(dòng)舉一反三:編寫(xiě)停止功能AIN1AIN2BIN1BIN2輸出1010正轉(zhuǎn)0101反轉(zhuǎn)0000停止3/10/2024173電機(jī)驅(qū)動(dòng)車輛運(yùn)動(dòng)左轉(zhuǎn)和右轉(zhuǎn)的設(shè)計(jì)可以有多種方式,例如設(shè)置左右側(cè)電機(jī)設(shè)置速度差或者采用不同轉(zhuǎn)向的方式來(lái)完成。舉一反三:編寫(xiě)左轉(zhuǎn)和右轉(zhuǎn)功能3/10/2024174電機(jī)驅(qū)動(dòng)車輛運(yùn)動(dòng)3/10/2024175Thankyou3/10/2024176物聯(lián)網(wǎng)技術(shù)及應(yīng)用
語(yǔ)音合成喇叭播放
3/10/2024177語(yǔ)音合成喇叭播放3/10/2024178語(yǔ)音合成喇叭播放3/10/2024179語(yǔ)音合成喇叭播放3/10/2024180語(yǔ)音合成喇叭播放在百度智能云平臺(tái)中,有各種系統(tǒng)的SDK,例如Android、ios、JAVA等等3/10/2024181語(yǔ)音合成喇叭播放AipSpeech是語(yǔ)音識(shí)別的pythonSDK客戶端,使用前需要?jiǎng)?chuàng)建一個(gè)AipSpeech,創(chuàng)建代碼如下:from
aip
import
AipSpeech#導(dǎo)入包APP_ID='此處填入創(chuàng)建賬號(hào)的AppID'API_KEY='此處填入創(chuàng)建賬號(hào)的APIKey'SECRET_KEY='此處填入創(chuàng)建賬號(hào)的SecretKey'aipSpeech=AipSpeech(APP_ID,API_KEY,SECRET_KEY)3/10/2024182語(yǔ)音合成喇叭播放voice
=
aipSpeech.synthesis(text
=
'現(xiàn)在開(kāi)始語(yǔ)音播報(bào)',
options={'spd':5,'vol':5,'per':1,})語(yǔ)音合成函數(shù)為synthesis()函數(shù)3/10/2024183語(yǔ)音合成喇叭播放將語(yǔ)音保存為yuyin.mp3的文件。if
not
isinstance(voice,dict):with
open('yuyin.mp3','wb')
as
f: f.write(voice)3/10/2024184語(yǔ)音合成喇叭播放語(yǔ)音文件播放:import
pygamepygame.mixer.init()pygame.mixer.music.load('/home/pi/CLBROBOT/yuyin.mp3')pygame.mixer.music.play()3/10/2024185Thankyou3/10/2024186物聯(lián)網(wǎng)技術(shù)及應(yīng)用室內(nèi)溫濕度顯示
3/10/2024187室內(nèi)溫濕度顯示2002年英特爾公司率先在美國(guó)俄勒岡州建立了世界上第一個(gè)無(wú)線傳感器網(wǎng)絡(luò)葡萄園。美國(guó)俄勒岡州3/10/2024188室內(nèi)溫濕度顯示3/10/2024189室內(nèi)溫濕度顯示我為藍(lán)天減1克3/10/2024190室內(nèi)溫濕度顯示DHT11采集設(shè)備:LM35DS18B203/10/2024191室內(nèi)溫濕度顯示?(1)AdafruitDHT11庫(kù)安裝步驟及指令importAdafruit_DHT不報(bào)錯(cuò)sudoapt-getinstallgit-coregitclone/adafruit/Adafruit_Python_DHT.gitcdAdafruit_Python_DHTsudopython3setup.pyinstall3/10/2024192室內(nèi)溫濕度顯示?(2)DHT11引腳中正負(fù)極分別對(duì)應(yīng)幾號(hào)?引腳編號(hào)名稱說(shuō)明1VCC電源正極,3.3~5.5V2DATA數(shù)據(jù)線3NC空引腳,可不接線4GND接地3/10/2024193引腳接線室內(nèi)溫濕度顯示3/10/2024194室內(nèi)溫濕度顯示DHT11傳感器內(nèi)部包含一個(gè)電阻式感濕元件和一個(gè)NTC測(cè)溫元件。DHT11不會(huì)主動(dòng)采集數(shù)據(jù)單總線工作方式(一條數(shù)據(jù)線完成輸入輸出操作)DHT11是如何實(shí)現(xiàn)讀取溫濕度數(shù)據(jù)的呢?3/10/2024195室內(nèi)溫濕度顯示DHT11工作原理一次完整的數(shù)據(jù)傳輸為40bit,高位先出。例如:00010101
00000010
00010001
00000001
00111110
濕度整數(shù)
濕度小數(shù)溫度整數(shù)
溫度小數(shù)校驗(yàn)和以上過(guò)程就是Adafruit_DHT.read_retry()函數(shù)的具體內(nèi)容3/10/2024196室內(nèi)溫濕度顯示Adafruit_DHT.read_retry()為讀取溫濕度數(shù)據(jù)函數(shù),兩個(gè)入?yún)?,兩個(gè)返回值。參數(shù)sensor表示傳感器類型,比如11,22等;參數(shù)pin表示讀取的引腳編號(hào)函數(shù)返回值有兩個(gè),分別是濕度humidity和溫度temperatureAdafruit_DHT.read_retry(sensor,pin)3/10/2024197室內(nèi)溫濕度顯示3/10/2024198Thankyou3/10/2024199物聯(lián)網(wǎng)技術(shù)及應(yīng)用溫濕度狀態(tài)語(yǔ)音播報(bào)
3/10/2024200溫濕度狀態(tài)語(yǔ)音播報(bào)錄音及放音的過(guò)程3/10/2024201溫濕度狀態(tài)語(yǔ)音播報(bào)pyaudio庫(kù)未安裝報(bào)錯(cuò)3/10/2024202溫濕度狀態(tài)語(yǔ)音播報(bào)(1)首先安裝portaudio.dev,在終端中輸入如下指令:sudoapt-getinstallportaudio.dev(2)安裝python-pyaudio,在終端中輸入如下指令: sudoapt-getinstallpython-pyaudioPyaudio庫(kù)的安裝:3/10/2024203溫濕度狀態(tài)語(yǔ)音播報(bào)3/10/2024204溫濕度狀態(tài)語(yǔ)音播報(bào)3/10/2024205任務(wù)練習(xí)根據(jù)以上內(nèi)容完成任務(wù)實(shí)踐,任務(wù)內(nèi)容如下:(1)完成兩個(gè)錄音文件并播放,文件1錄音內(nèi)容:“當(dāng)前溫度正常,濕度正?!薄N募?錄音內(nèi)容:“當(dāng)前溫度正常,濕度偏高”。(2)結(jié)合本項(xiàng)目任務(wù)1內(nèi)容,采用DHT11溫濕度傳感器采集當(dāng)前室內(nèi)溫濕度,打印顯示溫濕度數(shù)據(jù);(3)判斷溫濕度數(shù)據(jù),設(shè)定一個(gè)正常范圍,比如溫度20C,濕度50%定義為正常值,當(dāng)檢測(cè)到的溫度正常時(shí),播放錄音文件1內(nèi)容。對(duì)著DHT11吹口氣,濕度值正常會(huì)迅速上升,當(dāng)檢測(cè)到濕度值大于60%時(shí),播放文件2錄音內(nèi)容。從而實(shí)現(xiàn)當(dāng)前溫濕度數(shù)據(jù)的狀態(tài)語(yǔ)音播報(bào)功能。3/10/2024206Thankyou3/10/2024207物聯(lián)網(wǎng)技術(shù)及應(yīng)用紅外傳感器距離檢測(cè)
3/10/2024208紅外傳感器距離檢測(cè)紅外避障模塊實(shí)物圖發(fā)射管接收管電位器引腳3/10/2024209紅外傳感器距離檢測(cè)紅外避障模塊的電路原理圖電源指示部分紅外發(fā)射接收開(kāi)關(guān)指示部分3/10/2024210紅外傳感器距離檢測(cè)硬件接線:RightInfradSensor
=
16LeftInfradSensor
=
12BCM編碼方式3/10/2024211紅外傳感器距離檢測(cè)3/10/2024212Thankyou3/10/2024213物聯(lián)網(wǎng)技術(shù)及應(yīng)用紅外傳感器避障運(yùn)動(dòng)
3/10/2024214紅外傳感器避障運(yùn)動(dòng)3/10/2024215紅外傳感器避障運(yùn)動(dòng)開(kāi)關(guān)按下,小車開(kāi)啟雙側(cè)紅外傳感器持續(xù)檢測(cè),如左側(cè)紅外避障傳感器檢測(cè)到障礙物,則設(shè)定小車右轉(zhuǎn);小車雙側(cè)紅外傳感器持續(xù)檢測(cè),如右側(cè)紅外避障傳感器檢測(cè)到障礙物,則設(shè)定小車左轉(zhuǎn);小車雙側(cè)紅外傳感器持續(xù)檢測(cè),如左右側(cè)紅外避障傳感器同時(shí)檢測(cè)到障礙物,則設(shè)定小車停止運(yùn)動(dòng)。演示任務(wù)要求:3/10/2024216紅外傳感器避障運(yùn)動(dòng)3/10/2024217任務(wù)練習(xí)避障場(chǎng)景任務(wù)練習(xí):3/10/2024218Thankyou3/10/2024219物聯(lián)網(wǎng)技術(shù)及應(yīng)用我的自拍照
3/10/2024220我的自拍照這個(gè)刷臉的時(shí)代,臉也不能隨便“刷”哦3/10/2024221我的自拍照?圖像處理單元小車怎么才能拍照呢?3/10/2024222我的自拍照?小車怎么才能拍照呢圖像處理單元OpenCV是一個(gè)面向計(jì)算機(jī)視覺(jué)和人工智能機(jī)器學(xué)習(xí)的軟件庫(kù)。PythonJavaC#C++……3/10/2024223我的自拍照cv2.VideoCapture()函數(shù)功能是攝像頭捕獲視頻。x=0表示從筆記本電腦本地?cái)z像頭捕獲視頻。x=1
表示從USB接口路徑獲取視頻x=“G:\test.wmv”cv2.VideoCapture(“G:\test.wmv”),函數(shù)參數(shù)為具體的視頻路徑cap=cv2.VideoCapture(0)函數(shù)有返回值,返回值可自定義。1、cv2.VideoCapture(x)設(shè)定圖像規(guī)格為480×160:
cap.set(3,480)cap.set(4,160)3/10/2024224我的自拍照read()為讀取視頻/圖片函數(shù),無(wú)入?yún)?。res,frame=cap.read()cap.read()函數(shù)返回值有兩個(gè),其中res是一個(gè)布爾變量,讀取成功返回True,讀取失敗返回False。返回值frame表示圖像數(shù)據(jù),如果是RGB圖像,則frame就是一個(gè)三維數(shù)據(jù)矩陣。2、read()3/10/2024225我的自拍照3、cv2.imshow()cv2.imshow(‘img1’,frame)函數(shù)功能是窗口顯示圖像。兩個(gè)參數(shù),無(wú)返回值。第一個(gè)參數(shù)img1是字符串類型,表示窗口的名稱,可以根據(jù)個(gè)人編程喜好設(shè)定窗口名稱。第二個(gè)參數(shù)frame是要顯示的圖像。3/10/2024226我的自拍照cv2.imshow('me',frame)k
=
cv2.waitKey(20)if(k==ord('q’)): xxxxxxxxxx4、cv2.waitKey()cv2.waitKey()函數(shù)表示等待鍵盤(pán)輸入,參數(shù)單位為ms。例如:cv2.waitKey(10)表示等待10ms。如果cv2.waitKey()中參數(shù)設(shè)置為0,即cv2.waitKey(0)表示無(wú)限等待。cv2.waitKey()等待期間如果檢測(cè)到按鍵按下,則函數(shù)返回按鍵對(duì)應(yīng)的ASCII碼。3/10/2024227我的自拍照5、cv2.destroyAllWindows()cv2.destroyAllWindows()函數(shù)功能是關(guān)閉所有打開(kāi)窗口。一般在程序異常中斷,或者人為干預(yù)中斷的時(shí)候調(diào)用。3/10/2024228我的自拍照自拍照程序編寫(xiě)流程:3/10/2024229我的自拍照3/10/2024230任務(wù)練習(xí)★課堂實(shí)戰(zhàn):基本要求:用python軟件編寫(xiě)代碼,獲取攝像頭拍攝圖片,顯示圖片。鍵盤(pán)輸入“q”,退出圖像顯示。拓展要求:調(diào)整圖片像素大小為720*480。在圖片中添加您的姓名3/10/2024231Thankyou3/10/2024232物聯(lián)網(wǎng)技術(shù)及應(yīng)用舵機(jī)角度調(diào)節(jié)
3/10/2024233舵機(jī)角度調(diào)節(jié)3/10/2024234舵機(jī)角度調(diào)節(jié)循跡場(chǎng)景3/10/2024235舵機(jī)角度調(diào)節(jié)任務(wù)效果:舵機(jī)3/10/2024236舵機(jī)角度調(diào)節(jié)PCA9685引腳圖3/10/2024237舵機(jī)角度調(diào)節(jié)import
Adafruit_PCA9685
as
PCAservo
=
PCA.PCA9685()#初始化舵機(jī)def
set_servo_angle(channel,angle):
number=4096*((angle*11)+500)/20000#將角度轉(zhuǎn)為數(shù)值
servo.set_pwm(channel,0,int(number))參數(shù)channel為舵機(jī)連接的PWM驅(qū)動(dòng)端口編號(hào)。參數(shù)angle為需要設(shè)定的具體角度,取值范圍為0~180度。舵機(jī)驅(qū)動(dòng)控制是通過(guò)脈沖寬度來(lái)控制調(diào)整角度的。一般設(shè)定20ms的脈沖。設(shè)置如下:servo.set_pwm_freq(50)3/10/2024238舵機(jī)角度調(diào)節(jié)比如:設(shè)置舵機(jī)角度如下set_servo_angle(5,90)
#
底座舵機(jī)
90度
set_servo_angle(4,120)
#
頂部舵機(jī)
120度修改舵機(jī)角度,從而調(diào)整相機(jī)角度3/10/2024239Thankyou3/10/2024240物聯(lián)網(wǎng)技術(shù)及應(yīng)用視覺(jué)循跡運(yùn)行
3/10/2024241視覺(jué)循跡運(yùn)行3/10/2024242視覺(jué)循跡運(yùn)行實(shí)驗(yàn)場(chǎng)景3/10/2024243視覺(jué)循跡運(yùn)行循跡功能需要小車能夠感知路線,找到黑色線所在位置。如果檢測(cè)到黑色線偏小車右邊的位置,則小車往?運(yùn)動(dòng);如果檢測(cè)到黑色線偏小車左邊的位置,則小車往?運(yùn)動(dòng);如果檢測(cè)到黑色線沒(méi)有偏離,則小車向?運(yùn)動(dòng)。3/10/2024244視覺(jué)循跡運(yùn)行如何檢測(cè)黑色線所在位置?OpenCV圖像像素3/10/2024245視覺(jué)循跡運(yùn)行OpenCV圖像處理函數(shù)介紹:(1)cv2.findContours()函數(shù)。image,contours,hierarchy
=
cv2.findContours(frame,
mode,
method)二值化后的圖像輪廓的模式cv2.CHAIN_APPROX_NOME存儲(chǔ)所有的輪廓點(diǎn)輪廓的點(diǎn)集信息列表二值化后的圖像圖像3/10/2024246視覺(jué)循跡運(yùn)行(2)cv2.line()函數(shù)。cv2.line(img,(cx,0),(cx,720),(255,0,0),1)圖像起點(diǎn)坐標(biāo)終點(diǎn)坐標(biāo)畫(huà)線的RGB顏色線條粗細(xì)3/10/2024247視覺(jué)循跡運(yùn)行(3)cv2.drawContours()函數(shù)。功能為繪制圖像輪廓。cv2.drawContours(img,
contours,
-1,
(0,255,0),
1)要繪制的圖輪廓數(shù)據(jù)信息-1表示繪制contours中所有輪廓畫(huà)線的RGB顏色線條粗細(xì)3/10/2024248視覺(jué)循跡運(yùn)行第一步第二步第三步3/10/2024249120016050110xy視覺(jué)循跡運(yùn)行
cap
=
cv2.VideoCapture(0)
cap.set(3,160)
cap.set(4,120)
3/10/2024250Thankyou3/10/2024251物聯(lián)網(wǎng)技術(shù)及應(yīng)用服務(wù)器與客戶端連接
3/10/2024252服務(wù)器與客戶端連接3/10/2024253服務(wù)器與客戶端連接socket通信服務(wù)器客戶端3/10/2024254服務(wù)器與客戶端連接Socket(family,type)函數(shù)參數(shù)family取值描述socket.AF_INETIPV4socket.AF_INET6IPV6socket.AF_UNIX只能夠用于單一的Unix系統(tǒng)進(jìn)程間通信socket參數(shù)family的取值含義說(shuō)明3/10/2024255服務(wù)器與客戶端連接Socket(family,type)函數(shù)參數(shù)type取值描述socket.SOCK_STREAM流式socket,forTCP協(xié)議(默認(rèn))socket.SOCK_DGRAM數(shù)據(jù)報(bào)式socket,forUDP協(xié)議socket.SOCK_RAW原始套接字,普通的套接字無(wú)法處理ICMP、IGMP等網(wǎng)絡(luò)報(bào)文,而SOCK_RAW可以;其次,SOCK_RAW也可以處理特殊的IPv4報(bào)文;此外,利用原始套接字,可以通過(guò)IP_HDRINCL套接字選項(xiàng)由用戶構(gòu)造IP頭。socket.SOCK_RDM是一種可靠的UDP形式,即保證交付數(shù)據(jù)報(bào)但不保證順序。SOCK_RAM用來(lái)提供對(duì)原始協(xié)議的低級(jí)訪問(wèn),在需要執(zhí)行某些特殊操作時(shí)使用,如發(fā)送ICMP報(bào)文。SOCK_RAM通常僅限于高級(jí)用戶或管理員運(yùn)行的程序使用。socket.SOCK_SEQPACKET可靠的連續(xù)數(shù)據(jù)包服務(wù)socket參數(shù)type的取值含義說(shuō)明3/10/2024256服務(wù)器與客戶端連接socket通信UDP流程服務(wù)器端客戶端3/10/2024257服務(wù)器與客戶端連接功能描述s.bind(address)將套接字綁定到地址。address地址的格式取決于地址族。在AF_INET下,以元組(host,port)的形式表示地址。s.listen(backlog)開(kāi)始監(jiān)聽(tīng)傳入連接。backlog指定在拒絕連接之前,可以掛起的最大連接數(shù)量。s.accept()接受連接并返回(conn,address),其中conn是新的套接字對(duì)象,可以用來(lái)接收和發(fā)送數(shù)據(jù)。address是連接客戶端的地址。s.connect(address)連接到address處的套接字。一般,address的格式為元組(hostname,port),如果連接出錯(cuò),返回socket.error錯(cuò)誤。s.recv(bufsize[,flag])接受套接字的數(shù)據(jù)。數(shù)據(jù)以字符串形式返回,bufsize指定最多可以接收的數(shù)量。flag提供有關(guān)消息的其他信息,通??梢院雎?。s.recvfrom(bufsize[.flag])與recv()類似,但返回值是(data,address)。其中data是包含接收數(shù)據(jù)的字符串,address是發(fā)送數(shù)據(jù)的套接字地址。s.send(string[,flag])將string中的數(shù)據(jù)發(fā)送到連接的套接字。返回值是要發(fā)送的字節(jié)數(shù)量,該數(shù)量可能小于string的字節(jié)大小。即:可能未將指定內(nèi)容全部發(fā)送。s.sendall(string[,f
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度工程項(xiàng)目施工圖設(shè)計(jì)與審查服務(wù)協(xié)議
- 2025年度國(guó)際貿(mào)易仲裁條款專用銷售合同
- 2025年橡膠棍項(xiàng)目可行性研究報(bào)告
- 職工困難申請(qǐng)書(shū)
- 2025年度建筑工程施工勞務(wù)人員勞動(dòng)合同變更合同
- 中國(guó)皮卡行業(yè)市場(chǎng)前景預(yù)測(cè)及投資方向研究報(bào)告
- 測(cè)井設(shè)備項(xiàng)目可行性報(bào)告范文參考
- 公共建筑節(jié)能評(píng)估報(bào)告編制的指南2025-圖文
- 2025年度城市基礎(chǔ)設(shè)施建設(shè)項(xiàng)目造價(jià)咨詢與監(jiān)理服務(wù)合同范本
- 2025年電熱無(wú)件項(xiàng)目投資可行性研究分析報(bào)告
- 《新能源汽車技術(shù)》課件-第二章 動(dòng)力電池
- 拘留所被拘留人員管理教育
- 河南省天一大聯(lián)考2024-2025學(xué)年高三上學(xué)期1月期末地理含答案
- 2024-2025學(xué)年成都市高一上英語(yǔ)期末考試題(含答案和音頻)
- 三坐標(biāo)考試試題和答案
- 數(shù)字金融 遠(yuǎn)程音視頻手機(jī)銀行技術(shù)規(guī)范
- 《中藥調(diào)劑技術(shù)》課件- 處方調(diào)配
- 2024屆高考語(yǔ)文一輪復(fù)習(xí):論證思路專練(含答案)
- 2024版醫(yī)院布草洗滌承包合同:醫(yī)療設(shè)施布草清洗外包協(xié)議3篇
- 孩子教育金規(guī)劃
- 2024中考病句訓(xùn)練20題附答案 (一)
評(píng)論
0/150
提交評(píng)論