راه اندازی بارکد خوان با رزبری پای و 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 عدد تشکیل شده است.
UPC-A: بارکد Universal Product Code (UPC) در صنعت خرده فروشی استفاده می شود. UPC-A از 12 عدد تشکیل شده است.
EAN-8: سیستم شماره گذاری مقالات اروپایی (EAN) یک ابر مجموعه از U.P.C. EAN-8 است و از 8 رقم برای بسته های کوچک تشکیل شده است.
ITF: یک بارکد فقط عددی است که برای رمزگذاری جفت اعداد در قالب بارکد با چگالی بالا مشابه مجموعه کد 128 نویسهای C استفاده میشود.
code 39: بارکد کد 39 ساده ترین بارکد برای استفاده است و برای بررسی خودکار کاراکترها طراحی شده است.
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 بروید.
پس از آن می پرسد “آیا می خواهید رابط ARM فعال شود؟” “<Yes>” را انتخاب کنید و سپس نشان می دهد که “اینترفیس ARM I2C فعال است.” <ok> را انتخاب کنید و سپس finish را انتخاب کنید.
قبل از کار بر روی LCD، لطفاً آدرس I2C LCD را که به raspberry وصل میکنید، با استفاده از دستور زیر بررسی کنید.
sudo i2cdetect -y 1
در اینجا می بینید که آدرس دستگاه I2C که متصل است 27 است.
برنامه نویسی رزبری پای برای خواندن بارکد
قبل از شروع برنامهنویسی مطمئن شوید که حالت انتقال داده در بارکد خوان روی 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 نمایش داده می شود و سپس پیامی به شما نشان می دهد که آیتم اضافه شده است.
موارد موجود در فایل : سورس
برای دانلود فایل ها باید حساب کاربری داشته باشید ثبت نام / ورود
سلام وقت بخیر برای این پروژه میتوان برد رزبری پای پیکو Pico بکار برد؟؟
سلام
پروژه راه اندازی بارکدخوان با stm32 رو شما توی سایتتون دارید؟
سلام خسته نباشید خیلی ممنون بابت سایت خوبتون
آیا میشه از رسپری پای 3 B+ استفاده کرد؟
سلام عزیز
بله