GD32VW553-IOT实现 Wi-Fi无线打印(未完成,集思广益)

分享作者:wx17557007791044
作者昵称:香蕉牛奶酸奶
评测品牌:萤火工场
评测型号:GD32VW553-IOT
发布时间:2025-09-08 15:40:32
2
概要
GD32VW553-IOT开发板实现手机Wi-Fi打印的方案
开源口碑分享内容

首先,感谢iCEasy商城免费送来的GD32VW553-IOT样板。

          感谢iCEasy商城可以有这么好的活动。

声明:由于刚刚拿到样板,开发还未完成,故本文只发出部分思路和方法。

正文:

一、材料清单

GD32VW553-IOT 开发板    1 块    核心控制,转发手机 Wi-Fi 数据到打印机    
兄弟 MFC-7340 打印机    1 台    打印输出    装纸、无故障,电源正常
CH340G USB 转 TTL 模块(带 USB 母座)    1 个    信号转换(开发板→打印机)+ 烧录器    
Type-C 转打印机 OTG 线    1 根    连接 CH340G 与打印机  
杜邦线(公对母)    5 根    连接开发板与 CH340G    
电脑(Windows)    1 台    烧录固件    
手机(安卓 )    1 部    装 PrinterShare,发送打印任务    
Type-C 数据线    2 根    开发板供电 + CH340G 烧录连接    

二、硬件连接(烧录固件→打印)

阶段 1:烧录固件(CH340G 当烧录器)
1. 定位开发板关键元件
R4 电阻:USART0 附近,丝印 “R4”;
BOOT0 引脚:丝印 “BOOT0”;
USART0 引脚:PA9(TX)、PA10(RX)。
2. 短接 R4 + 配置 BOOT0
用杜邦线短接 R4 电阻的两个焊盘;
用杜邦线连接 BOOT0→开发板 3.3V 引脚。
3. 连接 CH340G 与开发板
CH340G 引脚    开发板引脚    
TX                     PA10(USART0_RX)    模块发数据给开发板
RX                     PA9(USART0_TX)    模块收开发板反馈
GND    GND(任意)    共地
VCC    3.3V    模块取电(开发板供电)
4. 连接电脑与 CH340G
用 Type-C 数据线插 CH340G 的 USB 母座→电脑 USB 口(传烧录数据)

固件烧录

步骤 1:安装软件(驱动 + 开发环境 + 烧录工具)
CH340G 驱动:电脑连模块,设备管理器看 “USB-SERIAL CH340(COMx)”,无则装驱动;
GD32 Embedded Studio:兆易创新官网下载安装,用于编译代码;
GD32 固件库:解压到桌面(如C:\GD32_FW);
GD32 ISP Tool:烧录工具,解压备用。
步骤 2:编写固件代码(端口 9100 支持PrinterShare 的关键)
1. 创建项目 + 添加文件
打开 GD32 Embedded Studio→新建项目;
右键项目→新建main.c和usart.h
main.c
c
运行
#include "gd32vw55x.h"
#include "wifi.h"
#include "socket.h"
#include "usart.h"
#include "delay.h"

// 1. 适配PrinterShare:热点名+默认打印端口9100
#define AP_SSID       "GD32_Printer"  // 手机连这个热点
#define AP_PASSWORD   "12345678"      // 热点密码
#define TCP_PORT      9100            // PrinterShare默认扫描9100端口

uint8_t recv_buf[4096];  // 增大缓冲区,支持大文件(如图片/PDF)

// 初始化串口(USART1,与CH340G通信)
void usart_init(void) {
  rcu_periph_clock_enable(RCU_USART1);
  rcu_periph_clock_enable(RCU_GPIOB);
 
  // 配置PB6(TX)、PB7(RX)
  gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_6);
  gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_6);
  gpio_af_set(GPIOB, GPIO_AF_7, GPIO_PIN_6);
 
  gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_7);
  gpio_af_set(GPIOB, GPIO_AF_7, GPIO_PIN_7);
 
  // 波特率115200(CH340G默认,兼容PrinterShare)
  usart_deinit(USART1);
  usart_baudrate_set(USART1, 115200);
  usart_word_length_set(USART1, USART_WL_8BIT);
  usart_parity_config(USART1, USART_PM_NONE);
  usart_stop_bit_set(USART1, USART_STB_1BIT);
  usart_receive_config(USART1, USART_RECEIVE_ENABLE);
  usart_transmit_config(USART1, USART_TRANSMIT_ENABLE);
  usart_enable(USART1);
}

// 启动Wi-Fi热点(手机连开发板)
void wifi_ap_init(void) {
  wifi_init();
  wifi_softap_config_t ap_cfg = {
      .ssid = AP_SSID,
      .password = AP_PASSWORD,
      .channel = 6,          // 信道6,干扰少
      .encryption = WIFI_ENC_WPA2,  // 加密防蹭网
      .max_connection = 2    // 最多连2台设备
  };
  wifi_softap_start(&ap_cfg);  // 启动热点
}

// 启动TCP服务器(监听9100端口,接收PrinterShare数据)
void tcp_server_start(void) {
  int server_fd = socket(AF_INET, SOCK_STREAM, 0);
  struct sockaddr_in server_addr = {
      .sin_family = AF_INET,
      .sin_addr.s_addr = INADDR_ANY,  // 允许任何设备连接
      .sin_port = htons(TCP_PORT)     // 绑定9100端口
  };
 
  bind(server_fd, (struct sockaddr*)&server_addr, sizeof(server_addr));
  listen(server_fd, 1);  // 监听连接

  while (1) {
      int client_fd = accept(server_fd, NULL, NULL);  // PrinterShare连接成功
      int recv_len = recv(client_fd, recv_buf, sizeof(recv_buf), 0);  // 收打印数据
     
      if (recv_len > 0) {
          // 核心:将PrinterShare的GDI数据透传给打印机(CH340G转发)
          for (int i = 0; i < recv_len; i++) {
              while (usart_flag_get(USART1, USART_FLAG_TBE) == RESET);
              usart_data_transmit(USART1, recv_buf[i]);
          }
          // 给PrinterShare回传“打印中”(APP显示进度)
          send(client_fd, "Printing...", strlen("Printing..."), 0);
      }
      close(client_fd);
  }
}

// 主函数(程序入口)
int main(void) {
  systick_config();  // 初始化系统时钟
  usart_init();      // 初始化串口
  wifi_ap_init();    // 启动Wi-Fi热点
  tcp_server_start();// 启动TCP服务器(等PrinterShare连接)
 
  while (1);  // 循环运行
}
usart.h
c
运行
#ifndef USART_H
#define USART_H

#include "gd32vw55x.h"

void usart_init(void);

#endif
2. 添加固件库路径
右键项目→Properties→C/C++ Build→Settings→GNU C Compiler→Include Paths;
点击 “+”→添加固件库的Include;
点击 OK 保存。
3. 编译 + 生成固件
点击 Project→Build Project;
编译成功后,在项目的 “Debug” 文件夹中找到GD32_Printer.hex(烧录文件)。
步骤 3:用 GD32 ISP Tool 烧录固件
打开 GD32 ISP Tool→选 “串口”→选 CH340G 的 COM 口(如 COM3)→波特率 115200;
点击 “浏览”→选择GD32_Printer.hex;
点击 “下载”→立即给开发板上电(Type-C 线接充电器);
进度条到 100% 显示 “下载成功”→断开开发板电源,准备打印。

阶段 2:打印(烧录完成后换线)
1. 恢复开发板到正常模式
拔掉 R4 的短接杜邦线;
拔掉 BOOT0 的杜邦线(默认接 GND,进入运行模式)。
2. 连接 CH340G 与开发板(打印线)
CH340G 引脚    开发板引脚    作用
TX    PB7(USART1_RX)    模块反馈打印机状态给开发板
RX    PB6(USART1_TX)    模块收开发板的打印数据
GND    GND(任意)    共地
VCC    不接!    模块通过 OTG 线从打印机取电(或单独接 5V 充电器)
3. 连接模块与打印机
Type-C 转打印机 OTG 线的Type-C 公头→CH340G 的 USB 母座;
OTG 线的方形 USB 头→兄弟 MFC-7340 的 USB 接口。
4. 供电
开发板:Type-C 线接充电器(5V/1A,灯亮);
打印机:插电源开机,显示 “就绪”;
CH340G(若 OTG 取电不足):单独接 5V 充电器。

三、PrinterShare APP Wi-Fi 打印操作(测试部分)
步骤 1:手机连开发板热点
打开手机设置→Wi-Fi→找到 “GD32_Printer”→输入密码 “12345678”→连接成功(手机顶部显示 Wi-Fi 图标)。
步骤 2:安装 PrinterShare APP
安卓:应用商店搜索 “PrinterShare”(选 “PrinterShare Mobile Print”),下载安装;
iOS:App Store 搜索 “PrinterShare”,下载免费版(功能足够)。
步骤 3:添加打印机(关键:手动输入开发板 IP)
打开 PrinterShare→首次打开点击 “Continue”→选择 “Skip”(跳过注册);
点击底部 “Printers”→右上角 “+”(添加打印机)→选择 “Network Printer”(网络打印机);
选择 “Manual IP”(手动输入 IP)→输入以下信息:
IP Address:192.168.4.1(开发板 Wi-Fi 热点的默认网关,固定不变);
Port:9100(与固件中 TCP_PORT 一致,PrinterShare 默认扫描此端口);
Protocol:选 “Raw”(原始数据传输,适配 GDI 指令);
点击 “Next”→APP 会自动搜索打印机,搜索完成后,在 “Printer Model”(打印机型号)中找到 “Brother MFC-7340”(若没找到,选 “Brother”→手动搜索型号);
点击 “Next”→提示 “Driver Install”(安装驱动),点击 “Install”→等待驱动安装完成(10-20 秒)。
步骤 4:测试打印(文本 / 图片 / PDF 均可)
打印文本 / 手机文件
打开 PrinterShare→点击底部 “Files”→选择要打印的文件(如手机中的 TXT、Word、图片);
选择文件后,点击右上角 “Print”→进入打印设置界面:
Copies:设置打印份数(默认 1 份);
Pages:选择打印页数(默认全部);
Paper Size:选 “A4”(兄弟 MFC-7340 默认纸张);
Orientation:选 “Portrait”(纵向)或 “Landscape”(横向);
设置完成后,点击右下角 “Print”→APP 显示 “Printing...”(打印中);
等待 3-5 秒,打印机开始打印→输出文件即成功。

大学小白初学,勿喷,开发完成后完整附上全文教程。

全部评论
暂无评论
0/144