Mục lục:

Raspberry Pi Talking Barcode Reader: 12 bước
Raspberry Pi Talking Barcode Reader: 12 bước

Video: Raspberry Pi Talking Barcode Reader: 12 bước

Video: Raspberry Pi Talking Barcode Reader: 12 bước
Video: Employee Attendance Monitoring System using Face Recognition 2024, Tháng mười một
Anonim
Raspberry Pi Talking Barcode Reader
Raspberry Pi Talking Barcode Reader

Hình 1 Máy quét mã vạch từ DX.com

Tổng quat

Cập nhật: Đã có bản demo video ngắn

Mẹ tôi không thể đọc nhãn trên các mặt hàng tạp hóa nữa, vì vậy tôi đã đi tìm giải pháp. Sau khi nhìn thấy những đầu đọc mã vạch có giá hàng trăm đô la, tôi muốn xem những gì có thể được thực hiện bằng cách sử dụng Raspberry Pi và một đầu đọc mã vạch USB.

Một sự bắt chước quan trọng khác là điều này sẽ hoạt động KHÔNG CÓ kết nối Internet (chẳng hạn như tại cửa hàng hoặc nhà bạn bè). Vì vậy, cơ sở dữ liệu và tính năng chuyển văn bản thành giọng nói phải được độc lập.

Tôi đã thử phiên bản đầu đọc mã vạch dựa trên máy ảnh, nhưng ánh sáng và vị trí máy ảnh gây ra các vấn đề về độ tin cậy cho người nào đó không thể nhìn rõ. Những điều này cũng cần có thị giác để thiết lập và sử dụng ứng dụng. Vì vậy, tôi đã chuyển sang đầu đọc mã vạch USB Laser, đặc biệt là vì chúng hiện có sẵn với giá dưới 30 đô la và Raspbian Jessie hỗ trợ chúng ngay khi xuất xưởng.

Tôi cũng đã dùng thử Amazon Dash Wand mới nhưng nó không nói được mục được quét và nó yêu cầu kết nối Internet để hoạt động.

Ý tưởng là quét một mặt hàng và yêu cầu Raspberry truy vấn cơ sở dữ liệu nội bộ gồm các mã UPC và sau đó đọc mô tả sản phẩm bằng cách sử dụng tính năng chuyển văn bản thành giọng nói.

Để làm cho đơn vị càng nhỏ càng tốt, tôi muốn sử dụng Raspberry Pi Zero. Tôi cũng muốn chạy thiết bị tắt nguồn pin.

Để đáp ứng những yêu cầu này, một số đánh đổi là cần thiết. Vì Zero không có giắc cắm âm thanh bên ngoài nên tôi đã sử dụng lại thiết kế âm thanh từ dự án “Earthquake Pi” của mình vì nó có chi phí thấp (khoảng 6 đô la) và rất nhỏ. Ngoài ra, có thể thay thế "Âm thanh một bóng bán dẫn cho Pi Zero".

Đối với máy quét mã vạch Laser, tôi đã tìm thấy một cái từ DX.com. Nó được tắt nguồn Raspberry USB và có giá khoảng 25 đô la. (xem Các phần bên dưới)

Bước 1: CẬP NHẬT

Với sự xuất hiện của Raspberry Pi Zero W, tôi sẽ chuyển sang nó. Mọi thứ ở đây đều giống nhau, ngoại trừ việc bạn cần thiết lập kết nối WiFi với Pi. Điều này có nghĩa là bạn sẽ không cần bộ chia USB cho Zero để thiết lập và sử dụng.

Bạn có thể thiết lập WiFi bằng:

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

Bạn có biết không?

Nếu bạn cài đặt Raspbian Jessie trên thẻ SD bằng PC Windows, bạn có thể tạo hai tệp trên thẻ để định cấu hình quyền truy cập WiFi và SSH trước khi khởi động nó trên Raspberry không?

Đối với điều này, giả sử thẻ SD của bạn hiện được gắn là K: trên PC của bạn:

1) Cài đặt hình ảnh Raspbian Jessie mới nhất vào SD. Đối với dự án này, Jessie Lite sẽ hoạt động.

www.raspberrypi.org/downloads/raspbian/

2) Với notepad, tạo một tệp chỉ có tên là “ssh” và sử dụng Lưu dưới dạng “Tất cả tệp” vào K: / ssh

Tệp có thể chứa bất cứ thứ gì. Đó là tên tệp quan trọng. KHÔNG ĐƯỢC là “ssh.txt” !!!

3) Với notepad, hãy tạo một tệp có tên “wpa_supplicant.conf” với nội dung sau:

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

mạng = {

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

Sử dụng Save As “All files” thành K: / wpa_supplicant.conf Một lần nữa, đừng để Notepad thay đổi nó thành “wpa_supplicant.conf.txt” !!

Khi bạn khởi động Raspberry lần đầu tiên, Jessie sẽ tìm kiếm những thứ này và kết nối với Wifi của bạn. Tuy nhiên, bạn sẽ phải xem trên Bộ định tuyến của mình để biết địa chỉ IP vì nó được gán tự động.

Bước 2: Danh sách bộ phận

  • Raspberry Pi Zero (hoặc bất kỳ Raspberry Pi nào, nếu kích thước không phải là vấn đề)
  • Máy quét mã vạch Laser USB

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

  • Đối với Raspi Zero, hãy thêm Bộ khuếch đại Adafruit I2S 3W Class Dhttps://www.adafruit.com/products/3006
  • Loa nhỏ. (Đối với Pi 2, 3, hãy sử dụng bộ khuếch đại và loa ngoài.)
  • Bộ chuyển đổi USB Micro sang USB OTG
  • Bộ pin USB 5V 1Amp như trottps: //www.adafruit.com/products/1959
  • Cáp USB sang micro USB cho bộ pin.
  • Trung tâm USB & Ethernet (ít nhất là cho công việc thiết lập ban đầu, không cần thiết cho Zero W hoặc Raspi 2, 3)
  • Phần mềm từ GITHUB:

Bước 3: Đầu đọc mã vạch laser USB

Đầu đọc mã vạch laser USB
Đầu đọc mã vạch laser USB

Máy đọc mã vạch laser dễ dàng hơn trong khả năng quét nhãn UPC so với máy ảnh. Chúng cũng hoạt động tốt ngay cả trong các nhãn kém ánh sáng hoặc được đặt kém.

Bạn sẽ cần bộ chuyển đổi micro USB sang USB để cắm nó vào Zero.

Tay nắm và kích hoạt của máy quét giúp bạn dễ dàng sử dụng.

Nó cũng đưa ra phản hồi khi quét thành công một nhãn.

Việc cần làm trong tương lai:

Trong thiết kế cuối cùng, tôi sẽ cắt cáp để rút ngắn nó và hàn trực tiếp vào các chân USB trên Zero để giảm kích thước và khả năng bị hỏng đầu nối. Zero và pin sẽ được gắn trực tiếp vào dưới cùng của tay cầm máy quét trong một hộp được in 3D.

Bước 4: Cơ sở dữ liệu UPC

Đây là phần được đề cập kém nhất của dự án, vì thực sự có hàng triệu mã UPC và rất ít cơ sở dữ liệu nguồn mở có sẵn để tải xuống. Thật không may, hầu hết các cơ sở dữ liệu UPC khá đắt và yêu cầu kết nối internet.

Tôi đã có thể đặt một vài cơ sở dữ liệu nguồn mở với nhau (nguồn trong Phụ lục bên dưới), nhưng ngay cả với gần 700.000 mục trong đó, một số lượng lớn vẫn bị thiếu.

Để đạt được điều này, tôi đã làm được hai điều; một là tập trung cụ thể vào các mặt hàng tạp hóa và hai là thêm máy chủ web vào Raspberry để cho phép thêm mã UPC mới theo cách thủ công, tuy nhiên, điều này yêu cầu ít nhất kết nối mạng cục bộ.

Việc cần làm trong tương lai:

Tôi sẽ đặt Zero W thành "điểm phát sóng" để bạn có thể kết nối với nó ở bất kỳ đâu để thêm mã UPC mới.

Bước 5: Chuyển văn bản thành giọng nói

Tôi đã sử dụng chương trình chuyển văn bản thành giọng nói có tên “Flite”, vì nó có sự thỏa hiệp tốt nhất giữa chất lượng giọng nói và tốc độ chuyển đổi trên Zero. Những người khác nghe có vẻ tốt hơn một chút, nhưng quá chậm để chuyển đổi.

Bạn cũng có thể xem hướng dẫn của Adafruit:

Lưu ý rằng bạn sẽ mất một chút “luyện tai” để làm quen với cách đọc của giọng nói, nhưng nó không quá tệ.

Quét lại cùng một mục sẽ lặp lại âm thanh.

Việc cần làm trong tương lai

Có thể thêm giắc cắm tai nghe để giúp người cao tuổi nghe giọng dễ dàng hơn ở những nơi ồn ào.

Bước 6: Nguồn pin

Hệ thống có thể được chạy từ pin 5V USB, chẳng hạn như được sử dụng để sạc lại điện thoại di động.

Vấn đề là khi bạn rút phích cắm của pin hoặc pin chết, Pi sẽ bị hỏng và có khả năng là nó làm hỏng ổ SD.

Để giải quyết điều này, cần có một nút chạy lệnh tắt máy. Tôi có thể sẽ sử dụng một cái như thế này:

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

(Có… một "Việc làm trong tương lai!")

Bước 7: Phần I - Thêm âm thanh vào Pi Zero

Phần I - Thêm âm thanh vào Pi Zero
Phần I - Thêm âm thanh vào Pi Zero
Phần I - Thêm âm thanh vào Pi Zero
Phần I - Thêm âm thanh vào Pi Zero
Phần I - Thêm âm thanh vào Pi Zero
Phần I - Thêm âm thanh vào Pi Zero

(Bỏ qua phần này nếu không sử dụng số 0!)

Trên Pi Zero, bạn sẽ cần thêm âm thanh bên ngoài vì nó không được tích hợp sẵn. Tôi đã sử dụng “đột phá về Bộ khuếch đại Adafruit I2S 3W MAX98357A” giá rẻ

Điều này yêu cầu thiết lập bằng cách sử dụng hướng dẫn tuyệt vời của Adafruit tại:

Như được hiển thị trong phần đi dây của hướng dẫn, hãy kết nối:

• Amp Vin đến Raspi Zero Pi 5V • Amp GND đến Raspi Zero Pi GND • Amp DIN đến Raspi Zero Pi # 21 • Amp BCLK đến Raspi Zero Pi # 18 • Amp LRCLK đến Raspi Zero Pi # 19

Kết nối một loa nhỏ với dây dẫn âm thanh trên bo mạch.

Cài đặt phần mềm âm thanh Pi Zero Adafruit Ngoài ra trong hướng dẫn cài đặt phần mềm Adafruit, hãy thực hiện lệnh CURL bên dưới:

$ curl -sS https://raw.githubusercontent.com/adafruit/Raspbe…> | bấu víu

Sau khi khởi động lại, kiểm tra âm thanh bằng loa kiểm tra:

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

Nếu bạn gặp sự cố, hãy quay lại hướng dẫn Adafruit bắt đầu từ phần tổng quan. Bạn có thể cần thực hiện các bước “Cài đặt chi tiết” trong hướng dẫn để xác minh tất cả các tệp đã cập nhật.

Các bước bắt buộc quan trọng cho âm thanh Zero & Max98357: Theo mặc định, âm thanh ALSA chỉ hoạt động ở chế độ Âm thanh nổi trong khi chuyển văn bản thành giọng nói trên Flite là đơn âm. Ngoài ra, âm thanh có "bật" trong đó mỗi khi nó bắt đầu phát.

(Xem:

Bạn phải làm như sau:

1) Nối một dòng vào /boot/config.txt

$ sudo nano /boot/config.txt

dtoverlay = i2s-mmap

2) Thay thế /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 {type hw card 0}

