0
点赞
收藏
分享

微信扫一扫

Web控制SG90 9g舵机(180度版)-MicroPython-NodeMcu-Esp8266开发板

elvinyang 2022-03-13 阅读 59

最终目的

使用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,访问开发板,去烧录文件,即可完美解决;


如果本文对你有帮助的话,请不要吝啬你的赞,谢谢!

举报

相关推荐

0 条评论