您刚到一家餐厅付款,并从自动柜员机上收到了小额账单或现金,并收到了交易收据。这些收据是使用热敏打印机或收据打印机打印的。
热敏打印机是一种现成的,具有成本效益的解决方案,可以打印小票或收据。这种易于集成的解决方案随处可见。打印机使用热变色纸,这是一种特殊类型的纸,当暴露于一定量的热量时会变成黑色。热敏打印机使用特殊的加热过程在此纸上进行打印。打印头通过特殊的电加热以保持一定的温度。当热敏纸通过其头部时,其热涂层在加热头部的地方变成黑色。
在上一个项目中,我们已将热敏打印机与PIC单片机连接。在本教程中,我们将使热敏打印机与Arduino Uno开发板连接。该项目将像这样工作:
- 打印机将与Arduino Uno连接。
- 一个触觉开关正在与Arduino板连接, 以 在按下时提供“即 按即印” 选项。
- 板载Arduino LED将通知打印状态。仅在进行打印活动时,它才会发光。
打印机规格和连接
我们正在使用Cashino的CSN A1热敏打印机,该打印机容易获得,价格也不算太高。
如果我们在其官方网站上看到该规格,就会看到一个表格,其中提供了详细的规格-
在打印机的背面,我们将看到以下连接-
TTL连接器提供Rx Tx连接以与微控制器单元通信。我们还可以使用RS232协议与打印机进行通信。电源连接器用于为打印机供电,按钮用于打印机测试。在为打印机供电时,如果我们按自检按钮,则打印机将打印一张纸,并在其中打印规格和样品线。这是自测纸-
如我们所见,打印机使用9600波特率与微控制器单元通信。打印机可以打印ASCII字符。通讯非常容易,我们只需使用UART即可传输任何字符串或字符,从而可以打印任何内容。
打印机的工作电压为5-9V,我们将使用9V 2A电源,可以为打印机和Arduino Uno供电。打印机需要超过1.5A的电流来加热打印头。这是热敏打印机的缺点,因为它在打印过程中会承受巨大的负载电流。
先决条件
要进行以下项目,我们需要做以下事情:
- 面包板
- 连接电线
- 带有USB电缆的Arduino UNO板。
- 带有Arduino IDE的Arduino接口设置的计算机。
- 10k电阻
- 触觉开关
- 带纸卷的热敏打印机CSN A1
- 9V 2A额定电源设备。
电路图和说明
下面给出了使用Arduino Uno控制打印机的示意图 :
电路很简单。我们使用电阻器在开关输入引脚D2上提供默认状态。按下按钮后,D2将变为高电平,并且此条件用于触发打印。9V 2A电源的单电源用于为热敏打印机和Arduino板供电。将电源连接到Arduino UNO板之前,请务必检查电源极性。它具有中心正极性的桶形插孔输入。
我们在面包板上搭建 电路并进行了测试。
Arduino程序
该项目的结尾是带有演示视频的完整Arduino代码。在这里,我们解释了代码的几个重要部分。
首先,我们声明了按钮(引脚2)和板载LED(引脚13)的引脚
int led = 13; int SW = 2;
然后为反跳延迟和切换印刷机状态配置了几个变量
int is_switch_press = 0; //用于检测开关按下状态 int debounce_delay = 300; //去抖延迟
在 设置 功能中,我们将LED引脚配置为输出,将开关配置为输入。我们还将UART配置为9600波特率。
void setup(){ / * *此函数用于设置引脚配置 * / pinMode(led,OUTPUT); pinMode(SW,INPUT); Serial.begin(9600); }
在主循环中,我们首先检查是否按下了该开关,然后再次等待一段时间,然后再次检查以确定该开关是否真正按下了,如果即使在延迟后仍然按下该开关,我们也会打印自定义UART中的线路,热敏打印机中的线路。
在打印开始时,我们将板载LED设置为高电平,在打印后,通过将其设置为低电平将其关闭。
void loop(){ is_switch_press = digitalRead(SW); // 如果(is_switch_press == HIGH){ delay( debounce_delay ); //按钮按下的反跳延迟if(is_switch_press == HIGH){ digitalWrite(led,HIGH); Serial.println(“ Hello”); 延迟(100); Serial.println(“这是热敏打印机接口”); Serial.println(“ with Arduino UNO。”); 延迟(100); Serial.println(“ Circuitdigest.com”); Serial.println(“ \ n \ r”); Serial.println(“ \ n \ r”); Serial.println(“ \ n \ r”); Serial.println(“ ---------------------------- \ n \ r”); Serial.println(“谢谢”。); Serial.println(“ \ n \ r”); Serial.println(“ \ n \ r”); Serial.println(“ \ n \ r”); digitalWrite(led,LOW); } } else { digitalWrite(led,LOW); } }
在下面查看完整的Arduino代码和演示视频。