Оглавление:

Говорящий считыватель штрих-кода Raspberry Pi: 12 шагов
Говорящий считыватель штрих-кода Raspberry Pi: 12 шагов

Видео: Говорящий считыватель штрих-кода Raspberry Pi: 12 шагов

Видео: Говорящий считыватель штрих-кода Raspberry Pi: 12 шагов
Видео: Вебинар RRC AutoID. Актуальные решения Datalogic 2024, Ноябрь
Anonim
Говорящий считыватель штрих-кода Raspberry Pi
Говорящий считыватель штрих-кода Raspberry Pi

Рис.1 Сканер штрих-кода от DX.com

Обзор

Обновление: доступно короткое демонстрационное видео

Моя мама больше не может читать этикетки на продуктах, поэтому я пошел искать решения. Увидев, что считыватели штрих-кода для слепых работают на многие сотни долларов, я захотел увидеть, что можно сделать с помощью Raspberry Pi и USB-считывателя штрих-кода.

Еще одна важная имитация заключалась в том, что это должно работать БЕЗ подключения к Интернету (например, в магазине или в доме друга). Таким образом, база данных и преобразование текста в речь должны были быть автономными.

Я попробовал версию сканера штрих-кода на основе камеры, но освещение и положение камеры вызвали проблемы с надежностью для тех, кто не мог видеть четко. Это также потребовало наличия прицела для настройки и использования приложения. Поэтому я переключился на лазерный считыватель штрих-кода USB, тем более что они теперь доступны по цене менее 30 долларов, а Raspbian Jessie поддерживает их прямо из коробки.

Я также опробовал новый Amazon Dash Wand, но он не говорит отсканированный объект, и для работы требуется подключение к Интернету.

Идея заключалась в том, чтобы отсканировать элемент и заставить Raspberry запросить внутреннюю базу данных кодов UPC, а затем произнести описание продукта с помощью преобразования текста в речь.

Чтобы сделать устройство как можно меньше, я хотел использовать Raspberry Pi Zero. Я также хотел, чтобы устройство работало от батареи.

Чтобы удовлетворить эти требования, потребовались некоторые компромиссы. Поскольку у Zero нет внешнего аудиоразъема, я повторно использовал аудиодизайн из моего проекта «Earthquake Pi», так как он был недорогим (около 6 долларов) и очень маленьким. В качестве альтернативы может быть возможна замена «One Transistor Audio на Pi Zero».

Что касается лазерного сканера штрих-кода, я нашел его на DX.com. Он питается от Raspberry USB и стоит около 25 долларов. (см. Детали ниже)

Шаг 1. ОБНОВЛЕНИЕ

С появлением Raspberry Pi Zero W я собираюсь перейти на него. Здесь все то же самое, за исключением того, что вам нужно настроить Wi-Fi соединение с Pi. Это означает, что вам не понадобится USB-концентратор для Zero для настройки и использования.

Вы можете настроить Wi-Fi, используя:

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

Вы знали?

Если вы устанавливаете Raspbian Jessie на SD-карту с помощью ПК с Windows, вы можете создать на карте два файла для настройки доступа Wi-Fi и SSH, прежде чем загружать его на Raspberry?

Для этого предположим, что ваша SD-карта в настоящее время смонтирована как K: на вашем ПК:

1) Установите последний образ Raspbian Jessie на SD. Для этого проекта должна работать Jessie Lite.

www.raspberrypi.org/downloads/raspbian/

2) С помощью блокнота создайте файл с именем «ssh» и используйте команду «Сохранить как« Все файлы »в K: / ssh.

Файл может содержать что угодно. Важно имя файла. НЕ ДОЛЖЕН быть «ssh.txt» !!!

3) С помощью блокнота создайте файл с именем «wpa_supplicant.conf» со следующим:

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

