LoginSignup
1
2

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-08-04

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

躯体はamazon The perseids 2WDロボットスマートカーシャーシを使いました。
amazon The perseids 2WDロボットスマートカーシャーシ

DSCF5841.JPG

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.作り方

カーシャーシは先に組み立てておいてください。回路も出来上がったら、シャーシに乗っけてください。
回路は以下の通りです。
https___qiita-image-store.s3.amazonaws.com_0_287320_26daebf1-4161-228b-e8dd-afa9cbe9c528.png
@shion21さんの『小学生でも簡単⁉RaspberryPiとScratchを使ったラジコン』を参考にして、
ちょっと配線を直してあります。
DSCF5830.JPG
DSCF5835.JPG

3.テスト

@shion21さんの小学生でも簡単⁉RaspberryPiとScratchを使ったラジコン

の『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を使ったラジコン

1
2
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2