事前に前記事にてESP32にMicroPythonを入れている。
##サーボとESP32を繋ぐ
今回はG2ピンに繋ぐことにした。使用可能なピンについてはピンとGPIOを参照。
買ったサーボの必要電圧が4.8V~6Vだったため5Vに接続している。
##サーボの確認を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を入れなおす必要あり。
# -*- 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