network = {

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

Используйте «Сохранить как все файлы» в K: / wpa_supplicant.conf Опять же, не позволяйте Блокноте изменить его на «wpa_supplicant.conf.txt» !!

Когда вы загружаете Raspberry в первый раз, Джесси будет искать их и подключаться к вашему Wi-Fi. Однако вам придется искать IP-адрес на своем маршрутизаторе, поскольку он назначается автоматически.

Шаг 2: Список деталей

  • Raspberry Pi Zero (или любой Raspberry Pi, если размер не проблема)
  • USB-лазерный сканер штрих-кода

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

  • Для Raspi Zero добавьте усилитель Adafruit I2S 3 Вт класса D
  • Маленький динамик. (Для Pi 2, 3 используйте внешний усилитель и динамик.)
  • Адаптер USB Micro - USB OTG
  • Аккумулятор 5V 1Amp USB, такой как
  • Кабель USB-микро-USB для аккумуляторного блока.
  • Концентратор USB и Ethernet (по крайней мере, для начальной настройки, не требуется для Zero W или Raspi 2, 3)
  • Программное обеспечение с GITHUB:

Шаг 3. USB-лазерный считыватель штрих-кода

USB лазерный считыватель штрих-кода
USB лазерный считыватель штрих-кода

Лазерные считыватели штрих-кодов более снисходительны в своей способности сканировать этикетку UPC, чем камеры. Они также хорошо работают даже с плохо освещенными или плохо размещенными этикетками.

Вам понадобится микроадаптер USB-USB, чтобы подключить его к Zero.

Ручка и спусковой крючок сканера упрощают использование.

Он также дает обратную связь при успешном сканировании этикетки.

Будущие дела:

В окончательном дизайне я бы обрезал кабель, чтобы укоротить его, и припаял его непосредственно к контактам USB на Zero, чтобы уменьшить размер и вероятность отказа разъема. Zero и батарея будут прикреплены непосредственно к нижней части ручки сканера в корпусе, напечатанном на 3D-принтере.

Шаг 4: База данных UPC

Это наиболее плохо освещенная часть проекта, поскольку для загрузки доступны буквально миллионы кодов UPC и очень мало баз данных с открытым исходным кодом. К сожалению, большинство баз данных UPC довольно дороги и требуют подключения к Интернету.

Мне удалось собрать пару баз данных с открытым исходным кодом (источники в Приложении ниже), но даже с почти 700 000 элементов в нем отсутствует огромное количество.

С этой целью я сделал две вещи; один - сосредоточиться на продуктах, а другой - добавить к Raspberry веб-сервер, чтобы можно было добавлять новые коды UPC вручную, хотя для этого требуется, по крайней мере, подключение к локальной сети.

Будущие дела:

Я бы сделал Zero W «точкой доступа», чтобы вы могли подключаться к нему где угодно и добавлять новые коды UPC.

Шаг 5. Преобразование текста в речь

Я использовал программу преобразования текста в речь под названием «Flite», так как у нее был лучший компромисс между качеством голоса и скоростью преобразования на Zero. Другие звучали немного лучше, но были слишком медленными для преобразования.

Вы также можете ознакомиться с руководством Adafruit:

Обратите внимание, что потребуется немного «тренировки слуха», чтобы привыкнуть к интонации речи, но это не так уж и плохо.

При повторном сканировании того же элемента звук будет повторяться.

Будущее ToDo

Можно добавить разъем для наушников, чтобы пожилым людям было легче слышать голос в шумных местах.

Шаг 6: Питание от аккумулятора

Система может работать от аккумулятора USB на 5 В, например, используемого для подзарядки сотовых телефонов.

Загвоздка в том, что когда вы отсоединяете аккумулятор или аккумулятор умирает, Pi выйдет из строя с вероятностью повреждения SD-диска.

Чтобы решить эту проблему, необходима кнопка, запускающая команду выключения. Я, наверное, буду использовать такой:

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

(Да… еще одно «Будущее ToDo!»)

Шаг 7: Часть I - Добавление звука в Pi Zero

Часть I - Добавление звука в Pi Zero
Часть I - Добавление звука в Pi Zero
Часть I - Добавление звука в Pi Zero
Часть I - Добавление звука в Pi Zero
Часть I - Добавление звука в Pi Zero
Часть I - Добавление звука в Pi Zero

(Пропустите эту часть, если не используете Zero!)

На Pi Zero вам нужно будет добавить внешний звук, поскольку он не является встроенным. Я использовал недорогой «Adafruit I2S 3W Amplifier Breakout MAX98357A».

Для этого требуется настройка с использованием отличного руководства Adafruit по адресу:

Как показано в части руководства по подключению, подключите:

• Vin от усилителя к Raspi Zero Pi 5V • GND усилителя к Raspi Zero Pi GND • DIN от усилителя к Raspi Zero Pi # 21 • Amp BCLK к Raspi Zero Pi # 18 • Amp LRCLK к Raspi Zero Pi # 19

Подключите небольшой динамик к аудиопроводам на плате.

Настройка программного обеспечения Pi Zero Adafruit Audio Также как показано в руководстве по настройке программного обеспечения Adafruit, выполните команду CURL ниже:

$ curl -sS https://raw.githubusercontent.com/adafruit/Raspbe…> | трепать

После перезагрузки проверьте звук с помощью теста динамика:

$ динамик-тест -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" channels 2}} ctl.dmixer {type hw card 0}

3) Перезагрузите Pi.

Попробуйте еще раз Speaker-test. Теперь он должен звучать лучше. После того, как вы завершите руководство по настройке, включая аудио-тесты, звук должен быть готов.

Обратите внимание, что вы можете добавить разъем для наушников для звука, если вы возьмете его в продуктовый магазин или в шумную среду.

Шаг 8: Часть II - Установка программного обеспечения

Предполагается, что у вас уже установлен Raspbian Jessie и вы можете получить доступ к командной строке Linux. Вам не нужна версия Raspbian с графическим интерфейсом, но ее можно использовать.

На данный момент вам НЕ нужно подключать USB-сканер, если вам нужен USB-порт для Ethernet или клавиатуры / мыши.

Убедитесь, что ваша ОС обновлена:

$ 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 и добавьте следующую строку перед «exit 0»

$ sudo nano /etc/rc.local

fi sudo /var/www/html/upc/bin/run.sh выход 0

После завершения установки выключите Pi, подключите USB-устройство чтения штрих-кода и перезапустите.

$ sudo выключение сейчас

Включите его снова, и вы должны услышать короткую речь при запуске.

В таком случае попробуйте отсканировать штрих-код в продуктовом магазине. Если все прошло хорошо, вы должны услышать, как он говорит об элементе (или говорит «Не найдено»). В противном случае обратитесь к руководству по поиску и устранению неисправностей.

Шаг 9: Устранение неполадок

Исправление проблем
Исправление проблем

Если вы не слышите никаких звуков, попробуйте выполнить следующие команды:

1) Убедитесь, что преобразование текста в речь работает:

$ sudo flite -voice awb -t "тестирование"

Если вы получили сообщение об ошибке, убедитесь, что установлен flite:

$ sudo apt install flite

Если вы получаете следующую ошибку, убедитесь, что вы обновили /boot/config.txt и /etc/asound.conf, показанные в разделе «Настройка звука» выше на Raspi Zero’s: audio_open_alsa: не удалось установить количество каналов равным 1. Недопустимый аргумент.

Если вы не получаете ни ошибки, ни звука, убедитесь, что ваш звук Raspberry работает.

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

Вероятные проблемы - это отсутствие пакетов или неправильные разрешения (или ОШИБКИ в коде!). Убедитесь, что ваша ОС обновлена, и снова запустите install.sh.

Надеюсь, вы уже работаете!

Шаг 10: Часть III - Веб-сервер

Часть III - Веб-сервер
Часть III - Веб-сервер

Поскольку существует МИЛЛИОНЫ кодов UPC и наиболее общедоступные (то есть бесплатные) базы данных представляют собой лишь небольшое подмножество кодов, этот проект был сосредоточен на кодах UPC для продуктовых магазинов. Он включает в себя несколько сотен тысяч предметов, но многие, многие не будут найдены.

Если вам нужно добавить или обновить базу данных UPC, доступны две программы; командную строку и веб-браузер. (замените цифры на свой номер позиции UPC)

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

$ sudo./addDB.sh 01234567890 «Моя новинка»

Это добавит запись в базу данных. В противном случае предлагается использовать функцию БД веб-браузера.

Для графического интерфейса веб-сервера вам понадобится IP-адрес вашего raspberry.

Чтобы найти IP-адрес, вы можете использовать:

$ имя хоста -I 192.168.1.108

В браузере ПК перейдите по адресу: https://192.168.1.108/upc/. Вы должны увидеть экран, аналогичный показанному на рисунке 2 выше.

В таком случае вы можете добавлять / обновлять и удалять записи. Перейдите на последнюю страницу с помощью кнопки (‘> |’) «последняя запись», чтобы увидеть свои самые новые записи по мере их добавления в конец базы данных.

БЕЗОПАСНОСТЬ ОБРАТИТЕ ВНИМАНИЕ, что эта веб-служба не защищена (без аутентификации, без SSL), поэтому лучше не раскрывать ее в общедоступном Интернете. (Но поскольку он не настроен как точка доступа Wi-Fi, его можно безопасно носить с собой в магазин.)

Хотя, поскольку на нем нет личных данных, может случиться хуже, если кто-то изменит данные 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 restart

Кроме того, ИЗМЕНИТЕ пароль PI по умолчанию! Всем известно, что по умолчанию стоит pi / raspberry

$ 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.

БД Open Grocery UPC

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

www.jeasyui.com/index.php

Рекомендуемые: