步骤1:软件
所有你需要的Arduino IDE。
然后你需要SiLabs CP2104驱动程序和ESP8266板卡包。
这允许你的计算机通过内置的UART对ESP进行编程,并允许Arduino IDE对ESP进行编程。
您可以在Adafruit网站上找到有关IDE,驱动程序和电路板包的所有信息。
您还需要Arduino Midi Library才能发送Midi数据。它可以不用,但这只会让一切变得更容易。
为了与BME280通信,我使用了这个BME280-I2C-ESP32库。 (这是针对BME280的I2C版本)
而该库又需要Adafruit统一传感器驱动程序。这不是我第一次需要这个库来使用不同的库而没有问题,因此我总是将这个库添加到某处。
步骤2:步骤2:硬件
Al,所以我们最终得到了好东西,硬件。
As提到我使用这个Adafruit ESP,但它应该可以正常使用NodeMCU。我推荐V2版本,因为我相信它在面包板上更合适,你可以从eBay或AliExpress获得它们非常便宜。我确实喜欢Adafruit ESP具有更快的CPU,带有用于LiPo的女性JST连接器和充电电路。找出你正在使用的Pin也更容易一些。我相信在NodeMCU上,引脚Labeled D1实际上是GPIO5,所以你总是需要一个Pinout图表。根本不是一个大问题,但只是方便新手他们如此清楚地标记了Adafruit。
首先让我们连接BME280,因为这个模型有一些变化。正如你从图片中看到的那样,我有一个大洞,但也有一些有2洞。您可以看到它具有4 In和Outputs,1表示电源,1表示接地,SCL和SDA。这意味着它通过I2C进行通信。我相信其他型号通过SPI进行通信。在某些情况下,您可以选择SPI或I2C。 SPI可能需要不同的库或至少不同的代码和不同的布线。我也相信SPI中的S代表Serial,我不能说这是否会干扰这个项目的Midi部分,因为它也可以通过串口连接。
连接这个BME非常简单。在ESP8266上,您可以看到引脚4和5分别标记为SDA和SCL。只需将这些引脚直接连接到BME上的SDA和SCL引脚即可。当然也可以将VIN连接到面包板的正轨和GND连接到负轨。它们又连接到ESP的3V3和GND引脚。
接下来我们将连接LDR。在Fritzing示例中,您可以看到通过电阻器的3.3伏电压,然后它被分成LDR和另一个电阻器。然后在LDR之后,它再次分裂为电阻器和ADC。
这是为了保护ESP不会产生过高的电压,并确保它获得可读值。 ADC可以处理0-1伏特,但3V3可以提供3.3伏特。如果你超过1伏特,它可能不会爆炸,但它不能正常工作。
首先我们使用一个使用220和100欧姆电阻的分压器来降低3.3的电压到1.031伏特。然后,25k欧姆LDR和1k欧姆电阻形成另一个电压分压器,根据LDR的光量,将电压从1.031到0伏之间降低。
然后我们有雨量传感器。一部分说FC-37,另一部分说HW-103。我刚刚买了我在Ebay上发现的第一个可以处理3.3和5伏的电压。 (我认为他们都可以)。
这很简单,我们可以使用模拟输出,但我们可以转动微小的Trimpot使传感器像我们想要的那样灵敏(我们已经在ESP上使用了我们的一个模拟引脚。与其他传感器一样,我们必须从正轨供电并将其连接到地轨。有时引脚的顺序会有所不同。在我的VCC,地面,数字,模拟,但在Fritzing图片上它是不同的。但是如果你只是注意这应该很容易做对。
最后,Midi Jack。在我的面包板上它不能坐在面包板的边缘,因为针脚不是全部对齐。如果这让你烦恼,我会尝试在实体店里买一块面包板。或者很好地检查图片。
从原理图中可以看出,正电压和串行信号都通过一个47欧姆的电阻器。
如果你这样做以Arduino Uno为例的这个项目确保使用220欧姆的电阻! 这些ESP在3.3 V逻辑上工作,但大多数Arduino使用5.0 V,因此您必须更多地限制通过Midi电缆的电流。
最后将中间引脚连接到接地轨。不使用5 Pin Din中的其他2个引脚。
步骤3:步骤3:代码
最后我们有代码!
在这个Zip文件中我放了2个草图。 ‘LightRainTemp’只是测试所有传感器并发回它们的值。
(确保打开终端窗口!)
当然我们有LRTGenerativeMidi(LRT代表Light,Rain ,温度)草图。
在里面你可以找到一堆关于正在发生的事情的解释。我不打算介绍我如何编写整个内容,这需要几个小时。如果你想知道从哪里开始这样的事情,我还有其他一些项目。一个小型随机Riff发生器,带有几个按钮和一个具有一系列我在其他型号上找不到的功能的音序器。
但是我必须先完成设计和编码。如果您想了解其他项目,请告诉我们。我还没决定是否会制作更多的instructables或制作视频系列。
第4步:第4步:连接并测试它!
现在是时候进行测试了!
只需连接Midi线缆,确保将Synth/键盘设置为响应通道1或更改Arduino代码中的通道,看看是否有工作!
我真的好奇地看到并听到你用它做什么。如果你进行更改,升级,调整(比如光传感器和温度值。外面可能效果更好或更差,然后内部)任何东西。
我也很好奇看它是否适用于所有合成。在我的Volca Bass上它完美运行,但是在我的Neutron上,LFO一发送Midi Note就会卡住。我重新启动时很好,但这很奇怪。我不确定Midi图书馆或我的代码中是否有某些内容,我可能会在没有图书馆的情况下尽快做到这一点,看看它是否有所改善。
-
音乐发生器
+关注
关注
0文章
3浏览量
5427
发布评论请先 登录
相关推荐
评论