LoginSignup
2
4

More than 3 years have passed since last update.

ESP32でPythonを使ってサーボを動かす (Windows)

Last updated at Posted at 2020-07-08

事前に前記事にてESP32にMicroPythonを入れている。

サーボとESP32を繋ぐ

今回はG2ピンに繋ぐことにした。使用可能なピンについてはピンとGPIOを参照。
買ったサーボの必要電圧が4.8V~6Vだったため5Vに接続している。
image.png

サーボの確認をPuTTYで行う

PuTTYの使用方法は前記事の追記に記載。

PuTTYでコマンドを1行ずつ記入してEnterを押しサーボの可動域を確認していく。

PWMパルスとGPIOピンを使用する宣言
from machine import PWM, Pin

ピン2の周波数を50としてservo1と名前を付けた。
周波数の強さによって回転速度が決まるようだ。
servo1 = PWM(Pin(2), freq = 50)

サーボのデューティ比とやらを変更。
これで何度も角度を調整して可動域を確かめる。
大体30~120の範囲で微調整するといい。
周波数を100にした時は60~240となるようだ。

servo1.duty(30)

※パルスの無いフリー状態。回し過ぎてデットロックされたら一度0にして手動で押し戻すとよい。
servo1.duty(0)

回しながら確認したところ自分のサーボでの最小最大の限界は25~130だった。

コードを書く

main.pyという名前を付けて下記の簡単なコードを書きデスクトップに保存した。
sleepは大事。これがないと無限ループが起こりESP32に新たなコードが上書きできなくなる。
上書きできなくなった時はフラッシュを消去してMicroPythonを入れなおす必要あり。

main.py
# -*- coding: utf-8 -*-

from machine import PWM, Pin
import time

servo1 = PWM(Pin(2), freq = 50)

# 角度30(最小)と角度120(最大)を2秒ごとに繰り返す
while True:
    servo1.duty(30)
    time.sleep_ms(2000)
    servo1.duty(120)
    time.sleep_ms(2000)

コードをESP32に送る

コードを送るためのツールをコマンドプロンプトからインストール
pip install adafruit-ampy

ampyのコマンド確認は
ampy
と打つと確認できる。

main.pyをデスクトップに保存したのでデスクトップ下に移動
cd Desktop

main.pyファイルをESP32に送る。COM3の部分は自分の繋いでいるポートに変更する。
※PuTTYが立ち上がっていると送信できないので落としておく。
ampy -p COM3 put main.py

無事に動いた。

参考

▼Fritzing用のESP32パーツ
https://qiita.com/XZ_Manj/items/8bbdef59eeac4286e4f8

▼ピンとGPIO
https://micropython-docs-ja.readthedocs.io/ja/latest/esp32/quickref.html#pins-and-gpio

▼はだメモ パルス幅の調整でサーボを動かす
https://scrapbox.io/hada/ESP32%E3%81%A7%E3%82%B5%E3%83%BC%E3%83%9C%E3%83%A2%E3%83%BC%E3%82%BF%5B2018%2F10%2F29%5D_22:09:36

2
4
0

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
2
4