来源:DF创客社区
发布时间:2025-08-28
阅读量:0
当你的项目需要一个“实体”输出来展示数据时,你会想到什么?是屏幕,是蜂鸣器,还是LED灯?今天我们来介绍一个更有趣的——热敏打印机。
它无需墨水、无需碳带,只要有电和配套的热敏纸,就能安静、快速地将你的创意打印成实体小票。无论是实时打印传感器数据、待办事项清单,还是生成一个专属的二维码,将它与ESP32结合,都能迸发出无限的可能。
准备工作:
在开始之前,请准备好以下硬件:
热敏打印机通常使用串口(Serial)进行通信,所以接线非常简单。请按照下面的方式连接:
(接线示意图,请务必注意电源部分)
这段代码非常简洁,它初始化了ESP32的第二个串口(Serial2),并设置了通信引脚和波特率,然后发送了几行测试文字。
#include "Arduino.h"
#include "HardwareSerial.h"
// 使用ESP32的第二个硬件串口 (UART2)
// TX引脚为GPIO17, RX引脚为GPIO16
HardwareSerial mySerial(2);
void setup() {
// 启动USB串口,用于在电脑上查看调试信息
Serial.begin(115200);
// 启动与打印机通信的串口,波特率通常为19200
mySerial.begin(19200, SERIAL_8N1, 16, 17); // RX, TX
delay(2000); // 等待打印机准备就绪
// 打印测试信息
mySerial.println("=== Thermal Printer Test ===");
mySerial.println("Hello from the ESP32!");
mySerial.println("This is a thermal printer demo.");
mySerial.println(" "); // 打印一个空行
mySerial.println(" ");
}
void loop() {
// 主循环里暂时不需要做任何事
}
一切就绪!现在,请按以下步骤操作:
如果一切顺利,打印机会立刻“吐”出一张小票,上面打印着:
=== Thermal Printer Test ===
Hello from the ESP32!
This is a thermal printer demo.
只打印文字怎么够?我们还可以让它打印简单的黑白图片。
最简单的方法是使用一个在线工具 image2cpp
。
javi.github.io/image2cpp
。
将这个数组复制到你的Arduino代码中,然后使用 mySerial.write()
函数将数组内容逐字节发送给打印机,
代码类似:
for (int i = 0; i < sizeof(imageData); i++) {
mySerial.write(imageData[i]);
}
(注意:这边你可能需要将电源提高到 6-9V,以避免图像模糊)
你的专属Logo或表情包就打印出来啦!
这个项目展示了如何将一个常见的外部设备与ESP32结合,创造出实用又有趣的应用。接线的关键在于独立供电和共地,而软件的核心则是利用ESP32强大的硬件串口功能。
你可以基于此进行扩展,比如: