【物联网】基于立创EDA与OpenHarmony的智能WiFi开关DIY全流程(硬件装配与鸿蒙开发)
【物联网】基于立创EDA与OpenHarmony的智能WiFi开关DIY全流程硬件装配与鸿蒙开发大家好最近有不少朋友问我想自己动手做一个能用手机控制的智能开关有没有从硬件到软件都讲清楚的教程这不我正好用立创EDA画了板子再用OpenHarmony鸿蒙系统写了个控制程序做了一个智能WiFi开关。今天我就把这个完整的DIY过程分享出来从亚克力外壳的装配到鸿蒙应用的开发手把手带你走一遍。无论你是刚接触硬件的创客还是想了解鸿蒙开发的工程师相信都能跟着做出来。1. 硬件准备与装配做硬件项目第一步就是把“骨架”搭起来。我们这个智能开关的硬件部分主要包括一块自己设计的PCB印刷电路板和一个定制的亚克力外壳。装配过程很简单但细节决定成败。1.1 认识你的“零件包”在开始拧螺丝之前咱们先清点一下手头的东西。从项目图片里可以看到你需要准备以下几样定制PCB板这是项目的核心上面焊接了主控芯片鸿蒙开发板、WiFi模块、继电器等所有电子元件。板子是根据功能需求在立创EDA上设计并打样的。亚克力外壳由几片激光切割的亚克力板组成用来保护和固定PCB板也让产品看起来更美观、完整。M3规格的螺丝和铜柱这是连接PCB与外壳的“桥梁”。铜柱用来支撑和抬高PCB板避免板子背面的焊点直接接触到亚克力板导致短路螺丝则用来固定。注意M3指的是螺丝螺纹的直径是3毫米这是电子DIY中非常常见的规格。购买铜柱时要注意长度它决定了PCB板与底壳之间的空隙高度。1.2 手把手装配步骤装配过程就像拼乐高按顺序来非常解压。咱们一步步操作第一步固定铜柱首先找到亚克力外壳的底壳。你会看到底壳上有几个预先设计好的小孔这些孔位和PCB板上的安装孔是对应的。拿出M3铜柱将其一端对准底壳上的孔从亚克力板的下方穿上来。然后在亚克力板的上方即铜柱的螺纹端拧上M3螺丝将铜柱牢牢地固定在底壳上。通常四个角各固定一个铜柱就够了。第二步放置PCB板将焊接好所有元件的PCB板拿过来对准铜柱的位置轻轻放下去。确保PCB板上的安装孔套在了铜柱上。这时PCB板就被四个铜柱稳稳地托在了半空中。第三步固定PCB板现在从PCB板的上方对准铜柱的螺纹再拧入四颗M3螺丝。这样PCB板就被夹在了螺丝头和底壳之间非常稳固。注意螺丝不要拧得太紧以免压裂亚克力板拧到感觉有阻力再稍加一点力即可。第四步合上顶盖最后将亚克力外壳的顶盖盖上。顶盖通常也会有对应的卡扣或孔位对准按下即可。有些设计可能会在顶盖上也使用螺丝固定具体取决于你的外壳设计。至此一个结实、美观的智能开关硬件主体就装配完成了装配好的效果就像参考图片里展示的那样PCB板规整地内嵌在外壳中只露出必要的接口如电源接口和状态指示灯。2. 软件开发环境搭建硬件装好了接下来就要赋予它“灵魂”——软件。我们要在Linux系统下为这个基于鸿蒙开发板的智能开关编写控制程序。别担心我会带你一步步把环境搭好。2.1 为什么选择Linux环境很多鸿蒙设备开发的官方工具链对Linux的支持非常友好在Linux下进行编译、烧录等操作往往更直接、高效。你可以使用Ubuntu、Deepin等发行版甚至用Windows上的WSLWindows Subsystem for Linux也可以。2.2 搭建OpenHarmony开发环境这个过程稍微有点步骤但跟着做一遍就能搞定。主要分为安装基础工具、获取源码和配置编译环境。首先安装必要的依赖工具。打开你的Linux终端执行以下命令来安装编译鸿蒙系统所需的工具比如Python3、Node.js、hb鸿蒙构建工具等。# 1. 更新软件包列表 sudo apt update # 2. 安装编译基础工具如gcc、make、python3等以Ubuntu为例 sudo apt install build-essential gcc g make zlib1g-dev libffi-dev libssl-dev python3-pip -y # 3. 安装鸿蒙设备编译所需的特定工具链例如riscv32或arm-none-eabi-gcc # 这里需要根据你使用的具体鸿蒙开发板芯片架构来安装对应的工具链。 # 例如对于某些RISC-V架构的开发板可能需要安装 # sudo apt install gcc-riscv64-unknown-elf然后获取OpenHarmony源代码。鸿蒙的源代码托管在Gitee上。我们需要使用repo工具来同步代码。# 1. 安装repo工具 mkdir -p ~/bin curl https://storage.googleapis.com/git-repo-downloads/repo ~/bin/repo chmod ax ~/bin/repo # 2. 将~/bin目录加入PATH环境变量如果还没加的话 echo export PATH~/bin:$PATH ~/.bashrc source ~/.bashrc # 3. 创建一个目录用于存放源码并初始化仓库 mkdir ~/openharmony cd ~/openharmony repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify repo sync -c # 同步代码这一步时间较长取决于网络速度提示同步代码可能需要很长时间因为它会下载整个OpenHarmony项目。你可以先去喝杯咖啡。最后安装并配置hb工具。hb是OpenHarmony的编译构建命令行工具。# 进入源码根目录 cd ~/openharmony # 使用pip3安装hb pip3 install build/lite # 初始化hb配置选择你对应的开发板型号 hb set执行hb set后终端会显示一个列表让你选择产品。这时你需要用上下键选择与你硬件对应的开发板解决方案例如wifiiot_hispark_pegasus或其他类似名称。如果列表里没有可能需要检查代码分支或自行适配。3. 智能开关应用开发实战环境准备好了现在进入最核心的环节——编写控制智能开关的鸿蒙应用。我们的目标是实现通过WiFi连接网络并能够远程控制继电器开关。3.1 创建你的第一个鸿蒙应用OpenHarmony的应用开发主要使用C语言对于轻量设备或JavaScript/ArkTS对于标准设备。对于智能开关这类物联网设备我们通常使用C语言开发。假设我们的项目目录在~/openharmony/下。确定应用位置在applications/sample/目录下可以放置你的业务应用。我们新建一个自己的目录。cd ~/openharmony/applications/sample/ mkdir my_smart_switch cd my_smart_switch编写业务代码创建一个main.c文件这是应用的入口。代码的核心逻辑是初始化硬件GPIO、WiFi、连接网络、然后等待控制指令比如来自云平台或手机APP的指令来控制继电器的GPIO引脚输出高低电平。下面是一个极度简化的代码框架用于说明思路#include “ohos_init.h“ #include “cmsis_os2.h“ #include “wifiiot_gpio.h“ // 鸿蒙提供的GPIO操作头文件 #include “wifiiot_gpio_ex.h“ // 还需要包含WiFi相关的头文件 // 定义继电器连接的GPIO引脚号根据你的实际电路图来定 #define RELAY_GPIO_PIN 9 // 继电器控制函数 void RelayControl(int state) { if (state 1) { // 拉高引脚电平打开继电器假设高电平触发 GpioSetOutputVal(RELAY_GPIO_PIN, 1); printf(“Relay ON\n“); } else { // 拉低引脚电平关闭继电器 GpioSetOutputVal(RELAY_GPIO_PIN, 0); printf(“Relay OFF\n“); } } // WiFi连接任务这里需要调用鸿蒙的WiFi API进行实现 void WiFiConnectTask(void *arg) { // 1. 初始化WiFi // 2. 配置SSID和密码 // 3. 连接路由器 // 4. 获取IP地址 while (1) { // 保持连接或处理网络事件 osDelay(1000); } } // 主任务应用入口 void SmartSwitchMain(void) { printf(“Smart Switch Start!\n“); // 初始化继电器GPIO为输出模式 IoSetFunc(RELAY_GPIO_PIN, 0); // 设置引脚为普通GPIO功能 GpioSetDir(RELAY_GPIO_PIN, 1); // 设置方向为输出 // 默认关闭继电器 RelayControl(0); // 创建WiFi连接任务 osThreadAttr_t attr {0}; attr.name “WiFiTask“; osThreadNew(WiFiConnectTask, NULL, attr); // 这里可以再创建一个任务用于监听网络控制命令例如TCP Socket、MQTT客户端 // 当收到“ON”命令时调用 RelayControl(1); // 当收到“OFF”命令时调用 RelayControl(0); while (1) { // 主循环可以处理其他事务或保持空闲 osDelay(5000); } } // 使用OpenHarmony的启动宏注册这个主函数 APP_FEATURE_INIT(SmartSwitchMain);注意上面的代码是一个概念性框架。实际开发中你需要仔细查阅你所使用的具体鸿蒙开发板的SDK文档找到正确的WiFi初始化、连接、Socket通信等API函数来填充WiFiConnectTask和网络命令监听部分。3.2 编译与烧录代码写好了就要把它变成能运行在开发板上的二进制文件。配置编译项确保在项目根目录执行hb set时正确选择了你的开发板。编译在终端中执行hb build。如果一切顺利你会在out/{板型}/{项目名}/目录下找到生成的固件文件通常是.bin或.hex文件。烧录将开发板通过USB线连接电脑使用芯片厂商提供的烧录工具如HiBurn、J-Flash等将上一步生成的固件文件烧录到开发板的Flash存储器中。烧录完成后给开发板上电。如果看到继电器在初始化时“咔嗒”一声断开并且串口调试工具如MobaXterm、SecureCRT打印出“Smart Switch Start!”等信息就说明你的程序已经成功跑起来了4. 联调与测试心得硬件装配好了软件也烧进去了最后一步就是联调和测试。这里分享几个我踩过的坑和调试心得第一硬件检查先行。软件跑不起来先别急着怀疑代码。用万用表量一下供电电压是否稳定GPIO引脚电平变化是否正常。确保继电器模块的驱动方式高电平触发还是低电平触发和你的代码逻辑匹配。第二善用串口打印。在代码的关键节点比如WiFi连接前、连接后、收到网络数据时多使用printf打印日志信息到串口。这是追踪程序运行状态最直接有效的方法。记得在编译前确认串口初始化的代码是打开的。第三网络调试技巧。可以先在电脑上写好一个简单的TCP客户端/服务器测试程序验证开发板的网络通信基本功能是否正常。再逐步集成到鸿蒙应用中。对于MQTT这类物联网协议可以用一些桌面客户端如MQTT.fx先模拟测试确保主题Topic订阅和发布没问题。第四关于外壳。亚克力外壳虽然好看但比较脆螺丝孔位要对准再拧用力要均匀。如果开关需要安装在86底盒上记得在设计PCB和外壳时预留好固定孔和指示灯/按钮的开孔。这个项目虽然不大但涵盖了物联网设备从硬件到软件的完整流程。当你第一次用自己的手机通过WiFi控制这个自己亲手组装、编程的开关“啪嗒”一声点亮一盏灯时那种成就感是非常棒的。希望这篇教程能帮你顺利实现自己的智能开关祝你DIY愉快

