0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

貝爾模型202藍(lán)牙電話的制作教程

454398 ? 來(lái)源:工程師吳畏 ? 2019-08-12 08:47 ? 次閱讀

第1步:電話部分

貝爾模型202藍(lán)牙電話的制作教程

電話部分

貝爾模型202電話(或1930年至1970年的任何撥號(hào)電話)

仿古木制雪茄盒

DF Robot Bluno Nano

Deek-Robot Nano終端適配器

SPI Micro SD讀卡器

Micro SD卡

220歐姆電阻器(連接到耳機(jī)揚(yáng)聲器)

2x 10K歐姆電阻(連接到電話撥號(hào))

電源插孔

5V(或高達(dá)12V)電源

第2步:名稱標(biāo)簽部件

這是要制作的項(xiàng)目列表一個(gè)名牌。我做了10個(gè)。

(注意:我將其中的一個(gè)短路,使其部分功能失調(diào)。提前計(jì)劃:可能會(huì)額外訂購(gòu)一兩個(gè)布魯諾斯或者提出一個(gè)計(jì)劃“B”以防萬(wàn)一?。?/p>

DF機(jī)器人Bluno甲殼蟲(chóng)

4x 100歐姆電阻器

藍(lán)色可穿戴LED

紅色可穿戴設(shè)備LED

黃色可穿戴LED

綠色可穿戴LED

9V雙容量(1200mAh)鋰電池

9V電池連接器

微型開(kāi)關(guān)

2cmx8cm原型板(切成兩半)

名稱帶剪輯的標(biāo)簽夾(亞馬遜

Avery 5141“您好我的名字是”名稱標(biāo)簽(亞馬遜)

第3步:連接電話

手機(jī)內(nèi)的arduino需要執(zhí)行以下所有操作任務(wù)。本節(jié)介紹如何將所有內(nèi)容連接在一起。

當(dāng)有人拿起耳機(jī)時(shí)打開(kāi)Arduino

撥打電話

抓住聲音SD卡

在耳機(jī)揚(yáng)聲器上播放聲音

原理圖

附圖是原始圖像和Fritzing格式。您可以在此處下載Fritzing應(yīng)用程序:fritzing.org

撥號(hào)和電源開(kāi)關(guān)

手機(jī)內(nèi)部有三個(gè)需要連接的開(kāi)關(guān)。

“掛機(jī)”開(kāi)關(guān),為Bluno Nano上的Vin供電。

當(dāng)接收器掛在掛鉤上時(shí),此開(kāi)關(guān)斷開(kāi)。

“主動(dòng)撥號(hào)”開(kāi)關(guān),表示車(chē)輪不在其家中位置。這是有線的,使D8在激活時(shí)為+ 5v,在激活時(shí)為0v。

當(dāng)手機(jī)處于靜止位置時(shí),我的手機(jī)上此開(kāi)關(guān)正常連接 。一旦用戶開(kāi)始移動(dòng)撥號(hào)盤(pán),開(kāi)關(guān)就會(huì)斷開(kāi)連接。我把一端貼在Arduino上。我把另一端連接到arduino上的D8。 D8還連接到10K歐姆電阻到+5。這種配置產(chǎn)生一個(gè)“高”使能信號(hào),告訴Sketch程序是時(shí)候開(kāi)始計(jì)數(shù)脈沖了。

(在其他一些手機(jī)上,當(dāng)撥號(hào)“休息”時(shí),此開(kāi)關(guān)正常斷開(kāi)。如果您有這種類(lèi)型的手機(jī),則需要將其與我的電話對(duì)接:結(jié)束到+5,另一端接到D8和一個(gè)接地的10K電阻。)

“脈沖”開(kāi)關(guān)每次撥號(hào)時(shí)產(chǎn)生一個(gè)脈沖在從釋放返回原位時(shí)傳遞一個(gè)數(shù)字。這用于在引腳D7上產(chǎn)生+ 5V脈沖。

在我的手機(jī)上,當(dāng)撥盤(pán)“休息”時(shí),此開(kāi)關(guān)正常連接。用戶松開(kāi)方向盤(pán)后,每次通過(guò)號(hào)碼時(shí),此開(kāi)關(guān)斷開(kāi)連接。我把一端貼在Arduino上。我將另一端連接到arduino上的D7。 D7還連接到一個(gè)10K歐姆電阻,該電阻導(dǎo)致+5導(dǎo)致引腳在斷開(kāi)時(shí)被拉高。此配置為Sketch程序生成“高”脈沖以進(jìn)行計(jì)數(shù)。

(在其他一些手機(jī)上,當(dāng)撥號(hào)“休息”時(shí),此開(kāi)關(guān)正常斷開(kāi)。如果您有這種類(lèi)型的手機(jī),則需要將其連接到我的對(duì)面:一端為+5,另一端為D7,另一端為10K接地電阻。)

我沒(méi)有添加任何特殊電路,如電容器進(jìn)行去抖動(dòng)。我用軟件處理了這個(gè)。每次開(kāi)關(guān)打開(kāi)或關(guān)閉時(shí),你都會(huì)得到一堆電力尖峰(++++ - + - + - + - + - + -------)直到它結(jié)束。在決定狀態(tài)實(shí)際發(fā)生變化之前,軟件只等待輸入引腳上的值穩(wěn)定到一個(gè)電壓或另一個(gè)電壓一段足夠長(zhǎng)的時(shí)間。

聽(tīng)筒揚(yáng)聲器

用于產(chǎn)生聲音的輸出引腳需要是具有PWM功能的引腳。此外,根據(jù)您使用的Arduino,您可能需要注意運(yùn)行PWM所需的定時(shí)器并可能啟用它。 Arduino Nano上的針腳D9(在我的情況下是Bluno Nano)是一個(gè)很好的默認(rèn)選擇,因?yàn)槟J(rèn)配置正確。

耳機(jī)有三條線。簡(jiǎn)化,這些是:地面,耳機(jī)和吹嘴。由于耳機(jī)和吹嘴松散連接,因此并不那么簡(jiǎn)單。我將電壓表置于“接通”位置以測(cè)量電阻。在這種模式下,當(dāng)您探測(cè)正確的兩個(gè)端子時(shí),電壓表會(huì)產(chǎn)生少量的電,從而在聽(tīng)筒中產(chǎn)生“靜態(tài)”的沙啞聲。

將一個(gè)端子連接到地。將另一個(gè)端子連接到一個(gè)220歐姆的電阻,該電阻通向D9 PWM引腳。這非常適合我在標(biāo)準(zhǔn)電話耳機(jī)揚(yáng)聲器中所需的聲級(jí)。

(如果你想創(chuàng)建一個(gè)“揚(yáng)聲器電話”,你需要添加一些額外的電路來(lái)將聲音放大到一個(gè)外部揚(yáng)聲器供所有人聽(tīng)。我沒(méi)有在我的實(shí)現(xiàn)中這樣做但是本來(lái)不錯(cuò)增強(qiáng)。)

(如果要添加音量控制,可以將電位器連接到其中一個(gè)模擬輸入引腳,并根據(jù)輸入電壓讀數(shù)調(diào)整聲級(jí)。)

Micro SD卡SPI

SPI可以直接連接到Arduino Nano。 GND至GND,+ 5至+5,MISO至MISO,MOSI至MOSI,以及SCK至SCK。我使用引腳D4作為我的選擇引腳,所以:D4到CS。 (如果您使用的是5v Arduino,例如Nano,請(qǐng)確保使用5v SD卡控制器。)

電線

我剪了一段cat-5以太網(wǎng)電纜和從電話上的連接器通過(guò)一個(gè)鉆入基座的孔向下延伸到安裝在雪茄盒下面的Arduino。以太網(wǎng)電纜中的8根電線對(duì)我的連接來(lái)說(shuō)已經(jīng)足夠了,對(duì)于任何標(biāo)準(zhǔn)的撥號(hào)電話都應(yīng)該足夠了。因?yàn)槲覍⑺械孛孢B接在一起,只有一個(gè)地面連接到Arduino,因此8根電線對(duì)我來(lái)說(shuō)是過(guò)度殺死的。我不需要在手機(jī)上運(yùn)行+5線,但如果你使用不同類(lèi)型的手機(jī),你可能會(huì)發(fā)現(xiàn)有必要這樣做。無(wú)論哪種方式,對(duì)于幾乎任何項(xiàng)目來(lái)說(shuō),8根電線應(yīng)該足夠了。

我還在雪茄盒后面鉆了一個(gè)小洞,讓我在切斷電源線后將電源線插入。端部在盒子內(nèi)拼接在一起,然后連接到電源。

暴露USB連接器進(jìn)行編程

我用電工膠帶完全包裹Nano,只留下USB連接器暴露并可以進(jìn)行編程。如果您決定將USB電纜留在盒子內(nèi),即使您沒(méi)有編程,也必須確保電纜末端與所有電氣部件隔離。靜電會(huì)弄亂電子設(shè)備,導(dǎo)致奇怪的事情發(fā)生如此意外的重置或更糟。

模擬引腳A0

注意:不連接任何東西針腳A0。該引腳用于為隨機(jī)數(shù)發(fā)生器播種,因此它需要浮動(dòng)未連接。

可選:兩個(gè)Arduinos卸載聲音

如果您需要卸載聲音我提供了原理圖到了第二個(gè)Arduino。如果RAM耗盡或需要更快啟動(dòng),請(qǐng)執(zhí)行此操作。標(biāo)準(zhǔn)的Arduino Nano處理聲音。 Bluno Beetle處理?yè)芴?hào)和藍(lán)牙連接。

將兩個(gè)Arduinos連接在一起:D2到D2,D3到D3。

步驟4:連接名稱標(biāo)簽

名稱標(biāo)簽內(nèi)電子設(shè)備的接線圖是公平的簡(jiǎn)單:只需幾個(gè)LED,一個(gè)開(kāi)關(guān)和一個(gè)電池。 “可穿戴”LED有點(diǎn)難以使用。我的繞線工具在這里派上用場(chǎng)了。

開(kāi)始之前

在布線Bluno Beetle名稱標(biāo)簽之前,我建議對(duì)每一個(gè)進(jìn)行預(yù)編程,這樣他們就可以了啟動(dòng)時(shí)依次閃爍所有數(shù)字引腳(D2,D3,D4,D5)。 (在提供的草圖中定義START_WITH_BLINK,或編寫(xiě)您自己的簡(jiǎn)單草圖來(lái)執(zhí)行此操作。)這將允許您在組裝后立即測(cè)試不良焊接連接。

繞線和焊接LED

將所有四個(gè)電阻焊接到引腳D2,D3,D4和D5

從電路板背面夾住引線。

將電阻器導(dǎo)線留下約1英寸(2厘米)

將裸露的導(dǎo)線焊接到地面,留下1.5到2英寸(3-4厘米)。

使用繞線工具,將綠色LED的紅色線纏繞到D2電阻上并將其焊接到位。

將黑色引線繞線連接到接地引腳。

對(duì)藍(lán)色LED,黃色LED和紅色LED重復(fù)步驟5和6。

確認(rèn)沒(méi)有引腳意外觸及鄰居。

再次驗(yàn)證。

將USB電纜插入充電器電源插座,確認(rèn)所有四個(gè)LED在啟動(dòng)時(shí)按正確順序閃爍。

如果一切似乎都連接正確,請(qǐng)將一根熱縮管滑過(guò)每個(gè)暴露的針腳(包括接地針)并將其縮小,使其貼合。我用烙鐵來(lái)完成這個(gè)任務(wù)。如果你有一個(gè)熱縮槍?zhuān)ㄓ置麩帷按碉L(fēng)機(jī)”),那將是更好的選擇。

焊接開(kāi)關(guān)和電池

將面包板切成大約3“x .5”(5cm x 1cm)(大約是Bluno Beetle抵達(dá)盒子高度的一半。

將面包板頂部三個(gè)孔中的開(kāi)關(guān)焊接。

焊接一端針。

確保開(kāi)關(guān)的兩端都貼著面包板,如果需要,可能會(huì)重新焊接第一根針。

焊接另一端兩個(gè)開(kāi)關(guān)銷(xiāo)到面包板。

在電路板背面:焊接正極端(紅線)電池連接器連接到開(kāi)關(guān)的頂部引腳。(焊接到面包板,使其連接到頂部引腳。)

將電池的負(fù)極(黑線)焊接到電池的接地孔上。 Bluno。

將紅線切割,剝離并焊接到開(kāi)關(guān)的中間引腳上(焊接到面包板的背面)與開(kāi)關(guān)的電氣連接。)

將電線穿過(guò)幾個(gè)孔以消除應(yīng)力。

將紅線的另一端焊接到Bluno上的VIN孔,這樣當(dāng)開(kāi)關(guān)打開(kāi)時(shí),9伏將施加到VIN。

確認(rèn)沒(méi)有交叉線。

連接電池并進(jìn)行測(cè)試,確保Bluno開(kāi)啟并在開(kāi)關(guān)打開(kāi)時(shí)閃爍。

纏繞電工膠帶以覆蓋整個(gè)面包板。

用電工膠帶包裹Bluno,直到您對(duì)電線應(yīng)變消除和隔離連接感到滿意為止。

留出一個(gè)用于連接USB電纜的開(kāi)口,以便將來(lái)進(jìn)行編程。

將其打開(kāi)并再次測(cè)試。

步驟5:打包名稱標(biāo)簽

這些是步驟將可穿戴名稱標(biāo)簽包裝在Bluno Beetle進(jìn)來(lái)的盒子里面。

用鋒利的手術(shù)刀切開(kāi)開(kāi)關(guān)的矩形孔Exacto刀

將開(kāi)關(guān)和電路板放入盒子中并將其按壓在側(cè)面以找到合適的步伐來(lái)切割孔。/li》

使用泡沫和電池將卡紙切換到位。

將電池放在電路板旁邊的盒子里

Bluno來(lái)了用一塊泡沫。將其卷起并粘貼,然后將其塞入盒子中,使開(kāi)關(guān)牢固地固定到位。

為前面的LED線切一個(gè)洞因此它在關(guān)閉時(shí)不會(huì)干擾翻蓋,距離頂部大約0.75英寸(1.5厘米)。尺寸無(wú)關(guān)緊要。稍后會(huì)隱藏。我的洞大約1.5英寸x .25英寸(1厘米x) .5厘米。

通過(guò)孔進(jìn)給LED

使用透明膠帶將LED指示燈朝外。透明膠帶確保LED安全并面向全世界以獲得全亮度。

將Bluno推入U(xiǎn)SB接口的盒子中,可以進(jìn)行編程。

將Avery 5141名稱標(biāo)簽剝離并粘貼在白紙上,然后將其剪成形狀。最好不要將名稱標(biāo)簽直接粘貼到盒子上,因?yàn)閷?lái)某個(gè)時(shí)候您需要將其刪除。

覆蓋LED并將“Hello my name is”名稱標(biāo)記為帶。

切割塑料名牌固定器,使其牢固地固定在盒子背面。

附上剪輯。

第6步:Arduino草圖

我已經(jīng)提供了在這個(gè)項(xiàng)目中配置和運(yùn)行Bluno Arduinos所需的全部四個(gè)草圖。

如果您還沒(méi)有下載Arduino IDE。這里:arduino.cc

解壓縮包含草圖的zip文件,并從Arduino IDE中打開(kāi)它們。這些是草圖:

blunoBasic:用于初始化所有Blunos

blunoPhone:在手機(jī)上的Bluno Nano上運(yùn)行

blunoPhoneSounds(可選) :播放手機(jī)上的聲音

blunoNameTag:在“可穿戴”名稱標(biāo)簽上運(yùn)行

步驟7:在中央電話上準(zhǔn)備BLE

將草圖 BlunoBasic 加載到手機(jī)內(nèi)的Arduino Bluno Nano中并執(zhí)行以下操作:

打開(kāi)串口監(jiān)視器

設(shè)置“無(wú)行結(jié)束”類(lèi)型“+++”并發(fā)送

應(yīng)說(shuō)“進(jìn)入AT模式”

現(xiàn)在我們處于“AT”模式,用于在電路板上配置BLE藍(lán)牙。

設(shè)置“兩個(gè)NL& CR”

AT + MAC =?

復(fù)制MAC地址

打開(kāi) blunoNameTag 草圖。

找到正確的“centralMAC”

粘貼MAC以指定正確連接。

全部輸入要完成配置,請(qǐng)執(zhí)行以下命令:

AT + ROLE = ROLE_CENTRAL

AT + CMODE = UNIQUE

AT + IBEACONS = OFF

AT + BLUNODEBUG = OFF

AT + USBDEBUG = OFF

AT + EXIT

現(xiàn)在用草圖重新編程bluno blunoPhone 用于正常操作。

步驟8:在名稱標(biāo)簽上準(zhǔn)備BLE

加載草圖 BlunoBasic 將放置在名稱標(biāo)簽內(nèi)的每個(gè)Bluno Beetle上并執(zhí)行以下操作:

打開(kāi)串行監(jiān)視器

設(shè)置“無(wú)行結(jié)束”

輸入“+++”并發(fā)送

應(yīng)該說(shuō)“進(jìn)入AT模式”

現(xiàn)在我們處于“AT”模式,用于配置主板上的BLE藍(lán)牙。

設(shè)置“兩個(gè)NL& CR”

AT + MAC =?

復(fù)制MAC地址

打開(kāi) blunoPhone 草圖。

查找“phoneLookup_t phoneBook [] = {”

將MAC粘貼到陣列中的適當(dāng)位置,可能會(huì)創(chuàng)建一個(gè)新條目。

刪除最重要的4位數(shù)字,從而創(chuàng)建一個(gè)32位十六進(jìn)制數(shù)字。

確保MAC_PREFIX與上一步中刪除的最重要的4位數(shù)匹配。

(步驟5和6實(shí)現(xiàn)優(yōu)化以在手機(jī)Sketch上保存珍貴的RAM。)

綁定到bluno手機(jī)的MAC。例如,如果Bluno中央MAC是0xB4994C50236A,那么您可以在外設(shè)名稱標(biāo)簽上執(zhí)行此操作:

AT + BIND = 0xB4994C50236A

確定一個(gè)數(shù)字作為名稱的ID標(biāo)簽。例如“8”。將該數(shù)字插入上面討論的phoneBook []數(shù)組條目,并在外圍名稱標(biāo)簽bluno上執(zhí)行此操作:

AT + NAME = 8

輸入以下所有命令以完成配置:

AT + ROLE = ROLE_PERIPHERAL

AT + CMODE = UNIQUE

AT + IBEACONS = OFF

AT + BLUNODEBUG = OFF

AT + USBDEBUG = OFF

AT + EXIT

現(xiàn)在使用Sketch blunoNameTag 重新編程bluno以進(jìn)行正常操作。

步驟9:創(chuàng)建聲音

《我附上了一個(gè)包含我在SDCard上安裝的所有聲音的zip文件。聲音來(lái)自各種網(wǎng)站:

來(lái)自freesound.org的有趣聲音

電話錄音來(lái)自:http://stuff.gigo.com/phone/

如果您想要一組不同的聲音,可以生成一些或從各種網(wǎng)站下載。但它們需要轉(zhuǎn)換為簡(jiǎn)單的單聲道8位16KHz WAV格式。我是這樣做的:

轉(zhuǎn)到:https://audio.online-convert.com/convert-to-wav

更改位分辨率:8位

更改采樣率:16000 Hz

更改音頻通道:?jiǎn)温暤?/p>

高級(jí):

PCM格式:PCM無(wú)符號(hào)8位

開(kāi)始轉(zhuǎn)換

下載

如果需要,請(qǐng)重命名文件,文件名中有8個(gè)或更少的字符,擴(kuò)展名為“.wav”(又名8.3格式)。

將SD卡插入計(jì)算機(jī)

將所有文件復(fù)制到micro SD卡上最頂層的目錄中

彈出

插入通過(guò)SPI接口將micro SD卡連接到Arduino控制器中。

blunoPhone Sketch負(fù)責(zé)安裝SD卡并使用庫(kù)播放聲音文件:SD.h,SPI.h和TMRpcm .H

步驟10:Arduino手機(jī)草圖軟件

在手機(jī)內(nèi)部的Bluno Nano上運(yùn)行的Sketch blunoPhone 旨在使用BLE進(jìn)行通信藍(lán)牙與另一個(gè)草圖 blunoNameTag 在電池供電的“可穿戴式”Bluno Beetles上執(zhí)行,其中包含分散在房間內(nèi)的人們的“名牌”。

可選擇手機(jī)聲音可以播放一個(gè)單獨(dú)的Arduino,也將被安置在手機(jī)內(nèi)。這樣做的原因有很多,稍后將在評(píng)論中進(jìn)行描述。如果您希望其他Arduino使用Sketch nanoPhoneSounds 播放聲音,請(qǐng)定義OFFLOAD_SOUND。我用一個(gè)內(nèi)置的Bluno Nano制作了一部手機(jī)。我制造了第二部手機(jī),其中包含用于通信的Bluno Beetle,以及用于播放聲音的標(biāo)準(zhǔn)Arduino Nano。在大多數(shù)情況下,我用單個(gè)Bluno Nano記錄手機(jī),但知道還有其他選擇。

這個(gè)程序適用于Arduino。 RAM最大化因此,如果添加更多功能或增加變量數(shù)量,您可能會(huì)遇到一些奇怪的行為,例如程序重置和意外重啟。該程序使用一些先進(jìn)的技術(shù)來(lái)節(jié)省RAM(以及一些黑客來(lái)節(jié)省RAM)。 (如果你有RAM問(wèn)題,你應(yīng)該認(rèn)真考慮將聲音功能卸載到另一個(gè)Arduino。)

Bluno BLE似乎只用于兩個(gè)藍(lán)牙永不改變端點(diǎn)之間的通信:一個(gè)中心端口和一個(gè)外圍設(shè)備。似乎我正在使用它的目的不是專(zhuān)門(mén)設(shè)計(jì)的。通過(guò)一些努力,我得到了它的工作 - 主要是。有時(shí)需要多次嘗試才能建立連接。

該程序的設(shè)計(jì)有一個(gè)中央Bluno和許多外圍設(shè)備。在任何給定時(shí)間只連接一個(gè)外圍設(shè)備,但中央Bluno從已知外圍設(shè)備列表中動(dòng)態(tài)選擇。通常連接速度相當(dāng)快(在15秒內(nèi)),但有時(shí)需要更長(zhǎng)時(shí)間(幾分鐘)。外圍設(shè)備(名稱標(biāo)簽)在代碼中內(nèi)置了一個(gè)看門(mén)狗,以便偶爾強(qiáng)制重啟。這種“黑客”似乎有所幫助,但并不完美。手動(dòng)關(guān)閉/打開(kāi)所有外圍設(shè)備以及中央電話似乎有時(shí)可以幫助建立穩(wěn)固的連接。

此草圖動(dòng)態(tài)運(yùn)行“AT + BIND”命令,然后“AT + RESTART”連接期望的外圍設(shè)備。那個(gè)序列并不總是有效。如果在一個(gè)循環(huán)中調(diào)用兩次而不是一次,它似乎更穩(wěn)定。不幸的是,每次通過(guò)循環(huán)都會(huì)增加額外的延遲時(shí)間。如果您不擔(dān)心額外的延遲,請(qǐng)考慮調(diào)整程序調(diào)用AT + BIND三次以獲得更好的穩(wěn)定性。

當(dāng)通過(guò)USB電纜將Sketch編程到Bluno中心或任何外圍設(shè)備時(shí),我發(fā)現(xiàn)它如果我關(guān)掉房間里所有其他的Blunos,那么最穩(wěn)定。由于通過(guò)藍(lán)牙從一個(gè)Bluno到另一個(gè)Bluno的串行連接,程序員似乎對(duì)Bluno的目標(biāo)編程感到困惑。

這使用PlainProtocol庫(kù)來(lái)格式化通過(guò)藍(lán)牙發(fā)送的命令。這可以在GitHub上找到:

git clone https://github.com/DFRobot/BlunoAccessoryShieldDe.。.

當(dāng)在串行監(jiān)視器上手動(dòng)弄亂AT命令時(shí),我發(fā)現(xiàn)最好運(yùn)行Sketch blunoBasic 。

正常程序流程

軟件具有各種不同功能的狀態(tài)。正常的軟件路徑如下所示:

當(dāng)手機(jī)放在開(kāi)關(guān)掛鉤上時(shí),電流不會(huì)流動(dòng)并且Bluno電源關(guān)閉。

當(dāng)有人拿起聽(tīng)筒時(shí),接通電源并且Bluno開(kāi)始啟動(dòng),調(diào)用功能設(shè)置()。

在初始化期間安裝SD卡,初始化藍(lán)牙BLE,并初始化相關(guān)的數(shù)字引腳。這需要幾秒鐘。

一旦所有內(nèi)容都初始化,就會(huì)播放撥號(hào)音。與所有聲音一樣,此聲音來(lái)自SD卡上的文件。撥號(hào)音實(shí)際上是一個(gè)相對(duì)較短的聲音文件,一旦完成就會(huì)重復(fù)。

一旦手機(jī)上的滾輪開(kāi)始移動(dòng),軟件就會(huì)檢測(cè)到引腳D8上的更改并停止撥號(hào)音。

電話號(hào)碼中的每個(gè)數(shù)字都是根據(jù)D7針腳上檢測(cè)到的脈沖數(shù)計(jì)算出來(lái)的。

撥打全部6位數(shù)后,程序?qū)?dòng)鈴聲,在phoneBook []數(shù)組中找到該號(hào)碼,并綁定到列出的名稱標(biāo)簽的MAC地址。

只要完成簡(jiǎn)單的握手以驗(yàn)證MAC地址是否與預(yù)期的名稱標(biāo)簽ID匹配,就會(huì)在耳機(jī)揚(yáng)聲器上播放一長(zhǎng)串(有些愚蠢)的“你好”聲音(當(dāng)時(shí)草圖上的名稱標(biāo)簽開(kāi)始快速閃爍顏色瘋狂)。

通常此人會(huì)自動(dòng)掛斷電話并觀看有人打開(kāi)禮物。電源關(guān)閉,因此Bluno什么都不做。

特殊情況導(dǎo)致特殊情況

如果有人撥打手機(jī)上寫(xiě)的號(hào)碼(869-869)或“TMW-TMW”)然后播放隨機(jī)應(yīng)答消息。另外,The Mad Wrapper在圣誕樹(shù)深處隱藏了一個(gè)額外的Bluno Beetle“名牌”。布魯諾開(kāi)始快速地眨眼。在樹(shù)上有一個(gè)特別的禮物供所有人享用!

各種標(biāo)準(zhǔn)的AT& T錯(cuò)誤信息都是針對(duì)諸如未知號(hào)碼之類(lèi)的內(nèi)容而播放的,并且在沒(méi)有答案的情況下響鈴太長(zhǎng)。

如果手機(jī)處于摘機(jī)狀態(tài)4分鐘,則摘機(jī)AT& T“blat-blat-blat 。..”聲音表示掛斷電話。

很多計(jì)時(shí)器

每次循環(huán)時(shí),程序都會(huì)檢查時(shí)間并查看是否有任何“計(jì)時(shí)器”已過(guò)期。定時(shí)器用于一系列事情,包括正常操作和錯(cuò)誤測(cè)試:

有一個(gè)看門(mén)狗定時(shí)器,用于重置和重新綁定到所需的名稱標(biāo)簽。

有一個(gè)定時(shí)器用于去除“撥號(hào)移動(dòng)”引腳D8。在宣布狀態(tài)發(fā)生變化之前,我們等待嘈雜的信號(hào)穩(wěn)定下來(lái)。

有一個(gè)定時(shí)器用于消除引腳D7上的脈沖。

在開(kāi)始同步時(shí),有一個(gè)定時(shí)器用于限制與名稱標(biāo)記的握手通信。

沒(méi)有足夠的RAM用于變量和數(shù)組

程序完全超出RAM使用量,導(dǎo)致以下警告

可用內(nèi)存不足,可能會(huì)出現(xiàn)穩(wěn)定性問(wèn)題。

如果添加任何新內(nèi)容,則可能出現(xiàn)錯(cuò)誤功能,程序?qū)㈤_(kāi)始表現(xiàn)得非常奇怪,包括重啟。我實(shí)現(xiàn)了一些技巧來(lái)最小化RAM使用:

諸如聲音文件名之類(lèi)的字符串作為常量存儲(chǔ)在ROM中。函數(shù)pgm_read_word()用于檢索ROM的常量。

MAC地址是48位十六進(jìn)制數(shù)。我的原始實(shí)現(xiàn)將MAC地址存儲(chǔ)為52個(gè)字符的字符串。當(dāng)我只有三個(gè)名稱標(biāo)簽與之通信時(shí),這很好。一旦我啟用了10個(gè)遠(yuǎn)程Blunos,我就用光了。我能夠通過(guò)存儲(chǔ)10個(gè)32位長(zhǎng)整數(shù)來(lái)恢復(fù)程序。所有Bluno Beetle MAC地址中最重要的16位對(duì)于我所擁有的設(shè)備始終是相同的,因此我只是將16位添加到唯一的32位數(shù)字進(jìn)行綁定。

