# 完全食はいいぞ4th 開発メモ
## ミーティング日時
毎週火曜日16:10~
## 基本機構
* ステッピングモーターで回転
* [参考](https://101010.fun/iot/step-motor.html)
* サーボモーターで上下&トリガー引く
## 買うものリスト(臨時)
* [ステッピングモーター](https://www.amazon.co.jp/gp/product/B07PQ12SDW/ref=as_li_tl?ie=UTF8&tag=101010fun-22&camp=247&creative=1211&linkCode=as2&creativeASIN=B07PQ12SDW&th=1)
* [↑用モータードライバ](https://www.amazon.co.jp/gp/product/B09F2YDNBP/ref=as_li_tl?ie=UTF8&tag=101010fun-22&camp=247&creative=1211&linkCode=as2&creativeASIN=B09F2YDNBP)
* [サーボ](https://www.amazon.co.jp/GeeekPi-GeeekPi%E3%82%B5%E3%83%BC%E3%83%9CDS3218-20kg%E9%AB%98%E3%83%88%E3%83%AB%E3%82%AF%E3%83%95%E3%83%AB%E3%83%A1%E3%82%BF%E3%83%AB%E3%83%87%E3%82%B8%E3%82%BF%E3%83%AB%E3%82%B9%E3%83%86%E3%82%A2%E3%83%AA%E3%83%B3%E3%82%B0%E3%82%B5%E3%83%BC%E3%83%9C%E9%98%B2%E6%B0%B4%E3%82%B5%E3%83%BC%E3%83%9C%E3%83%90%E3%83%8F%E3%83%A9%E3%82%B8%E3%82%B3%E3%83%B3%E3%83%AD%E3%83%9C%E3%83%83%E3%83%88RC%E3%83%90%E3%83%8F%E8%BB%8A%E3%81%AB%E9%81%A9%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%EF%BC%88270%C2%B0%EF%BC%89/dp/B084V25HBK/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=1GSYSVCQHFO8J&keywords=%E9%AB%98%E3%83%88%E3%83%AB%E3%82%AF%E3%82%B5%E3%83%BC%E3%83%9C+%EF%BC%95kg&qid=1662440128&sprefix=%E9%AB%98%E3%83%88%E3%83%AB%E3%82%AF%E3%82%B5%E3%83%BC%E3%83%9C+5kg%2Caps%2C158&sr=8-1)
* [エアガン](https://www.amazon.co.jp/%E6%9D%B1%E4%BA%AC%E3%83%9E%E3%83%AB%E3%82%A4-%E3%82%B3%E3%83%B3%E3%83%91%E3%82%AF%E3%83%88%E3%82%AD%E3%83%A3%E3%83%AA%E3%83%BC-No-4-CURVE-18%E6%AD%B3%E4%BB%A5%E4%B8%8A/dp/B0B1ZJ3XNP/ref=sr_1_5?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=WLTNVHX414NK&keywords=%E3%82%A8%E3%82%A2%E3%82%AC%E3%83%B3+%E3%82%AB%E3%83%BC%E3%83%96&qid=1662440324&sprefix=%E3%82%A8%E3%82%A2%E3%82%AC%E3%83%B3%E3%82%AB%E3%83%BC%E3%83%96%2Caps%2C151&sr=8-5)
to 城ケ崎
* 9/22
* 回路系を全て任せたい
* 年内に基盤が手元にあるのが目標
* サーボ3つをラズパイで動かす回路
* ステッピングモーターは忘れて下さい
* 多分電圧レベル変換器がいる?
* 次回までに何が必要か調査しておいてほしい
サーボドライバー(PCA9685)
サーボモーター SG90
サーボモーター GH-S37D
ラズパイ本体
サーボドライバーを使う準備

サーボモーターとPCA9685サーボドライバーが準備できたら、今度はRaspberry Pi側の準備をする。PCA9685サーボドライバーはラズパイとシリアル通信(I2C)で接続する必要があること。
import pigpio
import time
SERVO_PIN_1 = 13
SERVO_PIN_2 = 12
SERVO_PIN_3 = 17
pi = pigpio.pi()
try:
while True:
pi.hardware_PWM(SERVO_PIN_1, 50, int(1000000*1.45/20))
time.sleep(1)
pi.hardware_PWM(SERVO_PIN_2, 50, int(1000000*1.45/20))
time.sleep(1)
pi.set_servo_pulsewidth(SERVO_PIN_3, 1450)
time.sleep(1)
pi.hardware_PWM(SERVO_PIN_1, 50, int(1000000*2.4/20))
time.sleep(1)
pi.hardware_PWM(SERVO_PIN_2, 50, int(1000000*2.4/20))
time.sleep(1)
pi.set_servo_pulsewidth(SERVO_PIN_3, 2400)
time.sleep(1)
pi.hardware_PWM(SERVO_PIN_1, 50, int(1000000*0.5/20))
time.sleep(1)
pi.hardware_PWM(SERVO_PIN_2, 50, int(1000000*0.5/20))
time.sleep(1)
pi.set_servo_pulsewidth(SERVO_PIN_3, 500)
time.sleep(1)
except KeyboardInterrupt:
pass
pi.hardware_PWM(SERVO_PIN_1, 50, 0)
pi.hardware_PWM(SERVO_PIN_2, 50, 0)
pi.set_servo_pulsewidth(SERVO_PIN_3, 0)
pi.stop()
↑↑ サーボモーターを3個動かすプログラム

使用する部品
ラズベリーパイ本体(モデル3B+)
ブレッドボード
ジャンパ線
LED(発光ダイオード)
カーボン抵抗器
タクトスイッチ
今回は220Ω(オーム)の抵抗器を使用することにします。
回路図は以下のようになる。

ラズベリーパイの3.3Vをタクトスイッチの片側に接続する。(赤色のジャンパ線)
「GPIO 23番ポート」とタクトスイッチのもう一方に接続します。(白色のジャンパ線)
「GPIO 25番ポート」と赤LEDのプラス側(アノード)を接続します。(オレンジ色のジャンパ線)
LEDのマイナス側(カソード)と抵抗(220Ω)を接続して、抵抗とGNDを接続します。(黒色のジャンパ線)
↓Python
スイッチを押すたびにLEDの点灯/消灯を切替えるプログラム(Python)は以下のようになります。
#必要なモジュールをインポート
import RPi.GPIO as GPIO #GPIO用のモジュールをインポート
import time #時間制御用のモジュールをインポート
import sys #sysモジュールをインポート
#ポート番号の定義
Sw_pin = 23 #変数"Sw_pin"に23を代入
Led_pin = 25 #変数"Led_pin"に25を代入
#初期化処理
Status = 0 #変数"Status"に0を代入
#GPIOの設定
GPIO.setmode(GPIO.BCM) #GPIOのモードを"GPIO.BCM"に設定
#GPIO23を入力モードに設定してプルダウン抵抗を有効にする
GPIO.setup(Sw_pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(Led_pin, GPIO.OUT) #GPIO25を出力モードに設定
#while文で無限ループ
while True:
try:
if(Status == 1):
GPIO.output(Led_pin, GPIO.HIGH) #GPIO25の出力をHigh(3.3V)にする
Status = 0 #変数"Status"に0を代入
else:
GPIO.output(Led_pin, GPIO.LOW) #GPIO25の出力をLow(0V)にする
Status = 1 #変数"Status"に1を代入
time.sleep(1) #1秒間待つ
while(GPIO.input(Sw_pin) == 0):
time.sleep(0.1) #0.1秒間待つ
except KeyboardInterrupt: #Ctrl+Cキーが押された
GPIO.cleanup() #GPIOをクリーンアップ
sys.exit() #プログラムを終了
回路図
トランジスタのベースに接続したGPIOを“High”にすることで4色のLEDを点灯させる回路。GPIOからこのトランジスタをコントロールすることで、LEDを光らせるタイミングを変えたりすることができます。

配線図

4つはリレーモジュールを使う。赤青緑黄
NC,NOのIN1とIN2はNC、IN3とIN4はNOで接続する。
NCはNormal Close:リレーが作動していない時は回路が閉じた状態
NOはNormal Open:リレーが作動していない時は回路が開いた状態
となるようにする。

★リレーモジュールとラズパイの接続
GND:GND(PIN6)
IN1:GPIO4(PIN7)
IN2:GPIO17(PIN11)
IN3:GPIO27(PIN13)
IN4:GPIO22(PIN15)
VCC:5V(PIN2)
↓この回路とあわせる。

to 中島&森
* 9/22
* ラズパイを動かす練習をしよう
* 10月中に電算室にあるサーボをラズパイで動かすのが目標
* 次回(次々回?)までにSSH接続をVSCodeでできるようにしよう!
* [参考](https://qiita.com/c60evaporator/items/26ab9cfb9cd36facc8fd)
* SSHとは?
* 別のパソコンから別のパソコンを動かす方法
* ラズパイはパソコンなので、キーボードやモニタを繋げて作業する、めんどくさいね!
* ノートPCから動かせるようにしよう!
* VSCodeとは?
* コードを書くのに便利なエディタ
* つまり何ができるの?
* ノートPCから普通にプログラミングする感覚でラズパイのプログラミングができる!!!
* ラズパイは電算室にあるので勝手に借りて大丈夫
* ちょっと複雑だけど後々楽になるので頑張って!