Оглавление:
- Шаг 1. ОБНОВЛЕНИЕ
- Шаг 2: Список деталей
- Шаг 3. USB-лазерный считыватель штрих-кода
- Шаг 4: База данных UPC
- Шаг 5. Преобразование текста в речь
- Шаг 6: Питание от аккумулятора
- Шаг 7: Часть I - Добавление звука в Pi Zero
- Шаг 8: Часть II - Установка программного обеспечения
- Шаг 9: Устранение неполадок
- Шаг 10: Часть III - Веб-сервер
- Шаг 11: Устранение неполадок веб-сервера
- Шаг 12: Приложение
Видео: Говорящий считыватель штрих-кода Raspberry Pi: 12 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
Рис.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-лазерный считыватель штрих-кода
Лазерные считыватели штрих-кодов более снисходительны в своей способности сканировать этикетку 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
(Пропустите эту часть, если не используете 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 - Веб-сервер
Поскольку существует МИЛЛИОНЫ кодов 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
Рекомендуемые:
Считыватель RFID на базе ESP32 с сенсорным дисплеем: 7 шагов
Считыватель RFID на основе ESP32 с сенсорным дисплеем: в этой небольшой инструкции я покажу, как создать простой считыватель RFID с выходом TFT для настенного монтажа, используя модуль ESP32 DEV KIT C, печатную плату считывателя на основе RC-522 и комплект AZ-Touch ESP. Вы можете использовать этот считыватель для доступа к двери или охранной сигнализации
Считыватель RFID Arduino с TFT-дисплеем: 7 шагов
Считыватель RFID Arduino с TFT-дисплеем: в этой инструкции я покажу вам, как создать красивый RFID-считыватель с TFT-дисплеем и для настенного монтажа. Очень легко создать красивый RFID-считыватель с TFT-выходом для настенного монтажа с Arduino. MKR на ваш выбор и наш Ar
Создайте считыватель объема резервуара менее чем за 30 долларов с помощью ESP32: 5 шагов (с изображениями)
Создайте счетчик объема резервуара менее чем за 30 долларов с помощью ESP32: Интернет вещей принес множество ранее сложных приложений для устройств в дома многих пивоваров и виноделов. Приложения с датчиками уровня десятилетиями использовались на крупных нефтеперерабатывающих заводах, водоочистных установках и в химической
Движущийся и говорящий гигант Lego Hulk MiniFig (масштаб 10: 1): 14 шагов (с изображениями)
Движущийся и говорящий гигант Lego Hulk MiniFig (в масштабе 10: 1): в детстве я всегда играл в лего, но у меня не было никаких «причудливых» лего, только классические кубики лего. Я также большой поклонник кинематографической вселенной Marvel (MCU), и мой любимый персонаж - Халк. Так почему бы не объединить два и не сделать гиганта
Говорящий тостер Тед: 6 шагов (с картинками)
Говорящий тостер Тед: Разговоры с тостером всегда были очень односторонними. А пока познакомьтесь с говорящим тостером Тедом! Ниже представлен обзор содержания: Видео проекта Toaster Electronics Chat / Voice bot Remo.tv Мировое господство