最终目的:
使用web界面控制SG90 9g舵机:
开发语言:MicroPython
所需硬件:NodeMcu-Esp8266开发板、SG90 9g舵机(180度版)
新人必看:
如驱动不成功,一般是舵机选择成了306度版本(一定要是180度版本的舵机),否则会没有任何反应,或者是主板供电不稳,因为驱动舵机,需要的是5v电压,虽说vin可以使用,但是有的时候会不稳定,特别是使用电脑usb作为供电,所以建议对舵机外接供电;
建议使用:webrepl烧录文件;
实现原理图:
舵机接线图:
控制舵机代码:
MicroPython控制舵机代码:
注意:修改代码中当你的WIFI名称,和WIFI密码;
import time
import network
import socket
from machine import Pin, PWM
# 作者:异想实验室
# https://blog.csdn.net/weixin_43775400
def WIFI():
# 连接WiFi
wlan = network.WLAN(network.STA_IF)
# 打开WiFi对象
wlan.active(True)
# 设置WiFi链接信息
wlan.connect('WIFI名称', 'WIFI密码')
class Control():
def __yes__(self):
print('舵机归零-平整')
servo.duty(38)
time.sleep(0.5)
def __x1__(self):
print('舵机左倾')
servo.duty(58)
time.sleep(0.5)
def __x2__(self):
print('舵机右倾')
servo.duty(18)
time.sleep(0.5)
# 连接无线网络:
WIFI()
# 定义引脚
servo = PWM(Pin(14), freq=50)
# 开机归零(让舵机平整)
sg90 = Control()
#如果使用板载vin供电,开发板开机后功耗瞬间增大
# 有的时候会不稳定,也可以注释掉下面这一行代码
#建议对舵机外接电源;
sg90.__yes__()
# HTML网页模版文件,显示当前状态,有三个按钮,用来控制舵机,左倾,平整,右倾操作
html = """<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="shortcut icon" href="https://img.alicdn.com/imgextra/i2/O1CN01ZyAlrn1MwaMhqz36G_!!6000000001499-73-tps-64-64.ico">
<title>Web控制舵机</title>
</head>
<body>
<h1>信息:%s</h1>
<br><br>
<a href="/x1""><button>左倾</button></a>
<a href="/y1""><button>平整</button></a>
<a href="/x2""><button>右倾</button></a>
<br />
</body>
</html>
"""
# 生成一个Socket对象
web = socket.socket()
# 绑定监听地址.0.0.0.0是全部ip:
web.bind(('0.0.0.0', 80))
# 监听数据
web.listen(1)
webtext = "舵机控制"
while True:
cl, addr = web.accept()
print('访问者IP和通讯端口', addr)
user = cl.recv(1024)
if user.decode()[:20].find("x1") != -1:
sg90.__x1__()
webtext = "舵机左倾"
elif user.decode()[:20].find("y1") != -1:
sg90.__yes__()
webtext = "舵机平整"
elif user.decode()[:20].find("x2") != -1:
sg90.__x2__()
webtext = "舵机右倾"
response = html % webtext
cl.send(response)
cl.close()
最后必看:
如果代码成功运行之后,使用PyCharm,烧录别的文件导致失败,只需要重启开发板,不要访问web界面,然后使用webrepl,访问开发板,去烧录文件,即可完美解决;