Não seria ótimo se você pudesse imprimir à partir do Arduino ? Não, não estou falando de impressora 3D com Arduino, que futuramente vamos abordar aqui, mas sim de uma impressora que possa imprimir letras, números, códigos de barra e imagens, entre outras coisas. Isso tudo pode ser feito com uma impressora térmica embarcada como essa:
A impressora funciona por impressão térmica direta, ou seja, não precisa de tinta para funcionar. O rolo de papel é facilmente encontrado em papelarias e possui largura de 57mm. É o mesmo papel utilizado em máquinas de cartão de crédito/débito.
A impressora tem um tamanho compacto, sendo ideal para utilização em projetos embarcados, e vem com cabos de dados (comunicação serial) e energia, e vamos mostrar como a ligação dessa impressora no Arduino é bem simples.
A impressora tem um tamanho compacto, sendo ideal para utilização em projetos embarcados, e vem com cabos de dados (comunicação serial) e energia, e vamos mostrar como a ligação dessa impressora no Arduino é bem simples.
Conexões da impressora térmica embarcada
Essa impressora funciona com tensões entre 5 e 9 volts, mas você não deve tentar ligá-la nos 5V da USB, por exemplo, pois ela exige uma fonte de alimentação de pelo menos 1,5A.
Na parte de baixo da impressora, temos os conectores DC (energia) e TTL (comunicação). No conector DC, vamos conectar o cabo de alimentação que vem junto com a impressora (vermelho e preto):
O cabo de comunicação (Serial/TTL) possui 3 fios nas cores preta (GND), amarelo (Data Out ou TX) e verde (Data In ou RX) e deve ser conectado conforme a imagem acima.
Para testar as funções básicas da impressora, abra a tampa superior e coloque uma bobina de papel com a parte sensível à temperatura virada para a frente.
O botão na parte de cima da impressora, que serve para ejetar papel, serve também para realizar um processo de "auto teste". Para isso, ligue a fonte de alimentação da impressora ao mesmo tempo que mantém esse botão pressionado. Serão impressas várias informações referentes á configuração, como lista de caracteres, versão de firmware, baud rate, etc.
Na parte final da impressão, verifique o "baud rate" com o qual a impressora vêm configurada. Isso é importante para o processo de impressão que faremos adiante, utilizando o Arduino.
Note que enquanto a impressora estiver conectada na fonte de alimentação, o led verde na parte superior pisca em intervalos de 1 segundo.
Conexão da impressora no Arduino
Como mencionamos anteriormente, a impressora se comunica com o Arduino utilizando interface serial/TTL, e vamos utilizar os pinos digitais 5 e 6 para fazer essa comunicação.
Isso é possível pois vamos utilizar no programa a biblioteca SoftwareSerial, que permite criar uma nova porta serial no Arduino utilizando os pinos digitais.
A conexão então fica assim: o fio GND ligado à uma das portas GND do Arduino, o fio verde ligado à porta 5, e o fio amarelo ligado à porta 6:
Isso é possível pois vamos utilizar no programa a biblioteca SoftwareSerial, que permite criar uma nova porta serial no Arduino utilizando os pinos digitais.
A conexão então fica assim: o fio GND ligado à uma das portas GND do Arduino, o fio verde ligado à porta 5, e o fio amarelo ligado à porta 6:
Vamos agora testar a impressão pelo Arduino.
Imprimindo à partir do Arduino
Para imprimir, vamos usar a biblioteca Adafruit Thermal Printer, que você encontra neste link.
Faça o download da biblioteca, descompacte e renomeie a pasta para algo como Adafruit_Thermal_Printer e coloque-a dentro da pasta LIBRARIES da IDE do Arduino.
O jeito mais simples de testar essa impressora é usando o exemplo A_Printertest da própria biblioteca. Esse exemplo você encontra no menu Arquivo => Exemplos => Adafruit Thermal Printer Library:
Carregue esse exemplo e transfira para o Arduino. Em pouco segundos a impressora começa a imprimir uma série de informações sobre fontes, código de barras e outras coisas que você pode fazer com esta biblioteca:
Criamos um programa de exemplo para mostrar como você pode imprimir uma informação de acordo com o estado de uma porta.
Nesse exemplo, vamos utilizar um potenciômetro ligado à porta analógica A0, e um botão tipo push-button ligado à porta analógica A1. O esquema de ligação desses componentes adicionados ao circuito anterior fica assim:
Nesse exemplo, vamos utilizar um potenciômetro ligado à porta analógica A0, e um botão tipo push-button ligado à porta analógica A1. O esquema de ligação desses componentes adicionados ao circuito anterior fica assim:
Carregue agora o programa abaixo no Arduino. O programa utiliza as funções do programa A_Printer_Test citado anteriormente, e monitora o estado das portas analógicas A0 e A1.
Na linha 19 do programa temos a definição da taxa de transmissão serial, o baudrate, que deve estar de acordo com o valor que foi impresso no autoteste da impressora. No caso, a taxa é de 19200:
Na linha 19 do programa temos a definição da taxa de transmissão serial, o baudrate, que deve estar de acordo com o valor que foi impresso no autoteste da impressora. No caso, a taxa é de 19200:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | //Programa: Mini Impressora termica com Arduino //Autor: Arduino e Cia #include "Adafruit_Thermal.h" #include "SoftwareSerial.h" //Ligacao no RX (fio amarelo) da impressora #define TX_PIN 6 //Ligacao no TX (fio verde) da impressora #define RX_PIN 5 SoftwareSerial mySerial(RX_PIN, TX_PIN); Adafruit_Thermal printer(&mySerial); void setup() { Serial.begin(9600); //Inicializa SoftwareSerial mySerial.begin(19200); //Inicializa impressora printer.begin(); pinMode(A0, INPUT); pinMode(A1, INPUT); //Imprime informacoes iniciais //Texto centralizado printer.justify('C'); //Negrito printer.inverseOn(); printer.println(F(" www.arduinoecia.com.br ")); printer.inverseOff(); //Avanca uma linha printer.feed(1); //Altura dupla printer.doubleHeightOn(); //Negrito printer.boldOn(); printer.println(F("Ajuste o potenciometro")); printer.println(F("e pressione o botao!")); printer.boldOff(); printer.doubleHeightOff(); printer.justify('L'); printer.feed(2); } void loop() { //Le os valores do potenciometro e do botao int valor_pot = analogRead(A0); int valor_botao = digitalRead(A1); if (valor_botao == 1) { //Caso botao seja pressionado, envia para a impressora //as informacoes e o valor do potenciometro printer.print(F("Botao Pressionado! Valor: ")); printer.println(valor_pot); printer.feed(1); //Coloca a impressora em modo sleep printer.sleep(); delay(300L); //Executar antes de imprimir novamente printer.wake(); printer.setDefault(); } while (digitalRead(A1) == 1) { delay(10); } delay(10); } |
Gire o potenciômetro e pressione o botão para que o valor da porta analógica A0 seja enviado para a impressora:
Interessante, não ? Explore as demais funções da biblioteca e veja como imprimir caracteres com fundo invertido, gráficos, imagens, código de barras, qrcode e muito mais!
Bom dia, como não tenho conhecimento nesta placa, posso imprimir usando essa placa com cabo de impressora no note ou pc? Obrigado.
ResponderExcluirOi Myro,
ExcluirCom um cabo de impressora comum não. A tensão da serial dessa impressora é de 5V, ideal para ligar em placas como o Arduino. A serial do seu PC trabalha com tensão de 12V, se não me engano. Ligando diretamente, iria queimar a sua impressora.
Nesse caso, o que você pode fazer é usar um cabo conversor serial/ttl e conectar na impressora.
Abraço!
Legal....
ResponderExcluirCom este código consegui funcional a impressora DP-Q802P, parabéns!!!
Só não consegui localizar no manual e nem na biblioteca.
Alguém saberia me informar?
Quero imprimir os dados de um cartão SD. Uma lista, porém, um a um por click. Há como
ResponderExcluirSeria possivel imprimir através do celular ????
ResponderExcluirOi Benedito,
ExcluirDiretamente eu creio que não, mas você pode, por exemplo, enviar as informações via Bluetooth, receber no Arduino e mandar imprimir pela serial.
Abraço!
Olá amigos, alguem sabe que linguagem essa impressora fala? Se é epl?
ResponderExcluirComo faço para ligar um sensor de gas junto e imprimir o que ele medir?
ResponderExcluirBom dia,
ExcluirVocê pode usar o exemplo do botão para conectar o sensor de gás no circuito e imprimir o valor do sensor de tempos em tempos.
Abraço!
Saberia informar se consigo rodar essa impressora no raspbarry pi?
ResponderExcluirTeria algum exemplo?
Agradeço desde já.
Boa noite,
ExcluirPor favor dê uma olhada nesse link, tem um tutorial sobre como usar essa impressora com Raspberry Pi: http://blog.filipeflop.com/embarcados/camera-instantanea-com-raspberry-pi.html
Abraço!
Adilson
Boa tarde....
ResponderExcluireu tenho pic18f e uso o mikroC esta impresso funciona???
miltolima@hotmail.com
Olá amigo! você poderia postar como conectar um receptor bluetooth para imprimir através do celular.
ResponderExcluirBoa noite,
ExcluirInteressante a sua ideia. O que pensa em imprimir?
Abraço!
Adilson
Seria possível criar um receptor bluetooth para imprimir em uma HP, por exemplo, para imprimir em folhas A4? Poderia abordar o assunto? Desde já agradeço!
ExcluirComo é uma mine impressora pra teste, poderia ser usada para imprimir pequenos lembretes, seria legal.
ResponderExcluirBacana.. vou pensar em algo... ;)
ExcluirAbraço e obrigado!
Adilson
Dá para adaptar para imprimir numa multifuncional HP J4660?
ResponderExcluirOla Amigo obrigado pelo artigo. É possível eu mandar a impressão de dados do arduino diretamente pela porta USB de qualquer impressora térmica ?
ResponderExcluiré possivel imprimir etiqueta com o código QR ?
ResponderExcluirOi Gersio,
ExcluirSe for uma etiqueta com papel termico, não vejo problemas (não sei se isso existe). :)
Abraço!
Adilson
é possivel atravez do arduino enviar comandos para uma impressora
ResponderExcluirZebra ?
Ola, vc pode ajudar em um projeto como gerar no programa o seguinte:
ResponderExcluirToda vez que se apertar o botão de impressão ele gera uma impressão (Qrcode) com os seguintes dados um numero XXX, data dia/mes/ano, hora xx:xx.
Consigo imprimir etiquetas ?
ResponderExcluirBom dia,
ExcluirNão tentei, mas se a etiqueta for própria para impressora térmica, não vejo problemas.
Abraço!
Adilson
ola tem como buscar os dados com o arduino no mysql, tipo teclado display e impressora conectado no arduino, e efetuar um registro no arduino e ele ir buscar os dados no mysql e imprimir?
ResponderExcluirBoa noite,
ExcluirTranquilamente. :)
Abraço!
Adilson
tem como me passar um programa para impressora a tinta? ou este mesmo pode ser utilizado?
ResponderExcluirOi Lucas,
ExcluirNesse caso seria um esquema totalmente diferente, nem sei se seria possível em um Arduino Uno, por causa da quantidade de memória disponível.
Abraço!
Adilson
Quero imprimir os dados de um cartão SD. Uma lista, porém, um a um por click. Há como ???
ResponderExcluirEstou fazendo projeto para medir peso, altura, batimentos cardíacos e pressão arterial do paciente, posso imprimir os valores lidos pelos sensores ?
ResponderExcluirBoa tarde,
ExcluirPode sim. Perfeitamente. :)
Abraço!
Adilson
Parabéns pelo Artigo, cara como faço para conectar uma Impressora térmica usb?
ResponderExcluirBoa tarde,
ExcluirDepende da impressora, mas você teria que desenvolver toda a parte de drivers e softwares para realizar essa comunicação.
Abraço e obrigado!
Adilson