为 DCC 控制器设置 ARDUINO IDE 

ARDUINO IDE 徽标

用于 DCC 控制器的 Arduino IDE 设置

步骤 1. IDE 环境搭建。 加载 ESP 板。

当您第一次安装 Arduino IDE 时,它只支持基于 ARM 的开发板。 我们需要添加对基于 ESP 的电路板的支持。 导航 File… 喜好

IDE环境搭建。 加载 ESP 板
IDE环境搭建。 加载 ESP 板

在下面的附加板管理器中输入此行 URLS盒。 注意里面有下划线,没有空格。  http://arduino.esp8266.com/stable/package_esp8266com_index.json,https://dl.espressif.com/dl/package_esp32_index.json
还要选中在编译期间显示详细信息的框。 如果在编译过程中出现问题,这会为我们提供更多信息。

请注意,上面的行添加了对 esp8266 设备和更新的 esp32 的支持。 两个json字符串用逗号隔开。
现在选择板 版本 2.7.4 来自董事会经理

用于 DCC 控制器的 Arduino IDE 设置

安装版本 2.7.4。 这行得通。 版本 3.0.0 及更高版本不适用于此项目。 现在,返回“工具”菜单,选择您将使用的电路板。 对于这个项目,它将是 nodeMCU 1.0 或 WeMos D1R1

用于 DCC 控制器的 Arduino IDE 设置

这里我们选择 WeMos D1R1。 (从 Nano 改变这个)

步骤 2. IDE 环境搭建。 加载 ESP8266 草图数据上传插件。

我们需要加载此加载项以允许我们发布(放置)HTML 页面和其他 files 在 ESP 设备上。 这些位于项目文件夹内的数据文件夹中 https://github.com/esp8266/arduino-esp8266fs-plugin/releases
前往 URL 以上并下载 ESP8266FS-0.5.0.zip。
在 Arduino 文件夹中创建一个 Tools 文件夹。 解压 zip 的内容 file 到这个工具文件夹。 你应该结束这个;

用于 DCC 控制器的 Arduino IDE 设置

一个新的菜单选项将出现在工具下...

用于 DCC 控制器的 Arduino IDE 设置

如果调用该菜单选项,IDE 会将数据文件夹的内容上传到电路板。 好的,这就是为 ESP8266 一般使用设置的 IDE 环境,现在我们需要为这个特定项目将一些库添加到 Arduino/Libraries 文件夹中。

步骤 3. 下载库并手动安装。

我们需要从Github上下载这些库; https://github.com/me-no-dev/ESPAsyncTCP

用于 DCC 控制器的 Arduino IDE 设置

单击代码,然后下载 zip。 它将转到您的下载文件夹。 进入下载,找到 zip,打开它并将内容文件夹“ESPAsyncTCP”拖到 Arduino/libraries。
如果文件夹名称以“-master”结尾,则重命名它以从末尾删除“-master”。
即来自下载

用于 DCC 控制器的 Arduino IDE 设置

打开 ESPAsyncTCP-master 的 .zip,并将 ESPAsyncTCP-master 文件夹从里面拖到 Arduino/Libraries

用于 DCC 控制器的 Arduino IDE 设置

笔记: Arduino/libraries 不能使用.zip 版本,需要解压(拖拽)到需要的文件夹。 我们还需要 https://github.com/fmalpartida/New-LiquidCrystal
下载 zip 然后将其内容拖到 Arduino/libraries 并删除 -master 结尾。

最后,我们需要以下链接中的 ArduinoJson-5.13.5.zip https://www.arduinolibraries.info/libraries/arduino-json

下载然后将 zip 内容拖到 Arduino/libraries

第 4 步。使用 Arduino Library Manager 安装更多的库。

我们还需要两个库,它们来自 Arduino 库管理器,它包含一系列内置库。 转到工具...管理库...

用于 DCC 控制器的 Arduino IDE 设置
用于 DCC 控制器的 Arduino IDE 设置

使用 Adafruit INA1.0.3 的 219 版。 这行得通。 

而且

用于 DCC 控制器的 Arduino IDE 设置

使用版本 2.1.0 的 Web来自 Markus Sattler 的套接字,这已经过测试并且可以正常工作。 我没有测试过以后的版本。
好的,这就是 IDE 编译该项目所需的所有库(也称为引用)。

步骤 5. 从 GitHub 下载 ESP_DCC_Controller 项目并在 IDE 中打开。

去GitHub下载 https://github.com/computski/ESP_DCC_controller

单击绿色的“代码”按钮,然后下载 zip。 然后打开拉链 file 并将其内容移至 Arduino 文件夹。 重命名文件夹以删除以文件夹名称结尾的“-main”。 您最终应该在 Arduino 文件夹中找到一个文件夹 ESP_ DCC_ controller。 它将包含一个 .INO file, 各种 .H 和 .CPP files 和一个数据文件夹。

用于 DCC 控制器的 Arduino IDE 设置

双击.INO file 在 Arduino IDE 中打开项目。
在我们点击编译之前,我们需要根据您的要求进行配置……

步骤 6. 在 Global 中设置您的要求。 H

该项目可以支持 nodeMCU 或 WeMo 的 D1R1,还可以支持多种不同的电源板(电机屏蔽)选项,此外还可以支持 I2C 总线上的设备,例如电流监视器、LCD 显示器和键盘。 最后它还可以支持一个转轮(旋转编码器)。 您可以做的最基本的构建是 WeMo 的 D1R1 和 L298 电机防护罩。
请注意,禁用选项的最简单方法是在#define 语句中的名称前添加一个小写的 n。
#定义nNODEMCU_OPTION3
#定义nBOARD_ESP12_SHIELD
#定义 WEMOS_D1R1_AND_L298_SHIELD
例如ample,上面的 NODEMCU_OPTION3 已被 n 禁用,nBOARD_ESP12_SHIELD 也一样。 WEMOS_D1R1_AND_L298_SHIELD 是活动选项,这将导致编译器使用下面列出的配置。

要遍历此配置: 

#elif 定义(WEMOS_D1R1_AND_L298_SHIELD)

/*Wemos D1-R1 与 L298 shield 堆叠在一起,请注意 D1-R2 是具有不同引出线的较新型号*/
/*切断 L298 屏蔽板上的制动跳线。 这些不是必需的,我们不希望它们由 I2C 引脚驱动,因为它会破坏 DCC 信号。

该板具有 Arduino 外形,引脚如下
D0 GPIO3 接收
D1 GPIO1 发送
D2 GPIO16 心跳和滚轮按钮(高电平有效)
D3 GPIO5 DCC 启用(脉宽调制)
D4 GPIO4 点动 1
D5 GPIO14 DCC 信号(方向)
D6 GPIO12 DCC 信号(方向)
D7 GPIO13 DCC 启用(脉宽调制)
D8 GPIO0 SDA,带 12k 上拉
D9 GPIO2 SCL,带 12k 上拉
D10 GPIO15 点动 2
以上是人类的注意事项,让您知道哪些 ESP GPIO 将执行哪些功能。 请注意, Arduino D1-D10 到 GPIO 映射不同于节点 MCU D1-D10 到 GPIO 映射 */

#定义 USE_ANALOG_MEASUREMENT
#define ANALOG_SCALING 3.9 //并联使用A和B时(2.36匹配万用表RMS)
我们将在 ESP 上使用 AD,而不是外部 I2C 电流监控设备,例如 INA219 禁用
如果您确实希望使用 INA219,请使用 n USE_ ANALOG_ MEASUREMENT

#define PIN_HEARTBEAT 16 //和滚轮按钮
#定义 DCC_PINS \
uint32 dcc_info[4] = { PERIPHS_IO_MUX_MTDI_U, FUNC_GPIO12, 12, 0 }; \
uint32 enable_info[4] = { PERIPHS_IO_MUX_MTDI_U, FUNC_GPIO5, 5 , 0 }; \
uint32 dcc_infoA[4] = { PERIPHS_IO_MUX_MTDI_U, FUNC_GPIO14, 14, 0 }; \
uint32 enable_infoA[4] = { PERIPHS_IO_MUX_MTDI_U, FUNC_GPIO13,13 , 0 };
定义哪些引脚将驱动 DCC 信号,我们有两个同相运行的通道,因此我们可以将它们共用在一起。 A通道是dcc_info[],B通道是dcc_infoA[]。 这些被定义为宏,反斜杠是一个行继续标记。

#define PIN_SCL 2 //12k 上拉
#define PIN_SDA 0 //12k 上拉
#定义PIN_JOG1 4
#define PIN_JOG2 15 //12k下拉

定义驱动 I2C SCL/SDA 的引脚 (GPIO),然后定义滚轮输入 1 和 2

#define KEYPAD_ADDRESS 0x21 //pcf8574

用于可选的 4 x 4 矩阵键盘,使用 pcf8574 芯片扫描

//地址,en,rw,rs,d4,d5,d6,d7,背光,极性。 我们将其用作 4 位设备//我的显示引出线是 rs、rw、e、d0-d7。 仅使用 d<4-7>。 <210> 出现是因为位 <012> 被 // 映射为 EN、RW、RS 并且我们需要根据硬件上的实际顺序对它们重新排序,3 被映射 // 到背光。 <4-7> 依次出现在背包和显示屏上。

#define BOOTUP_LCD LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); //Yw机器人背包

用于定义和配置驱动 2 LCD 显示器(可选)的 I1602C 背包,这是可软配置的,并且有多个背包可用,其引脚配置各不相同。
#结束

步骤 7. 编译并上传到开发板。

现在您已经配置了您打算使用的板组合,您可以编译该项目。 如果您不打算使用 4×4 矩阵键盘和 LCD,没问题,请保留它们的定义,因为软件希望配置它们。 没有它们,系统将通过 WiFi 正常工作。
在 IDE 上,勾号(验证)实际上是“编译”。 单击此按钮,当系统编译各种库并将它们链接在一起时,您将看到各种消息出现(前提是您启用了详细编译)。 如果一切正常,并且如果您完全按照上述所有步骤操作,那么您应该会看到一条成功消息。 您现在可以点击右箭头(上传)按钮,但在执行此操作之前,请检查您是否在“工具”菜单下为开发板选择了正确的 COM 端口。
上传成功后(使用质量好的 USB 数据线)您还需要调用 加载 ESP8266 草图数据菜单 工具下的选项。 这会将数据文件夹的内容放到设备上(所有 HTML 页面)。
你完成了。 打开串行监视器,单击重置按钮,您应该会看到设备启动并扫描 I2C 设备。 您现在可以通过 Wifi 连接到它,并准备好连接到它的电源板(电机屏蔽)。

文件/资源

为 DCC 控制器设置 ARDUINO IDE [pdf] 指示
为 DCC 控制器设置 IDE,为 DCC 控制器设置 IDE,为 DCC 控制器设置,DCC 控制器 IDE 设置,DCC 控制器

参考

发表评论

您的电子邮件地址不会被公开。 必填字段已标记 *