3) Khởi động lại Pi của bạn.

Thử lại bài kiểm tra Loa. Bây giờ, âm thanh sẽ tốt hơn.

Lưu ý rằng bạn có thể muốn thêm giắc cắm tai nghe cho âm thanh nếu bạn mang nó đến cửa hàng tạp hóa hoặc môi trường ồn ào.

Bước 8: Phần II - Cài đặt phần mềm

Điều này giả sử bạn đã cài đặt Raspbian Jessie và có thể truy cập dòng lệnh Linux. Bạn không cần phiên bản GUI của Raspbian, nhưng có thể sử dụng.

Bạn KHÔNG cần cắm máy quét USB vào lúc này, trong trường hợp bạn cần cổng USB cho Ethernet hoặc bàn phím / chuột.

Đảm bảo hệ điều hành của bạn được cập nhật:

$ sudo apt-get cập nhật $ sudo apt-get nâng cấp

Từ dòng lệnh, đi tới thư mục chính của pi và tải xuống kho lưu trữ GITHUB:

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

Điều này sẽ mất một chút thời gian, đặc biệt nếu đây là lần đầu tiên và máy chủ web và PHP cần được cài đặt hoặc cập nhật. Nếu cần, bạn có thể chạy phần mềm này nhiều lần. Ngoài ra, phần mềm này sẽ cài đặt các tệp mã vạch và cơ sở dữ liệu UPC thành: / var / www / html / upc

Tiếp theo, chỉnh sửa /etc/rc.local và thêm dòng sau trước “thoát 0”

$ sudo nano /etc/rc.local

fi sudo /var/www/html/upc/bin/run.sh thoát 0

Sau khi cài đặt xong, hãy tắt Pi của bạn và cắm đầu đọc mã vạch USB và khởi động lại.

$ sudo hiện đang ngừng hoạt động

Hãy sao lưu nó và bạn sẽ nghe thấy một bài phát biểu khởi động ngắn.

Nếu vậy, hãy thử quét mã vạch từ một mặt hàng tạp hóa. Nếu mọi việc suôn sẻ, bạn sẽ nghe thấy nó nói mục đó (hoặc nói “Không tìm thấy”). Nếu không, hãy kiểm tra hướng dẫn khắc phục sự cố tiếp theo.

Bước 9: Khắc phục sự cố

Xử lý sự cố
Xử lý sự cố

Nếu bạn không nghe thấy bất kỳ âm thanh nào, bạn sẽ cần thử các lệnh sau:

1) Xác minh âm thanh chuyển văn bản thành giọng nói đang hoạt động:

$ sudo flite -voice awb -t "đang thử nghiệm"

Nếu bạn gặp lỗi, hãy chắc chắn rằng flite đã được cài đặt:

$ sudo apt cài đặt flite

Nếu bạn gặp lỗi sau, hãy đảm bảo rằng bạn đã cập nhật /boot/config.txt và /etc/asound.conf được hiển thị trong phần Thiết lập âm thanh ở trên trên Raspi Zero’s: audio_open_alsa: không thể đặt số kênh thành 1. Đối số không hợp lệ.

Nếu bạn không gặp lỗi và không có âm thanh, hãy đảm bảo âm thanh Raspberry của bạn đang hoạt động.

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

1) Bạn có thể cần buộc âm thanh ra khỏi giắc cắm âm thanh: (xem hình 1 ở trên)

$ sudo raspi-config -> 7 Tùy chọn nâng cao -> A4 Audio

2) Khi bạn đã xác minh âm thanh và chuyển văn bản thành giọng nói là tốt, hãy kiểm tra trình đọc mã vạch:

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

Bạn sẽ thấy số mã vạch dạng số được hiển thị khi bạn quét mã vạch. (Chương trình thử nghiệm KHÔNG bao gồm đầu ra âm thanh hoặc kết nối cơ sở dữ liệu.)

3) Nếu tất cả những điều này đều tốt, hãy kiểm tra tệp “nohup.out” để biết thông báo lỗi:

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

Các vấn đề có thể là thiếu gói hoặc quyền không hợp lệ (hoặc BUG trong mã!). Đảm bảo hệ điều hành của bạn được cập nhật và chạy lại install.sh một lần nữa.

Hy vọng rằng bạn đang làm việc ngay bây giờ!

Bước 10: Phần III - Máy chủ Web

Phần III - Máy chủ Web
Phần III - Máy chủ Web

Vì có HÀNG TRIỆU mã UPC và cơ sở dữ liệu có sẵn công khai nhất (tức là miễn phí) chỉ là một tập hợp nhỏ các mã, nên dự án này tập trung vào mã UPC cho hàng tạp hóa. Nó bao gồm vài trăm nghìn mục, nhưng rất nhiều sẽ không được tìm thấy.

Nếu bạn cần thêm hoặc cập nhật Cơ sở dữ liệu UPC, có hai chương trình có sẵn; một dòng lệnh và một trình duyệt web. (thay thế các chữ số bằng số mặt hàng UPC của bạn)

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

$ sudo./addDB.sh 01234567890 “Hàng mới của tôi”

Điều này sẽ thêm một bản ghi vào cơ sở dữ liệu. Nếu không, bạn nên sử dụng chức năng DB của trình duyệt web.

Đối với GUI của Máy chủ Web, bạn cần địa chỉ IP của mâm xôi của mình.

Để tìm địa chỉ IP, bạn có thể sử dụng:

$ tên máy chủ-I 192.168.1.108

Từ trình duyệt PC, truy cập: https://192.168.1.108/upc/ Bạn sẽ thấy một màn hình tương tự như trong Hình 2 ở trên.

Nếu vậy, bạn có thể thêm / cập nhật và xóa bản ghi. Điều hướng đến Trang cuối cùng bằng nút (‘> |’) “bản ghi cuối cùng” để xem các bản ghi mới nhất của bạn khi chúng được thêm vào cuối cơ sở dữ liệu.

BẢO MẬT LƯU Ý rằng dịch vụ web này không được bảo mật, (không xác thực, không có SSL), vì vậy tốt nhất đừng để nó lên Internet công cộng. (Nhưng vì nó không được thiết lập làm Điểm truy cập Wi-Fi, nên bạn có thể an toàn khi mang đến cửa hàng.)

Mặc dù vậy, vì không có dữ liệu riêng tư nào trên đó, điều tồi tệ hơn có thể xảy ra là ai đó xử lý dữ liệu UPC.

Bạn cũng có thể giới hạn quyền truy cập vào các địa chỉ IP cụ thể để không người khác có thể truy cập. Chỉ cần thay thế (các) IP ở đây cho những địa chỉ bạn muốn cho phép. Tất cả những người khác sẽ bị chặn truy cập:

$ sudo vi /etc/lighttpd/lighttpd.conf

$ HTTP ["remoteip"] = ~ "127.0.0.1 | 192.168.1.108" {url.access-allow = ("")} $ sudo /etc/init.d/lighttpd khởi động lại

Ngoài ra, hãy THAY ĐỔI mật khẩu PI mặc định! Mọi người đều biết mặc định là pi / raspberry

$ passwd

Bước 11: Khắc phục sự cố máy chủ Web

Khắc phục sự cố Máy chủ Web
Khắc phục sự cố Máy chủ Web
Khắc phục sự cố Máy chủ Web
Khắc phục sự cố Máy chủ Web

Sử dụng trình duyệt của bạn, truy cập địa chỉ IP của Raspberry, như sau:

192.168.1.108/

Bạn sẽ thấy màn hình mặc định từ /var/www/html/index.html (Hình 1 ở trên)

Ngoài ra, hãy chắc chắn rằng máy chủ web đang chạy:

$ ps -ef | grep lighttpd

Để xác minh PHP là tốt, hãy tạo một tệp kiểm tra php:

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

Sau đó, truy cập

Bạn sẽ thấy một màn hình như Hình 2 ở trên

Nếu bạn gặp lỗi hoặc màn hình trống, hãy kiểm tra lỗi trong

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

Một lần nữa, chạy lại install.sh có thể khắc phục các phần phụ thuộc bị thiếu.

Bước 12: Phụ lục

CẢM ƠN LỚN đến phần sau để tạo sẵn một cơ sở dữ liệu UPC lớn.

Mở UPC DB của hàng tạp hóa

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

Mở cơ sở dữ liệu

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

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

Cảm ơn EasyUI cho web CRUD GUI đơn giản

www.jeasyui.com/index.php

Đề xuất: