シェルスクリプト自動起動スイッチ分岐とLEDチカ

Contents

GPIOの制御

自動起動の流れ

ねこっぴ

今回は、ラズパイのautostart からシェルスクリプトを経てPythonプログラムを起動させる方法の話をするにゃ。

ぴぽこ

今回のシェルスクリプト部分はとくに、番長全く初挑戦での試行錯誤だったので間違ってるかもしれません。でも動いてるのでとりあえず情報を共有しますよー!

ねこっぴ

よろしくにゃ!

GPIOピン配置の確認。

ねこっぴ

LEDとスイッチが装着されていること前提にゃよ。

LEDとスイッチとモニター

GPIO23番にLEDGPIO26番にスイッチが装着されている状態を前提としたおはなしになります!

GPIOのピン配置確認

ラズパイの自動起動の確認。

ブログ内のラズパイの説明では ユーザー名「 pi 」を使用しています。(/home/ユーザー名)

ねこっぴ

ラズパイのプログラムの自動起動はどうやるの?(確認してみる) に記事を書いたにゃよ。チェック!
必要ファイルはこっち Barrierを自動起動させる かにゃ。

Barrierの記事の状態

ねこっぴ

キーボード・マウスの共有ソフト Barrierでは上の記述だったけど、
今回はこうするにゃ。

@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
# ↑この3つの自動起動はずすとラズパイが起動しなくなります。

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

#起動タイプB起動用(Switch_ON.py/RasNet)
/home/pi/share/Switch_TypeB.sh

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

#barrier自動起動
#@/usr/bin/barrier

#キーボード配列変更自動起動
#@xmodmap /home/pi/.xmodmap-mymap
ぴぽこ

Barrierの自動起動とキーボード配列変更の自動起動が必要な場合は
頭の#取ってね。

ねこっぴ

/home/pi/share/Switch_TypeB.sh
環境はみなさまの自由でいいと思うにゃ。この場合は
homeフォルダ内のpiフォルダ内に作ったshareフォルダの中に
Switch_TypeB.sh というファイルを起動する、という感じにゃ。

ねこっぴ

piフォルダの中につくったshareフォルダにSwitch_TypeB.shを作る場合は、ファイラー右クリックからNewFileで以下のようにするにゃよ。

ねこっぴ

以下のファイル構成はねこっぴの環境にゃよ。
この作ったSwitch_TypeB.shを右クリック。
プロパティからファイルのパーミッションを変更するにゃ。

ぴぽこ

ダブルクリックで実行できるようになったわ!

ねこっぴ

ダブルクリックで試せるし、自動実行にはこの設定必要ぽいからにゃ。
じゃ中身を書いていこーにゃ!

シェルスクリプトを書く。

ねこっぴ

今回の中身、やりたいことは以下にゃ!

今回の中身
  • スイッチがONの場合は オリジナルのPythonプログラムを起動させる。LEDを2回点灯。
  • スイッチがOFFの場合は X68k RasNet (wikipwdia / 2chSC閲覧) を起動させる
#! /bin/bash

#----------------------------

switch=26
led=23

#----------------------------

sudo echo $led > /sys/class/gpio/unexport
sudo echo $switch > /sys/class/gpio/unexport
sudo echo $led > /sys/class/gpio/export
sudo echo $switch > /sys/class/gpio/export

sleep 1

sudo echo "out" > /sys/class/gpio/gpio$led/direction
sudo echo "in" > /sys/class/gpio/gpio$switch/direction
sudo echo "high" > /sys/class/gpio/gpio$switch/direction 

data=`cat /sys/class/gpio/gpio$switch/value`
cat /sys/class/gpio/gpio$switch/value

if [ $data = "1" ]; then
   echo 'OFF時RasNet'
   /home/pi/RasNet/RasNet-19200
else
   echo 'ON時のプログラム開始'
   python3 /home/pi/share/@Switch_ON/Switch_ON.py

   #LEDを2回光らせる
   sudo echo 1 > /sys/class/gpio/gpio$led/value
   sleep 0.2
   sudo echo 0 > /sys/class/gpio/gpio$led/value
   sleep 0.2
   sudo echo 1 > /sys/class/gpio/gpio$led/value
   sleep 0.2
   sudo echo 0 > /sys/class/gpio/gpio$led/value
fi

sudo echo $led > /sys/class/gpio/unexport
sudo echo $switch > /sys/class/gpio/unexport
ぴぽこ

スイッチのプルアップってなにかしら?

ねこっぴ

プルアップ/プルダウンってスイッチの回路には必要でラズパイ内部のプルアップ抵抗/プルダウン抵抗を使う設定とのこと。
今回のHighの設定は、スイッチOFFの場合に安定して3.3V、ONで0Vで、
こっちの方が安定安心らしいにゃ。

ぴぽこ

なるほど。あとはIFの分岐の RasNetのファイルと、オリジナルのPythonプログラムを用意しなきゃだね。

ねこっぴ

RasNetに関しては、UARTであそぼう!シリーズの最終回で公開するにゃよ。このまま記載しててもファイルがなければスキップされるだけだから大丈夫にゃ。

ぴぽこ

じゃ、オリジナルプログラム部分 Switch_ON.py を作らなきゃだねー!

ねこっぴ

シェルスクリプトからもLEDを光らせてるけど、
せっかく付けたモニターとLEDを、プログラムからカンタンに動かせるテンプレを用意したにゃよ!Switch_ON.py。それでは次回にゃ!



Contents