步驟1:軟件
所有你需要的Arduino IDE。
然后你需要SiLabs CP2104驅(qū)動(dòng)程序和ESP8266板卡包。
這允許你的計(jì)算機(jī)通過內(nèi)置的UART對ESP進(jìn)行編程,并允許Arduino IDE對ESP進(jìn)行編程。
您可以在Adafruit網(wǎng)站上找到有關(guān)IDE,驅(qū)動(dòng)程序和電路板包的所有信息。
您還需要Arduino Midi Library才能發(fā)送Midi數(shù)據(jù)。它可以不用,但這只會(huì)讓一切變得更容易。
為了與BME280通信,我使用了這個(gè)BME280-I2C-ESP32庫。 (這是針對BME280的I2C版本)
而該庫又需要Adafruit統(tǒng)一傳感器驅(qū)動(dòng)程序。這不是我第一次需要這個(gè)庫來使用不同的庫而沒有問題,因此我總是將這個(gè)庫添加到某處。
步驟2:步驟2:硬件
Al,所以我們最終得到了好東西,硬件。
As提到我使用這個(gè)Adafruit ESP,但它應(yīng)該可以正常使用NodeMCU。我推薦V2版本,因?yàn)槲蚁嘈潘诿姘迳细线m,你可以從eBay或AliExpress獲得它們非常便宜。我確實(shí)喜歡Adafruit ESP具有更快的CPU,帶有用于LiPo的女性JST連接器和充電電路。找出你正在使用的Pin也更容易一些。我相信在NodeMCU上,引腳Labeled D1實(shí)際上是GPIO5,所以你總是需要一個(gè)Pinout圖表。根本不是一個(gè)大問題,但只是方便新手他們?nèi)绱饲宄貥?biāo)記了Adafruit。
首先讓我們連接BME280,因?yàn)檫@個(gè)模型有一些變化。正如你從圖片中看到的那樣,我有一個(gè)大洞,但也有一些有2洞。您可以看到它具有4 In和Outputs,1表示電源,1表示接地,SCL和SDA。這意味著它通過I2C進(jìn)行通信。我相信其他型號(hào)通過SPI進(jìn)行通信。在某些情況下,您可以選擇SPI或I2C。 SPI可能需要不同的庫或至少不同的代碼和不同的布線。我也相信SPI中的S代表Serial,我不能說這是否會(huì)干擾這個(gè)項(xiàng)目的Midi部分,因?yàn)樗部梢酝ㄟ^串口連接。
連接這個(gè)BME非常簡單。在ESP8266上,您可以看到引腳4和5分別標(biāo)記為SDA和SCL。只需將這些引腳直接連接到BME上的SDA和SCL引腳即可。當(dāng)然也可以將VIN連接到面包板的正軌和GND連接到負(fù)軌。它們又連接到ESP的3V3和GND引腳。
接下來我們將連接LDR。在Fritzing示例中,您可以看到通過電阻器的3.3伏電壓,然后它被分成LDR和另一個(gè)電阻器。然后在LDR之后,它再次分裂為電阻器和ADC。
這是為了保護(hù)ESP不會(huì)產(chǎn)生過高的電壓,并確保它獲得可讀值。 ADC可以處理0-1伏特,但3V3可以提供3.3伏特。如果你超過1伏特,它可能不會(huì)爆炸,但它不能正常工作。
首先我們使用一個(gè)使用220和100歐姆電阻的分壓器來降低3.3的電壓到1.031伏特。然后,25k歐姆LDR和1k歐姆電阻形成另一個(gè)電壓分壓器,根據(jù)LDR的光量,將電壓從1.031到0伏之間降低。
然后我們有雨量傳感器。一部分說FC-37,另一部分說HW-103。我剛剛買了我在Ebay上發(fā)現(xiàn)的第一個(gè)可以處理3.3和5伏的電壓。 (我認(rèn)為他們都可以)。
這很簡單,我們可以使用模擬輸出,但我們可以轉(zhuǎn)動(dòng)微小的Trimpot使傳感器像我們想要的那樣靈敏(我們已經(jīng)在ESP上使用了我們的一個(gè)模擬引腳。與其他傳感器一樣,我們必須從正軌供電并將其連接到地軌。有時(shí)引腳的順序會(huì)有所不同。在我的VCC,地面,數(shù)字,模擬,但在Fritzing圖片上它是不同的。但是如果你只是注意這應(yīng)該很容易做對。
最后,Midi Jack。在我的面包板上它不能坐在面包板的邊緣,因?yàn)獒樐_不是全部對齊。如果這讓你煩惱,我會(huì)嘗試在實(shí)體店里買一塊面包板?;蛘吆芎玫貦z查圖片。
從原理圖中可以看出,正電壓和串行信號(hào)都通過一個(gè)47歐姆的電阻器。
如果你這樣做以Arduino Uno為例的這個(gè)項(xiàng)目確保使用220歐姆的電阻! 這些ESP在3.3 V邏輯上工作,但大多數(shù)Arduino使用5.0 V,因此您必須更多地限制通過Midi電纜的電流。
最后將中間引腳連接到接地軌。不使用5 Pin Din中的其他2個(gè)引腳。
步驟3:步驟3:代碼
最后我們有代碼!
在這個(gè)Zip文件中我放了2個(gè)草圖。 ‘LightRainTemp’只是測試所有傳感器并發(fā)回它們的值。
(確保打開終端窗口?。?/p>
當(dāng)然我們有LRTGenerativeMidi(LRT代表Light,Rain ,溫度)草圖。
在里面你可以找到一堆關(guān)于正在發(fā)生的事情的解釋。我不打算介紹我如何編寫整個(gè)內(nèi)容,這需要幾個(gè)小時(shí)。如果你想知道從哪里開始這樣的事情,我還有其他一些項(xiàng)目。一個(gè)小型隨機(jī)Riff發(fā)生器,帶有幾個(gè)按鈕和一個(gè)具有一系列我在其他型號(hào)上找不到的功能的音序器。
但是我必須先完成設(shè)計(jì)和編碼。如果您想了解其他項(xiàng)目,請告訴我們。我還沒決定是否會(huì)制作更多的instructables或制作視頻系列。
第4步:第4步:連接并測試它!
現(xiàn)在是時(shí)候進(jìn)行測試了!
只需連接Midi線纜,確保將Synth/鍵盤設(shè)置為響應(yīng)通道1或更改Arduino代碼中的通道,看看是否有工作!
我真的好奇地看到并聽到你用它做什么。如果你進(jìn)行更改,升級(jí),調(diào)整(比如光傳感器和溫度值。外面可能效果更好或更差,然后內(nèi)部)任何東西。
我也很好奇看它是否適用于所有合成。在我的Volca Bass上它完美運(yùn)行,但是在我的Neutron上,LFO一發(fā)送Midi Note就會(huì)卡住。我重新啟動(dòng)時(shí)很好,但這很奇怪。我不確定Midi圖書館或我的代碼中是否有某些內(nèi)容,我可能會(huì)在沒有圖書館的情況下盡快做到這一點(diǎn),看看它是否有所改善。
-
音樂發(fā)生器
+關(guān)注
關(guān)注
0文章
3瀏覽量
5421
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論