Raspberry GPIO's Setup

From WLPS Wiki
Revision as of 16:41, 23 November 2020 by Wodie (talk | contribs)
Jump to navigation Jump to search

At this moment only PTT is working, COR is a work in progress

Lets consider we are going to use

GPIO 17 (Pin 11) for COR input

GPIO 27 (Pin 13) for PTT Output

Install wiringpi

sudo apt-get install git-core
sudo git clone https://github.com/WiringPi/WiringPi.git /opt/wiringpi
cd /opt/wiringpi
sudo ./build

Create an initialization file

Create the following file using nano:

sudo nano /usr/local/sbin/Init-GPIO.sh

Add the following code to the file

#!/bin/bash
#script name - Init_GPIO
# COR Input
gpio -g mode 17 in # makes gpio 17 pin 11 on Raspberry pi 2/3 as input
gpio -g mode 17 up # activates pull-up
# PTT pin (Output)
gpio -g mode 27 out # makes gpio 27 pin 13 as output
gpio -g write 27 0 # Default to 0/Off

After making your changes type <CTRL> + <X> and then type <Y> followed by <Enter>. You will be back to the previous menu and choose <Back>.

Create the COR monitoring script

Create the following file using nano:

sudo nano /usr/local/sbin/COR-wfi.sh
#!/bin/bash
gpio -g mode 17 in
gpio -g mode 17 up
while [ 1=1 ]
do
  # wait int pin to go low
  gpio -g wfi 17 both
    COR=$(gpio -g read 17)
    if [ "$COR" = "0" ]; then
      gpio -g write 27 1
      echo COR GPIO low/closed
    else
      gpio -g write 27 0
      echo COR GPIO high/open
    fi
done

After making your changes type <CTRL> + <X> and then type <Y> followed by <Enter>. You will be back to the previous menu and choose <Back>.

Create Event files

now create the following file using nano:

sudo nano /usr/local/sbin/PTT-GPIO-high.sh

Add the following lines to the file, in this example I am using GPIO 27 which is assigned to pin 13 on a Raspberry Pi Model 2/3.

#!/bin/bash
gpio -g write 27 1

After making your changes type <CTRL> + <X> and then type <Y> followed by <Enter>. You will be back to the previous menu and choose <Back>.

Next create the following file using nano:

sudo nano /usr/local/sbin/PTT-GPIO-low.sh

Add the following lines to the file, in this example I am using GPIO 27 which is assigned to pin 13 on a Raspberry Pi Model 2/3.

#!/bin/bash
gpio -g write 27 0

After making your changes type <CTRL> + <X> and then type <Y> followed by <Enter>. You will be back to the previous menu and choose <Back>.

Make the Init-GPIO and COR-wfi.sh scripts run at startup

you have to add a line to the rc.local file.

sudo nano /etc/rc.local

Before the exit 0 line you have to add:

# For AllStarLink
/usr/local/sbin/Init-GPIO.sh
/usr/local/sbin/COR-wfi.sh

After making your changes type <CTRL> + <X> and then type <Y> followed by <Enter>. You will be back to the previous menu and choose <Back>.

Set permissions to execute scripts

cd /usr/local/sbin
sudo chmod +x Init-GPIO.sh
sudo chmod +x COR-wfi.sh
sudo chmod +x PTT-GPIO-high.sh
sudo chmod +x PTT-GPIO-low.sh

Test GPIO pins

You can test PTT output by manually setting High or Low the PTT pin.

High:

sudo /usr/local/sbin/PTT-GPIO-high.sh

Low:

sudo /usr/local/sbin/PTT-GPIO-low.sh

Edit rpt.conf file

Now use nano to edit your rpt.conf file:

sudo nano /etc/asterisk/rpt.conf

On your node number stanza, i.e. [12345] add the following line:

events=events12345;

Then at the end of the file add the following stanza:

[events12345]
sudo /usr/local/sbin/PTT-GPIO-high.sh = S|T|RPT_TXKEYED;
sudo /usr/local/sbin/PTT-GPIO-low.sh = S|F|RPT_TXKEYED;

After making your changes type <CTRL> + <X> and then type <Y> followed by <Enter>. You will be back to the previous menu and choose <Back>.