基于瑞芯微RV1106G的迷你WiFi 6转百兆有线网络路由器DIY全解析最近在做一个智能家居项目发现有些老设备比如网络打印机、老款游戏机只支持有线网络但家里的路由器离得远拉网线又太麻烦。你是不是也遇到过类似情况或者想给一个只有网口的设备比如工控机临时加上无线联网能力今天我就来分享一个自己动手做的“网络小神器”——一个巴掌大的无线WiFi转有线网络路由器。它基于瑞芯微的RV1106G芯片支持最新的WiFi 6标准能把高速的2.4G/5G双频WiFi信号稳稳地转换成一个百兆有线网口输出。从硬件设计、PCB打样、软件编写到外壳3D打印整个过程我都走了一遍踩了不少坑也积累了很多经验。这篇教程我就手把手带你复现这个项目无论你是嵌入式新手还是想找点新玩法的老手都能跟着做出来。1. 项目核心我们要做一个什么东西简单来说我们做的这个小设备就是一个“网络信号翻译官”。它自己通过WiFi连接到你家或办公室的无线路由器上然后通过背面的一个标准RJ45网口把网络“分享”给那些没有WiFi功能的设备。它能干什么给老旧设备“无线续命”让只有网口的台式机、打印机、监控摄像头等设备也能用上高速WiFi。解决布线难题在不想或不便拉网线的地方如客厅电视柜给机顶盒、游戏主机提供有线网络通常比无线更稳定。临时网络扩展出差时酒店只有WiFi但你需要用网线连接笔记本进行稳定工作或会议。学习嵌入式网络开发这是一个绝佳的实战项目涉及Linux系统、网络协议栈、Python Web开发、硬件交互等多项技能。核心功能与参数主控芯片瑞芯微RV1106G。这是一颗高性能、低功耗的SOC能流畅运行Buildroot定制的Linux系统。无线模块BL-M8800DS2支持WiFi 6802.11ax标准双频2.4GHz 5GHz。有线网络一个10/100M自适应的以太网口RJ45。存储256MB的NAND Flash用于存放系统和程序。配网方式通过物理按键Web页面Flask框架进行WiFi配置无需串口非常方便。状态指示利用网口自带的两个LED灯改造成红绿双色状态指示灯直观显示设备状态。物理尺寸PCB仅48.6mm x 42.3mm加上3D打印外壳后也小巧玲珑。2. 硬件设计与元器件选型硬件是整个项目的基础。我的设计思路是尽可能紧凑、稳定并且方便DIY制作。2.1 核心芯片与模块主控RV1106G我选择RV1106G主要是看中它集成度高、性能足够且功耗低。它内置了CPU、内存控制器、各种外设接口我们用它来跑一个精简的Linux系统Buildroot处理网络数据转发和运行我们的控制程序绰绰有余。WiFi/蓝牙模块BL-M8800DS2这是项目的“无线门户”。它通过SDIO接口与主控通信速度足够快。模块本身支持WiFi 6和蓝牙但我们这个项目主要用到其WiFi功能。选择它是因为其性能稳定驱动支持也相对完善。网络变压器与RJ45接口为了实现百兆有线网络需要一颗网络变压器也叫以太网隔离变压器和标准的RJ45插座。它们负责将芯片端的信号转换成能在网线上稳定传输的信号并提供电气隔离保护。PCB布局时这部分要尽量靠近RV1106G的MAC接口引脚走线需注意差分信号等长。电源管理整个板子采用5V USB Type-C供电。我使用了一颗DC-DC降压芯片将5V转为3.3V给主控、WiFi模块等核心部件供电。电源部分的电容要配足确保系统稳定尤其是WiFi模块在高速传输时电流可能瞬间增大。2.2 PCB设计要点与“骚操作”我的PCB设计是四层板这样能更好地处理信号完整性和电源分布。如果你是自己手工焊接或想降低成本用两层板精心布局也是可以的但四层板成功率更高。一个巧妙的设计LED灯复用网口通常自带两个LED一个表示链路状态常亮一个表示数据活动闪烁。在这个项目中我通过软件完全接管了这两个LED把它们变成了系统的状态指示灯。硬件上将这两个LED的阴极控制引脚通常通过一个限流电阻接地断开连接到RV1106G的两个GPIO上。软件上编写程序控制这两个GPIO输出高低电平从而独立控制两个LED的亮灭。这样我们就得到了一个红灯、一个绿灯可以用来表示丰富的系统状态如下文软件部分所述。注意这个改动需要确认你使用的网络变压器/RJ45一体座子的LED引脚是独立的并且不与网络信号冲突。购买元件时要留意规格书。天线选择WiFi模块通过IPEX接口连接外置天线。我推荐使用“双频小辣椒天线”增益较高尺寸也合适。记得购买配套的IPEX一代转接线长度比如5cm方便将天线固定在外壳上。PCB实物图参考此处应插入原文中提供的正反面PCB图片用于直观展示布局和元器件摆放3. 软件架构让硬件“活”起来硬件搭好了接下来就是软件的灵魂。整个系统的软件运行在Buildroot Linux之上核心是一个用Python编写的多线程控制程序。3.1 系统软件栈操作系统Buildroot定制的Linux。它非常精简只包含我们需要的驱动、库和工具没有桌面环境等冗余组件启动快占用资源少。主控程序app.py使用Python编写。为什么用Python因为开发效率高网络、GPIO操作都有成熟的库适合快速实现我们这种逻辑控制型的应用。Web框架Flask。一个轻量级的Python Web框架用来搭建配网页面服务器。当设备进入配网模式时它会创建一个WiFi热点手机连上这个热点后访问固定的IP如192.168.4.1就能打开配网页面。关键系统工具wpa_supplicant管理WiFi连接、hostapd创建WiFi热点、dnsmasq为热点模式下的设备分配IP地址、udhcpd为有线客户端分配IP等。我们的Python程序会通过调用系统命令或操作配置文件来控制这些工具。3.2 多线程程序工作流程程序一启动就开了几个“工人”线程同时干活各司其职主线程负责初始化启动其他线程并保持程序运行。按键监控线程一直盯着那个配网按键对应的GPIO引脚。一旦检测到用户长按了5秒它就通知系统“该进入配网模式了”WiFi状态监控线程定期检查wlan0WiFi网卡的连接状态。是连上了还是断开了或者正在连接中根据状态它去控制LED灯给出相应的提示。Flask Web服务线程这个线程不是一直运行的。只有当系统进入配网模式时它才被启动。它负责运行Flask服务器处理手机浏览器发来的请求比如扫描WiFi列表、提交WiFi密码等。3.3 状态指示灯设备的“表情包”状态灯是用户和设备交互最直接的窗口。我设计了一套简单的逻辑LED状态红灯绿灯设备在说什么待机/未连接常亮熄灭“我开机了但还没连上WiFi快给我配网吧”配网热点模式闪烁熄灭“热点已打开手机快来连我1106G_NetConfig”正在连接WiFi熄灭闪烁“你给的密码我收到了正在努力连接中…”连接成功熄灭常亮“搞定WiFi连上了网络共享已开启”连接失败闪烁闪烁“哎呀密码错了或者网络有问题连不上…”这个状态机让设备的使用体验非常直观你一看灯就知道它处在哪个阶段。4. 手把手实战从烧录系统到成功上网理论说了这么多咱们来点实际的。假设你已经焊接好板子并准备好了Type-C电源线、网线和天线。4.1 准备系统镜像与烧录获取资料从项目提供的百度网盘链接链接:https://pan.baidu.com/s/1t6w8jQhtvkgBjS2Rbl_Vfw提取码:1j9c下载RV1106无线WIFI转有线.7z压缩包。里面包含了系统镜像、WiFi驱动、3D打印外壳文件等。烧录工具你需要一台Windows电脑和瑞芯微官方的烧录工具RKDevTool。RV1106G通常通过USB OTG接口进入“Loader模式”进行烧录。烧录步骤断开设备电源。找到板子上的USB OTG口或者需要短接的Loader按键/触点通过USB线连接电脑。按住板子上的Recovery或Boot键如果有的话具体看原理图不放然后给设备上电。此时RKDevTool应能识别到“发现一个LOADER设备”。在工具中选择下载好的镜像文件执行烧录。烧录完成后设备会自动重启。4.2 首次使用与配网教程设备第一次启动因为没有保存WiFi密码会直接进入“待机状态”红灯常亮。下面就是给它“教”WiFi密码的过程第一步进入配网模式找到板子上的配网按键通常就是一个轻触开关。长按它大约5秒钟直到你看到红灯从常亮变为闪烁。这说明设备已经关闭了WiFi客户端模式并启动了自己内部的WiFi热点。第二步手机连接热点打开手机的WiFi设置在列表里寻找一个名叫1106G_NetConfig的网络。点击连接密码是12345678。连接成功后手机会显示“已连接但无法访问互联网”这是正常的因为设备的热点本身不提供外网。第三步访问配网页面打开手机上的任何浏览器Chrome、Safari等。在地址栏输入http://192.168.4.1并访问。稍等片刻你就会看到一个简洁的配网页面上面会自动列出周围可用的WiFi网络。第四步选择并配置你的WiFi在列表里点击你家的WiFi名称SSID。在弹出的输入框里输入该WiFi的密码。点击“连接”按钮。此时设备上的绿灯会开始闪烁表示它正在尝试用你给的密码去连接目标路由器。第五步等待连接成功如果密码正确网络通畅几十秒后绿灯会变为常亮同时配网页面会自动关闭或提示成功。此时设备已经成功连接到你指定的WiFi。它的有线网口也已经启用了网络共享DHCP服务。你可以用一根网线将你的电脑或其他设备连接到这个网口就能直接上网了提示如果连接失败红绿灯交替闪烁请回到192.168.4.1页面检查密码是否正确或者尝试“手动输入网络”功能。4.3 重新配网或更换网络如果你想换一个WiFi连接步骤非常简单在设备通电状态下再次长按配网键5秒让红灯闪烁进入热点模式。重复上述第二步到第五步配置新的WiFi信息。新的配置会自动覆盖旧的配置。5. 外壳制作与最终组装为了让项目更完整、更美观我设计了一个3D打印外壳。文件资料包里的3MF或STL文件可以直接用切片软件如Cura、PrusaSlicer打开。打印建议使用PLA材料即可层高0.2mm填充率15-20%足够。外壳分为上盖和下盖。组装将焊接好的主板放入下盖。将天线通过外壳侧面的孔穿出并用螺母固定。把Type-C口、网口、按键对应的位置对准。合上上盖用螺丝锁紧。一个小巧、实用的无线转有线路由器就诞生了你可以把它放在任何有USB电源和WiFi信号的地方轻松为有线设备提供网络接入。踩坑与心得电源稳定性WiFi模块在高速传输时峰值电流较大如果电源电路电容不足或布局不好可能导致系统重启或WiFi断流。务必保证3.3V电源干净、充足。天线摆放天线尽量远离主板上的高频数字电路如SDIO走线并保持竖直这对信号质量有很大影响。Buildroot配置在定制系统时一定要把wpa_supplicant、hostapd、dnsmasq、udhcpd、Python3及Flask等相关包选上否则功能无法实现。服务启动顺序系统启动时网络相关服务的启动顺序很重要。要确保先初始化网络接口再启动我们的Python主程序。这通常需要在/etc/rc.local或systemd服务文件中仔细安排。这个项目麻雀虽小五脏俱全涵盖了嵌入式Linux开发的多个核心环节。希望这篇详细的解析能帮你成功复现甚至激发你更多的改造灵感比如增加第二个网口做成简单交换机或者集成4G模块等等。