前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >(二)MicroPython——通过WIFI开关灯与传输信息

(二)MicroPython——通过WIFI开关灯与传输信息

作者头像
小点点
发布2022-12-12 15:10:44
1.6K0
发布2022-12-12 15:10:44
举报
文章被收录于专栏:小点点

目录

学习目标

成果展示 

预备知识

代码 

总结


学习目标

        之前我们就介绍过,ESP32自带WIFI和蓝牙模块,所以我们今天就来介绍一下如何使用MicroPython来连接WIFI,从而实现单片机与电脑通信,最后我们将要实现通过我们电脑发送数据来实现开关灯的效果。

成果展示 

https://live.csdn.net/v/embed/241846

WiFi控制开关灯

预备知识

        这个的话,我们需要对于UDP有一个基本的认知。然后我们选择的是STA模式,我们来简单介绍一下STA模式。

  • Access Point(AP) 无线接入点,提供无线接入的设备,家里的光猫就是结合WiFi和internet路由功能的AP。AP和AP可以相互连接。
  • Station(STA) 无线终端,连接到AP的装置,手机,电脑等需要联网的设备都是出于STA模式,这个模式不允许其他设备接入

        然后我们就使用相应的库来实现网络连接功能。代码如下

代码 

代码语言:javascript
复制
# 连接WiFi
import network

wlan = network.WLAN(network.STA_IF) # 选择STA模式
wlan.active(True)       # 开始工作
wlan.scan()             # 扫描WiFi
wlan.isconnected()      # 判断是否连接
wlan.connect('essid', 'password') # 这个就是账号,密码
wlan.config('mac')      # 获取 MAC 地址
wlan.ifconfig()         # 获得信息

代码语言:javascript
复制
from socket import *

# 1. 创建udp套接字
udp_socket = socket(AF_INET, SOCK_DGRAM)

# 2. 准备接收方的地址
dest_addr = ('192.168.43.27', 8080)

# 3. 从键盘获取数据
send_data = "hello world"

# 4. 发送数据到指定的电脑上
udp_socket.sendto(send_data.encode('utf-8'), dest_addr)

代码语言:javascript
复制
# 开灯的代码
import network
import time
import socket
import machine


def do_connect():
    # 1. 连接wifi
    
    # 1.1. 设置为STA模式
    wlan = network.WLAN(network.STA_IF)
    # 1.2. 使其工作
    wlan.active(True)
    # 1.3. 是否连接工作
    if not wlan.isconnected():
        print('connecting to network...')
        # 1.4. 连接WiFi
        wlan.connect('esp', '123456798')
        i = 1
        while not wlan.isconnected():
            print("正在连接...{}".format(i))
            i += 1
            time.sleep(1)
    # 1.4. 输出相应信息
    print('network config:', wlan.ifconfig())
    
def start_udp():
    # 2. 启动网络功能(UDP)

    # 2.1. 创建udp套接字
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    # 2.2. 绑定本地信息
    udp_socket.bind(("0.0.0.0", 7788))

    return udp_socket
    
    
def main():
    # 1. 链接wifi
    do_connect()
    # 2. 创建UDP
    udp_socket = start_udp()
    # 3. 创建灯对象
    led = machine.Pin(2, machine.Pin.OUT)
    # 4. 接收网络数据
    while True:
        recv_data, sender_info = udp_socket.recvfrom(1024)
        # 4.1. 解码
        recv_data_str = recv_data.decode("utf-8")
        try:
            print(recv_data_str)
        except Exception as ret:
            print("error:", ret)
        
        # 5. 处理接收的数据
        if recv_data_str == "开灯":
            print("这是要开灯的代码...")
            led.value(1)
        elif recv_data_str == "关灯":
            print("这是要关灯的代码...")
            led.value(0)    
# 只有直接运行代码时才执行    
if __name__ == "__main__":
    main()

总结

        今天我们使用MicroPython实现了接入WiFi的操作,并且使得单片机与电脑通信,让电脑去控制单片机的功能。其中涉及到的通信知识,其实我也不是特别清楚,只是在Java里面学过一点,到时候我再去学习。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 学习目标
  • 成果展示 
  • 预备知识
  • 代码 
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档