پروژه راه اندازی پرینتر حرارتی CSN-A2 با آردوینو

بازگشت به آموزشگاه

مقدمه

پرینتر های حرارتی، نوعی از پرینتر ها هستند که در انواع وسایل الکترونیکی نظایر دستگاههای پوز (POS)، کارتخوان ها و خودپردازها (ATM)  استفاده می شوند. این پرینتر های زیبا را می توانید به پروژه های میکروکنترلری خود اضافه کنید و بدین وسیله قابلیت چاپ را نیز در کنار پروژه خود فراهم نمایید. در این پروژه ما نحوه راه اندازی و کار با پرینتر حرارتی مدل CSN-A2 را با آردوینو به شما آموزش می دهیم.


پرینتر حرارتی چیست ؟

مکانیزم جدید چاپ تحت عنوان چاپ با حرارت یا چاپگرهای حرارتی معرفی شده‌اند. در این نوع چاپ نیاز به جوهر نیست در واقع هد دستگاه توسط ایجاد حرارت بر روی کاغذ می‌نویسد. البته باید توجه داشت که کاغذ از نوع خاص ( حساس به حرارت ) می باشد و در مقابل حرارت تغییر رنگ می دهد. در شکل زیر نوع رومیزی این پرینتر ها را مشاهده می کنید.

پرینتر حرارتی چگونه کار می‌کند ؟

یک پرینتر حرارتی شامل اجزای اصلی زیر است :

  1. کاغذ حساس به حرارت : نوع خاصی از کاغذ می باشد که با حرارت تغییر رنگ می دهد.
  2. هد حرارتی : با ایجاد حرارت ، باعث تغییر رنگ کاغذ و در نتیجه چاپ می شود.
  3. پلاتن : یک رول کشنده که کاغذ را به داخل می کشد.
  4. فنر : فشار کافی را برای برقرای تماس بین هد حرارتی و کاغذ تامین می کند.
  5. بردهای کنترل کننده: که برای کنترل عملکرد پرینتر می باشد.

اصلی­ ترین بخش پرینتر حرارتی، هد آن است که از سوزن­ های ریز حرارتی ساخته‌ شده است که هرکدام بیانگر یک پیکسل ( Pixel ) است. تراکم آن‌ها در پرینترهای مختلف متفاوت است ( بین ۲۰۳ تا ۳۰۰ نقطه در هر اینچ ). پرینتر توسط ریزپردازنده ( میکروکنترلر ) کنترل می‌شوند که تعیین می‌کنند برای یک تصویر خاص کدامیک از سوزن‌ها باید فعال شوند. سپس به سوزن‌ها فرمان ارسال می‌کند تا با سرعت ، سرد و گرم شوند و بدین ترتیب روی کاغذ چاپ می کند.

مزایای پرینتر های حرارتی

  1. عمر طولانی و عدم نیاز به سرویس مداوم و شارژ: این پرینتر ها نیازی به شارژ ندارند و سال ها بدون نیاز به هیچ گونه سرویسی کار می کنند.
  2. سرعت بالا در چاپ : سرعت صدور فیش یکی از عوامل مهم در جلب رضایت مشتری و بالا بردن راندمان کاری میباشد که این پرینترها با سرعت بسیار بالای خود به شما در رسیدن به این مهم کمک می کنند.
  3. هزینه پایین چاپ : پرینترهای فیش زن حرارتی نیاز به جوهر ندارند و در ضمن کاغذ مصرفی این پرینترها (رول حرارتی) بسیار ارزان می باشد.
  4. کار در سکوت : هنگام کار چاپگر حرارتی صداهای ایجاد شده توسط چاپگرهای سوزنی و لیزری را نمی شنویم و از این حیث با آرامش محیط کار مواجه شویم.
  5. بر طرف نمودن مشکل کمبود فضا : این پرینتر نسبت به انواع لیزری و سوزنی بسیار حجم کمتری از فضا را اشغال کرده ، لذا مشکل اشغال فضای میز کار را تا حدودی مرتفع می نماید.
  6. کاهش هزینه های جانبی : شاید برای خرید این پرینتر ها مبلغی بیش از پرینتر های دیگر هزینه کنید، ولی با توجه به کاهش هزینه های جانبی (کاغذ ارزان، عدم نیاز به شارژ جوهر و عدم نیاز به سرویس) بعد از چند ماه با توجه به صرفه جویی انجام شده هزینه خرید پرینتر به شما باز می گردد. تنها هزینه ای که هنگام استفاده از این نوع پرینتر ها باید در نظر گرفت، هزینه رول کاغذ مخصوص مربوط می باشد که آن هم با صرف هزینه ای نسبتا مناسب امکان پذیر است.

انواع پرینترهای حرارتی

پرینترهای حرارتی صدور فیش در دو نوع تک رنگ(سیاه و سفید) و دو رنگ در بازار موجود است که کارایی نوع دو رنگ آن به علت عدم وجود کاغذ دو رنگ در بازار ایران مانند پرینتر های تک رنگ است.

همچنین پرینترهای حرارتی از نظر پورت های اتصال به 4 دسته زیر تقسیم بندی می شوند:

۱- پورت موازي (Parallel) : این پورت یک پورت استاندارد جهت اتصال پرینتر میباشد و از مزایای آن عدم نیاز به نصب درایور و سرعت بالای آن می باشد.
۲- پورت سریال (COM) : از این پورت معمولا برای مسافت های بیشتر از ۱۵ متر استفاده میشود. سرعت این پورت هنگام پرینت نسبت به پورت های دیگر پایین تر است.
۳- پورت USB : مزیت این پورت وجود آن بر روی تمامی لپ تاپ ها می باشد. از این پورت معمولا در صورت عدم وجود پورت پارارل استفاده می شود. اشکال این پورت نیاز به نصب مجدد درایور پرینتر در صورت قطع و وصل کردن سیم و همچنین برد کم آن می باشد.
۴- پورت شبکه (Ethernet) : از این پورت معمولا در محل هایی که تعداد کامپیوترها یا پرینترها زیاد است و یا فاصله پرینتر تا کامپیوتر بیشتر از ۴۰ متر است استفاده میشود. قیمت این پورت از سایر پورت ها بالاتر میباشد.


مشخصات پرینتر حرارتی مدل CSN-A2

  • ولتاژ:  5 تا 9 ولت
  • حداکثر جریان: 1.5 آمپر
  • عرض کاغذ: 58mm
  • عرض قابل پرینت: 48mm
  • رزولوشن: 8dots/mm(384dots/line)
  • سرعت پرینت: (60mm/sec.; Max.:80MM/sec.(voltage 8.5V
  • ابعاد دستگاه: 111x65x57
  • نحوه ارتباط: RS232C/TTL/parallel/USB

قابلیت های این پرینتر :

  • چاپ متون کوچک ، متوسط و بزرگ
  • چاپ متون برجسته ( پر رنگ ) و معکوس
  • قابلیت تغییر فاصله بین خطوط
  • قابلیت تغییر چیدمان خطوط ( چپ چین ، راست چین و وسط چین )
  • قابلیت چاپ انواع بارکدها با قالب های استاندارد UPC A, UPC E, EAN13, EAN8, CODE39, I25, CODEBAR, CODE93, CODE128, CODE11 and MS و نیز تعیین ارتفاع بارکد
  • قابلیت گذاشتن عکس دلخواه سیاه و سفید با فرمت BitMap Monochrome
  • قابلیت گذاشتن بارکدهای دو بعدی ( QR Code )

لینک دانلود های مورد نیاز :

لینک خرید پرینتر CSN-A2 از فروشگاه الکترو ولت


راه اندازی پرینتر CSN-A2 با آردوینو

برای راه اندازی این ماژول علاوه بر خود پرینتر ، به یک  Arduino UNO ، یک آداپتور 2 آمپر و دو عدد کابل سه پین نیاز دارید.

نحوه تغذیه پرینتر حرارتی :

این  پرینتر حرارتی با ولتاژ 5 تا 9 ولت  و با حداکثر جریان 1.5 آمپر کار میکند. از آنجایی که ولتاژ USB برابر 5 ولت می باشد ، می توان از پورت USB به عنوان تغذیه پرینتر استفاده کرد اما حداکثر جریان پورت USB برابر 500 میلی آمپر می باشد و در صورت استفاده از USB پرینتر با سرعت کمتر و جوهر کم رنگ تر کار می کند. برای رفع این مشکل یا باید از آداپتور های 2 آمپر به صورت شکل زیر استفاده کرد و یا چند خازن با ظرفیت بالا ( نظیر 1000uF) موازی با تغذیه پرینتر کرد.

نحوه اتصال به آردوینو :

برای اتصال راحت تر کابل های سه پین پرینتر به آردوینو از سیم برد بوردی به صورت شکل زیر استفاده نمایید :


نحوه دانلود و نصب کتابخانه پرینتر CSN-A2

برای راه اندازی این ماژول ابتدا باید نرم افزار Arduino IDE را از طریق >> این لینک دانلود و سپس نصب نمایید. توجه نمایید که نسخه IDE سیستم تست شده در هنگام نوشتن این آموزش 1.6.9 می باشد. پس از دانلود و نصب نرم افزار آردوینو ، آن را باز کرده و سپس از مسیر ( Sketch -> Include Library ) روی Manage Libraries کلیک کنید ( شکل زیر ).

پنجره ای با نام Library Manager باز می شود. در این پنجره در قسمت جستجو ، عبارت THERMAL PRINTER را جستجو نمایید و سپس روی کتابخانه مربوطه کلیک کرده و گزینه Install را بزنید. کتابخانه پرینتر بعد از مدتی دانلود و نصب می شود.

حال اگر به مسیر ( Documents -> Arduino -> libraries ) در کامپیوتر خود مراجعه نمایید ، مشاهده می کنید پوشه ای با نام Adafruit_Thermal_Printer_Library اضافه شده است. درون این پوشه کلیه فایل های مورد نیاز از قبیل فایل های کتابخانه ای ، داکیومنت های توضیحات و مثال های مورد نیاز نوشته شده است.

حالا اگر درون نرم افزار آردوینو به مسیر ( File -> Examples ) برویم ، در قسمت Examples From Custom Libraries پوشه ای به نام Adafruit_Thermal_Printer_Library را مشاهده خواهید کرد که با بازکردن آن کلیه مثال های دانلود شده همراه کتابخانه را مشاهده خواهید کرد. این مثال ها همان مثال هایی است که در مسیر ( Documents -> Arduino -> libraries -> Adafruit_Thermal_Printer_Library) روی کامپیوتر وجود دارد.

این پرینتر برای چاپ از کاغذ 2.25 اینچی استفاده می کنید که بسیار معروف بوده و در اکثر فروشگاه ها یافت می شود. نحوه صحیح قرار گرفتن کاغذ به شکل زیر است :

زمانی که تغذیه پرینتر وصل می شود ، چراغ LED سبز رنگ موجود روی پرینتر دو بار با فاصله زمانی یک ثانیه چشمک می زند و این به معنی آن است که شروع به کار پرینتر با موفقیت انجام شده است. بعد از آن ، چراغ به یکی از صورت های زیر در می آید :

  • یکبار چشمک زن : وضعیت دستگاه نرمال است.
  • دوبار چشمک زن : یا دما بسیار پایین است و یا از نظر مکانیکی مشکلی وجود دارد.
  • سه بار چشمک زن : کاغذ درون پرینتر وجود ندارد.

نکته مهم :

توجه کنید که در این پرینتر BAUDRATE به طور پیش فرض برابر 9600 می باشد. بنابراین در تمامی مثالهای موجود در کتابخانه نصب شده باید mySerial.begin(19200) را به mySerial.begin(9600) تغییر دهیم تا پرینتر به درستی کار نماید.


تست برنامه A_printertest توسط الکترو ولت :

در این مثال چندین کاربرد مفید این پرینتر نشان داده می شود که به ترتیب توضیحات آن را بیان می کنیم :

  • Inverted text : در این حالت که با فراخوانی تابع inverseOn فعال و با inverseOff غیر فعال می شود ، متن چاپ شده با رنگ سفید و زمینه متن با رنگ مشکی نمایش داده می شود.
  • Double height : در این حالت که با فراخوانی تابع doubleHeightOn فعال و با doubleHeightOff غیرفعال می شود ، ارتفاع متن دو برابر نمایش داده می شود.
  • Left/Center/Right justified : این سه حالت برای راست چین ، چپ چین و وسط چین بودن متن می باشد. برای راست چین شدن متن کافی است تا تابع justify(‘R’) فراخوانی شود ، برای چپ چین و وسط چین شدن متن نیز به ترتیب توابع justify(‘L’) و justify(‘C’) فراخوانی می گردد. حالت پیش فرض چیدمان متن روی چپ چین می باشد.
  • Bold text : در این حالت که با فراخوانی تابع boldOn فعال و با boldOff غیر فعال می شود ، متن چاپ شده به صورت برجسته ( پر رنگ ) نمایش داده می شود.
  • Underlined text : در این حالت که با فراخوانی تابع underlineOn فعال و با underlineOff غیر فعال می شود ، زیر متن چاپ شده یک خط به نمایش در می آید.
  • Large/Medium/Small text : در این حالت میتوان سایز نوشته را به سه صورت کوچک ، متوسط و بزرگ تعیین کرد که در حالت پیش فرض روی سایز کوچک می باشد. ابعاد سایز متوسط دو برابر سایز کوچک و ابعاد سایز بزرگ دو برابر سایز متوسط است. این ابعاد را با سه تابع setSize (‘L’)، setSize (‘M’) یا setSize (‘S’) تنظیم می کنیم.
  • Line spacing : در این حالت شما می توانید فاصله بین خطوط متن را با فراخوانی تابع setLineHeight تغییر دهید. به طوری که ورودی این تابع برابر فاصله بین خطوط بر حسب پیکسل است. فاصله بین خطوط حداقل برابر 24 ( بدون فضای اضافی بین دو خط ) و در حالت پیش فرض برابر 32 می باشد.

چاپ لوگو و عکس دلخواه روی پرینتر حرارتی

این چاپگر می تواند تصاویر monochrome ( سیاه و سفید ) نظیر لوگوی فروشگاه و … را چاپ کند. اولین گام برای این منظور آماده سازی تصویر مورد نظر در نرم افزار های ویرایش تصویر نظیر نرم افزار Paint ( در ویندوز ) می باشد. این پرینتر می تواند تصاویر به فرمت Bitmap و Monochrome ( 1 بیتی ) را نمایش دهد به طوری که حداکثر عرض تصویر میتواند 384 پیکسل باشد در نتیجه ابتدا باید عکس مورد نظر به صورت 1BitBMP ذخیره شود. سپس برای چاپ توسط پرینتر حرارتی باید این تصویر به کد تبدیل شود. چندین مرحله برای تبدیل یک تصویر به کد قابل چاپ مورد نیاز است. برای کاربران ویندوز، یک رابط کاربر گرافیکی خوب با نام LCD Assistant برای این کار وجود دارد. برای مک و لینوکس نیز ابزارهای مختلفی استفاده می شود که به صورت کدزنی همین کار را انجام می دهد. در اینجا ما فقط نحوه تبدیل تصویر به کد را در ویندوز بیان می کنیم. در صورت نیاز به نحوه تبدیل آن در لینوکس یا مک میتوانید به فایل آموزش گام به گام راه اندازی ماژول مراجعه کنید.

پس از دانلود نرم افزار LCDAssistant آن را باز کنید ( این برنامه نیازی به نصب ندارد ) سپس از منوی File تصویر با فرمت BMP را Load کنید. توجه نمایید که حتما تصویر باید با فرمت BMP باشد. برای مثال ما لوگوی نمونه زیر را در نرم افزار بارگذاری کردیم.

سپس در قسمت ( Byte orientation -> settings ) که در شکل فوق با نام A نشان داده شده است Horizontal را انتخاب می کنیم. در ادامه ممکن است نیاز باشد تا عرض تصویر را نیز تغییر دهیم که در شکل فوق با نام B نشان داده شده است. در صورتی که عرض تصویر مضربی از 8 نبود باید تصویر را تا جای ممکن به مضربی از 8 برش دهیم. زیرا این برنامه و نیز پرینتر حرارتی از تصاویر با مضرب 8 پشتیبانی می کند. برای مثال در تصویر فوق ، عکسی با 75 پیکسل نشان داده شده است. خروجی این عکس چون ضریبی از 8 نیست به 72 پیکسل کاهش داده می شود. بنابراین بخشی از گوشه تصویر از بین می رود. برای جلوگیری از این اتفاق یا باید عکستان مضربی از 8 بوده باشد و یا باید عددی بزرگتر از عرض کنونی عکس را در نرم افزار انتخاب نمایید در این صورت نرم افزار به طور اتوماتیک کادری سفید با دیتای خالی به عکس اضافه می کند. این قضیه برای طول تصویر صادق نیست و طول تصویر میتواند هر عدد دلخواهی باشد.
در ادامه نام کوتاهی را در قسمت table name اضافه کنید ( برای مثال ما adalogo را اضافه کردیم ) سپس از منوی File گزینه Save Output را انتخاب کنید و در ادامه نام کوتاه و معنی داری با پسوند .h برای آن انتخاب نموده و آن را ذخیره کنید ( در اینجا با نام adalogo.h ذخیره کردیم )
برای افزودن این فایل به برنامه آردوینو خود کافی است از منوی sketch گزینه Add File… را بزنید و فایل ذخیره شده در مرحله قبل را انتخاب نمایید. با این کار یک تب جدید در برنامه نمایان می شود. ( برنامه اصلی هنوز در تب سمت چپ وجود دارد )
اکنون تغییرات کوچکی در هر دو تب مورد نیاز است که برای تنظیم نمایش صحیح تصویر می باشد. بدین منظور باید const unsigned char را به static const uint8_t PROGMEM مطابق تصویر زیر تغییر دهید :
سپس در برنامه اصلی ( در اینجا A_Printtest ) این فایل را به صورت زیر به برنامه اضافه کنید :

اکنون می توانید با فراخوانی تابع printBitmap(width, height, tablename) در برنامه ، تصویر مورد نظر را چاپ نمایید.

تست برنامه B_charsets توسط الکترو ولت :

در این مثال کلیه کارکترهایی که می توانید توسط این پرینتر چاپ کنید نمایش داده می شود.


تست برنامه  C_barcodes  توسط الکترو ولت :

در این مثال انواع استاندارد های مختلف بارکدهایی که می توانید با این پرینتر چاپ کنید نمایش داده می شود.


در صورتی که این مطلب مورد پسندتان واقع شد لایک و اشتراک گذاری فراموش نشود

دیدگاه (7)

  • حامد پاسخ

    سلام
    من b_chartest رو به درستی انجام دادم ولی هرکاری میکنم برای چاپ فارسی رو پرینتر متاسفانه نمیشه
    و حروف فارسی رو بهم ریخته چاپ میکنه
    برای چاپ فارسی چیکار باید بکنم؟

    1397-01-28 در 15:22
    • ادمین الکترو ولت پاسخ

      سلام دوست عزیز نکات بیان شده در آموزش را ( خصوصا تنظیم باودریت ) به دقت انجام دهید

      1397-03-16 در 14:41
  • رضا پاسخ

    سلام
    من این چاپگر را به یه تبلت متصل کردم و با اندروید استودیو راه اندازی کردم و چاپ لاتین هم انجام دادم ولی برای چاپ فارسی که حروف به هم بدرستی بچسبند دچار مشکل هستم
    چطوری باید اینکار را انجام دهم هر نوع کدپیچ هم امنحان کردم درست نشد
    ممنون میشم کمک کنید

    1397-03-16 در 13:00
    • ادمین الکترو ولت پاسخ

      سلام دوست عزیز این چاپکر با رابط سریال کار می کند و در نتیجه برای اتصال به کامپیوتر ، موبایل و تبلت باید از یک مبدل USB به سریال استفاده شود. برای اینکه فارسی بنویسید کافی است تا کدهای اسکی فارسی را برای پرینتر ارسال نمایید. برای پیدا کردن کدهای فارسی به User Manual این ماژول و بخش character setting مراجعه نمایید. همچنین در ضمیمه ( Appendix ) این کدها آمده است.

      1397-03-16 در 14:58
  • مجتبی پاسخ

    سلام
    پرینتر من تست پیج رو بدرستی انجام میده.ولی وقتی هر کدام از برنامه های نمونه رو تست میکنم یک مشت عبارات نامشخص(مثل ؟ یا حروف چینی) پرینت میگیره.باد ریت هم کنترل کردم.

    1397-04-11 در 01:18
    • روح الله پاسخ

      سلام
      باید بادریت روی همون 19200 باشه

      1402-07-28 در 11:12
  • امیر حسین پاسخ

    با سلام این کد برای CSN A5 هم کار میکنه؟

    1402-06-28 در 17:54

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

بازگشت به آموزشگاه