另一種節(jié)省RAM的方法(可能是最好的方法)是在兩個(gè)Arduinos之間拆分任務(wù)。如果定義了OFFLOAD_SOUND,則刪除聲音產(chǎn)生功能。這被替換為使用SoftwareSerial庫(kù)與另一個(gè)連接到D3和D4的Arduino進(jìn)行通信的功能。這樣做可以在RAM中留出足夠的空間來(lái)支持許多新功能或更多名稱標(biāo)簽。

步驟11:消除嘈雜的電話交換機(jī)

當(dāng)手機(jī)內(nèi)的開(kāi)關(guān)打開(kāi)或關(guān)閉時(shí),它不會(huì)干凈利落。電壓將反彈+ 5,0,+ 5,0,+ 5,0 。..。..一段時(shí)間,直到它穩(wěn)定在一個(gè)或另一個(gè)上。這可以用一些電子設(shè)備來(lái)處理,例如電容器。我用軟件處理它。 blunoPhone 草圖會(huì)檢查該值是否發(fā)生變化,然后等待一段時(shí)間來(lái)驗(yàn)證該值是否再次發(fā)生變化。

延遲10毫秒效果很好!

#define DEBOUNCE_DELAY 10 // wait 10ms for the circuit to settle during puls transition

用于跟蹤時(shí)間的變量:

long timeOfPulsePinStateChange = 0; // save the time for debouncing

去抖動(dòng)的一些代碼:

if (pulseInputLastState != pulseInputPinState) {

timeOfPulsePinStateChange = millis();

}

if ((millis() - timeOfPulsePinStateChange) 》 DEBOUNCE_DELAY) {

// debounce - this happens once it‘s stabilized

if (pulseInputTrueState != pulseInputPinState) {

// this means that the switch has either just gone from closed-》open or vice versa.

pulseInputTrueState = pulseInputPinState;

}

步驟12 :Arduino名稱標(biāo)記草圖軟件

草圖 blunoNameTag 實(shí)現(xiàn)在DFRobot上運(yùn)行的可穿戴“名稱標(biāo)記” Bluno Beetle。

它使用BLE藍(lán)牙連接與隱藏在古董電話中的中央Bluno進(jìn)行通信。

在空閑狀態(tài) - 當(dāng)沒(méi)有連接到手機(jī)時(shí) - - 藍(lán)色LED輕輕地發(fā)出更亮的光,然后變暗。

隨著通信握手開(kāi)始,一些不同顏色的LED亮起,藍(lán)色LED發(fā)出全亮度不再發(fā)出脈沖。

握手需要使用名稱標(biāo)簽的ID進(jìn)行回復(fù)。這是從AT + NAME =?返回的結(jié)果。有關(guān)使用適當(dāng)編號(hào)配置AT + NAME的重要說(shuō)明,請(qǐng)參閱本Instructable的另一部分。

一旦通信完全建立,所有顏色的LED都開(kāi)始瘋狂地閃爍。

很多計(jì)時(shí)器

每次循環(huán)時(shí),程序都會(huì)檢查時(shí)間并查看是否有任何“定時(shí)器”已過(guò)期。

有一個(gè)計(jì)時(shí)器可以更新藍(lán)色LED的亮度。 (我真的很喜歡這個(gè)簡(jiǎn)單的細(xì)微特征。在空閑狀態(tài)下輕柔的平靜脈沖為項(xiàng)目增添了一點(diǎn)“自然”的人性。)

每個(gè)彩色LED都有一個(gè)定時(shí)器告訴它閃爍一定時(shí)間。每個(gè)LED的閃爍速率不同,導(dǎo)致輕微隨機(jī)的光圖案。

有一個(gè)計(jì)時(shí)器可以檢查來(lái)自手機(jī)的消息。

有一個(gè)看門(mén)狗定時(shí)器可以重置整個(gè)Bluno Beetle。有時(shí),完全開(kāi)始是與嘗試接觸的中央Bluno同步的唯一方法。

步驟13:輕輕地點(diǎn)亮LED以獲得良好的平靜效果

我盡可能?chē)L試為我的應(yīng)用添加一些微妙的“自然”效果。如果做得好,這將增加一定程度的舒適度并獲得用戶的一點(diǎn)信任。它讓人感覺(jué)很好。這是一個(gè)很好的設(shè)計(jì)。

如果您只是需要向用戶顯示您的小工具已啟動(dòng),那么簡(jiǎn)單的事情就是在啟動(dòng)過(guò)程中點(diǎn)亮LED并忘記它。

咩。

使用Arduino PWM功能并做一些有趣的事情。做吧!這并不難(特別是因?yàn)槲乙呀?jīng)提供了一些代碼供您復(fù)制/粘貼到您的應(yīng)用程序中)。

我喜歡以下代碼的效果,它實(shí)現(xiàn)了藍(lán)色LED輕輕發(fā)光以平靜的“呼吸”速度變得更加明亮和暗淡。感覺(jué)很棒!

我將藍(lán)色LED連接到一個(gè)支持PWM的引腳(Bluno Beetle上的引腳D3)。

#define BLUE_LED 3 // blue LED

我設(shè)置了一些參數(shù)LED發(fā)光的速度和亮度有多快

#define GLOW_MIN 15 //15 // min brightness of glow

#define GLOW_MAX 100 //120 // max brightness of glow

#define GLOW_UPDATE_DELAY 40 // when to increment

#define GLOW_STEP_SIZE 2

及相關(guān)變量

long timeOfLastPulseUpdate = 0;

int glowValue = 0; // led brightness 0-255

int glowIncrement = GLOW_STEP_SIZE; // Either + or - depending on up/down glow

我創(chuàng)建了一個(gè)實(shí)用程序函數(shù)來(lái)幫助確定是否需要調(diào)整LED的亮度:

// gently glow bright/dim when not connected

bool timeToUpdateGlow () {

long now = millis();

if ((now - timeOfLastPulseUpdate) 》 GLOW_UPDATE_DELAY) {

timeOfLastPulseUpdate = now;

return true;

} else {

return false;

}

}

然后,每次通過(guò)循環(huán),如果是時(shí)候改變亮度,改變它。如果 glowIncrement 為正數(shù),則LED會(huì)略微變亮。如果 glowIncrement 是負(fù)數(shù),則藍(lán)色LED稍微變暗。

void loop() {

。..

if (timeToUpdateGlow()) {

glowValue += glowIncrement;

if (glowValue 《= GLOW_MIN) {

glowValue = GLOW_MIN;

glowIncrement = GLOW_STEP_SIZE; // +1 so start glowing brighter

} else if (glowValue 》= GLOW_MAX) {

glowValue = GLOW_MAX;

glowIncrement = -GLOW_STEP_SIZE; // start dimming now

}

analogWrite(BLUE_LED, glowValue);

}

。..

}

步驟14:瘋狂的浮華色彩吸引注意力

引起人們對(duì)小工具的關(guān)注的一個(gè)好方法是使用幾個(gè)LED“隨機(jī)”潑灑閃亮的顏色。我對(duì)我使用的效果感到滿意。每個(gè)LED以不同的快速閃爍,以創(chuàng)建一個(gè)有趣的色彩管弦樂(lè)隊(duì)。

定義閃爍率和變量:

// blink rates when connected spaced to look like random orchestrated splatter

#define BLUE_BLINK_DELAY 300 // blink rate 0.3 seconds

#define YELLOW_BLINK_DELAY 500 // blink rate 0.5 seconds

#define RED_BLINK_DELAY 800 // blink rate 0.8 seconds

#define GREEN_BLINK_DELAY 1300 // blink rate 1.3 seconds

long timeOfLastBlueBlink = 0;

long timeOfLastGreenBlink = 0;

long timeOfLastYellowBlink = 0;

long timeOfLastRedBlink = 0;

確定何時(shí)閃爍LED的一些實(shí)用程序功能

// after connected we wildly blink the blue LED

bool timeForBlueBlink () {

long now = millis();

if ((now - timeOfLastBlueBlink) 》 BLUE_BLINK_DELAY) {

timeOfLastBlueBlink = now;

return true;

} else {

return false;

}

}

// after connected we wildly blink the green LED

bool timeForGreenBlink () {

long now = millis();

if ((now - timeOfLastGreenBlink) 》 GREEN_BLINK_DELAY) {

timeOfLastGreenBlink = now;

return true;

} else {

return false;

}

}

// after connected we wildly blink the yellow LED

bool timeForYellowBlink () {

long now = millis();

if ((now - timeOfLastYellowBlink) 》 YELLOW_BLINK_DELAY) {

timeOfLastYellowBlink = now;

return true;

} else {

return false;

}

}

// after connected we wildly blink the red LED

bool timeForRedBlink () {

long now = millis();

if ((now - timeOfLastRedBlink) 》 RED_BLINK_DELAY) {

timeOfLastRedBlink = now;

return true;

} else {

return false;

}

}

以及閃爍的功能。

void blink (int pin) {

digitalWrite(pin, HIGH);

delay(100);

digitalWrite(pin, LOW);

}

并且,如果處于正確的狀態(tài),每個(gè)循環(huán)一次,檢查時(shí)間并使LED閃爍

