جدول المحتويات:

قارئ باركود Raspberry Pi Talking: 12 خطوة
قارئ باركود Raspberry Pi Talking: 12 خطوة

فيديو: قارئ باركود Raspberry Pi Talking: 12 خطوة

فيديو: قارئ باركود Raspberry Pi Talking: 12 خطوة
فيديو: Коды в массы! Обзор GROW GM66 - модуль чтения штрих и QR кодов. Для Arduino и STM32. 2024, شهر نوفمبر
Anonim
قارئ الباركود الناطق Raspberry Pi
قارئ الباركود الناطق Raspberry Pi

ماسح الباركود التين 1 من DX.com

ملخص

تحديث: عرض فيديو قصير متاح

لم تعد أمي قادرة على قراءة الملصقات على مواد البقالة بعد الآن ، لذلك بحثت عن حلول. بعد أن رأيت أن قارئات الكود الشريطي للمكفوفين تعمل بمئات الدولارات ، أردت أن أرى ما يمكن فعله باستخدام Raspberry Pi وقارئ USB Barcode.

كان التقليد الرئيسي الآخر هو أن هذا يجب أن يعمل بدون اتصال بالإنترنت (مثل متجر أو منزل صديق). لذلك يجب أن تكون قاعدة البيانات وتحويل النص إلى كلام قائمة بذاتها.

لقد جربت إصدارًا قائمًا على الكاميرا من قارئ الرمز الشريطي ، لكن الإضاءة وموضع الكاميرا تسببا في حدوث مشكلات في الموثوقية لشخص غير قادر على الرؤية بوضوح. تتطلب هذه أيضًا البصر لإعداد التطبيق واستخدامه. لذلك قمت بالتبديل إلى قارئ الرمز الشريطي USB Laser ، خاصة وأنهم متاحون الآن بأقل من 30 دولارًا وأن Raspbian Jessie يدعمهم فور إخراجهم من الصندوق.

لقد جربت أيضًا Amazon Dash Wand الجديدة ولكنها لا تتحدث عن العنصر الممسوح ضوئيًا وتتطلب اتصالاً بالإنترنت للعمل.

كانت الفكرة هي مسح عنصر ضوئيًا والحصول على استعلام Raspberry بقاعدة بيانات داخلية لرموز UPC ثم نطق وصف المنتج باستخدام تحويل النص إلى كلام.

من أجل جعل الوحدة صغيرة قدر الإمكان ، أردت استخدام Raspberry Pi Zero. كنت أرغب أيضًا في تشغيل الوحدة من طاقة البطارية أيضًا.

لتلبية هذه المتطلبات كانت بعض المفاضلات ضرورية. نظرًا لأن Zero لا يحتوي على مقبس صوت خارجي ، فقد أعدت استخدام تصميم الصوت من مشروع "Earthquake Pi" لأنه كان منخفض التكلفة (حوالي 6 دولارات) وصغير جدًا. بالتناوب ، قد يكون من الممكن استبدال "One Transistor Audio for Pi Zero".

بالنسبة إلى الماسح الضوئي للرموز الشريطية بالليزر ، وجدت واحدًا من DX.com. يتم تشغيله من Raspberry USB ويكلف حوالي 25 دولارًا. (انظر الأجزاء أدناه)

الخطوة 1: التحديث

مع وصول Raspberry Pi Zero W ، سأنتقل إليه. كل شيء هنا هو نفسه ، باستثناء أنك تحتاج إلى إعداد اتصال WiFi بـ Pi. هذا يعني أنك لن تحتاج إلى موزع USB لـ Zero للإعداد والاستخدام.

يمكنك إعداد WiFi باستخدام:

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

هل كنت تعلم؟

إذا قمت بتثبيت Raspbian Jessie على بطاقة SD باستخدام جهاز كمبيوتر يعمل بنظام Windows ، فيمكنك إنشاء ملفين على البطاقة لتهيئة وصول WiFi و SSH قبل تشغيله على Raspberry؟

لهذا ، افترض أن بطاقة SD الخاصة بك مثبتة حاليًا كـ K: على جهاز الكمبيوتر الخاص بك:

