(1) マグボットに赤外線センサーを取付けます
以前にスピーカーを設置していた部分が空いていたので、きれいに取付けができました
(2) 赤外線センサーをRaspberry Piに接続します
第6回 マグボットにセンサーをつけてしゃべらせてみる
(1) マグボットに赤外線センサーを取付けます
以前にスピーカーを設置していた部分が空いていたので、きれいに取付けができました
(2) 赤外線センサーをRaspberry Piに接続します
(1) PythonライブラリのPySerialをインストールします
pip install pyserial
今回はPythonのシリアル通信を使って、Arduinoに送信します
(1) Cyberduckを使用して、/home/pi にsensor.pyファイルを作成する
/home/pi/sensor.py
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import serial
import time
import RPi.GPIO as GPIO
import subprocess
import random
SLEEPTIME = 1
RUNTIME_SLEEP = 5
SENSOR_PIN = 18
GPIO.setmode(GPIO.BCM)
GPIO.setup(SENSOR_PIN, GPIO.IN)
while True:
if(GPIO.input(SENSOR_PIN) == GPIO.HIGH):
# シリアル通信の設定
ser = serial.Serial('/dev/ttyACM0', 9600)
rand = random.randint(1, 3)
if(rand == 1):
# マグボットの音声データの設定
cmd = "sudo sh /home/pi/mugbot-talk-1.1.sh こんにちは"
# シリアル通信で送信する
ser.write(b'r')
elif(rand == 2):
# マグボットの音声データの設定
cmd = "sudo sh /home/pi/mugbot-talk-1.1.sh 私はマグボットです"
# シリアル通信で送信する
ser.write(b'd')
elif(rand == 3):
# マグボットの音声データの設定
cmd = "sudo sh /home/pi/mugbot-talk-1.1.sh ようこそシステムリンクへ"
# シリアル通信で送信する
ser.write(b'p')
# シリアル通信を閉じる
ser.close()
# 音声データの実行
subprocess.call( cmd, shell=True )
time.sleep(RUNTIME_SLEEP)
else:
print("反応なし")
time.sleep(SLEEPTIME)
(2) Tera Termを使用して、/etc/rc.local に起動時の設定を追加します
pi@raspberry:~ $ sudo nano /etc/rc.local
/etc/rc.local
# 感知センサープログラムの起動
python /home/pi/sensor.py &
追加イメージ
(1) Arduino IDEを起動して、mugbot_arduino_1.1.inoに処理を追加します
case文の最後に追加してください
mugbot_arduino_1.1.ino
case 'r': //Rasberry Piからrを受け取ると「こんにちは」のアクションを行う。
analogWrite(l_eye, 255);
analogWrite(r_eye, 255);
eye_servo.write( 105 );
delay( 100 );
eye_servo.write( 75 );
delay( 100 );
eye_servo.write( 105 );
delay( 100 );
eye_servo.write( 90 );
digitalWrite(mouse, HIGH);
delay( 3000 );
digitalWrite(mouse, LOW);
analogWrite(l_eye, eye_light_default);
analogWrite(r_eye, eye_light_default);
break;
case 'd': //Rasberry Piからdを受け取ると「私はマグボットです」のアクションを行う。
analogWrite(l_eye, 255);
analogWrite(r_eye, 255);
delay( 100 );
analogWrite(l_eye, 255);
analogWrite(r_eye, 0);
delay( 500 );
analogWrite(l_eye, 0);
analogWrite(r_eye, 255);
delay( 500 );
analogWrite(l_eye, 255);
analogWrite(r_eye, 0);
delay( 100 );
analogWrite(l_eye, 255);
analogWrite(r_eye, 255);
eye_servo.write( 105 );
delay( 100 );
eye_servo.write( 75 );
delay( 100 );
eye_servo.write( 105 );
delay( 100 );
eye_servo.write( 90 );
digitalWrite(mouse, HIGH);
delay( 3000 );
digitalWrite(mouse, LOW);
analogWrite(l_eye, eye_light_default);
analogWrite(r_eye, eye_light_default);
break;
case 'p': //Rasberry Piからpを受け取ると「ようこそシステムリンクへ」のアクションを行う。
analogWrite(l_eye, 255);
analogWrite(r_eye, 255);
head_servo.write( 60 );
delay( 200 );
head_servo.write( 90 );
delay( 200 );
head_servo.write( 120 );
delay( 200 );
head_servo.write( 90 );
digitalWrite(mouse, HIGH);
delay( 3000 );
digitalWrite(mouse, LOW);
analogWrite(l_eye, eye_light_default);
analogWrite(r_eye, eye_light_default);
break;
(2) Arduinoと接続して、プログラムを書き込みます
センサーで感知した時に、ランダムで動作します
(1) こんにちは
(2) 私はマグボットです
(3) ようこそシステムリンクへ