|
您刚刚向餐馆付款并收到一张小账单,或者从ATM机取出现金时收到交易收据。这些收据都是使用热敏打印机打印的。
热敏打印机是打印小票据或收据的现成且经济有效的解决方案。这种易于集成的解决方案随处可用。打印机使用热变色纸,这是一种特殊类型的纸张,当它暴露在一定的热量时会变成黑色。热敏打印机使用特殊的加热过程在本文上打印。打印头在特殊电气中加热,以保持一定的温度。当热敏纸通过其头部时,其热涂层变成黑色,头部被加热。
在本篇文章中,我们将热敏打印机与Arduino Uno开发板板连接。工作过程如下: - 1. 将打印机与Arduino Uno连接。 2. 将一个轻触开关与Arduino开发板连接,按下时提供“按下打印”选项。 3. Arduino板载LED将指示打印状态。只有在打印活动进行时它才会发光。
打印机规格和连接方式 我们使用的是Cashino的CSN A1热敏打印机,它很容易买到而且价格也不算太高。
如果我们在其官方网站上看到手册,我们将看到一张表格,其中提供了详细的规格 -
在打印机的背面,我们将看到以下连接 -
TTL连接器提供Rx/Tx连接以与微控制器单元通信。我们还可以使用RS232协议与打印机通信。电源连接器用于为打印机供电,该按钮用于打印机测试。当打印机通电时,如果我们按下打印机的自检按钮,将打印一张表格,其中将打印规格和样品线。以下是自测表 -
我们可以看到打印机使用9600波特率与微控制器单元通信。打印机可以打印ASCII字符。通讯非常简单,只需使用UART,发送字符串或字符即可打印任何内容。
打印机工作在5-9V,我们将使用9V/2A电源,可以为打印机和Arduino Uno供电。打印机需要超过1.5A的电流来加热打印头。这是热敏打印机的缺点,因为它在打印过程中需要很大的负载电流。
所需组件 本篇文章所需的组件如下所示: ● 面包板 ● 连接导线 ● 带USB线的Arduino UNO开发板。 ● 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; // For detecting the switch press status
- int debounce_delay = 300; //Debounce delay
复制代码
在setup()函数中,我们将LED引脚配置为输出,开关配置为输入。我们还为UART配置了9600波特率。 - void setup() {
- /*
- * This function is used to set the pin configuration
- */
- pinMode(led, OUTPUT);
- pinMode(SW, INPUT);
- Serial.begin(9600);
- }
复制代码
在loop()函数中,我们首先检查开关是否被按下,然后我们等待一会,然后再次检查以确定开关是否真正按下,如果经过延时,开关仍然按下,我们打印自定义的代码行到UART中,这样就输出到热敏打印机中。 在打印开始时,我们将板载LED设置为高电平,打印完成后,我们将其设置为低电平。 - void loop() {
- is_switch_press = digitalRead(SW); // Reading the Switch press status
- if (is_switch_press == HIGH){
- delay(debounce_delay); // debounce delay for button press
- if(is_switch_press == HIGH){
- digitalWrite(led, HIGH);
- Serial.println("Hello");
- delay(100);
- Serial.println("This is a Thermal printer interface");
- Serial.println("with Arduino UNO.");
- delay(100);
- Serial.println("Circuitdigest.com");
- Serial.println ("\n\r");
- Serial.println ("\n\r");
- Serial.println ("\n\r");
- Serial.println ("---------------------------- \n \r");
- Serial.println ("Thank You.");
- Serial.println ("\n\r");
- Serial.println ("\n\r");
- Serial.println ("\n\r");
- digitalWrite(led, LOW);
- }
- }
- else{
- digitalWrite(led, LOW);
- }
- }
复制代码本篇文章使用的完整代码如下所示:
main.rar
(628 Bytes, 下载次数: 94)
|