第1步:耗材
DS18B20溫度傳感器
DS18B20是一款測(cè)量溫度的單線傳感器,由Maxim Integrated制造。有兩種DS18B20傳感器,僅限組件(我使用的是)和防水版本,它更大,但這不是我的項(xiàng)目所需,所以我只使用了該組件。該傳感器可在-55°C至+ 125°C(-67°F至+ 257°F)的溫度范圍內(nèi)測(cè)量溫度,在-10°C至+ 85°C范圍內(nèi)的精度為0.5°C。它還具有從9位到12位的可編程分辨率。
電位計(jì)傳感器
電位器是帶三個(gè)端子的電阻器,只需旋轉(zhuǎn)傳感器的上部即可手動(dòng)調(diào)節(jié)。上部的位置決定了電位器的輸出電壓。
LSM303加速度計(jì)+羅盤突破
LSM303分線板是三合一的組合 - 軸加速度計(jì)和磁力計(jì)/指南針,由Adafruit制造。它與Raspberry Pi的I2C接口一起使用。
MCP3008
要從我的電位器讀取數(shù)據(jù),我使用的是MCP3008,這是一個(gè)帶有SPI接口的8通道10位模數(shù)轉(zhuǎn)換器,非常易于編程。
揚(yáng)聲器 - 3“直徑 - 8歐姆1瓦
這是我在計(jì)算出它需要的電壓和安培后選擇的揚(yáng)聲器錐體,這是非常適合我的Adpruit制造的Raspberry Pi項(xiàng)目。
MAX98357 I2S D類單聲道放大器
這是放大器揚(yáng)聲器附帶的不僅是放大器,它還是I2S數(shù)模轉(zhuǎn)換器,因此它也非常適合我的揚(yáng)聲器和音頻系統(tǒng)。
Arduino Uno
Arduino Uno是一款開源微控制器板,基于由Arduino.cc制造的Microchip ATmega328P微控制器。 Uno板有14個(gè)數(shù)字引腳,6個(gè)模擬引腳,可通過(guò)Arduino IDE軟件完全編程
Levelshifter
這是一塊小板,負(fù)責(zé)Arduino Uno和Raspberry Pi之間的通信以及不同的電壓,Arduino:5V和Raspberry Pi:3.3V。這是必需的,因?yàn)镹eoPixel環(huán)連接到Arduino并在那里運(yùn)行,而所有其他東西都在Raspberry Pi上運(yùn)行。
RGB NeoPixel Ring
這是一個(gè)裝有12個(gè)RGB LED的小環(huán)(如果你愿意的話,你可以買更多帶有更多RGB LED的環(huán))。在我的情況下連接到Arduino Uno,但也可以連接到許多其他設(shè)備,并且使用起來(lái)非常簡(jiǎn)單。
LCD顯示器16x2
我使用基本的LCD顯示器來(lái)打印我的溫度,音量和IP地址。
Raspberry Pi 3B +和16GB SD卡
我的整個(gè)項(xiàng)目在我的Raspberry Pi上運(yùn)行3B +帶有配置的圖像,我將幫助您稍后在我的instructable中進(jìn)行配置。
GPIO T-Part,2個(gè)面包板和許多跳線
為了連接我需要面包板和跳線的所有東西,我使用了GPIO T-part,因此我有更多的空間,很清楚哪個(gè)引腳是哪個(gè)。
第2步:原理圖和接線
對(duì)于我的原理圖,我使用了Fritzing,這是一個(gè)可以安裝的程序,可以讓你創(chuàng)建一個(gè)原理圖在各種視圖中都很簡(jiǎn)單。
確保以正確的方式連接所有內(nèi)容!在我的例子中,電線的顏色與原理圖上的顏色不同。
第3步:數(shù)據(jù)庫(kù)設(shè)計(jì)
《我們正在從連接的3個(gè)傳感器中收集大量數(shù)據(jù),因此我們需要一個(gè)數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)數(shù)據(jù)和傳感器。稍后我們將看到如何在Raspberry Pi上配置數(shù)據(jù)庫(kù)以及如何向其中添加數(shù)據(jù)。但首先必須制作數(shù)據(jù)庫(kù)設(shè)計(jì)或ERD(實(shí)體關(guān)系圖),并使用3NF對(duì)我的規(guī)范化進(jìn)行規(guī)范化。這就是為什么我們將傳感器分成另一個(gè)表并與ID一起使用。
總的來(lái)說(shuō),這是一個(gè)非常基本且簡(jiǎn)單的數(shù)據(jù)庫(kù)設(shè)計(jì),可以進(jìn)一步使用。
步驟4 :準(zhǔn)備Raspberry Pi!
現(xiàn)在我們已經(jīng)完成了項(xiàng)目的一些基礎(chǔ)知識(shí)。讓我們開始使用Raspberry Pi!
SD卡配置
首先,您需要一個(gè)可以放置圖像的16GB SD卡和一個(gè)將開始圖像上傳到SD的程序軟件
所以下載后:
將SD卡放入電腦。
打開剛剛下載的Win32。
選擇剛剛下載的Raspbian圖像文件。
點(diǎn)擊“寫入”SD卡的位置。
這可能需要一些時(shí)間,具體取決于您的硬件。一旦完成,我們就可以在將圖像放入RPi之前進(jìn)行一些最終調(diào)整。
轉(zhuǎn)到SD卡的目錄,搜索名為“cmdline.txt”的文件并打開它。
現(xiàn)在在同一行添加‘ip = 169.254.10.1’。
保存文件。
創(chuàng)建一個(gè)名為‘ssh’的文件,不帶擴(kuò)展名或內(nèi)容。
現(xiàn)在您可以安全地從計(jì)算機(jī)中彈出SD卡并將其放入Raspberry Pi中。一旦SD卡進(jìn)入RPI,將LAN電纜從計(jì)算機(jī)連接到RPi LAN端口,一旦連接,就可以將電源連接到RPi。
現(xiàn)在我們要控制我們的Raspberry Pi ,這是通過(guò)Putty完成的。
一旦下載,打開Putty并插入IP‘169.254.10.1’和端口‘22’和連接類型:SSH。現(xiàn)在我們終于可以打開命令行界面并使用入門登錄信息登錄 - 》用戶:pi和密碼:raspberry。
Raspi-config
sudo raspi-config
這個(gè)項(xiàng)目真正重要的是接口部分,我們必須啟用許多不同的接口,啟用以下所有接口:
單線
SPI
I2C
串行
現(xiàn)在我們已經(jīng)完成了使用raspi-config,讓我們嘗試與互聯(lián)網(wǎng)建立聯(lián)系。
Wi-Fi連接
首先,您必須是以下命令的root用戶
sudo -i
一旦你是root用戶,請(qǐng)使用以下命令。 SSID是您的網(wǎng)絡(luò)名稱,密碼顯然是密碼。
wpa_passphrase “ssid” “password” 》》 /etc/wpa_supplicant/wpa_supplicant.conf
如果您輸入了錯(cuò)誤,只需輸入該文件即可檢查,更新或刪除此網(wǎng)絡(luò):
nano /etc/wpa_supplicant/wpa_supplicant.conf
因此,在我們進(jìn)入網(wǎng)絡(luò)后,讓我們進(jìn)入WPA客戶端界面
wpa_cli
選擇您的界面
interface wlan0
重新加載文件
reconfigure
最后,您可以看到您是否連接良好:
ip a
更新和升級(jí)
現(xiàn)在我們已連接到互聯(lián)網(wǎng),更新已安裝的軟件包將是一個(gè)聰明的舉措,所以讓我們先安裝其他軟件包。
sudo apt-get update
sudo apt-get upgrade
MariaDB數(shù)據(jù)庫(kù)
安裝MariaDB數(shù)據(jù)庫(kù)服務(wù)器:
sudo apt-get install mariadb-server
Apache2 Web服務(wù)器
安裝Apache2網(wǎng)絡(luò)服務(wù)器:
sudo apt install apache2
安裝Python:
update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
update-alternatives --install /usr/bin/python python /usr/bin/python3 2
Python包
您必須安裝所有這些軟件包才能使后端完美運(yùn)行:
Flask
Flask-Cors
Flask-MySql
Flask-SocketIO
PyMySQL
請(qǐng)求
Python-socketio
RPi.GPIO
Gevent
Gevent-websocket
Ujson
Wsaccel
揚(yáng)聲器庫(kù)
從Adafruit安裝揚(yáng)聲器庫(kù):
curl -sS https://raw.githubusercontent.com/adafruit/Raspbe.。. | bash
重新啟動(dòng)的時(shí)間!
sudo reboot
步驟5:將我們的數(shù)據(jù)庫(kù)轉(zhuǎn)發(fā)到RPi!
現(xiàn)在我們已經(jīng)安裝了所需的一切,讓我們將我們?cè)O(shè)計(jì)的數(shù)據(jù)庫(kù)放在Raspberry Pi上!
首先我們需要在MySql工作臺(tái)中設(shè)計(jì)我們的數(shù)據(jù)庫(kù),同時(shí)這樣做,復(fù)制完整的數(shù)據(jù)庫(kù)代碼并刪除其中的所有“可見(jiàn)”單詞。所以一旦復(fù)制,再次打開putty,登錄并輸入:
sudo mysql
現(xiàn)在你進(jìn)入mysql界面,將數(shù)據(jù)庫(kù)代碼復(fù)制到其中并按回車。
現(xiàn)在我們只需要?jiǎng)?chuàng)建一個(gè)用戶
CREATE USER ‘user’ IDENTIFIED BY ‘user’;
GRANT ALL PRIVILEGES ON *.* TO ‘user’;
現(xiàn)在重新啟動(dòng)。
所以現(xiàn)在應(yīng)該設(shè)置所有內(nèi)容,你也可以建立一個(gè)連接Pi和MySql Workbench,因此更容易檢查表中的所有數(shù)據(jù)。
步驟6:在我們的RPi上配置藍(lán)牙
我們正在創(chuàng)建藍(lán)牙揚(yáng)聲器,這意味著媒體正從我們的源發(fā)送到Raspberry Pi和這可以很容易地完成,讓我們直接進(jìn)入它!
刪除已經(jīng)運(yùn)行的bluealsa。
sudo rm /var/run/bluealsa/*
添加A2DP配置文件接收器角色。
sudo bluealsa -p a2dp-sink &
打開藍(lán)牙接口并為您的電源供電藍(lán)牙開啟。
bluetoothctl
power on
設(shè)置配對(duì)代理。
agent on
default-agent
制作你的RPi可發(fā)現(xiàn)
discoverable on
現(xiàn)在,從您的藍(lán)牙設(shè)備,搜索RPi并與之連接。
確認(rèn)兩臺(tái)設(shè)備上的配對(duì),在您的膩?zhàn)又休斎搿笆恰薄?/p>
授權(quán)A2DP服務(wù),再次輸入“是”。
一旦完成,我們就可以信任我們的設(shè)備,所以每次我們想連接時(shí)都不需要全面了解
trust XX:XX:XX:XX:XX:XX (Your bluetooth mac address from our source device)
如果您希望您的RPi繼續(xù)被發(fā)現(xiàn),那么這是您自己的選擇,但我更愿意再次關(guān)閉它,以便人們無(wú)法嘗試連接您的盒子。
discoverable off
然后我們可以退出我們的藍(lán)牙接口
exit
最后我們的音頻路由:我們的源設(shè)備轉(zhuǎn)發(fā)到我們的RPi
bluealsa-aplay 00:00:00:00:00:00
現(xiàn)在我們的設(shè)備已完全連接到我們的Raspberry,您應(yīng)該可以在Pi揚(yáng)聲器上播放源設(shè)備中的媒體。
第7步:編寫完整的后端
現(xiàn)在設(shè)置已經(jīng)完成,我們終于可以開始編寫后端程序了!
我使用PyCharm作為我的整個(gè)后端,你只需要確保你的PyCharm項(xiàng)目連接到你的Raspberry Pi,這意味著你的部署路徑在你的設(shè)置中設(shè)置,你安裝了我們需要的所有軟件包,應(yīng)該是alr在第4步中完成了。
我使用了自己的類,這些也都包含在我的GitHub中。如果您錯(cuò)過(guò)了鏈接就在介紹中;)
在我的后端文件中,我使用了線程類,因此所有內(nèi)容都可以同時(shí)運(yùn)行,并且不會(huì)互相中斷。在底部,您可以獲得所有路徑,以便我們可以輕松地在前端獲取數(shù)據(jù)。
步驟8:編寫前端(HTML,CSS和JavaScript)
現(xiàn)在后端已經(jīng)完成,我們可以開始編寫完整的前端了。
HTML和CSS很容易完成,盡可能地嘗試使用移動(dòng)設(shè)備,因?yàn)槲覀兇蟛糠謺r(shí)間都是這樣通過(guò)移動(dòng)設(shè)備連接藍(lán)牙,可以更輕松地從移動(dòng)儀表板進(jìn)行控制。
您可以以任何方式設(shè)計(jì)儀表板,我只需將代碼和設(shè)計(jì)留在此處,可以做任何你喜歡的事情!
并且Javascript并不那么難,與我的后端路線中的一些GET一起使用,大量的事件監(jiān)聽(tīng)器和一些socketio結(jié)構(gòu)。
第9步:構(gòu)建我的案例并將它們放在一起
我首先介紹了一些我希望案例看起來(lái)的草圖,重要的是它必須足夠大才能讓一切都適合因?yàn)槲覀冇幸粋€(gè)很大的電路來(lái)裝箱子。
我用木頭做了這個(gè)案子,我認(rèn)為當(dāng)你沒(méi)有那么多的建筑案例經(jīng)驗(yàn)時(shí),這是最容易的。你也可以用它做很多事情。
我從葡萄酒瓶的案例開始,剛剛開始鋸木頭。一旦我拿到了我的基本情況,我就不得不在它上面鉆孔(在表殼前面有很多,正如你在圖片上看到的那樣:P)并在其中放入一些釘子,這是一個(gè)非?;镜陌咐?,但它看起來(lái)非常酷,非常適合完美。
一旦案件完成,現(xiàn)在是時(shí)候把它們放在一起,正如你在最后一張照片上看到的那樣!盒子里面有點(diǎn)混亂,但一切正常,我沒(méi)有那么多空間,所以如果你要重新創(chuàng)建我的項(xiàng)目,我建議你創(chuàng)建一個(gè)更大的案例。
第10步:我在創(chuàng)建Slimbox揚(yáng)聲器的道路上遇到的一些問(wèn)題。..
藍(lán)牙和藍(lán)色錯(cuò)誤
每次我想要播放音樂(lè)或連接藍(lán)牙,我收到藍(lán)牙和bluealsa的錯(cuò)誤。我做了一些研究,這是我的問(wèn)題的解決方案。所以出于某種原因,我的藍(lán)牙是軟封裝的,不確定這是否是標(biāo)準(zhǔn)的軟封鎖。您可以通過(guò)在Putty中鍵入以下命令來(lái)查看是否存在。
rfkill list
因此,如果它是軟塊,只需使用它:
rfkill unblock bluetooth
串行連接問(wèn)題
所以我遇到的另一個(gè)大問(wèn)題是我無(wú)法通過(guò)levelshifter與我的Arduino建立任何聯(lián)系,經(jīng)過(guò)一些搜索我發(fā)現(xiàn)我的‘/dev/ttyS0’已經(jīng)消失了,這可能是因?yàn)槟愕腞Pi更新了。還找到了解決方案
您必須使用raspi-config重新啟用串行控制臺(tái),重新啟動(dòng),然后從‘/boot/cmdline手動(dòng)刪除“console = serial0,115200”位。 txt’。確認(rèn)“enable_uart = 1”在‘/boot/config.txt’中,然后重新啟動(dòng)。這應(yīng)該得到你的ttyS0端口,以及‘/dev/serial0’軟鏈接。
-
揚(yáng)聲器
+關(guān)注
關(guān)注
29文章
1339瀏覽量
64005
發(fā)布評(píng)論請(qǐng)先 登錄
揚(yáng)聲器的運(yùn)作原理與技術(shù)規(guī)格

歌爾股份發(fā)布新一代揚(yáng)聲器 DPS-F和大音-F揚(yáng)聲器
壓電揚(yáng)聲器產(chǎn)品參考說(shuō)明書
請(qǐng)問(wèn)TP3071模擬輸出端可以直接驅(qū)動(dòng)揚(yáng)聲器嗎?
適用于藍(lán)牙揚(yáng)聲器中的立體聲音頻功率放大器-iML6602

內(nèi)置揚(yáng)聲器和麥克風(fēng)的顯示器區(qū)別
使用TPA3113作為揚(yáng)聲器放大,開機(jī)時(shí)SD信號(hào)為高電平的瞬間揚(yáng)聲器會(huì)有彭一聲響,為什么?
TAS2563揚(yáng)聲器特性指南

TPA751輸出接8ohm揚(yáng)聲器,揚(yáng)聲器是否可以接地設(shè)計(jì)?
想使用DRV2700EVM作為一個(gè)壓電揚(yáng)聲器驅(qū)動(dòng)裝置,怎么操作?
物聯(lián)網(wǎng)系統(tǒng)中音頻方案的“嘴巴”_揚(yáng)聲器

評(píng)論