void loop() {

。..

if (timeForBlueBlink()) {

blink (BLUE_LED);

}

if (timeForGreenBlink()) {

blink (GREEN_LED);

}

if (timeForYellowBlink()) {

blink (YELLOW_LED);

}

if (timeForRedBlink()) {

blink (RED_LED);

}

。..

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 藍(lán)牙
    +關(guān)注

    關(guān)注

    114

    文章

    5693

    瀏覽量

    168189
  • 電話
    +關(guān)注

    關(guān)注

    0

    文章

    134

    瀏覽量

    25708
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    霍爾開(kāi)關(guān)在藍(lán)牙耳機(jī)中的應(yīng)用

    藍(lán)牙耳機(jī)作為一種無(wú)線通信設(shè)備,它通過(guò)藍(lán)牙技術(shù)實(shí)現(xiàn)與音頻源或電話的無(wú)線連接,使得用戶可以無(wú)需連接線纜即可聽(tīng)取音頻或接聽(tīng)電話。其中,霍爾開(kāi)關(guān)在藍(lán)牙
    的頭像 發(fā)表于 09-09 10:49 ?216次閱讀

    舊款泰克TCP202和當(dāng)前款TCP202A之間有何區(qū)別?

    泰克(Tektronix)是一家知名的電子測(cè)量?jī)x器制造商,其電流探頭在電子工程和測(cè)試領(lǐng)域中廣泛使用。TCP202和TCP202A是泰克公司生產(chǎn)的兩種電流探頭,它們?cè)谠O(shè)計(jì)和性能上有所不同。以下是關(guān)于
    的頭像 發(fā)表于 08-12 10:49 ?207次閱讀
    舊款泰克TCP<b class='flag-5'>202</b>和當(dāng)前款TCP<b class='flag-5'>202</b>A之間有何區(qū)別?

    請(qǐng)問(wèn)PGA204與PGA202有什么差別?

    請(qǐng)問(wèn)PGA204與PGA202有什么差別,主要是PGA204 - 50μV 失調(diào)電壓與PGA202 - 數(shù)控有什么區(qū)別
    發(fā)表于 08-02 16:01

    用stm32制作藍(lán)牙音頻網(wǎng)關(guān)設(shè)備,無(wú)法連接耳機(jī)的原因?

    我用 stm32 制作藍(lán)牙音頻網(wǎng)關(guān)設(shè)備。 現(xiàn)在,我可以掃描藍(lán)牙 LE 設(shè)備了。 但是,無(wú)法連接我的耳機(jī)(從屬)。 藍(lán)牙 wiced_bt_set_pairable_mod
    發(fā)表于 07-24 07:02

    藍(lán)牙模塊在車(chē)載系統(tǒng)中的應(yīng)用與集成:現(xiàn)狀、挑戰(zhàn)與未來(lái)展望

    模塊在車(chē)載系統(tǒng)中的應(yīng)用,如車(chē)載電話、導(dǎo)航等,并探討其與車(chē)載系統(tǒng)的集成方式以及面臨的挑戰(zhàn)和未來(lái)的發(fā)展方向。 藍(lán)牙模塊在車(chē)載系統(tǒng)中的應(yīng)用 車(chē)載電話 藍(lán)牙模塊在車(chē)載
    的頭像 發(fā)表于 06-20 17:29 ?326次閱讀

    使用ESP32 A2DP藍(lán)牙音頻制作藍(lán)牙音箱,手機(jī)來(lái)電話時(shí)通話也走ESP32,如何接電話時(shí)自動(dòng)切換到iphone?

    使用ESP32 A2DP藍(lán)牙音頻制作藍(lán)牙音箱,但是手機(jī)來(lái)電話時(shí),通話也走ESP32, 如何接電話時(shí)自動(dòng)切換到iphone?
    發(fā)表于 06-14 06:58

    電話配線架除了110還有什么

    電話配線架除了110配線架外,還有其他類(lèi)型的配線架,但具體的命名和類(lèi)型可能因廠商和地區(qū)的不同而有所差異。 例如,華為提供了一種JPX202系列的電話配線架,包括JPX202-SF3D單
    的頭像 發(fā)表于 06-07 10:25 ?271次閱讀

    TLE202x,TLE202xA,TLE202xB,TLE202xY功耗精密運(yùn)算放大器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《TLE202x,TLE202xA,TLE202xB,TLE202xY功耗精密運(yùn)算放大器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 06-06 09:24 ?0次下載
    TLE<b class='flag-5'>202</b>x,TLE<b class='flag-5'>202</b>xA,TLE<b class='flag-5'>202</b>xB,TLE<b class='flag-5'>202</b>xY功耗精密運(yùn)算放大器數(shù)據(jù)表

    烘焙vs渲染:3D模型制作中的效率與質(zhì)量之爭(zhēng)

    探討這兩個(gè)過(guò)程,并分析它們?cè)?D制作流程中的作用,二者之間的差異,以及在效果上的區(qū)分。模型烘焙模型烘焙是一個(gè)將動(dòng)態(tài)或復(fù)雜模型信息轉(zhuǎn)換為靜態(tài)紋理的過(guò)程。這通常涉及將
    的頭像 發(fā)表于 05-12 08:27 ?301次閱讀
    烘焙vs渲染:3D<b class='flag-5'>模型</b><b class='flag-5'>制作</b>中的效率與質(zhì)量之爭(zhēng)

    gis中制作最小阻力模型步驟

    GIS(地理信息系統(tǒng))是一種集成數(shù)據(jù)、軟件和硬件技術(shù),用于捕獲、存儲(chǔ)、管理、分析和顯示地理數(shù)據(jù)的系統(tǒng)。在GIS中,制作最小阻力模型可以用于研究生物遷徙、水流、物質(zhì)擴(kuò)散等現(xiàn)象。以下是關(guān)于制作最小阻力
    的頭像 發(fā)表于 02-25 14:59 ?873次閱讀

    對(duì)講機(jī)藍(lán)牙電話連接問(wèn)題

    如果您試圖使用耳機(jī)或耳機(jī)而不是串行端口來(lái)使用藍(lán)牙,您可能會(huì)遇到不同的問(wèn)題。建伍 TH-D74 只支持一種藍(lán)牙配置文件,即 HSP("耳機(jī) "配置文件)。
    發(fā)表于 12-22 16:16 ?489次閱讀

    WT2605C音頻藍(lán)牙語(yǔ)音芯片:?jiǎn)涡酒瑢?shí)現(xiàn)藍(lán)牙+MP3+BLE+電話本多功能應(yīng)用

    在當(dāng)今的電子產(chǎn)品領(lǐng)域,多功能、高集成度成為了一種趨勢(shì)。各種產(chǎn)品都需要具備多種功能,以滿足用戶多樣化的需求。針對(duì)這一市場(chǎng)趨勢(shì),唯創(chuàng)知音推出了一款集成了藍(lán)牙、MP3播放、BLE和電話本功能的音頻藍(lán)牙語(yǔ)音
    的頭像 發(fā)表于 12-22 08:41 ?399次閱讀
    WT2605C音頻<b class='flag-5'>藍(lán)牙</b>語(yǔ)音芯片:?jiǎn)涡酒瑢?shí)現(xiàn)<b class='flag-5'>藍(lán)牙</b>+MP3+BLE+<b class='flag-5'>電話</b>本多功能應(yīng)用

    藍(lán)牙FCC認(rèn)證定頻板怎么制作

    電子發(fā)燒友網(wǎng)站提供《藍(lán)牙FCC認(rèn)證定頻板怎么制作.pdf》資料免費(fèi)下載
    發(fā)表于 11-07 17:09 ?2次下載

    制作一個(gè)藍(lán)牙遙控小車(chē)

    本周我們來(lái)制作一個(gè)藍(lán)牙遙控小車(chē),不得不說(shuō)bluno nano的藍(lán)牙交互功能還是讓人眼前一亮,畢竟是首款集成藍(lán)牙4.0的arduino板。制作
    發(fā)表于 10-13 06:01

    9FGP202數(shù)據(jù)表

    9FGP202 數(shù)據(jù)表
    發(fā)表于 10-11 18:30 ?0次下載
    9FGP<b class='flag-5'>202</b>數(shù)據(jù)表