TJBot
ケース
形状データをダウンロードできる。
とりあえず、プリントしてみよう。
3Dプリンター不調で頓挫・・・しましたが、調整し直してプリントしました。
パーツ
組んで
組んで
こうなる
スケルトンだと、ターミネーターみたいで、なんか怖い。
特に目が!
カメラ
カメラの向き
youtube を見る限り、そして、実際にはめ込んでみたぴったり感からして、どうやら上下逆向きに(ケーブルを上向きに)設置するようだ。
逆向きに刺そうとすると、どうしてもリボンケーブルのコネクタが鑑賞して刺さらないのだ。
なので、撮影の際などには、-vf, --vflip : Set vertical flip オプションを付ける。
カメラの動作確認
$ raspistill -w 480 -h 360 -n -vf -o mod.jpg

サーボモーター(腕)
とりあえず動かしてみよう。
以前書いたコードをそのまま使ってみた。
SG92.py
#!/usr/bin/python
# coding: utf-8
import RPi.GPIO as GPIO
import time
import signal
import sys
gp_out = 21
def exit_handler(signal, frame):
print("\nExit")
servo.ChangeDutyCycle(2.5)
time.sleep(0.5)
servo.stop()
GPIO.cleanup()
sys.exit(0)
signal.signal(signal.SIGINT, exit_handler)
GPIO.setmode(GPIO.BCM)
GPIO.setup(gp_out, GPIO.OUT)
# pwm = GPIO.PWM([チャンネル], [周波数(Hz)])
servo = GPIO.PWM(gp_out, 50)
servo.start(0.0)
val = [2.5,3.6875,4.875,6.0625,7.25,8.4375,9.625,10.8125,12]
servo.ChangeDutyCycle(val[0])
time.sleep(0.5)
servo.ChangeDutyCycle(val[8])
time.sleep(0.5)
servo.ChangeDutyCycle(val[0])
time.sleep(0.5)
while True:
for i, dc in enumerate(val):
servo.ChangeDutyCycle(dc)
print("Angle:" + str(i*22.5)+" dc = %.4f" % dc)
time.sleep(0.5)
for i, dc in enumerate( reversed(val) ):
servo.ChangeDutyCycle(dc)
print("Angle:" + str(180 - i*22.5)+" dc = %.4f" % dc)
time.sleep(0.5)
フルカラーLED
フルカラーLEDを触るのが今回が初めてです。
手元にあるのは カソードコモン のフルカラーLEDです。

左から、緑、青、共通カソード、赤 ですね。
挿して、520Ωの抵抗を付けました。


グラデーションさせるテスト
https://making.mrlittlebig.com/raspberry-pi-2-フルカラーledをグラデーション-5e4916fda419
こちらのコードを、中断できるように改変させていただきました。
#!/usr/bin/python # coding: utf-8 import RPi.GPIO as GPIO import time import signal import sys def exit_handler(signal, frame): print("\nExit") red.stop() green.stop() blue.stop() time.sleep(0.5) GPIO.cleanup() sys.exit(0) signal.signal(signal.SIGINT, exit_handler) Rpin = 13 Bpin = 19 Gpin = 26 GPIO.setmode(GPIO.BCM) GPIO.setup(Rpin,GPIO.OUT) GPIO.setup(Bpin,GPIO.OUT) GPIO.setup(Gpin,GPIO.OUT) red = GPIO.PWM(Rpin, 50) green = GPIO.PWM(Gpin, 50) blue = GPIO.PWM(Bpin, 50) red.start(0) green.start(0) blue.start(0) blue.ChangeDutyCycle(100) COUNT = 100 T = 0.04 I = 0 time.sleep(0.5) for _ in xrange(0, COUNT): red.ChangeDutyCycle(I) blue.ChangeDutyCycle(100 - I) time.sleep(T) I+=1 I = 0 for _ in xrange(0, COUNT): red.ChangeDutyCycle(100-I) green.ChangeDutyCycle(I) I+=1 time.sleep(T) I = 0 for _ in xrange(0, COUNT): green.ChangeDutyCycle(100 - I) blue.ChangeDutyCycle(I) I+=1 time.sleep(T) time.sleep(0.5) red.stop() green.stop() blue.stop() GPIO.cleanup()
拡散キャップをかぶせました。
マイク
$ lsusb $ lsusb Bus 001 Device 004: ID 8086:0808 Intel Corp. Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Intel Corp とのだけ認識されているけど、大丈夫かな?
$ arecord -l **** ハードウェアデバイス CAPTURE のリスト **** カード 1: Device [USB PnP Sound Device], デバイス 0: USB Audio [USB Audio] サブデバイス: 1/1 サブデバイス #0: subdevice #0
録音テスト
$ arecord -D plughw:1,0 -d 5 test.wav 録音中 WAVE 'test.wav' : Unsigned 8 bit, レート 8000 Hz, モノラル kiyo@raspberrypi:~ $ aplay -D plughw:0,0 test.wav 再生中 WAVE 'test.wav' : Unsigned 8 bit, レート 8000 Hz, モノラル
なお、スピーカーが片方しかない状態(アナログout の2局のうち片方しか配線して居ない状態)なので、モノラルで進めています。