www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 公眾號(hào)精選 > 嵌入式案例Show
[導(dǎo)讀]基本構(gòu)想如下:stm32驅(qū)動(dòng)兩個(gè)小電機(jī),小電機(jī)上安裝兩個(gè)螺旋槳,可以實(shí)現(xiàn)雙槳前進(jìn)、后退,單槳轉(zhuǎn)彎等。

01 前言

周末帶小朋友去公園玩耍,別的小孩在池塘里玩飲料瓶做的漂流船,看著他歡樂(lè)的跟著跑跳,無(wú)比羨慕的眼神,卻又不能上手的小失落,又回想起兒時(shí)用泡沫板和小電機(jī)以及電池做的小船,和那時(shí)對(duì)于電驅(qū)動(dòng)產(chǎn)生的無(wú)比興趣,我決定升級(jí)一下兒時(shí)的裝備,基于STM32給小朋友DIY一個(gè)遙控小船,使他成為公園里焦點(diǎn),同時(shí)也期待他對(duì)電氣控制產(chǎn)生一點(diǎn)點(diǎn)好奇。

基本構(gòu)想如下:stm32驅(qū)動(dòng)兩個(gè)小電機(jī),小電機(jī)上安裝兩個(gè)螺旋槳,可以實(shí)現(xiàn)雙槳前進(jìn)、后退,單槳轉(zhuǎn)彎等。供電使用18650電池,通過(guò)升壓放電板管理電池的充放電。遙控使用最廉價(jià)的紅外遙控,來(lái)控制小船的各種動(dòng)作。同時(shí)可以增加一組數(shù)碼管作為輸出設(shè)備。

在萬(wàn)能的某寶上可以淘到所有需要的材料,并且價(jià)格都十分實(shí)惠。

材料

單價(jià)

備注

船體

0

廢舊收納盒

驅(qū)動(dòng)電機(jī)、螺旋槳

10.5


紅外遙控器、紅外接收器

3.5


18650電池

0

廢舊小電扇拆件

充電升壓放電板

5.8


STM32最小系統(tǒng)板

16.2


4位數(shù)碼管顯示器

4.3


電池盒

1.8


線材

0

廢線材

電源開(kāi)關(guān)

1.8


合計(jì)

43.9



02 硬件模塊

紅外遙控模塊

一般遙控玩具使用的是2.4G高頻無(wú)線遙控模塊,但是本著能省則省的原則,選用遙控器帶接收頭3.5元還包郵的HX1838紅外遙控模塊。這種遙控器類(lèi)似電視遙控器,優(yōu)點(diǎn)是便宜,開(kāi)發(fā)簡(jiǎn)單,缺點(diǎn)是控制距離短,并且要像遙控電視一樣指著玩具操作,這些缺陷留著下一代產(chǎn)品迭代時(shí)升級(jí)。


電機(jī)驅(qū)動(dòng)模塊

電機(jī)使用直流小電機(jī),3-6V可驅(qū)動(dòng),使用一片L298N驅(qū)動(dòng)板驅(qū)動(dòng)。STM32輸出PWM可調(diào)速,可正反轉(zhuǎn)。


數(shù)碼管顯示

基于TM1637的四位數(shù)碼管,用于顯示一些簡(jiǎn)單的信息。TM1637是天微公司出品的LED驅(qū)動(dòng)專(zhuān)用芯片,集成簡(jiǎn)單,開(kāi)發(fā)方便。除了TM1637,天微公司還有一系列TM16XX的芯片,主要區(qū)別就是位輸出和段輸出個(gè)數(shù)多少。


電池和充放電模塊

18650電池具有容量大,壽命長(zhǎng),安全性高等優(yōu)點(diǎn),普遍使用在充電寶,筆記本電池、儀器儀表中,甚至特斯拉的電池組也是由7000多節(jié)這樣的電池組合成的。充放電線路板,主要的作用是將電池3.7V的輸出電壓升壓到5V,供給STM32及外圍電路使用,同時(shí)還具備給電池充電的功能。實(shí)際上等同于一個(gè)充電寶,充電寶的原理就是若干個(gè)18650電池并聯(lián),再用一塊充放電板管理而已。

03 嵌入式軟件

紅外遙控器驅(qū)動(dòng)

HX1838采用的是 NEC 編碼格式。載波頻率為38khz。


邏輯1是2.25ms,脈沖時(shí)間560us;邏輯0為1.12ms,脈沖時(shí)間560us。根據(jù)脈沖時(shí)間長(zhǎng)短來(lái)解碼。

協(xié)議示意圖:

一組數(shù)據(jù)組成:

  1. 起始是9ms的高電平脈沖

  2. 4.5ms的低電平

  3. 8位地址碼,低位在前

  4. 8位地址碼的反碼,用于校驗(yàn)

  5. 8位命令碼,低位在前

  6. 8位命令碼的反碼。

需要注意的是1838紅外一體接收頭為了提高接受靈敏度。輸入高電平,其輸出的是相反的低電平。實(shí)際測(cè)量接收到的按鍵波形如下圖,可以看到電平是相反的。


代碼實(shí)現(xiàn):

使用下降沿外部中斷作為一次按鍵的檢測(cè)觸發(fā),然后每個(gè)20us讀取一次數(shù)據(jù)管腳,按照上述的協(xié)議邏輯,讀出一個(gè)u32的數(shù)據(jù)。

U8 Infrared_Receiver_Process(void){ U16 nTime_Num = 0; U8 nData = 0; U8 nByte_Num = 0; U8 nBit_Num = 0; nTime_Num = Infrared_Receiver_GetLowLevelTime();//t0=nTime_Num;if((nTime_Num >= 500) || (nTime_Num <= 400))//9ms 數(shù)據(jù)頭高電平 hx1838輸入的反的{ return INFRARED_RECEIVER_ERROR;}nTime_Num = Infrared_Receiver_GetHighLevelTime();//4.5ms 低電平 hx1838輸入的反的if((nTime_Num >= 250) || (nTime_Num <= 200)){ return INFRARED_RECEIVER_ERROR;} for(nByte_Num = 0; nByte_Num < 4; nByte_Num++)//4個(gè)8位碼{ for(nBit_Num = 0; nBit_Num < 8; nBit_Num++) { nTime_Num = Infrared_Receiver_GetLowLevelTime();//560us 高電平 hx1838輸入的反的 nTime_Num=28 if((nTime_Num >= 60) || (nTime_Num <= 20)) { return INFRARED_RECEIVER_ERROR; }  nTime_Num = Infrared_Receiver_GetHighLevelTime();//1690us(nTime_Num=84.5) 是邏輯1 560us是邏輯0 nTime_Num=28 if((nTime_Num >=60) && (nTime_Num < 100)) { nData = 1; } else if((nTime_Num >=10) && (nTime_Num < 50)) { nData = 0; } else { return INFRARED_RECEIVER_ERROR; }  gInfraredReceiver_Data <<= 1; gInfraredReceiver_Data |= nData; }} return INFRARED_RECEIVER_OK;} 

經(jīng)過(guò)調(diào)試,得到遙控器的按鍵鍵值如下:

KEY_OK = 0x38,KEY_UP = 0x18,KEY_DOWN = 0x4a,KEY_LEFT = 0x10,KEY_RIGHT = 0x5a,KEY_1 = 0xa2,KEY_2 = 0x62,KEY_3 = 0xe2,KEY_4 = 0x22,KEY_5 = 0x02,KEY_6 = 0xc2,KEY_7 = 0xe0,KEY_8 = 0xa8,KEY_9 = 0x90,KEY_STAR = 0x68,KEY_0 = 0x98,KEY_SHARP = 0x80, 

另外由于NEC編碼格式的紅外遙控廣泛的用于電視遙控,我們也可以找一個(gè)電視遙控器,把鍵值讀出來(lái),寫(xiě)入到stm的程序中,這樣就可以用電視遙控器來(lái)操作小船了。

數(shù)碼管顯示驅(qū)動(dòng)

TM1637與其他的一些TM芯片有一些區(qū)別,沒(méi)有同步通信的STB腳,控制時(shí)序也有相應(yīng)改變。

在輸入數(shù)據(jù)時(shí)當(dāng)CLK是高電平時(shí),DIO上的信號(hào)必須保持不變;只有CLK上的時(shí)鐘信號(hào)為低電平時(shí),DIO上的信號(hào)才能改變。數(shù)據(jù)輸入的開(kāi)始條件是CLK為高電平時(shí),DIO由高變低;結(jié)束條件是CLK為高時(shí),DIO由低電平變?yōu)楦唠娖健M1637的數(shù)據(jù)傳輸帶有應(yīng)答信號(hào)ACK,當(dāng)傳輸數(shù)據(jù)正確時(shí),會(huì)在第八個(gè)時(shí)鐘的下降沿,芯片內(nèi)部會(huì)產(chǎn)生一個(gè)應(yīng)答信號(hào)ACK將DIO管腳拉低,在第九個(gè)時(shí)鐘結(jié)束之后釋放DIO口線。



代碼實(shí)現(xiàn):

void start(void){dio_output();GPIO_SetBits(CLK_GPIO_PORT,CLK_GPIO_PIN);GPIO_SetBits(DIO_GPIO_PORT,DIO_GPIO_PIN);Delay();GPIO_ResetBits(DIO_GPIO_PORT,DIO_GPIO_PIN);Delay();}  void stop(void){dio_output();/*GPIO_ResetBits(CLK_GPIO_PORT,CLK_GPIO_PIN);Delay();*/GPIO_ResetBits(DIO_GPIO_PORT,DIO_GPIO_PIN);Delay();GPIO_SetBits(CLK_GPIO_PORT,CLK_GPIO_PIN);Delay();GPIO_SetBits(DIO_GPIO_PORT,DIO_GPIO_PIN);Delay();}  void ack(void){u8 i;dio_input();GPIO_ResetBits(CLK_GPIO_PORT,CLK_GPIO_PIN);Delay();while(readDio()==1&&(i<250))i++;GPIO_SetBits(CLK_GPIO_PORT,CLK_GPIO_PIN);Delay();GPIO_ResetBits(CLK_GPIO_PORT,CLK_GPIO_PIN);dio_output();}void write_data(u8 wr_data){u8 i;for(i=0;i<8;i++)//開(kāi)始傳送8位數(shù)據(jù),每循環(huán)一次傳送一位數(shù)據(jù){ GPIO_ResetBits(CLK_GPIO_PORT,CLK_GPIO_PIN); if(wr_data & 0x01){ GPIO_SetBits(DIO_GPIO_PORT,DIO_GPIO_PIN); }else{ GPIO_ResetBits(DIO_GPIO_PORT,DIO_GPIO_PIN); } Delay(); wr_data >>= 1; GPIO_SetBits(CLK_GPIO_PORT,CLK_GPIO_PIN); Delay();}ack();}void tm1637_DispStr(u8 *str){u8 i;u8 ledCode[5];  for(i = 0;i < 4;i++){ledCode[i] = GetLedCode(str[i]);}start();write_data(0x44); //固定地址模式stop();start();write_data(LED_GRID1);write_data(ledCode[0]);stop();start();write_data(LED_GRID2);write_data(ledCode[1]);stop();start();write_data(LED_GRID3);write_data(ledCode[2]);stop();start();write_data(LED_GRID4);write_data(ledCode[3]);stop();start();write_data(0x89);stop();} 

小船控制邏輯

目前的邏輯比較簡(jiǎn)單, 就是收到按鍵后控制電機(jī)的轉(zhuǎn)停。

void dealIrKeyDown(){u8 len;len = irKeyfifo_count;if(len > 0){ irKeyDataOut = irKeyfifo_DataOut(); //按鍵顯示 U8ToHexstr(irKeyDataOut.index,dispStr); U8ToHexstr(irKeyDataOut.cmd,dispStr+2); tm1637_DispStr(dispStr); switch(irKeyDataOut.cmd){ case KEY_OK: case KEY_OK_CHANGHONG: motor1_Stop(); motor2_Stop(); break; case KEY_UP: case KEY_UP_CHANGHONG: motor1_ForwardRun(); motor2_ForwardRun(); break; case KEY_DOWN: case KEY_DOWN_CHANGHONG: motor1_BackwardRun(); motor2_BackwardRun(); break; case KEY_LEFT: case KEY_LEFT_CHANGHONG: motor1_ForwardRun(); motor2_Stop(); state = SHIP_LEFT; break; case KEY_RIGHT: case KEY_RIGHT_CHANGHONG: motor2_ForwardRun(); motor1_Stop(); state = SHIP_RIGHT; break; default: motor1_Stop(); motor2_Stop(); state = SHIP_STOP; break; } }}

04 DIY成品展示和演示視頻


05 總結(jié)存在的問(wèn)題

    遙控不靈敏

    畢竟紅外遙控的使用場(chǎng)合并不是移動(dòng)的物體上,再加上距離近,經(jīng)常會(huì)出現(xiàn)遙控要按多次的情況。后期考慮改進(jìn)stm的協(xié)議處理方法,增加容錯(cuò)性,如果還是不行就考慮升級(jí)為2.4G專(zhuān)用的玩具遙控。

    防水性問(wèn)題

    正常使用不會(huì)有水進(jìn)入,但是在沒(méi)有大人的情況下交給小孩操作,就沒(méi)那么保險(xiǎn)了。

    后期考慮升級(jí)防水性能。

    沒(méi)有聲光電,不夠酷炫。

    考慮升級(jí),增加led燈條。



免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