相关新闻

【立创开发板】Belong专属梁山派游戏机:基于GD32F4的复古游戏机扩展板全流程开发记录

【立创开发板】Belong专属梁山派游戏机:基于GD32F4的复古游戏机扩展板全流程开发记录

【立创开发板】Belong专属梁山派游戏机:基于GD32F4的复古游戏机扩展板全流程开发记录 大家好,我是Belong,一个在嵌入式软件领域工作几年,但感觉技能有些“偏科”的老咸鱼。最近,我参加了立创EDA举办的“梁山派开发板游…

2026/7/3 2:44:03 阅读更多 →
Qwen-Ranker Pro在VMware虚拟机中的部署实践

Qwen-Ranker Pro在VMware虚拟机中的部署实践

Qwen-Ranker Pro在VMware虚拟机中的部署实践 1. 引言 如果你正在寻找一个简单高效的方式来部署Qwen-Ranker Pro,但又不想折腾复杂的服务器环境,VMware虚拟机可能是个不错的选择。作为一个语义重排序模型,Qwen-Ranker Pro能够帮你对搜索结果…

2026/7/3 2:54:54 阅读更多 →
IDM突然罢工?教你3步解决谷歌浏览器扩展不兼容问题(附最新版下载)

IDM突然罢工?教你3步解决谷歌浏览器扩展不兼容问题(附最新版下载)

从“罢工”到“复工”:深度解析IDM与Chrome扩展的兼容性修复与版本管理艺术 那天下午,我正要从一个学术资源网站下载一份重要的PDF文献,IDM的浮动下载按钮如往常一样优雅地弹出。我习惯性地点击,等待熟悉的下载对话框出现&#xf…

2026/5/17 10:47:29 阅读更多 →

最新新闻

深入pytest_collection_modifyitems钩子:定制化测试用例执行与调度

深入pytest_collection_modifyitems钩子:定制化测试用例执行与调度

1. 项目概述如果你在用pytest做自动化测试,尤其是项目规模稍微大一点,或者对测试报告、用例执行顺序有特殊要求时,你大概率会碰到一个绕不开的“神器”——pytest_collection_modifyitems钩子函数。我第一次深入使用它,是因为一个…

2026/7/3 22:17:57 阅读更多 →
DVWA从入门到精通(八):SQL Injection(SQL注入)

DVWA从入门到精通(八):SQL Injection(SQL注入)

摘要:本文是《DVWA从入门到精通》系列的第八篇,带你全面掌握SQL Injection(SQL注入)模块的攻防全流程。从SQL注入的核心原理出发,逐步讲解Low、Medium、High三个级别的攻击手法与源码分析,并深入探讨Imposs…

2026/7/3 22:17:57 阅读更多 →
基于PIC18F4685与KMR221的高精度电压管理系统设计

基于PIC18F4685与KMR221的高精度电压管理系统设计

1. 项目概述:基于KMR221与PIC18F4685的电压管理系统在嵌入式系统设计中,精确的电压管理一直是硬件工程师面临的挑战。传统方案往往需要复杂的分立元件组合,而现代微控制器与专用电源管理芯片的协同工作正在改变这一局面。这次我要分享的&…

2026/7/3 22:15:57 阅读更多 →
【Bug已解决】Anthropic tool_result 找不到对应 tool use id 解决方案

【Bug已解决】Anthropic tool_result 找不到对应 tool use id 解决方案

【Bug已解决】Anthropic tool_result 找不到对应 tool use id 解决方案 1. 问题描述 在自己动手用 Anthropic Messages API 搭建 Agent Harness、实现多轮工具调用循环时,很多人会在某一次请求时遇到这样的 400 错误: {"type": "error&qu…

2026/7/3 22:13:56 阅读更多 →
Linux下fastai第一课完整实操:PyTorch+CUDA+Jupyter环境从零搭建

Linux下fastai第一课完整实操:PyTorch+CUDA+Jupyter环境从零搭建

1. 项目概述:在Linux系统上扎实走完fastai第一课的完整实操路径我带过不少从零开始学深度学习的朋友,发现一个特别普遍的现象:很多人卡在“环境跑不起来”这一步,不是报错就是版本冲突,最后对着Jupyter Notebook里那一…

2026/7/3 22:11:56 阅读更多 →
双检测时代论文修改怎么选?10 款主流降重复降 AIGC 工具分层测评,paperxie 领跑定稿适配赛道

双检测时代论文修改怎么选?10 款主流降重复降 AIGC 工具分层测评,paperxie 领跑定稿适配赛道

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/科研绘图降重复率 - PaperXie智能写作PaperXie免费论文查重检测-首款免费论文检测软件,为毕业生提供专业的论文重复率检测、论文降重、Aigc检测、智能排版 、论文写作等一站式服务。https://www.paperxie.c…

2026/7/3 22:11:56 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