1) قم بتثبيت أحدث صورة Raspbian Jessie على بطاقة SD. بالنسبة لهذا المشروع ، يجب أن تعمل Jessie Lite.

www.raspberrypi.org/downloads/raspbian/

2) باستخدام برنامج notepad ، قم بإنشاء ملف يسمى فقط "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}

استخدم حفظ باسم "جميع الملفات" إلى K: / wpa_supplicant.conf مرة أخرى ، لا تدع Notepad يغيره إلى "wpa_supplicant.conf.txt" !!

عندما تقوم بتشغيل Raspberry في المرة الأولى ، ستبحث Jessie عن هؤلاء وتتصل بشبكة Wifi الخاصة بك. سيتعين عليك البحث في جهاز التوجيه الخاص بك عن عنوان IP ، على الرغم من ذلك ، منذ تعيينه تلقائيًا.

الخطوة 2: قائمة الأجزاء

  • Raspberry Pi Zero (أو أي Raspberry Pi ، إذا لم يكن الحجم مشكلة)
  • ماسح ضوئي للكود الشريطي بالليزر USB

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

  • بالنسبة إلى Raspi Zero ، أضف مضخم Adafruit I2S 3W Class D
  • مكبر صوت صغير. (بالنسبة إلى Pi 2 ، 3 ، استخدم مكبر الصوت ومكبر الصوت الخارجي.)
  • محول USB Micro إلى USB OTG
  • حزمة بطارية USB 5V 1Amp مثل الرماد
  • USB إلى كابل micro USB لحزمة البطارية.
  • محور USB و Ethernet (على الأقل لعمل الإعداد الأولي ، غير مطلوب لـ Zero W أو Raspi 2 ، 3)
  • برنامج من GITHUB:

الخطوة 3: قارئ الكود الشريطي بالليزر USB

قارئ الكود الشريطي بالليزر USB
قارئ الكود الشريطي بالليزر USB

تعد أجهزة قراءة الرموز الشريطية بالليزر أكثر تسامحًا في قدرتها على مسح ملصق UPC مقارنةً بالكاميرات. كما أنها تعمل بشكل جيد حتى في الملصقات ذات الإضاءة الخافتة أو ذات الوضع السيئ.

ستحتاج إلى محول USB إلى USB الصغير لتوصيله في Zero.

قبضة اليد ومشغل الماسح الضوئي تجعله سهل الاستخدام.

كما أنه يقدم ملاحظات عندما يمسح أحد الملصقات بنجاح.

المهام المستقبلية:

في التصميم النهائي ، كنت أقوم بقطع الكبل لتقصيره واللحام مباشرة إلى دبابيس USB على Zero لتقليل حجم واحتمال فشل الموصل. سيتم توصيل الصفر والبطارية مباشرة بأسفل مقبض الماسح الضوئي في علبة مطبوعة ثلاثية الأبعاد.

الخطوة 4: قاعدة بيانات UPC

هذا هو الجزء الأكثر سوءًا من المشروع ، حيث توجد الملايين من رموز UPC وعدد قليل جدًا من قواعد البيانات مفتوحة المصدر المتاحة للتنزيل. لسوء الحظ ، فإن معظم قواعد بيانات UPC باهظة الثمن وتتطلب اتصالاً بالإنترنت.

تمكنت من تجميع قاعدتي بيانات مفتوحتين المصدر معًا (المصادر في الملحق أدناه) ، ولكن حتى مع وجود ما يقرب من 700000 عنصر فيها ، هناك عدد كبير مفقود.

تحقيقا لهذه الغاية ، لقد فعلت شيئين. أحدهما هو التركيز على عناصر البقالة على وجه التحديد والآخر هو إضافة خادم ويب إلى Raspberry للسماح بإضافة رموز UPC جديدة يدويًا ، على الرغم من أن هذا يتطلب اتصالاً بالشبكة المحلية على الأقل.

المهام المستقبلية:

أود أن أجعل Zero W "نقطة ساخنة" بحيث يمكنك الاتصال بها في أي مكان لإضافة رموز UPC جديدة.

الخطوة 5: تحويل النص إلى كلام

لقد استخدمت برنامج تحويل النص إلى كلام المسمى "Flite" ، حيث كان لديه أفضل حل وسط بين جودة الصوت وسرعة التحويل على Zero. بدا البعض الآخر أفضل قليلاً ، لكنهم كانوا بطيئين جدًا في التحويل.

يمكنك أيضًا التحقق من البرنامج التعليمي لـ Adafruit: https://learn.adafruit.com/speech-synthesis-on-the …

لاحظ أن الأمر سيستغرق القليل من "تدريب الأذن" لتعتاد على انعطاف الكلام ، لكنه ليس سيئًا للغاية.

سيؤدي مسح نفس العنصر مرة أخرى إلى تكرار الصوت.

المهام المستقبلية

ربما تضيف مقبس سماعة رأس لتسهيل سماع كبار السن للصوت في الأماكن الصاخبة.

الخطوة 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 • Amp BCLK إلى Raspi Zero Pi # 18 • Amp 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 Audio: بشكل افتراضي ، يعمل صوت ALSA فقط في وضع الاستريو بينما يكون Flite text-to-speech أحادي. أيضًا ، يحتوي الصوت على "ملوثات العضوية الثابتة" في كل مرة يبدأ فيها اللعب.

(انظر:

يجب عليك القيام بما يلي:

1) قم بإلحاق سطر بـ /boot/config.txt

sudo نانو $ /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" channels 2}} ctl.dmixer {اكتب hw card 0}

3) أعد تشغيل Pi الخاص بك.

حاول اختبار مكبر الصوت مرة أخرى. يجب أن يبدو أفضل الآن بمجرد إكمال البرنامج التعليمي للإعداد بما في ذلك اختبارات الصوت ، يجب أن يكون الصوت جاهزًا.

لاحظ أنك قد ترغب في إضافة مقبس سماعة أذن للصوت ، إذا كنت تأخذ هذا إلى متجر بقالة أو بيئة صاخبة.

الخطوة 8: الجزء الثاني - تثبيت البرنامج

هذا يفترض أن لديك بالفعل Raspbian Jessie مثبتًا ويمكنك الوصول إلى سطر أوامر Linux. لا تحتاج إلى إصدار واجهة المستخدم الرسومية من Raspbian ، ولكن لا بأس من استخدامها.

لا تحتاج إلى توصيل الماسح الضوئي USB في الوقت الحالي ، في حال كنت بحاجة إلى منفذ USB لشبكة إيثرنت أو لوحة المفاتيح / الماوس.

تأكد من تحديث نظام التشغيل لديك:

sudo apt-get update $ sudo apt-get Upgrade

من سطر الأوامر ، انتقل إلى دليل pi الرئيسي وقم بتنزيل مستودع GITHUB:

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

سيستغرق ذلك بعض الوقت ، خاصة إذا كانت هذه هي المرة الأولى ويحتاج خادم الويب و 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 Barcode وأعد التشغيل.

sudo الاغلاق الآن

قم بتشغيله احتياطيًا ويجب أن تسمع خطابًا قصيرًا حول بدء التشغيل.

إذا كان الأمر كذلك ، فحاول مسح رمز شريطي ضوئيًا من أحد منتجات البقالة. إذا سارت الأمور على ما يرام ، يجب أن تسمعها تتحدث عن العنصر (أو تتحدث "غير موجود"). خلاف ذلك ، تحقق من دليل استكشاف الأخطاء وإصلاحها بعد ذلك.

الخطوة 9: استكشاف الأخطاء وإصلاحها

استكشاف الأخطاء وإصلاحها
استكشاف الأخطاء وإصلاحها

إذا لم تسمع أي أصوات ، فستحتاج إلى تجربة الأوامر التالية:

1) تحقق من عمل صوت تحويل النص إلى كلام:

$ sudo flite -voice awb -t "اختبار"

إذا تلقيت خطأ ، فتأكد من تثبيت flite:

sudo apt install flite

إذا تلقيت الخطأ التالي ، فتأكد من تحديث /boot/config.txt و /etc/asound.conf الموضحين في قسم إعداد الصوت أعلاه في Raspi Zero: audio_open_alsa: فشل في تعيين عدد القنوات على 1. وسيطة غير صالحة.

إذا لم تحصل على خطأ ولا صوت ، فتأكد من أن صوت Raspberry يعمل.

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

1) قد تحتاج إلى إخراج الصوت من مقبس الصوت: (انظر الشكل 1 أعلاه)

sudo raspi-config $ -> 7 خيارات متقدمة -> صوت A4

2) بمجرد التحقق من جودة الصوت وتحويل النص إلى كلام ، تحقق من قارئ الباركود:

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

يجب أن ترى رقمًا رقميًا للرمز الشريطي معروضًا عند مسح رمز شريطي ضوئيًا. (لا يتضمن برنامج الاختبار إخراج الصوت أو اتصالات قاعدة البيانات.)

3) إذا كان كل هذا جيدًا ، فتحقق من ملف "nohup.out" بحثًا عن رسائل الخطأ:

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

من المحتمل أن تكون المشكلات عبارة عن حزم مفقودة أو أذونات سيئة (أو أخطاء في الكود!). تأكد من تحديث نظام التشغيل لديك وأعد تشغيل install.sh مرة أخرى.

نأمل أنك تعمل الآن!

الخطوة 10: الجزء الثالث - خادم الويب

الجزء الثالث - خادم الويب
الجزء الثالث - خادم الويب

نظرًا لوجود الملايين من رموز UPC ومعظم قواعد البيانات المتاحة للجمهور (أي المجانية) ليست سوى مجموعة فرعية صغيرة من الرموز ، فقد ركز هذا المشروع على رموز UPC لمحلات البقالة. وهي تتضمن مئات الآلاف من العناصر ، ولكن لن يتم العثور على الكثير والكثير منها.

إذا كنت بحاجة إلى إضافة أو تحديث قاعدة بيانات UPC ، فهناك برنامجان متاحان ؛ سطر أوامر واحد ومتصفح ويب واحد. (استبدل الأرقام برقم عنصر UPC الخاص بك)

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

$ sudo./addDB.sh 01234567890 "عنصري الجديد"

سيؤدي هذا إلى إضافة سجل إلى قاعدة البيانات. خلاف ذلك ، يُقترح استخدام وظيفة DB في متصفح الويب.

بالنسبة إلى واجهة المستخدم الرسومية لخادم الويب ، فأنت بحاجة إلى عنوان IP الخاص بتوت العليق.

للعثور على عنوان IP ، يمكنك استخدام:

اسم المضيف $ -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 الافتراضية! يعلم الجميع أن الافتراضي هو باي / التوت

$ passwd

الخطوة 11: استكشاف أخطاء خادم الويب وإصلاحها

استكشاف أخطاء خادم الويب وإصلاحها
استكشاف أخطاء خادم الويب وإصلاحها
استكشاف أخطاء خادم الويب وإصلاحها
استكشاف أخطاء خادم الويب وإصلاحها

باستخدام متصفحك ، انتقل إلى عنوان IP الخاص بـ Raspberry ، مثل هذا:

192.168.1.108/

يجب أن تشاهد الشاشة الافتراضية من /var/www/html/index.html (الشكل 1 أعلاه)

تأكد أيضًا من تشغيل خادم الويب:

$ ps -ef | grep lighttpd

للتحقق من أن PHP جيدة ، قم بإنشاء ملف اختبار php:

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

ثم انتقل إلى

يجب أن تشاهد شاشة مثل الشكل 2 أعلاه

إذا حصلت على أخطاء أو شاشات فارغة ، فتحقق من وجود أخطاء في

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

مرة أخرى ، قد تؤدي إعادة تشغيل install.sh إلى إصلاح التبعيات المفقودة.

الخطوة 12: الملحق

شكر كبير لما يلي لإتاحة قاعدة بيانات UPC كبيرة.

افتح بقالة UPC DB

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

افتح قاعدة البيانات

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

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

بفضل EasyUI لواجهة الويب البسيطة CRUD GUI

www.jeasyui.com/index.php

موصى به: