作者: ESD

  • 共创社区平台 [V 1.0.0]上线,接口已经接入主页对应的位置。

    主页

    项目详情页

    项目发布页

    平台使用说明

    个人中心页

    可以从这里直接前往[共创社区]

  • 在线取模【字库】工具更新[版本V 1.0.0.1]

    📖 快速开始

    1. 选择功能模块:点击左侧导航菜单,选择「文本/汉字取模」、「图片取模」、「批量取模」或「手绘取模」
    2. 配置参数:在左侧配置面板设置点阵大小、字体、取模方式等参数
    3. 输入内容:在文本框中输入字符、上传图片文件,或在画布上手绘图形
    4. 生成数据:点击「生成点阵」按钮,右侧将显示点阵预览和十六进制数据
    5. 导出结果:点击「复制」按钮复制到剪贴板,或点击「导出C文件」下载代码文件

    ⚙️ 核心参数详解

    🔢 点阵大小(Width × Height)

    • 定义:点阵的宽度和高度,单位为像素(px)
    • 范围:8×8 到 128×128,支持任意尺寸组合
    • 常用规格
      • 8×8:小型图标、简单符号
      • 16×16:标准汉字显示(最常用)
      • 24×24:中等字号,清晰度更高
      • 32×32:大字号标题、重要提示
      • 64×64 / 128×128:超大图标、特殊效果
    • 影响:点阵越大,显示越清晰,但占用存储空间越多
    • 建议:根据实际显示设备的分辨率选择合适的尺寸

    🔤 字体大小(Font Size)

    • 定义:渲染文字时的字号大小,单位为像素
    • 范围:8px 到当前点阵高度的最大值
    • 与点阵关系
      • 字体大小 ≈ 点阵高度:文字填满整个点阵区域
      • 字体大小 < 点阵高度:文字较小,周围留白较多
      • 字体大小 > 点阵高度:文字被裁剪,可能显示不完整
    • 建议值:通常为点阵高度的 70%-90%,例如 16×16 点阵使用 12-14px 字体

    🎨 字体选择(Font Family)

    • 预设字体
      • 无衬线字体(Sans-serif):现代简洁,适合屏幕显示(默认推荐)
      • 衬线字体(Serif):传统优雅,笔画有装饰
      • 等宽字体(Monospace):每个字符宽度相同,适合代码显示
      • 微软雅黑:Windows 系统默认中文字体,清晰易读
      • 宋体:传统印刷字体,横细竖粗
      • 黑体:笔画粗细均匀,醒目有力
      • 楷体:书法风格,优雅流畅
      • 仿宋:介于宋体和楷体之间
      • Arial / Times New Roman / Courier New:经典西文字体
    • 自定义字体:选择「自定义字体」后,可输入系统中已安装的任意字体名称
    • 注意事项
      • 不同操作系统支持的字体可能不同
      • 如果指定字体不存在,浏览器会自动回退到默认字体
      • 中文显示建议选择中文字体(如微软雅黑、宋体等)

    🔄 取模方式(Scan Mode)

    作用:决定如何扫描点阵并转换为字节数据,直接影响生成的十六进制代码

    ➡️ 逐行式(Row Scan / Horizontal)

    • 扫描顺序:从左到右,从上到下
    • 处理方式
      1. 从第 1 行开始,每 8 个像素为一组(不足 8 个补 0)
      2. 将这 8 个像素转换为 1 个字节(byte)
      3. 处理完第 1 行后,继续处理第 2 行,依此类推
    • 示例(16×16 点阵):
      • 第 1 行:16 个像素 → 2 个字节
      • 第 2 行:16 个像素 → 2 个字节
      • 总共:16 行 × 2 字节 = 32 字节
    • 适用场景:大多数 OLED/LCD 显示屏(如 SSD1306、ST7735)
    • 优点:符合人类阅读习惯,数据处理直观

    ⬇️ 逐列式(Column Scan / Vertical)

    • 扫描顺序:从上到下,从左到右
    • 处理方式
      1. 从第 1 列开始,每 8 个像素为一组(不足 8 个补 0)
      2. 将这 8 个像素转换为 1 个字节
      3. 处理完第 1 列后,继续处理第 2 列,依此类推
    • 示例(16×16 点阵):
      • 第 1 列:16 个像素 → 2 个字节
      • 第 2 列:16 个像素 → 2 个字节
      • 总共:16 列 × 2 字节 = 32 字节
    • 适用场景:某些特殊的 LCD 控制器(如 ILI9341 的部分模式)
    • 优点:适合垂直刷新显示的硬件

    💡 如何选择?

    • 查看您的显示模块数据手册,确认支持的扫描方式
    • 如果不确定,优先尝试「逐行式」,这是最常见的模式
    • 如果显示的文字方向不对(旋转 90°),切换到另一种模式

    🔐 编码方式(Encoding Mode)

    作用:决定像素点亮灭状态对应的二进制值

    ⚫ 阴码(Negative Code)

    • 规则:1 = 点亮(黑色),0 = 熄灭(白色)
    • 逻辑:「有内容」的地方为 1,「空白」的地方为 0
    • 示例:字母 “A” 的顶部像素点亮 → 该位为 1
    • 适用场景:大多数 OLED 显示屏(SSD1306 系列)
    • 特点:符合直觉,「有」= 1,「无」= 0

    ⚪ 阳码(Positive Code)

    • 规则:0 = 点亮(黑色),1 = 熄灭(白色)
    • 逻辑:「有内容」的地方为 0,「空白」的地方为 1
    • 示例:字母 “A” 的顶部像素点亮 → 该位为 0
    • 适用场景:某些 LCD 显示屏、反色显示需求
    • 特点:与阴码相反,相当于对阴码数据取反

    💡 如何选择?

    • 优先尝试「阴码」,这是最常用的模式
    • 如果显示的文字是反色的(黑白颠倒),切换到「阳码」
    • 阴码和阳码可以互相转换:对所有字节执行按位取反(~操作)即可

    🔢 字节顺序(Byte Order)

    作用:决定一个字节内 8 个位的排列顺序

    ⬅️ MSB(Most Significant Bit – 高位在前)

    • 规则:从左到右扫描时,左边的像素对应高位(bit 7),右边的像素对应低位(bit 0)
    • 示例:8 个像素 [1,0,1,1,0,0,1,0] → 二进制 10110010 → 十六进制 0xB2
    • 计算:第 1 个像素 × 2⁷ + 第 2 个像素 × 2⁶ + … + 第 8 个像素 × 2⁰
    • 适用场景:大多数嵌入式系统和显示控制器

    ➡️ LSB(Least Significant Bit – 低位在前)

    • 规则:从左到右扫描时,左边的像素对应低位(bit 0),右边的像素对应高位(bit 7)
    • 示例:8 个像素 [1,0,1,1,0,0,1,0] → 二进制 01001101 → 十六进制 0x4D
    • 计算:第 1 个像素 × 2⁰ + 第 2 个像素 × 2¹ + … + 第 8 个像素 × 2⁷
    • 适用场景:少数特殊的显示控制器

    💡 如何选择?

    • 优先尝试「MSB」,这是最常用的模式
    • 如果显示的文字左右镜像翻转,切换到「LSB」
    • MSB 和 LSB 可以通过位反转算法互相转换

    🖼️ 图片取模详解

    📤 上传步骤

    1. 点击上传区域或拖拽图片到上传框
    2. 支持的格式:PNG、JPG、JPEG、GIF、BMP、WebP
    3. 图片会自动缩放到配置的点阵大小
    4. 建议在上传前将图片调整为合适的尺寸,以获得最佳效果

    🎯 单色取模(Monochrome)

    • 原理:将彩色图片转换为黑白二值图像
    • 处理流程
      1. 计算每个像素的灰度值:Gray = (R + G + B) / 3
      2. 与阈值比较:Gray < 阈值 → 点亮(黑色),Gray ≥ 阈值 → 熄灭(白色)
      3. 按照配置的取模方式生成字节数据
    • 阈值调节
      • 阈值越小(如 64):更多像素被判定为「点亮」,图像更暗
      • 阈值越大(如 192):更少像素被判定为「点亮」,图像更亮
      • 默认值 128:平衡效果,适合大多数图片
    • 适用场景:单色 OLED/LCD 显示屏、图标、Logo
    • 优点:数据量小,处理速度快,兼容性好

    🌈 彩色取模(Color)

    • 原理:保留图片的颜色信息,每个像素用多个字节表示
    • 色彩深度选项
      • 8 位(256 色):每个像素 1 字节,适合低端彩屏
      • 16 位(65536 色):每个像素 2 字节,RGB565 格式,最常用
      • 24 位(真彩色):每个像素 3 字节,RGB888 格式,高质量
    • 数据格式
      • RGB565:R(5位) + G(6位) + B(5位) = 16 位
      • RGB888:R(8位) + G(8位) + B(8位) = 24 位
    • 适用场景:彩色 TFT LCD、IPS 屏幕、需要显示照片的场景
    • 注意:彩色取模数据量较大,16×16 的 16 位彩色需要 512 字节

    ✍️ 手绘取模详解

    作用:通过鼠标或触摸屏直接绘制字符,适合自定义图标、特殊符号、手写字体等场景

    🎨 工具栏功能

    ✏️ 画笔工具(Pen)
    • 功能:在画布上绘制黑色像素点
    • 使用方式
      1. 点击「画笔」按钮选择画笔工具
      2. 在画布上按住鼠标左键并拖动即可绘制
      3. 支持触摸屏操作(手机/平板)
    • 画笔大小调节
      • 范围:1px – 10px
      • 默认值:2px
      • 较大的画笔适合快速填充大面积区域
      • 较小的画笔适合精细绘制细节
    🧹 橡皮擦工具(Eraser)
    • 功能:擦除已绘制的像素点,恢复为白色背景
    • 使用方式
      1. 点击「橡皮擦」按钮选择橡皮擦工具
      2. 在需要擦除的区域按住鼠标左键并拖动
      3. 橡皮擦大小与画笔大小相同,可通过滑块调节
    • 应用场景
      • 修正绘制错误
      • 清理多余像素
      • 创建镂空效果
    ↩️ 撤销功能(Undo)
    • 功能:撤销上一次的绘制操作
    • 使用方式:点击「撤销」按钮,恢复到上一次操作前的状态
    • 历史记录
      • 最多保存 20 步操作历史
      • 每次开始绘制前自动保存当前状态
      • 可以连续多次撤销
    • 注意:清空画布也会计入历史记录,可以撤销清空操作
    🗑️ 清空画布(Clear)
    • 功能:清除画布上的所有内容,恢复为空白状态
    • 使用方式:点击「清空」按钮
    • 效果
      • 所有绘制的像素被清除
      • 画布恢复为纯白色背景
      • 如果开启了网格显示,网格会重新绘制
    • 提示:清空操作可以撤销,不用担心误操作

    📐 画布与网格

    🖼️ 画布尺寸
    • 实际尺寸:由左侧配置的「点阵大小」决定(如 16×16、32×32)
    • 显示尺寸:每个像素放大 20 倍显示,方便精确绘制
    • 示例
      • 16×16 点阵 → 画布显示为 320×320 像素
      • 32×32 点阵 → 画布显示为 640×640 像素
    • 优势:放大显示便于精细控制每个像素的位置
    🔲 网格显示
    • 功能:在画布上显示网格线,辅助对齐和定位
    • 开关方式:点击「网格显示」旁边的开关按钮
    • 网格样式
      • 浅灰色细线(#e0e0e0)
      • 线宽 0.5px,不干扰绘制
      • 每个网格单元对应一个点阵像素
    • 建议
      • 初学者建议开启网格,便于理解点阵结构
      • 熟练后可以关闭网格,获得更清晰的视觉效果

    🎯 绘制技巧

    💡 技巧 1:从简单形状开始
    • 先绘制基本几何形状(圆形、方形、三角形)
    • 熟悉画笔的控制和像素的分布
    • 逐步过渡到复杂图形
    💡 技巧 2:利用对称性
    • 对于对称图形,可以先绘制一半
    • 观察整体效果后再补充另一半
    • 保持图形的平衡和美观
    💡 技巧 3:善用撤销功能
    • 不要害怕犯错,随时可以撤销
    • 大胆尝试不同的绘制方式
    • 通过撤销对比不同效果
    💡 技巧 4:参考现有字库
    • 先用「文本取模」生成标准字符
    • 观察点阵分布规律
    • 在手绘时参考这些规律
    💡 技巧 5:分层绘制
    • 先绘制轮廓框架
    • 再填充内部区域
    • 最后细化边缘和细节

    ⚙️ 生成点阵数据

    • 操作步骤
      1. 完成绘制后,点击「生成点阵数据」按钮
      2. 系统会自动提取画布上的像素信息
      3. 根据配置的取模方式、编码方式、字节顺序生成数据
      4. 结果显示在下方,支持三种格式查看
    • 数据处理流程
      1. 将放大的画布缩小到实际点阵尺寸
      2. 提取每个像素的灰度值
      3. 根据阈值判断点亮/熄灭状态(灰度 < 128 为点亮)
      4. 按照配置的扫描方式转换为字节数据
    • 注意事项
      • 确保绘制的内容清晰可辨
      • 避免过于复杂的细节(点阵分辨率有限)
      • 黑色表示点亮,白色表示熄灭

    📤 导出与使用

    📋 复制数据
    • 操作:点击「复制」按钮
    • 效果:当前选中的格式数据复制到剪贴板
    • 用途:直接粘贴到代码编辑器中使用
    📥 导出 C 文件
    • 操作:点击「导出C文件」按钮
    • 文件名:自动生成,如 hand_drawn_16x16.c
    • 文件内容:// 手绘字符点阵数据 (16×16) const uint8_t hand_drawn_char[] = { 0x00, 0x00, 0x18, 0x3C, … };
    • 用途:直接嵌入嵌入式项目,无需额外处理

    🎨 应用场景

    • 自定义图标
      • 设计独特的 UI 图标
      • 创建品牌 Logo 的点阵版本
      • 制作个性化的状态指示符
    • 特殊符号
      • 数学符号、箭头、标记等
      • 标准字库中不存在的字符
      • 行业专用符号
    • 手写字体
      • 模拟手写效果的个性化字体
      • 书法风格的汉字
      • 艺术字设计
    • 游戏素材
      • 复古游戏的角色 sprite
      • 道具图标、技能图标
      • 地图元素、装饰图案
    • 教学演示
      • 直观展示点阵原理
      • 学生练习字符设计
      • 理解像素与字节的对应关系

    ⚠️ 注意事项

    • 分辨率限制:点阵尺寸较小(通常 8×8 到 32×32),不适合过于复杂的图形
    • 颜色限制:仅支持黑白二值,不支持灰度和彩色
    • 绘制精度:放大绘制可以提高精度,但最终效果受限于点阵分辨率
    • 浏览器兼容:建议使用 Chrome、Edge、Firefox 等现代浏览器
    • 触摸设备:支持手机/平板触摸操作,但精度可能不如鼠标
    • 数据备份:重要的手绘作品请及时导出保存

    💡 最佳实践

    • ✅ 先在纸上草拟设计,明确要绘制的图形
    • ✅ 从小尺寸开始(如 16×16),熟悉后再尝试大尺寸
    • ✅ 定期使用「生成点阵数据」预览效果
    • ✅ 结合「文本取模」生成的标准字符作为参考
    • ✅ 善用撤销功能,大胆尝试不同设计
    • ✅ 完成后导出 C 文件,方便后续使用和修改

    📋 输出格式说明

    🔢 十六进制(Hex)

    • 格式:0x00, 0xFF, 0xAA, 0x55…
    • 特点:紧凑、直观,便于手动检查和调试
    • 用途:直接嵌入 C/C++ 代码数组

    0️⃣1️⃣ 二进制(Binary)

    • 格式:0b00000000, 0b11111111, 0b10101010…
    • 特点:可直接看到每个像素的状态
    • 用途:学习和理解取模原理,教学演示

    💻 C 语言代码

    • 格式:完整的 C 数组定义,包含注释和 Unicode 信息
    • 示例:// 字符: 你 (Unicode: U+4F60) const uint8_t font_4F60[] = { 0x08, 0x30, 0x00, 0x00, 0x08, 0x30, 0x00, 0x00, … };
    • 特点:可直接复制到项目中编译使用
    • 用途:嵌入式项目开发,字库集成

    💾 导出功能

    📋 复制到剪贴板

    • 操作:点击「复制」按钮
    • 效果:当前选中的格式数据会复制到系统剪贴板
    • 提示:复制成功后会显示「✓ 已复制」提示
    • 粘贴:可在任何文本编辑器中按 Ctrl+V 粘贴

    📥 导出 C 文件

    • 操作:点击「导出C文件」按钮
    • 效果:自动生成 .c 文件并下载到本地
    • 文件内容
      • 文件头注释(生成时间、配置参数)
      • 所有字符的完整 C 代码
      • 可直接编译使用的数组定义
    • 文件名:自动生成,如 font_data_20240101_120000.c
    • 用途:批量导出字库,方便项目管理

    💻 嵌入式系统集成指南

    📦 步骤 1:准备字库文件

    1. 在本工具中生成所需字符的点阵数据
    2. 点击「导出C文件」下载 .c 文件
    3. 同时创建对应的 .h 头文件,声明外部数组

    🔧 步骤 2:添加到项目

    1. 将 .c 和 .h 文件复制到您的嵌入式项目目录
    2. 在需要使用字库的源文件中包含头文件:#include "font_data.h"
    3. 确保编译器支持 uint8_t 类型(需包含 <stdint.h>

    📝 步骤 3:编写显示函数

    void display_char(uint16_t x, uint16_t y, const uint8_t *font_data, 
                      uint8_t width, uint8_t height) {
        // 根据您的显示驱动实现
        // 这里以 SSD1306 OLED 为例
        for (uint8_t row = 0; row < height; row++) {
            for (uint8_t col = 0; col < width; col++) {
                uint8_t byte_index = (row * width + col) / 8;
                uint8_t bit_index = (row * width + col) % 8;
                uint8_t pixel = (font_data[byte_index] >> bit_index) & 0x01;
                
                if (pixel) {
                    OLED_DrawPixel(x + col, y + row, WHITE);
                } else {
                    OLED_DrawPixel(x + col, y + row, BLACK);
                }
            }
        }
    }

    🚀 步骤 4:调用显示

    // 显示单个字符
    display_char(10, 10, font_4F60, 16, 16);  // 显示"你"
    
    // 显示字符串
    void display_string(uint16_t x, uint16_t y, const char *str) {
        uint16_t pos_x = x;
        while (*str) {
            // 查找字符对应的字库数据
            const uint8_t *font = find_font_data(*str);
            if (font) {
                display_char(pos_x, y, font, 16, 16);
                pos_x += 16;  // 移动到下一个字符位置
            }
            str++;
        }
    }

    ❓ 常见问题(FAQ)

    Q1: 为什么显示的文字是乱码或方块?

    • 原因:取模方式、编码方式或字节顺序配置不正确
    • 解决
      1. 尝试切换「逐行式」↔「逐列式」
      2. 尝试切换「阴码」↔「阳码」
      3. 尝试切换「MSB」↔「LSB」
      4. 查看显示模块的数据手册,确认正确的配置

    Q2: 为什么文字显示不完整或被裁剪?

    • 原因:字体大小超过点阵高度
    • 解决:减小字体大小,或增大点阵尺寸
    • 建议:字体大小设置为点阵高度的 70%-90%

    Q3: 如何生成完整的 ASCII 字库(0-127)?

    • 方法:使用「批量取模」功能
    • 步骤
      1. 切换到「批量取模」标签
      2. 在文本框中输入所有 ASCII 字符(可使用脚本生成)
      3. 点击「批量生成」
      4. 导出完整的 C 文件

    Q4: 点阵数据太大,如何优化存储空间?

    • 方法 1:减小点阵尺寸(如从 32×32 改为 16×16)
    • 方法 2:只生成实际使用的字符,不要生成完整字库
    • 方法 3:使用压缩算法(如 RLE 行程编码)
    • 方法 4:对于重复字符,只存储一份数据,通过索引引用

    Q5: 如何在 STM32/Arduino 上使用生成的字库?

    • STM32
      1. 将 .c/.h 文件添加到 Keil/IAR/STM32CubeIDE 项目
      2. 在 main.c 中包含头文件
      3. 调用您编写的显示函数
    • Arduino
      1. 将 .c 文件改名为 .cpp(或直接包含 .c 文件)
      2. 在 .ino 文件中包含头文件
      3. 使用 Adafruit_GFX 或其他图形库的 drawBitmap 函数显示

    Q6: 支持哪些编程语言和平台?

    • 支持的语言:C、C++、Python、JavaScript、Java 等
    • 支持的平台
      • 嵌入式:STM32、Arduino、ESP32、51单片机、AVR、PIC
      • 桌面:Windows、Linux、macOS
      • 移动端:Android、iOS
    • 通用性:生成的十六进制数据是通用的,任何平台都可以使用

    🎓 进阶技巧

    💡 技巧 1:预览验证

    • 生成点阵后,仔细观察右侧的点阵预览图
    • 对比原始字符,确认点阵质量
    • 如果效果不佳,调整字体大小或更换字体类型

    💡 技巧 2:批量处理

    • 使用「批量取模」一次性生成多个字符
    • 适合生成常用汉字表、ASCII 全集、数字符号集
    • 导出的 C 文件可直接用于项目,无需逐个复制

    💡 技巧 3:图片预处理

    • 上传前使用图像处理软件(如 Photoshop、GIMP)优化图片
    • 调整为黑白二值,去除噪点和杂边
    • 确保图片比例为正方形,避免变形

    💡 技巧 4:测试验证

    • 先在模拟器或小屏幕上测试字库效果
    • 确认显示正常后再部署到正式项目
    • 保存多套配置,针对不同显示设备优化

    💡 技巧 5:性能优化

    • 将常用字库存储在 Flash 中,节省 RAM
    • 使用 DMA 传输提高显示速度
    • 对于频繁显示的字符,可以缓存到 RAM 中

    💡 技巧 6:手绘设计

    • 利用「手绘取模」功能创建自定义图标和特殊符号
    • 先在纸上草拟设计,再在画布上精确绘制
    • 善用撤销功能和网格辅助,提高绘制效率
    • 结合文本取模生成的标准字符作为参考

    ⚠️ 注意事项

    • 浏览器兼容性:建议使用 Chrome、Edge、Firefox 等现代浏览器
    • 字体依赖:自定义字体需要在系统中已安装,否则会自动回退
    • 图片大小:过大的图片会导致处理缓慢,建议先缩小再上传
    • 内存限制:批量生成大量字符时,注意浏览器内存使用情况
    • 数据备份:重要的字库数据请及时导出保存,避免丢失
    • 硬件差异:不同显示模块可能需要不同的配置,请以实际测试为准

    🎉 总结

    本工具提供了完整的点阵字库生成功能,适用于各种嵌入式显示设备。通过合理配置参数,您可以生成高质量的点阵数据,轻松集成到您的项目中。

    核心要点

    • ✅ 正确配置取模方式、编码方式和字节顺序是关键
    • ✅ 根据实际需求选择合适的点阵尺寸和字体
    • ✅ 善用批量处理和导出功能提高工作效率
    • ✅ 在实际硬件上测试验证,必要时调整参数

    祝您使用愉快!如有问题,欢迎反馈。🚀

  • 更新了读取器内部解析方法-【开源项目1-2025-02-11】

    本次将去年的Markdown读取器项目里的相关显示,解析错误等问题修复了,目前最新项目仓库地址为Github【Markdown


    打开主页显示如图所示


    对于公式的显示更新


    导出HTML的bug修复


    【注意】:本次虽然解决了大多数已知问题,但是还存在部分性能问题,如打开文件时会出现1-2秒的卡顿。

  • 关于重置ESP32系列(清除flash)&重新烧录固件的方法

    下载相关工具

    首先我们在win + r ,并输入cmd,打开终端

    运行下列指令

    pip install esptool

    找出正确的端口

    在开始栏搜索设备管理器

    打开它,在端口里查看,,连接板子的串口号-如此处是(COM5)

    回到终端,清除ESP32的flash

    这里要确保开发板为接收模式

    通常开启方法是:先长按开发板上的BOOT(不要松开),在轻按一次RST,然后松开BOOT

    确认板子进入了接收模式后在终端执行下面的指令(注意填写你自己的端口,我这里是COM5)

    python -m esptool --port COM5 erase-flash

    若如此,则开发板清除成功

    重新烧录固件

    首先下载相关板子的固件(这里以ESP32-S3为例)

    打开此处链接

    找到ESP32-S3-点击进入

    此页面有相关的指令介绍,但是一般来说不太能直接完成相关操作

    向下滑动,找到此处固件下载的位置-此处以v1.23.0 (2024-06-02) .uf2为例

    下载完成后-在该文件位置打开终端

    打开终端后输入下面指令

    python -m esptool --port COM5 --baud 460800 write-flash 0x1000 ESP32_GENERIC_S3-20240602-v1.23.0.uf2

    回车后要是这样说明烧录成功-若报错,则可能是需要你重新进入接收模式

    谢谢你的观看,本次教程到此结束!

  • 将官方固件烧录到ESP32

    将官方固件烧录到ESP32主要分为两个阶段:准备固件文件执行烧录。最常用的方法是使用乐鑫官方提供的 esptool.py 命令行工具,它稳定且支持所有ESP系列芯片

    以下是详细的操作步骤,我将其拆解为三个核心部分。

    第一步:准备工作

    你需要确认两件事:

    1. 获取固件文件:根据你的需求,去乐鑫官网或相关项目(如MicroPython、ESPHome)下载正确的固件(.bin文件)。注意选择与你开发板型号(如ESP32、ESP32-S3、ESP32-C3)匹配的固件。
    2. 安装烧录工具
      • 推荐方法:在电脑上打开命令行(CMD或终端),运行以下命令安装 esptool
      • 备选方法:如果你不想用命令行,也可以下载乐鑫官方的图形化烧录工具——Flash Download Tool(仅支持Windows)
    3. 命令安装 esptool:
    pip install esptool

    第二步:执行烧录(核心步骤)

    烧录前,最好先擦除一下Flash,避免旧数据干扰新固件。然后在命令行中,导航到你存放固件文件的文件夹。

    1. 擦除Flash

    将下面命令中的 <你的串口号> 替换为实际的端口(如 Windows 的 COM3,Linux 的 /dev/ttyUSB0):

    bash

    esptool.py --port <你的串口号> erase_flash

    2. 写入新固件

    擦除成功后,使用以下命令烧录固件。请务必注意 0x10000 这个起始地址,它是ESP32存放应用程序的标准位置,写错会导致无法启动

    bash

    esptool.py --port <你的串口号> --baud 460800 write_flash 0x10000 <你的固件文件名>.bin
    • --baud 460800 是烧录速度,如果失败可以降低到 115200
    • 如果系统自动识别串口失败,可以像擦除命令一样,手动指定 --port 参数。

    3. 手动进入下载模式(如果烧录失败)

    如果命令行一直显示“Connecting…”或失败,你需要手动将ESP32置于下载模式:

    1. 按住开发板上的 BOOT 按钮不放。
    2. 按一下 EN(或RST)按钮后松开。
    3. 再松开 BOOT 按钮。
    4. 此时芯片已进入等待下载状态,可以再次尝试运行烧录命令

    第三步:验证固件是否成功

    烧录完成后,开发板通常会自动复位。你可以用串口工具(如 PuTTYThonny 或 Arduino IDE 的串口监视器)来检查:

    1. 将波特率设置为 115200
    2. 按下开发板的 EN 按钮重启。
    3. 如果看到类似 rst:0x1 (POWERON_RESET) 的系统日志或MicroPython的 >>> 提示符,就说明固件已经成功运行了

    关于ESP-IDF固件的特别说明:如果你烧录的是自己用乐鑫物联网开发框架编译出来的固件,通常需要烧录三个文件:引导加载程序 (bootloader.bin)、分区表 (partition-table.bin) 和应用程序 (<your_app>.bin)。它们的起始地址通常是 0x10000x8000 和 0x10000,具体路径在编译完成后会在终端里显示

  • 使用阿里云百炼的大模型或应用前,请先获取API Key作为鉴权凭证。

    1. 核心前提

    • 账号要求:必须使用主账号或拥有管理员权限的子账号。
    • 操作入口:前往对应地域(北京/新加坡/弗吉尼亚)的“API Key”页面点击创建。(本人默认是北京)

    点击最中间的创建

    2. 创建时的关键选择

    在创建弹窗中,需配置两项核心信息:

    • 归属账号
      • 默认/推荐:选主账号(适合个人或不涉及人员变动的场景)。
      • 团队协作:选特定子账号。若该子账号被移除,Key自动失效,便于权限管理。
    • 归属业务空间
      • 默认:选默认空间(可调用所有标准模型)。
      • 隔离/分账:选子业务空间。用于隔离项目资源、控制模型访问权限或进行成本分账。

    注意:如果是用 Coding Plan,请使用专属 Key (sk-sp-xxxxx),不要用通用的 (sk-xxxxx)。

    3. 如何使用 API Key

    调用模型时通常需要三个信息:

    1. API Key:即刚才创建的凭证。
    2. Base URL(根据地域选择):
      • 北京:https://dashscope.aliyuncs.com/compatible-mode/v1
      • 新加坡:https://dashscope-intl.aliyuncs.com/compatible-mode/v1
      • 美国:https://dashscope-us.aliyuncs.com/compatible-mode/v1
    3. 模型名称:例如 qwen-plus
    • 工具调用:直接填入上述三项到 Chatbox、Dify、Postman 等工具。
    • 代码调用强烈建议将 Key 放入环境变量,严禁硬编码在代码中以防泄露。

    4. 权限与有效期规则

    • 权限范围:Key 的权限完全由业务空间决定。同一空间内的 Key 权限相同,无需为不同模型(文生文、文生图等)分别创建 Key。
      • 默认空间 Key = 调用所有标准模型 + 默认空间应用。
      • 子空间 Key = 仅调用该子空间授权的模型 + 该空间应用。
    • 有效期
      • 永久有效:除非手动删除或关联的 RAM 用户被删除/禁用。
      • 临时 Key:支持生成有效期仅 60秒 的临时 Key,用于高风险或第三方临时访问场景,降低泄露风险。

    5. 常见限制 (FAQ)

    • 数量限制:每个主账号最多 20个 业务空间,每个空间最多 20个 API Key。
    • 人员离职处理:若 RAM 用户(子账号)被删除或禁用,其名下创建的所有 API Key 立即失效

    一句话总结:用主账号去对应地域页面创建 Key,根据团队需求选择归属人和业务空间,拿到 Key、URL 和模型名即可调用,务必注意保管密钥安全。