آموزش رزبری پایپروژه رزبری پای

راه اندازی بارکد خوان با رزبری پای و LCD کاراکتری

بارکد خوان دارای قابلیت اسکن انواع بارکدهای خطی است که بیشتر در مراکز خرید، زنجیره های عرضه مواد غذایی، رستوران ها، فروشگاه های پوشاک و … استفاده می شود. در این مقاله می آموزیم که چگونه می توان به خروجی اسکنر بارکد در ترمینال سریال Raspberry Pi دسترسی پیدا کرد و کد اسکن شده را در LCD کاراکتری 16X2 نمایش داد. هر بار که کاربر بارکدی را اسکن می کند، یک عدد به اقلام موجود در سبد خرید اضافه میشود.

مبانی اسکنر بارکد ساده

بارکد اسکنر دستی یک دستگاه Plug and Play با پورت USB است که می تواند به لپ تاپ یا رایانه شخصی شما متصل شود. به طور کلی، بارکد خوان ها می توانند 300 اسکن در ثانیه را با قابلیت رمزگشایی برای Code11, Code39, Code93, Code32, Code128, Coda Bar انجام دهند. همچنین آنها می توانند انواع بارکدهای خش دار و محو شده را به راحتی بخوانند.

مبانی اسکنر بارکد ساده

بارکدخوان می تواند به صورت سریال از طریق USB خروجی بدهد و در حالت HID یا در حالت RS232 کار کند.کاربران می توانند پسوندهایی مانند افزودن CR، افزودن LF، افزودن CR+LF، و نرخ Baud انتقال داده را در 9600 یا 115200 پیکربندی کنند. همچنین، حالت خواندن آن را می‌توان به‌عنوان حالت Triggering یا Continuous Mode نیز سفارشی کرد.

انواع بارکد

برخی از انواع بارکد معروف به شرح زیر است:

EAN-13: سیستم شماره گذاری مقالات اروپایی (EAN) یک ابر مجموعه از U.P.C EAN13 است که از 13 عدد تشکیل شده است.

EAN-13

UPC-A: بارکد Universal Product Code (UPC) در صنعت خرده فروشی استفاده می شود. UPC-A از 12 عدد تشکیل شده است.

UPC-A

EAN-8: سیستم شماره گذاری مقالات اروپایی (EAN) یک ابر مجموعه از U.P.C. EAN-8 است و از 8 رقم برای بسته های کوچک تشکیل شده است.

EAN-8

ITF: یک بارکد فقط عددی است که برای رمزگذاری جفت اعداد در قالب بارکد با چگالی بالا مشابه مجموعه کد 128 نویسه‌ای C استفاده می‌شود.

ITF

code 39: بارکد کد 39 ساده ترین بارکد برای استفاده است و برای بررسی خودکار کاراکترها طراحی شده است.

code 39

همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید

code 128: یک نماد شناسی بسیار موثر و با چگالی بالا که امکان رمزگذاری داده های الفبایی عددی را فراهم می کند.

code 128

عمدتاً از کد 128 استفاده می شود زیرا می تواند داده های الفبایی عددی با طول های مشخص را ذخیره کند، بنابراین ما فقط چند بارکد تصادفی کد 128 را برای پروژه خود خارج می کنیم.

مدار اتصال بارکدخوان به رزبری پای

در اینجا ما یک LCD کاراکتری 16X2 را به Raspberry pi 4 در حالت ارتباط I2C وصل می کنیم و مقدار بارکدهایی را که توسط بارکد خوان اسکن شده اند نمایش می دهیم. تصویر زیر نحوه اتصال اسکنر بارکد و ال سی دی کاراکتری را با Raspberry Pi نشان می دهد.

مدار اتصال بارکدخوان به رزبری پای

I2C رزبری پای
SDA پین شماره 2
SCL  پین شماره 3
VCC  پین شماره 4
GND  پین شماره 6

جدول بالا تمام اتصالات مربوطه را نشان می دهد.

قطعات مورد نیاز

  • Raspberry Pi 4 B+ (شما می توانید از مدل های دیگر استفاده کنید)
  • اسکنر بارکد دستی USB
  • ال سی دی 16X2 کاراکتری
  • ماژول I2C برای LCD
  • سیم های جامپر (F-F)
  • نمونه اقلام دارای بارکد

بیایید نگاهی به آنچه در واقع می‌سازیم بیندازیم. در اینجا می‌بینید که چند بارکد تصادفی ایجاد کرده‌ایم و آنها را روی موارد مختلفی مانند برد بورد، ضدعفونی‌کننده و … چسبانده‌ایم.

اتصال بارکد خوان به برد رزبری پای و بارکد ها

فعال کردن I2C در رزبری پای برای ارتباط با LCD

ابتدا باید I2C را در Raspberry Pi فعال کنیم، می‌توانیم آن را از طریق دستور ترمینال که در زیر آورده شده است فعال کنیم.

sudo raspi-config

تنظیمات رزبری پای

اکنون با کلید فلش پایین به گزینه های Interfacing بروید و سپس به گزینه P5 یعنی گزینه I2C Enable/Disable بروید.

فعال کردن I2C در رزبری پای برای ارتباط با LCD

پس از آن می پرسد “آیا می خواهید رابط ARM فعال شود؟” “<Yes>” را انتخاب کنید و سپس نشان می دهد که “اینترفیس ARM I2C فعال است.” <ok> را انتخاب کنید و سپس finish را انتخاب کنید.

قبل از کار بر روی LCD، لطفاً آدرس I2C LCD را که به raspberry وصل می‌کنید، با استفاده از دستور زیر بررسی کنید.

sudo i2cdetect -y 1

در اینجا می بینید که آدرس دستگاه I2C که متصل است 27 است.

دریافت آدرس دستگاه I2C

برنامه نویسی رزبری پای برای خواندن بارکد

قبل از شروع برنامه‌نویسی مطمئن شوید که حالت انتقال داده‌ در بارکد خوان روی USB است. همچنین مطمئن شوید که حالت Reading در حالت Triggering و پسوند CR* است.

حالا rpi_LCD را با استفاده از  pip install rpi_ lcd دانلود و نصب کنید.

کد کامل در فایل دانلودی انتهای صفحه قرار گرفته است.

در برنامه ابتدا شی Sleep را از Time وارد می کنیم زیرا از Delay برای نمایش محتوا در LCD استفاده می کنیم و پس از آن شی LCD را از rpi_lcd برای ارتباط با LCD 16X2 وارد می کنیم.

from time import sleep
from rpi_lcd import LCD

پس از آن متغیری را به عنوان item_count ایجاد کرده ایم که تعداد موارد اسکن شده را تا اجرای حلقه ذخیره می کند. در ابتدا مقدار آن 0 است. به همین ترتیب scode بارکد اسکن شده را ذخیره می کند که در ابتدا خالی است.

item_count=0   #شمارش موارد اسکن شده
scode="" #ذخیره بارکد خوانده شده
lcd.text("Scan the Code... ", 1)   #پیام خوش آمد گویی روی ال سی دی

حالا تا زمانی که رزبری پای را ریست نکنیم، میتوانیم بی پایان به اسکن کردن ادامه بدهیم.

در این حلقه تابع input() به داده هایی از ترمینال نیاز دارد که سپس در scode با فرمت String ذخیره می شوند و سپس آن را روی صفحه نمایش LCD چاپ می کنیم.

while 1:   #برای اسکن بی پایان
    scode= str(input())  #صبر برای دریافت بارکد
    lcd.text("Scanned Barcode is", 1)
    lcd.text(scode,2)  #نمایش بارکد در خط دوم
    sleep(2)   #تاخیر 2 ثانیه
    lcd.text("   Item Added", 1)
    sleep(2)
    item_count=item_count+1   #اضافه کردن اقلام سبد
    IC=str(item_count)   #تبدیل عدد به رشته
    lcd.text("  Total Item = ",1)
    lcd.text(IC,2) 
    sleep(1)

ما هر بار که بارکد جدیدی اسکن میشود، به مقدار item_count یک عدد اضافه میکنیم.  بارکد اسکن شده به مدت 2 ثانیه روی LCD نمایش داده می شود و سپس پیامی به شما نشان می دهد که آیتم اضافه شده است.

موارد موجود در فایل : سورس

دانلود فایل های پروژه

5/5 - (1 امتیاز)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام آیرنکس را دنبال کنید.
تصویر از محمد رحیمی

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

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

نشانی ایمیل شما منتشر نخواهد شد.