小学生の自由研究に⁉ RaspberryPiでラジコン★☆無線マウス操作☆★

@shion21さんの『小学生でも簡単⁉RaspberryPiとScratchを使ったラジコン』を参考にして、
ラジコン操作を無線マウスで出来るようにしました。

躯体はamazon The perseids 2WDロボットスマートカーシャーシを使いました。
[amazon The perseids 2WDロボットスマートカーシャーシ](https://www.amazon.co.jp/perseids-2WDロボットスマートカーシャーシ-2輪ロボットスマートカー-スピードエンコーダ-プログラミングカー教材ロボット/dp/B07DPLCQN8/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=The+perseids+2WD%E3%83%AD%E3%83%9C%E3%83%83%E3%83%88%E3%82%B9%E3%83%9E%E3%83%BC%E3%83%88%E3%82%AB%E3%83%BC%E3%82%B7%E3%83%A3%E3%83%BC%E3%82%B7&qid=1564901418&s=gateway&sr=8-1)

![DSCF5841.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/476881/8af33986-eced-95b8-2278-6cc93c35506e.jpeg)
# **1.必要なもの**
| 部品名 |個数|
|:-----------------|------------------:|
| RaspberryPi|1| 
| microUSBケーブル |1|
| HDMIケーブル |1| 
| モニター(TV)|1|
| 無線マウス|1|
| キーボード|1|
| モバイルバッテリー|1|
| amazon The perseids 2WDロボットスマートカーシャーシ|1|
| モータードライバーTA7291P|2|
| 抵抗器 10kΩ|2|
| ブレッドボード 170タイポイント|1|
| ジャンパーワイヤー(オス-オス)|10程度|
| ジャンプワイヤー(オス-メス)|10程度|
| 単三電池|4|

# **2.作り方** 
カーシャーシは先に組み立てておいてください。回路も出来上がったら、シャーシに乗っけてください。
回路は以下の通りです。
<img width="700" alt="https___qiita-image-store.s3.amazonaws.com_0_287320_26daebf1-4161-228b-e8dd-afa9cbe9c528.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/476881/95c9d93b-a759-6b90-7e0d-9ab64a2977dc.png">
@shion21さんの『小学生でも簡単⁉RaspberryPiとScratchを使ったラジコン』を参考にして、
ちょっと配線を直してあります。
![DSCF5830.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/476881/190f2a9c-6595-2770-ddea-93008b3db4c2.jpeg)
![DSCF5835.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/476881/8ff34cfa-d973-1196-3bda-45b3f5064146.jpeg)


# **3.テスト**
@shion21さんの[小学生でも簡単⁉RaspberryPiとScratchを使ったラジコン](https://qiita.com/shion21/items/714576ee10a1fe6dacdd)

の『3.テスト』を参照してください。

#**4.プログラム**

```
sudo vim mousebutton.py
```

下記コマンドを貼り付けてください。

pygameで黒スクリーンを作成して、スクリーン上でのマウス操作を
GPIO信号に割り当てます。

```
from pygame.locals import *
import pygame
import sys
import RPi.GPIO as GPIO
import time

GPIO.setmode (GPIO.BCM) 
GPIO.setup(4, GPIO.OUT) 
GPIO.setup(17, GPIO.OUT)
GPIO.setup(9, GPIO.OUT)
GPIO.setup(11, GPIO.OUT)


def main():
    pygame.init()
    screen = pygame.display.set_mode((400, 330))
    pygame.display.set_caption("mouse event")
    
    while True:        
        for event in pygame.event.get():
            if event.type == QUIT:
                pygame.quit()
                sys.exit()
            if event.type == KEYDOWN:
                if event.key == K_ESCAPE:
                    pygame.quit()
                    sys.exit()

            if event.type == MOUSEBUTTONDOWN and event.button == 5:
                GPIO.output(4,1)
                GPIO.output(9,1)
                time.sleep(0.5)
                GPIO.output(4,0)
                GPIO.output(9,0)

            if event.type == MOUSEBUTTONDOWN and event.button == 4:
                GPIO.output(17,1)
                GPIO.output(11,1)
                time.sleep(0.5)
                GPIO.output(17,0)
                GPIO.output(11,0)

            if event.type == MOUSEBUTTONDOWN and event.button == 1:
                GPIO.output(4,1)
                GPIO.output(11,1)
                time.sleep(0.25)
                GPIO.output(4,0)
                GPIO.output(11,0)

            if event.type == MOUSEBUTTONDOWN and event.button == 3:
                GPIO.output(17,1)
                GPIO.output(9,1)
                time.sleep(0.25)
                GPIO.output(17,0)
                GPIO.output(9,0)

if __name__=="__main__":
    main()

GPIO.cleanup()
```

スクロールアップで『前進』
スクロールダウンで『後退』
左クリックで『左旋回』
右クリックで『右旋回』です。

RaspberryPiの起動時にプログラムを自動起動させるには

```
sudo vim /etc/rc.local
```
ファイルの最後にexit 0とあるので、その手前に起動時に実行したいプログラムを書きます。

```

$sudo python /home/pi/mousebutton.py
exit 0
```


#**5.まとめ**
このラジコンは、親子で楽しく電子工作をしながらプログラミングもできると思います。
小学校2年の息子と楽しく作りました。
WiFi環境がなくても、無線USBマウスで操作できるので、学校に提出しても
実際に動くところをみんなに見て貰えます。

Qiitaで初めてHPを書いています。
初心者が書いているので間違いがあるかもしれません。間違っていたらコメントをください。

小学校4年生の娘とはMicroBitでSPY-Watchを作製中です。アドバイスとかあったらコメントください。

#**6.参照リンク**

@shion21さんの[小学生でも簡単⁉RaspberryPiとScratchを使ったラジコン](https://qiita.com/shion21/items/714576ee10a1fe6dacdd)