[Raspberry Pi 3] 자신을 위로하는 버튼을 만들어 보았다 (음성 출력 + Line 연계)

■소개



마음이 피곤하지 않습니까? (나는 있다)
그런 때야말로 누군가가 옆에 있기를 원하지 않습니까? (나에게는 없다)


수중에 있는 것은 라즈파이3와 스마트폰...
이것을 사용하여 거친 마음을 위로하고 싶습니다.

■이미지





■ 준비한 것




부품
개수


Raspberry Pi 3 Model B+
1개

브레드보드
1개

점프 와이어 (수컷 - 수컷)
2개

점프 와이어 (수컷 - 여성)
2개

푸시 버튼 스위치
1개

Line이 들어있는 스마트 폰
1개


■푸시버튼측의 구성



푸시 버튼 측은 RaspberryPi의 GPIO 핀에 의한 전기 회로를 이용합니다.
(그렇다고해도, LED나 저항기는 사용하지 않고, 옴의 법칙조차 생각하지 않습니다)

Raspberry GPIO의 3.3V 전압 소스 핀을 출력으로 설정하고 26Pin을 입력으로 설정합니다. 그 사이에 누름버튼 스위치를 마련해, 「누르고 있지 않다 = 차단되어 있는 = 26Pin 입력값 0」 「누르고 있다 = 도통하고 있는 = 26Pin 입력치 1」, 라고 입력 판단합니다.

· Raspberry PI3 GPIO 핀

htps //w w. 등 sp 벨 ry 피. 오 rg / 도쿠 멘들 온 / 토끼 / g 피오 / 레아 D. md

· 회로


・실물


# 적당한 스위치가 없었기 때문에, 도선과 스위치를 테이프로 연결하고 있습니다.

■GPIO측의 구성



Bash에서 gpio 핀의 상태를 쉽게 확인할 수 있습니다.

· gpio 26 핀을 입력으로 사용gpio -g mode 26 in
・gpio 26핀의 상태를 확인→결과가 0이면 차단, 1이면 도통gpio -g read 26
도통시
pi@raspberrypi:~test $ bash gpio -g read 26
1
pi@raspberrypi:

■ 음성 출력 구성



Open JTalk과 aplay를 이용하여 문자열을 읽어 달라고합니다.

①일본어 문자열이 있다
②JTalk가 문자열을 음성 파일화
③aplay가 음성 파일을 재생
④ 스피커에서 소리가 들린다

자세한 것은 이하 기사에서.
· Raspberry Pi3에 일본어로 말해 줄 때까지
· JTalk의 음성 변환과 음성 출력을 쉘로 단번에 한다(라즈파이용)

■Line notify의 구성



Line notify를 이용합니다.
1 라이너로 Line 통지를 할 수 있기 때문에 매우 편리하다고 생각했습니다 (작은 느낌).

①Line에 자신만의 그룹을 작성한다
②Line notify등록 ※액세스 토큰을 입수
③ 자신만의 그룹에 Line notify(Line 공식 계정)를 초대&자동참여
④bash에서 적절한 메시지를 POSTcurl -X POST -H "Authorization: Bearer ACCESS_TOKEN" -F "message=MESSAGE" https://notify-api.line.me/api/notify
이하 기사를 참고.
· 【LINE】 알고 있니? 자신 혼자 그룹 토크의 사용법과 만드는 법
· [초간단] LINE notify 사용해보기
· LINE Notify 간단한 쉘 스크립트로 시도했습니다.

■쉘 스크립트 본체





① RaspberryPi의 GPIO 입력 감지
② 음성용 문자열을 취득
③ 음성용 문자열로부터 음성을 출력
④Line에 메시지를 POST

voice_text.txt
どうしたの?大丈夫?
つらかったね。大変だったね
今まで、がんばってきたんだね
大丈夫だよ。心配ないさ
いつもそばにいるよ
いつでも話聞くよ
大切なことの相談相手に選んでくれてありがとう
明日はきっとよくなるよ

소중한 사람을 격려하는 간단한 8가지 단어

comfort_loop.sh
#!/bin/bash

lp=10                           #ループ変数
row=0                           #音声用テキストファイル行数
wordfile=./voice_text.txt       #音声用テキストファイル
gpstat=0                        #gpio入力状態

#gpio 26pinを入力インターフェース化
gpio -g mode 26 in

#無限ループ
for((i=0;i<$lp;i));do

    #gpio 26pinを入力の入力状態確認(導通=1,遮断=0)
    gpstat=`gpio -g read 26`

    if [ $gpstat = 1 ]; then
        #音声テキストファイルの行数を取得し、行番号をランダムで選択
        row=`cat voice_text.txt| wc -l`
        rand=$(($RANDOM % "$row" + 1))

        #音声テキストファイルの行番号の内容を音声化
        /usr/jtalk/JtalkFromArg.sh `sed -n "$rand"p $wordfile`

        #Line notify連携
        ACCESS_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        MSG='大丈夫?無理しないで。 https://www.inochinodenwa.org/'
        curl -sS -X POST -H "Authorization: Bearer $ACCESS_TOKEN" -F "message=$MSG" https://notify-api.line.me/api/notify

        sleep 0.9   
    fi

    sleep 0.1 

done

# 무한 루프 때문에, 종료시는 ctrl + c 로 정지하고 있습니다.

JtalkFromArg.sh
root@raspberrypi:/usr/jtalk# cat ./JtalkFromArg.sh 
#!/bin/sh

### Making WAV File from Command Line Argument
###  and speaking with aplay command

#TempWAVFile
TMP=/tmp/jtalkTmp.wav

if [ $# -ne 1 ]; then
echo "Error: argument not exist"
exit 1
fi

echo "$1" | open_jtalk \
-m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice \
-x /var/lib/mecab/dic/open-jtalk/naist-jdic/ \
-ow  $TMP \

chmod 777 $TMP
aplay --quiet $TMP

exit 0
#EOF

JtalkFromArg.sh에 대한 자세한 내용은 다음과 같습니다.
JTalk의 음성 변환과 음성 출력을 쉘로 단번에 한다(라즈파이용)

■ 결과



라즈파이 >> 타이세 네코 코토 노 쵸 겐아이 테니오

티론♪


정신적 부하가 드디어
다시 누르십시오.

■출처/참고



[라즈베리] GPIO
htps //w w. 등 sp 벨 ry 피. 오 rg / 도쿠 멘들 온 / 토끼 / g 피오 / 레아 D. md

fritzing
htp // f t 진 g. 오 rg / 도 w 응 아 d /

Raspberry Pi3 Model B에서 놀아 보자! Part2
htps : // pc. 와 tch. 예 mp rs. 이. jp / cs / m / shinowa / 1006048. HTML

Raspberry Pi3에 일본어로 말할 때까지
htps : // 이 m / 수염 l / ms / 6에서 8637, 680b 200

JTalk의 음성 변환과 음성 출력을 쉘로 단번에 한다(라즈파이용)
htps : // 코 m / 수염 l / ms / 아 아카 30588 에 bd2f 세 b1f

【LINE】 알고 있니? 자신 혼자 그룹 토크의 사용법과 만드는 법
h tps : // 아 p ぃ오. 코 m / ぃ

[초간단] LINE notify 사용해보기
htps : // 이 m/이니키키다 7/있어 ms/576 아 8226바

LINE Notify 간단한 쉘 스크립트로 시도했습니다.
htps : // 이 m/t부치 888/이고 ms/f014f809 아7에9f649d270

소중한 사람을 격려하는 간단한 8가지 단어
h tps : // 일마다. 코 m / 치에 루 p를 rds

좋은 웹페이지 즐겨찾기