同人誌PDF版 販売中!!

スポンサー

Raspberry Pi 4Bでロボット作成その1

皆さんこんにちは!こんばんは!!ロト君です。
今回は、ラズパイ4Bを使ってロボットを作成したいと思ったので、記事にしてみました。

必要なモノ

必要なモノとして下記があります。

  • Raspberry Pi 4B本体
  • 安定化電源
  • サーボモータ
  • ジャンパ線
  • ブレッドボード
  • PS5 コントローラ

です。

Python3で使うライブラリのvenv環境構築

プログラム自体はPythonで記載します。

初期のライブラリに入っていない可能性があるため、環境を構築します。

SSH接続状態でターミナルより、

python3 -m venv venv

を、打ち込み仮想環境を設定します。

Python3は仮想環境でないとインストール出来ない仕様?になってるようなので、

source venv/bin/activate

で、仮想環境をアクティブします。

音声環境には、

sudo apt install portaudio19-dev
pip install sounddevice soundfile numpy

を、使います。(おそらく最新はver20があるかも・・・。)

公式サイト:https://files.portaudio.com

RP4BのGPIO用には、

pip install rpi.gpio

を、使います。

PS5コントローラ用には、

sudo apt update
sudo apt install -y python3-pip
pip3 install pygame

pygameを使います。

フォルダ構成

データの構成は、「Desktop/test_servo/」中に私の環境ではしています。
「***.wav」や「***.py」はその中です。

実際のコード

私が書いたコードは下記のものです。

import pygame
import time

WAV_PATH = "/home/lotokunn/Desktop/test_servo/maou_se_8bit22.wav"

pygame.init()

# 音(mixer)
pygame.mixer.init(frequency=48000)  # Piは48000が安定しやすい
se = pygame.mixer.Sound(WAV_PATH)

# コントローラ
pygame.joystick.init()
if pygame.joystick.get_count() == 0:
    raise RuntimeError("コントローラーが見つかりません(USB/BT接続を確認)")

js = pygame.joystick.Joystick(0)
js.init()

prev_b0 = 0

try:
    while True:
        pygame.event.pump()

        lx = js.get_axis(0)
        ly = js.get_axis(1)
        rx = js.get_axis(2)
        ry = js.get_axis(5)
        b0 = js.get_button(0)

        # 押した瞬間だけ鳴らす
        if b0 == 1 and prev_b0 == 0:
            se.stop()   # 連打時に重ねたくないなら
            se.play()

        prev_b0 = b0

        print(f"lx={lx:+.2f} ly={ly:+.2f} rx={rx:+.2f} ry={ry:+.2f} b0={b0}", end="\r")
        time.sleep(0.02)

except KeyboardInterrupt:
    pass

上記のコードは簡易版です。サーボのDT比率やPWMはまだ書いていません。

コードの特徴として、

        # 押した瞬間だけ鳴らす
        if b0 == 1 and prev_b0 == 0:
            se.stop()   # 連打時に重ねたくないなら
            se.play()

        prev_b0 = b0

の様に、連打防止、初回トリガー設定をしています。

WAV_PATH = "/home/lotokunn/Desktop/test_servo/maou_se_8bit22.wav"

WAV_PATHはご自身の環境に合わせて書いて下さい。

まとめ

久しぶりにロボットを作る環境を構築しましたが、昔よりは簡単になっていましたので驚きました。PIC12F675シリーズで作っていた時が懐かしく思います。

当時は、C言語で作ってました。笑)

4月10日までに何か面白いロボットを作りたいと思いますので!
こう!ご期待???!では、( ;∀;)ノシ3

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA