U heeft zojuist een betaling gedaan aan een restaurant en een kleine rekening of contant geld van een geldautomaat ontvangen en het transactiebewijs ontvangen. Deze bonnen worden afgedrukt met een thermische printer of bonprinter.
Thermische printer is de gemakkelijk verkrijgbare en kosteneffectieve oplossing om kleine rekeningen of bonnetjes af te drukken. Deze eenvoudig te integreren oplossing is overal verkrijgbaar. De printer maakt gebruik van thermochroom papier, een speciale papiersoort die in een zwarte kleur verandert als het aan een bepaalde hoeveelheid warmte wordt blootgesteld. Thermische printer gebruikt een speciaal verwarmingsproces om op dit papier af te drukken. De printkop wordt verwarmd in een speciaal elektrisch apparaat om een bepaalde temperatuur te behouden. Wanneer het thermisch papier door zijn kop gaat, wordt de thermische coating zwart wanneer de kop wordt verwarmd.
In het vorige project hebben we de thermische printer gekoppeld aan PIC Microcontroller. In deze tutorial zullen we een thermische printer verbinden met het Arduino Uno-bord. Dit project zal als volgt werken: -
- De printer wordt verbonden met Arduino Uno.
- Een tactiele schakelaar wordt verbonden met het Arduino-bord om de ' push to print'- optie te bieden wanneer erop wordt gedrukt.
- Onboard Arduino LED geeft de afdrukstatus aan. Het licht alleen op als het afdrukken bezig is.
Printerspecificatie en aansluitingen
We gebruiken CSN A1 thermische printer van Cashino, die gemakkelijk verkrijgbaar is en de prijs niet te hoog is.
Als we de specificatie op de officiële website zien, zullen we een tabel zien met de gedetailleerde specificaties-
Aan de achterkant van de printer zien we de volgende verbinding:
De TTL-connector biedt de Rx Tx-verbinding om te communiceren met de microcontrollereenheid. We kunnen ook het RS232-protocol gebruiken om met de printer te communiceren. De stroomconnector is bedoeld om de printer van stroom te voorzien en de knop wordt gebruikt om de printer te testen. Wanneer de printer van stroom wordt voorzien, zal de printer, als we op de zelftestknop drukken, een blad afdrukken waarop specificaties en voorbeeldregels worden afgedrukt. Hier is het zelftestblad-
Zoals we kunnen zien, gebruikt de printer een baudrate van 9600 om te communiceren met de microcontroller. De printer kan ASCII-tekens afdrukken. De communicatie is heel eenvoudig, we kunnen alles afdrukken door simpelweg UART te gebruiken, een tekenreeks of teken te verzenden.
De printer werkt van 5-9V, we gebruiken een 9V 2A-voeding die zowel de printer als de Arduino Uno van stroom kan voorzien. De printer heeft meer dan 1,5 A stroom nodig om de printerkop te verwarmen. Dit is het nadeel van de thermische printer, omdat deze tijdens het afdrukproces een enorme belastingstroom nodig heeft.
Vereisten
Om het volgende project te maken, hebben we de volgende dingen nodig: -
- Breadboard
- Sluit de draden aan
- Arduino UNO-bord met USB-kabel.
- Een computer met Arduino-interface klaar voor gebruik met de Arduino IDE.
- 10k weerstand
- Tactiele schakelaar
- Thermische printer CSN A1 met papierrol
- 9V 2A nominale voedingseenheid.
Schakelschema en uitleg
Schema voor het besturen van de printer met Arduino Uno wordt hieronder gegeven:
Het circuit is eenvoudig. We gebruiken een weerstand om de standaardstatus te bieden over de schakelaaringangspen D2. Wanneer de knop wordt ingedrukt, wordt D2 HOOG en wordt deze voorwaarde gebruikt om het afdrukken te activeren. Een enkele voeding van 9V 2A-voeding wordt gebruikt om de thermische printer en het Arduino-bord van stroom te voorzien. Het is belangrijk om de polariteit van de voeding te controleren voordat u deze op het Arduino UNO-bord aansluit. Het heeft een barrel-jack-ingang met positieve middenpolariteit.
We hebben het circuit in een breadboard gebouwd en getest.
Arduino-programma
Volledige Arduino-code met een demovideo is aan het einde van het project. Hier leggen we enkele belangrijke onderdelen van de code uit.
In eerste instantie hebben we de pinnen voor drukknop (pin 2) en aan boord LED (pin13) aangegeven
int led = 13; int SW = 2;
Vervolgens worden er enkele variabelen geconfigureerd voor de vertraging van het debounce en de status van de schakelaarpers
int is_switch_press = 0; // Voor het detecteren van de schakelaar drukt u op status int debounce_delay = 300; // Debounce vertraging
In de setup- functie hebben we de LED-pin geconfigureerd als uitgang en schakelaar als ingang. We hebben ook de UART geconfigureerd met een baudrate van 9600.
void setup () { / * * Deze functie wordt gebruikt om de pinconfiguratie * / pinMode (led, OUTPUT) in te stellen; pinMode (SW, INPUT); Serial.begin (9600); }
In de belangrijkste lus, moeten we eerst controleren of de schakelaar niet wordt ingedrukt of, dan weer wachten we voor eens en opnieuw controleren om vast te stellen dat de schakelaar echt of is ingedrukt niet, als de schakelaar nog steeds, zelfs na de vertraging wordt gedrukt, drukken wij op maat lijnen in de UART, dus in de thermische printer.
Bij het begin van het printen zetten we de ingebouwde LED hoog en na het printen zetten we hem uit door hem laag te maken.
void loop () { is_switch_press = digitalRead (SW); // Lezen van de Switch press status if (is_switch_press == HIGH) { delay (debounce_delay); // demping vertraging voor het indrukken van een knop if (is_switch_press == HIGH) { digitalWrite (led, HIGH); Serial.println ("Hallo"); vertraging (100); Serial.println ("Dit is een thermische printerinterface"); Serial.println ("met Arduino UNO."); vertraging (100); Serial.println ("Circuitdigest.com"); Serial.println ("\ n \ r"); Serial.println ("\ n \ r"); Serial.println ("\ n \ r"); Serial.println ("---------------------------- \ n \ r"); Serial.println ("Bedankt."); Serial.println ("\ n \ r"); Serial.println ("\ n \ r"); Serial.println ("\ n \ r"); digitalWrite (led, LOW); } } else { digitalWrite (led, LOW); } }
Bekijk de volledige Arduino-code en demonstratievideo hieronder.