老吴的研发日志

烧录 WiFiDuck 到 CJMCU-3212 上

本文记录了在 Windows 系统下通过 Arduino IDE 和 NodeMCU ESP8266 Flasher 将 SpacehuhnTech/WiFiDuck 烧录到 CJMCU-3212 的过程。

该过程参考 puckk/CJMCU-3212 ,其方法可以烧录 spacehuhn/wifi_ducky (旧版)。

请注意:

检查串行设备参数(如果不能烧录成功)

进入 Windows“设备管理器”,展开“端口(COM 和 LPT)”类目,右键 CJMCU-3212 对应的的“USB 串行设备(COM*)”,点击“属性”打开属性窗口,点击选择第二个选项卡“端口设置”,并按如下表格设置后点击确定关闭窗口。(下面是我使用的参数,参数不一定最合适,但有效。因此参数值应该不一定需要一致,我将其全部写出只是为了避免其他未知问题,后续表格同理)

参数选项
位/秒9600
数据位8
奇偶校验
停止位1
流控制

在 Arduino IDE 烧录程序

启动 Arduino IDE ,点击顶部“工具”菜单,选择第三个集合中第一项“开发板: “*"”,选择“Arduino Leonardo”;选择第三个集合中第二项“端口”,选择“设备管理器”中显示的端口(每次烧录都要确保端口正确,下文不再重复)。

复制以下代码到编辑窗口,点击顶部“项目”菜单,选择“上传”选项,烧录程序。

int program_pin = 12;
int enable_pin = 13;

void setup()
{
  Serial1.begin(115200);
  Serial.begin(115200);
  pinMode(enable_pin, OUTPUT);
  pinMode(program_pin, OUTPUT);
  digitalWrite(program_pin, LOW);
  digitalWrite(enable_pin,HIGH);
}

void loop()
{
  while(Serial1.available()){
    Serial.write((uint8_t)Serial1.read());
  }

  if(Serial.available()){
    while(Serial.available()){
      Serial1.write((uint8_t)Serial.read());
    }
  }
}

添加 WiFi Duck 开发板到 Arduino

启动 Arduino IDE,点击顶部“文件”菜单,选择倒数第二项“首选项”,在开启的对话框中找到第一个选项卡(“设置”)中的“附加开发板管理器网址:”,点击输入框右侧按钮并在新对话框中的编辑框中的新的一行输入“https://raw.githubusercontent.com/spacehuhn/hardware/master/wifiduck/package_wifiduck_index.json”,依次点击两个窗口底部的“好”按钮完成设置。

点击顶部“工具”菜单,选择第三个集合中第一项“开发板: ‘*’”,选择第一项“开发板管理器…”,在打开的对话框中搜索“wifi duck”,然后在结果中分别安装“WiFi Duck ESP8266 Boards”和“WiFi Duck AVR Boards”(将鼠标移至上方将显示“安装”按钮。根据网络状况速度可能会较慢,在中国可能甚至无法下载),然后关闭窗口。

烧录 ESP8266 程序

下载 Zip 包或克隆 SpacehuhnTech/WiFiDuck 仓库,(解压后)使用 Arduino IDE 打开“esp_duck/esp_duck.ino”文件。

点击 Arduino IDE 顶部“工具”菜单,选择第三个集合中第一项“开发板: “*"”,选择第二个集合中的“WiFi Duck ESP8266”,再选择“Generic ESP8266 Module”。

再次点击“工具”菜单将出现很多可选参数,请依照下表设置:

参数选项
DebugDisabled
ProtocolSerial
Upload Speed115200
CPU Frequency80 MHz
Crystal Frequency26 MHz
Flash Size4MB (FS:3MB OTA:~512KB)
Flash ModeDIO
Flash Frequency40 MHz
Reset Methoddtr (aka nodemcu)
Debug portDisabled
Debug Level
lwIP Variantv2 Lower Memory
VTablesFlash
ExceptionsLegacy (new can return nullptr)
Erase FlashAll Flash Contents
Espressif FWnonos-sdk 2.2.1 + 100 (190703)
SSL SupportAll SSL ciphers (most compatible)

点击“项目”菜单,点击“导出已编译的二进制文件”。稍等片刻,“esp_duck” 目录中将生成“esp_duck.ino.generic.bin”文件。

启动 ESP8266Flasher.exe ,点击第二个选项卡“Config”中第一行右侧的齿轮(注意不要勾选除第一行之外其他行前的复选框),在打开的选择文件对话框选择上述“esp_duck.ino.generic.bin”文件;点击第三个选项卡“Advanced”,按照如下配置:

参数选项
Baudrate150200
Flash size4MByte
Flash speed40MHz
SPI ModeDIO

然后我们需要对 CJMCU-3212 进行一点处理:先拔出开发板,连通 USB 公头朝左时 ATmega32u 芯片上方的与其他众多触点相独立的两个触点(如果你不知道我指的是哪两个,可以查看 puckk 文档中 他拍的照片 ),再插入电脑。在保持连通的状态下,在 ESP8266Flasher.exe 的第一个选项卡中的“COM Port”选择此时“设备管理器”中显示的端口,然后点击右侧“Flash”按钮。

正常情况下仅需数秒软件就会获取到 CJMCU-3212 的信息并开始烧录,如果长时间没有反应,可能是两个触点连接出现问题,请调整后重试。

等待烧录完毕后,可以拔出 CJMCU-3212 并断开两触点。

烧录 ATmega32u4 程序

使用 Arduino IDE 打开“atmega_duck/atmega_duck.ino”文件。

点击 Arduino IDE 顶部“工具”菜单,选择第三个集合中第一项“开发板: “*"”,选择第二个集合中的“WiFi Duck AVR”,再选择“CJMCU Beetle”。

再次点击“工具”菜单将出现很多可选参数,请依照下表设置:

参数选项
USB Device IDArduino Leonardo
ProtocolSerial
DebugDisabled
LEDDisabled
LED PinRX (Serial)
Serial BridgeSerial 1
Serial Bridge Enable PinSDA (I2C)
Serial Bridge Reset PinSDA (I2C)
Serial Bridge GPIO-0 PinSDA (I2C)

点击“项目”菜单,点击“上传”。稍等片刻,待显示“上传成功”后,WiFiDuck 已经成功的烧录到了 CJMCU-3212 中。

完成

拔出后重新插入供电,搜索 WiFi 可以找到 SSID 为“wifiduck”的热点,使用密码“wifiduck”登录,访问“192.168.4.1”即可 正常使用

参考