Files
dog-trainer/README.md
2023-12-30 13:23:13 +01:00

4.1 KiB

Dog Trainer

A device that allows dogs to speak. Click on the picture to see the video with the dog-trainer in action

dog-trainer-photo

Hardware

  • Raspberry pi (any version with an USB port) e.g. Raspberry Pi Model B+

  • Buttons connected to the Raspberry pi GPIO as shown in the schema to debounce noisy contacts
    dog-trainer-schema

  • USB speaker with a microphone e.g. Jabra Speak 410 or Codec Zero

  • for the Codec Zero make follwoing changes

sudo nano /boot/config.txt
#dtparam=audio=on
dtoverlay=rpi-codeczero

  • microSD card 8GB

  • USB power supply 5V 500mA

Operating system

Install Raspberry Pi Imager into your notebook. Launch it and choose Raspberry Pi OS Lite to write into the microSD card

Power on the Raspberry Pi and finish the installation process. Log into its console using either:

  • ethernet/wifi from your notebook: ssh pi@raspberrypi
  • connected keyboard and monitor
  • serial port

Prerequisites

Once you are logged into the Raspberry pi console update your system

sudo apt update
sudo apt upgrade

Install git. It will be used to download the dog-trainer

sudo apt install -y git

Recordings must be edited a little bit therefore some audio processing tool is needed. Install ffmpeg which will do the job

sudo apt install -y ffmpeg

How to install

Clone the dog-trainer source code into your home directory

cd
git clone https://gitea.virtonline.eu/2HoursProject/dog-trainer.git --depth 1

Go into the newly created directory

cd ~/dog-trainer

Configuration

Check your Raspberry pi board pin layout and make sure your buttons GPIOs match PINS = [17, 22, 27] from dog-trainer.py

pinout

Try using default audio device for playback and recording. Edit dog-trainer.py and activate PLAY_DEVICE="default" and REC_DEVICE="default"

nano dog-trainer.py

Skip to the next section Run it!. If either playback or recording does not work check your sound cards

aplay -L | grep ^hw:CARD=
arecord -L | grep ^hw:CARD=

Put your sound device name "hw:Zero" or "hw:USB" into the ALSA config file

nano .asoundrc

Install the ALSA config file

mv .asoundrc ~/

Run it!

Just run

python3 dog-trainer.py

Pres Ctrl+c to exit

Make it a service to automaticaly start and run in the backgroud

If your $HOME directory is other then /home/pi then modify the systemd service file

sed -i "s#/home/pi#$HOME#g" dog-trainer.service

If your username and group is other then pi and pi then also run

sed -i "s#User=pi#User=$USER#" dog-trainer.service
sed -i "s#Group=pi#Group=$(id -gn)#" dog-trainer.service

sed -i "s#User=pi#User=$USER#" sound-init.service
sed -i "s#Group=pi#Group=$(id -gn)#" sound-init.service

Install the systemd service files

sudo mv dog-trainer.service /etc/systemd/system/
sudo mv sound-init.service /etc/systemd/system/

Reload systemd manager configuration

sudo systemctl daemon-reload

Enable the dog-trainer service at boot time and also run it

sudo systemctl enable --now dog-trainer

If it does not work check logs

journalctl -f -u dog-trainer

Set volume for playback and recording

Launch soundcard mixer

alsamixer

Press F6 to select a soundcard. Find your USB sound device in the list e.g. Jabra Speak 410 USB. Press F4 and use up/down arrow keys to set recording volume and repeat also for the playback (F3). Make sure it is not muted. Press (m) to toggle mute. Press ESC to exit.

To preserve audio setting after the boot run

sudo alsactl store