فهرست مطالب:

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

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

تصویری: بارکد خوان رزبری پای صحبت کننده: 12 مرحله
تصویری: ✅ Top 5: Best Barcode Scanners 2022 [Reviewed & Buying Guide] 2024, نوامبر
Anonim
بارکد خوان رزبری پای صحبت کننده
بارکد خوان رزبری پای صحبت کننده

شکل 1 اسکنر بارکد از DX.com

بررسی اجمالی

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

مادرم دیگر نمی تواند برچسب اجناس خواربار را بخواند ، بنابراین من به دنبال راه حل بودم. بعد از دیدن صدها دلار برای خوانندگان بارکد برای نابینایان ، می خواستم ببینم با استفاده از رزبری پای و بارکد خوان USB چه کاری می توان انجام داد.

تقلید کلیدی دیگر این بود که این کار باید بدون اتصال به اینترنت (مانند فروشگاه یا خانه دوست) کار کند. بنابراین پایگاه داده و تبدیل متن به گفتار باید به صورت مستقل باشد.

من نسخه بارکد خوان مبتنی بر دوربین را امتحان کردم ، اما روشنایی و موقعیت دوربین باعث ایجاد مشکلات مربوط به قابلیت اطمینان برای افرادی شد که نمی توانند به وضوح ببینند. اینها همچنین برای راه اندازی و استفاده از برنامه به بینایی نیاز داشتند. بنابراین من به یک بارکد خوان USB لیزری تغییر کردم ، به ویژه اینکه آنها اکنون با قیمت کمتر از 30 دلار در دسترس هستند و Raspbian Jessie آنها را مستقیماً از جعبه پشتیبانی می کند.

من همچنین آمازون جدید Dash Wand را امتحان کردم اما مورد اسکن شده را نمی گوید و برای کار نیاز به اتصال به اینترنت دارد.

ایده این بود که یک مورد را اسکن کرده و درخواست رزبری را به عنوان پایگاه داده داخلی کدهای UPC و سپس توضیحات محصول با استفاده از تبدیل متن به گفتار بیان کنید.

به منظور کوچک کردن واحد تا حد امکان ، می خواستم از Raspberry Pi Zero استفاده کنم. همچنین می خواستم دستگاه را از باتری نیز خاموش کنم.

برای برآوردن این الزامات برخی از مبادلات ضروری بود. از آنجا که Zero جک صوتی خارجی ندارد ، من از طرح صوتی پروژه "Earthquake Pi" خود استفاده مجدد کردم زیرا هزینه کم (حدود 6 دلار) و بسیار کوچک بود. به طور متناوب ، جایگزینی "One Transistor Audio به جای Pi Zero" ممکن است امکان پذیر باشد.

برای اسکنر بارکد لیزری ، یکی از DX.com را پیدا کردم. این دستگاه از طریق Rasbberry USB تغذیه می شود و حدود 25 دلار قیمت دارد. (قسمت های زیر را ببینید)

مرحله 1: به روز رسانی

با ورود Raspberry Pi Zero W ، من قصد دارم به آن تغییر کنم. همه چیز در اینجا یکسان است ، با این تفاوت که شما باید اتصال WiFi را به Pi تنظیم کنید. این بدان معناست که برای راه اندازی و استفاده از آن نیازی به هاب USB برای Zero ندارید.

می توانید WiFi را با استفاده از موارد زیر تنظیم کنید:

thepihut.com/blogs/raspberry-pi-tutorials/…

آیا میدانستید؟

اگر Raspbian Jessie را روی کارت SD با استفاده از رایانه Windows نصب می کنید ، می توانید قبل از بوت شدن روی Raspberry دو فایل روی کارت ایجاد کنید تا WiFi و SSH را پیکربندی کند؟

برای این کار ، فرض کنید کارت SD شما در حال حاضر به صورت K: روی رایانه شما نصب شده است:

1) آخرین تصویر Raspbian Jessie را روی SD نصب کنید. برای این پروژه ، جسی لایت باید کار کند.

www.raspberrypi.org/downloads/raspbian/

2) با دفترچه یادداشت ، فایلی به نام "ssh" ایجاد کنید و از Save As "All files" در K: / ssh استفاده کنید.

فایل می تواند حاوی هر چیزی باشد. این نام فایل است که مهم است. نباید "ssh.txt" باشد !!!

3) با دفترچه یادداشت ، فایلی به نام "wpa_supplicant.conf" با موارد زیر ایجاد کنید:

ctrl_interface = DIR =/var/run/wpa_supplicant GROUP = netdevupdate_config = 1

شبکه = {

ssid = "mySSID" psk = "mypassword" key_mgmt = WPA-PSK}

از Save As “All files” در K: / wpa_supplicant.conf استفاده کنید. باز هم اجازه ندهید Notepad آن را به “wpa_supplicant.conf.txt” تغییر دهد !!

وقتی اولین بار تمشک را راه اندازی می کنید ، جسی به دنبال این موارد می گردد و به Wifi شما متصل می شود. با این حال ، باید آدرس IP خود را در روتر خود جستجو کنید ، زیرا به صورت خودکار تعیین شده است.

مرحله 2: لیست قطعات

  • Raspberry Pi Zero (یا هر رزبری پای ، اگر اندازه آن مسئله ای نیست)
  • اسکنر بارکد لیزری USB

    www.dx.com/p/ls-4209-laser-bar-code-scanner…

  • برای Raspi Zero ، Adafruit I2S 3W Class D Amplifier را اضافه کنید
  • بلندگوی کوچک. (برای Pi 2 ، 3 ، از تقویت کننده و بلندگوی خارجی استفاده کنید.)
  • USB Micro to USB OTG آداپتور
  • بسته باتری USB 5V 1Amp مانند
  • کابل USB به micro USB برای بسته باتری.
  • هاب USB و اترنت (حداقل برای کار راه اندازی اولیه ، نیازی به Zero W یا Raspi 2 ، 3 نیست)
  • نرم افزار GITHUB:

مرحله 3: بارکد خوان لیزری USB

بارکد خوان لیزری USB
بارکد خوان لیزری USB

توانایی خوانندگان بارکد لیزری در اسکن برچسب UPC بیشتر از دوربین ها است. آنها حتی در برچسب های ضعیف یا دارای ضعف مناسب نیز به خوبی کار می کنند.

برای اتصال آن به Zero به آداپتور میکرو USB به USB نیاز دارید.

گرفتن دست و ماشه اسکنر استفاده از آن را آسان می کند.

همچنین هنگامی که یک برچسب را با موفقیت اسکن می کند ، بازخورد می دهد.

ToDo آینده:

در طراحی نهایی ، من کابل را کوتاه می کنم تا کوتاه شود و مستقیماً به پین های USB Zero لحیم می شود تا اندازه و احتمال خرابی کانکتور کاهش یابد. Zero و باتری را مستقیماً در قسمت زیرین دسته اسکنر در یک کیف چاپ سه بعدی متصل می کنید.

مرحله 4: پایگاه داده UPC

این قسمت ضعیف ترین قسمت پروژه است ، زیرا میلیون ها کد UPC و پایگاه داده های منبع باز بسیار کمی برای بارگیری وجود دارد. متأسفانه ، اکثر پایگاه های داده UPC گران قیمت هستند و نیاز به اتصال به اینترنت دارند.

من توانستم چند پایگاه داده منبع باز را در کنار هم قرار دهم (منابع در پیوست زیر) ، اما حتی با وجود نزدیک به 700 ، 000 مورد در آن ، تعداد زیادی از آنها گم شده است.

برای این منظور ، من دو کار انجام داده ام ؛ یکی تمرکز بر روی اقلام خواربارفروشی و دیگری افزودن یک سرور وب به رزبری برای افزودن کدهای جدید UPC به صورت دستی ، اگرچه این امر حداقل به اتصال شبکه محلی نیاز دارد.

ToDo آینده:

من Zero W را به یک "نقطه اتصال" تبدیل می کنم تا بتوانید هر جا به آن متصل شوید تا کدهای UPC جدید اضافه کنید.

مرحله 5: نوشتار به گفتار

من از برنامه متن به گفتار به نام "Flite" استفاده کردم ، زیرا بهترین کیفیت را بین کیفیت صدا و سرعت تبدیل در Zero داشت. دیگران کمی بهتر به نظر می رسیدند ، اما برای تبدیل بسیار کند بودند.

همچنین می توانید آموزش Adafruit را مشاهده کنید:

توجه داشته باشید که برای عادت به انحراف گفتار کمی "آموزش گوش" لازم است ، اما خیلی بد نیست.

با اسکن مجدد همان مورد ، صدا تکرار می شود.

آینده کار

شاید یک جک هدفون اضافه کنید تا بتوانید در مکانهای پر سر و صدا برای افراد مسن راحت تر بشنوید.

مرحله 6: قدرت باتری

سیستم را می توان از باتری USB 5 ولت استفاده کرد ، مانند مورد استفاده برای شارژ تلفن های همراه.

نکته مهم این است که هنگامی که باتری را از برق جدا می کنید یا باتری آن از بین می رود ، Pi با احتمال خرابی درایو SD خراب می شود.

برای حل این مشکل ، دکمه ای که فرمان خاموش شدن را اجرا می کند مورد نیاز است. من احتمالاً از یکی مثل این استفاده خواهم کرد:

www.element14.com/community/docs/DOC-78055…

(بله … "آینده آینده" دیگر)

مرحله 7: قسمت اول - افزودن صدا به Pi Zero

قسمت اول - افزودن صدا به Pi Zero
قسمت اول - افزودن صدا به Pi Zero
قسمت اول - افزودن صدا به Pi Zero
قسمت اول - افزودن صدا به Pi Zero
قسمت اول - افزودن صدا به Pi Zero
قسمت اول - افزودن صدا به Pi Zero

(اگر از صفر استفاده نمی کنید این قسمت را رد کنید!)

در Pi Zero ، باید صوتی خارجی اضافه کنید ، زیرا داخلی نیست. من از هزینه کم "Adafruit I2S 3W Amplifier Breakout MAX98357A" استفاده کردم

این نیاز به راه اندازی با استفاده از آموزش عالی Adafruit در:

همانطور که در قسمت سیم کشی آموزش نشان داده شده است ، اتصال دهید:

• Amp Vin به Raspi Zero Pi 5V • Amp GND به Raspi Zero Pi GND • Amp DIN به Raspi Zero Pi #21 • آمپر BCLK به Raspi Zero Pi #18 • آمپر LRCLK به Raspi Zero Pi #19

یک بلندگوی کوچک را به سیم های صوتی روی برد وصل کنید.

تنظیم نرم افزار صوتی Pi Zero Adafruit همچنین در آموزش راه اندازی نرم افزار Adafruit نشان داده شده است ، دستور CURL زیر را اجرا کنید:

$ curl -sS https://raw.githubusercontent.com/adafruit/Raspbe…> | خراب کردن

پس از راه اندازی مجدد ، صدا را با استفاده از اسپیکر تست کنید:

$ speaker -test -c2 --test = wav -w /usr/share/sounds/alsa/Front_Center.wav

اگر مشکلی دارید ، از طریق آموزش Adafruit به عقب برگردید و از نمای کلی شروع کنید. برای تأیید همه فایل های به روز شده ، ممکن است لازم باشد مراحل "نصب دقیق" در آموزش را طی کنید.

مراحل مهم مورد نیاز برای صوت Zero & Max98357: به طور پیش فرض ، صدای ALSA فقط در حالت استریو کار می کند در حالی که تبدیل متن به گفتار Flite به صورت مونو است. همچنین ، صدا هر بار که شروع به پخش می کند ، "پاپ" دارد.

(مراجعه کنید به:

شما باید موارد زیر را انجام دهید:

1) یک خط به /boot/config.txt اضافه کنید

$ sudo nano /boot/config.txt

dtoverlay = i2s-mmap

2) /etc/asound.conf را جایگزین کنید

$ sudo nano /etc/asound.conf

pcm.hifiberry {type hw card 0} pcm.! default {type plug slave.pcm "dmixer"} pcm.dmixer {type dmix ipc_key 1024 slave {pcm "hifiberry" channel 2}} ctl.dmixer {نوع کارت hw 0}

3) Pi خود را مجدداً راه اندازی کنید.

دوباره آزمون Speaker-test را امتحان کنید. اکنون باید بهتر به نظر برسد. هنگامی که آموزش راه اندازی شامل تست های صوتی را تکمیل کردید ، صدا باید آماده باشد.

توجه داشته باشید که ممکن است بخواهید یک جک هدفون برای صدا اضافه کنید ، اگر آن را به یک خواربار فروشی یا محیطی پر سر و صدا ببرید.

مرحله 8: قسمت دوم - نصب نرم افزار

این فرض می کند که شما قبلاً Raspbian Jessie را نصب کرده اید و می توانید به خط فرمان لینوکس دسترسی داشته باشید. شما نیازی به نسخه GUI Raspbian ندارید ، اما استفاده از آن مناسب است.

در حال حاضر نیازی به اسکنر USB متصل ندارید ، در صورت نیاز به پورت USB برای اترنت یا صفحه کلید/ماوس.

مطمئن شوید سیستم عامل شما به روز است:

$ sudo apt-get بروزرسانی $ sudo apt-get ارتقا دهید

از خط فرمان ، به فهرست اصلی pi بروید و مخزن GITHUB را بارگیری کنید:

$ cd/home/pi $ sudo apt install git $ git clone https://github.com/rgrokett/TalkingBarcodeReader….> https://github.com/rgrokett/TalkingBarcodeReader….> $ cd TalkingBarcodeReader $./install. sh

این کار مدتی طول می کشد ، به ویژه اگر این اولین بار است و وب سرور و PHP نیاز به نصب یا به روز رسانی دارند. در صورت لزوم ، می توانید این را بیش از یک بار اجرا کنید. از جمله موارد دیگر ، این فایل های بارکد و پایگاه داده UPC را به آدرس:/var/www/html/upc نصب می کند

بعد ، /etc/rc.local را ویرایش کنید و خط زیر را قبل از "خروج 0" اضافه کنید

$ sudo nano /etc/rc.local

fi sudo /var/www/html/upc/bin/run.sh خروج 0

پس از اتمام نصب ، Pi خود را خاموش کرده و بارکد خوان USB را وصل کرده و راه اندازی مجدد کنید.

$ sudo در حال حاضر خاموش است

پشتیبان گیری کنید و باید یک سخنرانی کوتاه راه اندازی را بشنوید.

در این صورت ، بارکد را از یک مورد مواد غذایی اسکن کنید. اگر همه چیز خوب پیش رفت ، باید صدای آن را بشنوید (یا "Not Found" صحبت کنید). در غیر این صورت ، راهنمای عیب یابی بعدی را بررسی کنید.

مرحله 9: عیب یابی

عیب یابی
عیب یابی

اگر صدایی نمی شنوید ، باید دستورات زیر را امتحان کنید:

1) تأیید کنید که صدای تبدیل به گفتار کار می کند:

$ sudo flite -voice awb -t "test"

در صورت بروز خطا ، مطمئن شوید flite نصب شده است:

$ sudo apt install flite

اگر خطای زیر را دریافت کردید ، مطمئن شوید که /boot/config.txt و /etc/asound.conf نشان داده شده در بخش Audio Setup در بالا در Raspi Zero's را به روز کرده اید: audio_open_alsa: تعداد کانالها روی 1 تنظیم نشد.

اگر هیچ خطایی و هیچ صدایی دریافت نکردید ، مطمئن شوید که صدای تمشک شما کار می کند.

sudo aplay /usr/share/sounds/alsa/Front_Center.wav

1) ممکن است لازم باشد صدا را به زور از جک صوتی خارج کنید: (شکل 1 بالا را ببینید)

$ sudo raspi -config -> 7 گزینه پیشرفته -> A4 Audio

2) پس از اینکه صدا و نوشتار به گفتار به خوبی تایید شد ، بارکد خوان را بررسی کنید:

cd/var/www/html/upc/binsudo python./test.py

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

3) اگر همه اینها خوب است ، فایل "nohup.out" را برای پیام های خطا بررسی کنید:

cd/var/www/html/upc/binsudo cat nohup.out

مشکلات احتمالی ، بسته های مفقود شده یا مجوزهای بد (یا اشکال BUG در کد است!) است. مطمئن شوید سیستم عامل شما به روز است و install.sh را دوباره اجرا کنید.

امیدوارم شما در حال کار هستید!

مرحله 10: قسمت سوم - وب سرور

قسمت سوم - وب سرور
قسمت سوم - وب سرور

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

در صورت نیاز به افزودن یا به روز رسانی پایگاه داده UPC ، دو برنامه در دسترس است. یک خط فرمان و یک مرورگر وب. (شماره مورد UPC خود را با اعداد جایگزین کنید)

$ cd/var/www/html/upc/bin

$ sudo./addDB.sh 01234567890 "مورد جدید من"

با این کار یک رکورد به پایگاه داده اضافه می شود. در غیر این صورت ، پیشنهاد می شود از عملکرد DB مرورگر وب استفاده کنید.

برای رابط کاربری وب سرور ، به آدرس IP تمشک خود نیاز دارید.

برای یافتن آدرس IP ، می توانید از موارد زیر استفاده کنید:

$ hostname -I 192.168.1.108

از طریق مرورگر رایانه ، به آدرس: https://192.168.1.108/upc/ بروید. باید صفحه ای مشابه صفحه 2 در بالا مشاهده کنید.

اگر چنین است ، می توانید سوابق را اضافه/به روز کنید و حذف کنید. با استفاده از دکمه ('> |') "آخرین رکورد" به آخرین صفحه بروید تا جدیدترین پرونده های خود را که در انتهای پایگاه داده ضمیمه شده است مشاهده کنید.

توجه داشته باشید که این سرویس وب امن نیست (بدون احراز هویت ، بدون SSL) ، بنابراین بهتر است آن را در معرض اینترنت عمومی قرار ندهید. (اما از آنجا که به عنوان نقطه دسترسی WiFi تنظیم نشده است ، حمل آن به فروشگاه ایمن است.)

هرچند ، از آنجا که هیچ اطلاعات خصوصی در مورد آن وجود ندارد ، بدترین چیزی که ممکن است رخ دهد این است که کسی اطلاعات UPC را دستکاری کند.

همچنین می توانید دسترسی به آدرس های IP خاص را محدود کنید تا دیگران نتوانند وارد شوند. فقط IP ها را در اینجا با آدرسهایی که می خواهید اجازه دهید جایگزین کنید. دسترسی بقیه افراد مسدود می شود:

$ sudo vi /etc/lighttpd/lighttpd.conf

$ HTTP ["remoteip"] = ~ "127.0.0.1 | 192.168.1.108" {url.access-deny = ("")} $ sudo /etc/init.d/lighttpd راه اندازی مجدد

همچنین ، رمز عبور پیش فرض PI را تغییر دهید! همه می دانند که پیش فرض pi/raspberry است

$ passwd

مرحله 11: عیب یابی سرور وب

عیب یابی سرور وب
عیب یابی سرور وب
عیب یابی سرور وب
عیب یابی سرور وب

با استفاده از مرورگر خود به آدرس IP رزبری خود بروید ، مانند این:

192.168.1.108/

شما باید صفحه پیش فرض را از /var/www/html/index.html ببینید (شکل 1 بالا)

همچنین مطمئن شوید که وب سرور در حال اجرا است:

$ ps -ef | grep lighttpd

برای تأیید خوب بودن PHP ، یک فایل تست php ایجاد کنید:

$ sudo nano /var/www/html/phpinfo.php

سپس به آدرس https://192.168.1.108/phpinfo.php بروید

شما باید صفحه ای مانند شکل 2 بالا را مشاهده کنید

اگر خطا یا صفحه خالی مشاهده کردید ، خطاها را بررسی کنید

$ sudo cat /var/log/lighttpd/error.log

باز هم ، اجرای مجدد install.sh ممکن است وابستگی های از دست رفته را برطرف کند.

مرحله 12: ضمیمه

برای در دسترس قرار دادن یک پایگاه داده بزرگ UPC ، یک تشکر بزرگ به موارد زیر می رود.

Grocery UPC DB را باز کنید

www.grocery.com/open-grocery-database-proje…

DB Data را باز کنید

www.grocery.com/open-grocery-database-proje…

www.upc-search.org/perl/upc-search.pl؟q=84…

با تشکر از EasyUI برای وب ساده CRU GUI

www.jeasyui.com/index.php

توصیه شده: