Skip to content

chenphilip888/rpi3b-python-i2samp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Python i2s experiments on Raspberry PI 3B board.

The following 10 tests are included: ( see below for tests summary )
1. speech_recog.py
2. sound_recorder.py
3. i2s_wavefile.py
4. i2s_lcd.py
5. i2s_servo.py
6. piano.py
7. littlestar.py
8. playmidi.py
9. kusc_fmradio.sh
10. youtube_audio.sh

-------------------------------------------------------------------

To compile and flash to sd card:

cd rpi3b-python-i2samp
Download OS:
wget https://downloads.raspberrypi.org/raspios_lite_armhf/images/raspios_lite_armhf-2021-01-12/2021-01-11-raspios-buster-armhf-lite.zip
unzip 2021-01-11-raspios-buster-armhf-lite.zip
Use balenaEtcher to burn img to sd card.
eject sd card.
Plugin sd card to PC.
To enable I2S add dtparam=i2s=on in /boot/config.txt
sudo cp config.txt /media/$USER/boot
sync
sudo umount /media/$USER/boot
eject sd card.
Plugin the sd card to Raspberry PI 3B board.
Connect gpio Pin 8 to serial USB cable TX.
Connect gpio pin 10 to serial USB cable RX. 
Connect gpio pin 39 to serial USB cable ground. 
Type "script ~/outputfile.txt" on PC.
Plugin serial USB cable to PC.
Type "sudo screen /dev/ttyUSB0 115200" on PC.
Power on Raspberry PI 3B board.
It should prompt login message.
user pi
password raspberry
sudo raspi-config
set password, wifi, locale, timezone, peripheral, enable ssh etc.
reboot
Power off Raspberry PI 3B board. ( console output garbage due to bluetooth, need to use ssh )
Unplug serial USB cable from PC.
Type "exit" on PC. 

Power on Raspberry PI 3B board.
ssh pi@192.168.86.xxx
sudo ifconfig
sudo apt-get update
sudo apt-get upgrade
sync
sudo reboot
sudo apt-get install python-dev python-pip python-setuptools python3-dev python3-pip python3-setuptools dnsutils apache2 vsftpd ftp pavucontrol libportaudio0 libportaudio2 libportaudiocpp0 portaudio19-dev libasound2-dev flac python-smbus ffmpeg mpg123 libffi-dev python-pygame vlc
sync
Because pulseaudio cannot work with i2smic we need to remove pulseaudio.
sudo apt-get remove --purge pulseaudio
sudo apt autoremove
\rm -rf ~/.config
sudo pip install pyaudio SpeechRecognition sounddevice soundfile numpy youtube_dl
vi /etc/asound.conf
sudo \rm /etc/alsa/conf.d/*
sudo vi /usr/share/alsa/alsa.conf  ( commented out pcm.cards and 21 lines below it )
sudo pip3 install --upgrade adafruit-python-shell
curl -sS https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/i2samp.sh | bash ( enter y N y y )
reboot
sudo vi /boot/config.txt ( delete dtoverlay=hifiberry-dac )
sync
sudo umount /boot
sudo reboot
wget https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/i2smic.py
sudo python3 i2smic.py
lsmod
git clone https://github.com/chenphilip888/rpi3b-python-i2samp.git
sudo cp ~/rpi3b-python-i2samp/asound.conf /etc/asound.conf
sudo /etc/init.d/alsa-utils restart

sudo apt-get install i2c-tools
sudo i2cdetect -y 1

Download gpio library on Raspberry PI 3B board:
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb
gpio -v      ( make sure it's v2.52 or above )
gpio readall
sudo reboot

-------------------------------------------------------------------------

Here are the summary of the tests: 

See https://pi4j.com/1.2/pins/model-3b-rev1.html
These tests used Seeed Grove-LCD RGB Backlight V3.0 JHD1313M2, Analog Servo, Adafruit SPH0645 I2S Mic and Adafruit MAX98357 I2S Class-D Mono Amp.
To use Adafruit SPH0645 I2S Mic see https://learn.adafruit.com/adafruit-i2s-mems-microphone-breakout/overview
To use Adafruit MAX98357 I2S Class-D Mono Amp see https://learn.adafruit.com/adafruit-max98357-i2s-class-d-mono-amp

I2S_Mic:
   Connect gpio pin 35 to LRCL.
   Connect gpio pin 38 to DOUT.
   Connect gpio pin 12 to BCLK.
   Connect gpio pin 9 to GND.
   Connect gpio pin 1 to 3V.
I2S_AMP:
   Connect gpio pin 35 to LRC.
   Connect gpio pin 40 to DIN.
   Connect gpio pin 12 to BCLK.
   Connect gpio pin 9 to GND.
   Connect gpio pin 2 to Vin.
   Connect 8 ohm speaker to screw-terminal.
I2C_LCD:
   Connect gpio pin 3 to lcd display SDA.
   Connect gpio pin 5 to lcd display SCL.
   Connect gpio pin 2 to lcd display 5V.
   Connect gpio pin 6 to lcd display ground.
Servo:
   Connect gpio pin 33 to servo control.
   Connect gpio pin 4 to servo 5V.
   Connect gpio pin 14 to servo ground.

1. speech_recog.py
   When prompt "say something",
   speak to Microphone for 3 seconds. It will print what you said.

2. sound_recorder.py
   When prompt "recording...",
   speak to Microphone for 3 seconds. It will save sound to 'file.wav'.

3. i2s_wavefile.py
   It will read 'file.wav' and print what you said in 'file.wav'.
   Then you can type "aplay file.wav" to hear what you said.

4. i2s_lcd.py
   When prompt "say stop to exit",
   speak to Microphone for colors of your choice. It will display colors of your choice to LCD background color.

5. i2s_servo.py
   When prompt "say stop to exit",
   you can command servo to turn right, turn left or stay in the middle by speaking to Microphone.

6. piano.py
   Push keyboard 'z'-'.', 'a'-'l', 'q'-'o', '1'-'9', esc to quit.
   
7. littlestar.py
   Play little star song.
   
8. playmidi.py
   Play midi song.
   
9. kusc_fmradio.sh
   Play real time KUSC FM Radio station.
   
10. youtube_audio.sh
    Play youtube audio.

-----------------------------------------------------------------------------

Here are the procedure to test the above 10 tests:
I2S_Mic:
   Connect gpio pin 35 to LRCL.
   Connect gpio pin 38 to DOUT.
   Connect gpio pin 12 to BCLK.
   Connect gpio pin 9 to GND.
   Connect gpio pin 1 to 3V.
I2S_AMP:
   Connect gpio pin 35 to LRC.
   Connect gpio pin 40 to DIN.
   Connect gpio pin 12 to BCLK.
   Connect gpio pin 9 to GND.
   Connect gpio pin 2 to Vin.
   Connect 8 ohm speaker to screw-terminal.

To clean alsamixer settings:
sudo \rm /var/lib/alsa/asound.state
sudo chmod -x /usr/sbin/alsactl
sudo reboot
cat /proc/asound/cards
arecord -l
aplay -l
sudo chmod +x /usr/sbin/alsactl

repeate following steps twice:
   arecord -D dmic_sv -c2 -r 44100 -f S32_LE -t wav -V mono -v file.wav
   alsamixer  ( adjust PCM volume to 86 % and Capture volume to 75%, then press F5 )
   sudo /etc/init.d/alsa-utils restart
   arecord -c2 -r 44100 -f S32_LE -t wav -V mono -v file.wav
   aplay file.wav
   sudo reboot

arecord -c2 -r 44100 -f S32_LE file.wav
aplay file.wav
aplay /usr/share/sounds/alsa/Front_Center.wav
mpg123 http://ice1.somafm.com/u80s-128-mp3

cd ~/rpi3b-python-i2samp
chmod 755 *.py *.sh
./speech_recog.py
./sound_recorder.py
./i2s_wavefile.py
./i2s_lcd.py
./i2s_servo.py
sudo ./piano.py
sudo ./littlestar.py
./playmidi.py
./kusc_fmradio.sh
./youtube_audio.sh

When done all tests:
sudo shutdown -h now
Power off Raspberry PI 3B board.

------------------------------------------------------------------------------

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published