(一)MicroPython——WIFI点灯

news/2024/2/27 20:58:12

目录

学习目标

成果展示 

硬件知识

代码 

总结 

学习目标

成果展示 

预备知识

代码 

总结


学习目标

        我们今天来学习有关MicroPython的知识点,相比于用C语言来开发,MicroPython有许多的优点,比如可以交互,有大量的库可以调用等等,对于我们程序的编写带来了极大的便捷。我们使用的开发板是ESP32,本身是国产芯片,而且还自带WIFI和蓝牙模块,目前使用起来感觉良好,本次实验我们先点亮LED灯和使用PWM来实现呼吸灯的效果,好了,就让我们开始今天的学习吧!

成果展示 

led

pwm呼吸灯

硬件知识

        关于GPIO和PWM的知识介绍在51和32都有详细介绍,在此就不再赘述,有不懂的同学可以去看看我之前的笔记。在此就简单贴出代码。关于烧录芯片资料什么的,网上都有教程,在此就不再详细介绍。

        首先在运行里面找到配置解释器 ,打开后选择ESP32,然后点击下面一行英文去烧录在官网下载的ESP32固件,就完成了基本的配置。

  

代码 

import machine
import time# 设定GPIO引脚
pin2 = machine.Pin(2, machine.Pin.OUT)
while True:pin2.value(1) # 亮time.sleep(1) # 等1秒pin2.value(0) # 灭time.sleep(1) # 等1秒

from machine import Pin, PWM
import time# 设置PWM引脚ao
led2 = PWM(Pin(2))
# 设置频率
led2.freq(1000)while True:for i in range(0, 1024, 1):# 逐渐调节占空比led2.duty(i)time.sleep_ms(3)for i in range(1023, -1, -1):# 逐渐调节占空比led2.duty(i)time.sleep_ms(3)

总结 

        虽然之前就想用MicroPython 去开发硬件,但是一直没有上手,当接触之后,确实觉得比以前的51和32要简单许多,但是感觉学完C语言开发后能更好的去理解MicroPython,目前先简单学习一下,等到后面再去细细深究。

学习目标

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

成果展示 

WiFi控制开关灯

预备知识

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

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

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

代码 

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

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)

# 开灯的代码
import network
import time
import socket
import machinedef 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. 连接WiFiwlan.connect('esp', '123456798')i = 1while not wlan.isconnected():print("正在连接...{}".format(i))i += 1time.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_socketdef main():# 1. 链接wifido_connect()# 2. 创建UDPudp_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里面学过一点,到时候我再去学习。


http://www.ppmy.cn/news/11639.html

相关文章

SpringMVC学习笔记(四)

第一章:搭建整合环境 1. 搭建整合环境 整合说明:SSM整合可以使用多种方式,咱们会选择XML 注解的方式 整合的思路 先搭建整合的环境先把Spring的配置搭建完成再使用Spring整合SpringMVC框架最后使用Spring整合MyBatis框架 创建数据库和表结…

试题 基础练习 Huffuman树

问题描述 Huffman树在编码中有着广泛的应用。在这里,我们只关心Huffman树的构造过程。   给出一列数{pi}{p0, p1, …, pn-1},用这列数构造Huffman树的过程如下:   1. 找到{pi}中最小的两个数,设为pa和pb,将pa和pb从…

祖孙询问(LCA+倍增思想)

1. 问题描述: 给定一棵包含 n 个节点的有根无向树,节点编号互不相同,但不一定是 1∼n。有 m 个询问,每个询问给出了一对节点的编号 x 和 y,询问 x 与 y 的祖孙关系。 输入格式 输入第一行包括一个整数 表示节点个数…

[ 解决报错篇 ] tomcat 执行 startup.bat 文件报错 -- tomcat 启动失败(安装 java 环境并配置环境变量)

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

JAVA练习18

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前言 提示:这里可以添加本文要记录的大概内容: 1月12日练习内容 提示:以下是本篇文章正文内容,下面案例可供参考 一、题目1…

初阶通讯录自主实现,就算你没学过C语言也没关系,手把手教你写出来,你还在等什么??

目录一、通讯录简介二、结构体类型的定义三、test.c整体测试的框架四、Conatct.h五、通讯录各个函数的实现5.1 初始化通讯录函数的实现5.2 添加联系人函数的实现5.3 删除联系人函数的实现5.4 查找联系人函数的实现5.5 改变联系人信息函数的实现5.6 展示联系人信息函数的实现5.7…

IoC容器启动过程

IoC容器启动过程 1、加锁,防止在refresh的时候出现启动或销毁容器的操作。synchronized (this.startupShutdownMonitor)2、准备工作,记录下容器的启动时间、标记已启动状态、处理配置文件中的占位符。prepareRefresh();3、初始化BeanFactory,…

知识点滴 - 数据库视图概念

视图是数据库中一个非常简单的概念,写过SQL的人几乎大致了解视图。本文除了在回顾视图的本质及相关操作知识时,会重点阐述它蕴含的分层思想在数据分析工作中的作用。 1,视图的本质与作用 视图是一个数据库中的虚拟表,它的本质是S…

中兴服务器迈络思NS312网卡down掉网口物理指示灯不熄灭解决方法--NS312型号ConnectX-4 Lx

中兴服务器迈络思NS312网卡down掉网口物理指示灯不熄灭解决方法–NS312型号ConnectX-4 Lx 中兴服务器做网卡倒卡测试时,出现如下问题: 中兴服务器迈络思网卡,卡片NS312,型号ConnectX-4 Lx,万兆网卡在执行ifdown或ip l…

HTTP与HTTPS的区别,HTTPS提高性能,HTTP2的新特性

目录数据传输区别安全性区别端口区别交互区别HTTPS的工作流程HTTPS的实现原理机密性完整性身份认证和不可否认HTTPS 使用流程HTTPS性能优化点HTTP2的特性向下兼容HTTP/1头部压缩二进制虚拟流、多路复用数据传输区别 http也相当于HTTP协议,是超文本传输协议的意思&a…

Pandas数据清洗函数大全

文章目录 一、drop():删除指定行列 1. 删除指定行2. 删除指定列 二、del():删除指定列三、isnull():判断是否为缺失 1. 判断是否为缺失2. 判断哪些列存在缺失3. 统计缺失个数 四、notnull():判断是否不为缺失五、dropna()&#x…

原生RedHat OpenStack搭建

文章目录OpenStack的搭建方式实验软件及镜像实验环境配置NTP节点初始化配置配置本地yum仓库上传镜像文件至NTP节点搭建基于http的网络yum源搭建NTP服务配置Controller控制节点和Compute计算节点初始化配置安装RedHat OpenStack安装部署OpenStack配置OVS桥接OpenStack的搭建方式…

4. 数据转换之【tidyr包】:gather与spread函数、separate与unite函数

b站课程视频链接: https://www.bilibili.com/video/BV19x411X7C6?p1 腾讯课堂(最新,但是要花钱,我花99😢😢元买了,感觉讲的没问题,就是知识点结构有点乱,有点废话)&…

RK3588平台开发系列讲解(日志篇)syslog介绍

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、syslog介绍二、syslog的架构三、syslog日志组成四、syslog接口说明1、openlog2、syslog3、closelog五、syslog.conf接口说明1、selector2、level3、action4、示例沉淀、分享、成长,让自己和他人都能有所收获!&am…

大数据分析案例-基于多元线性回归算法构建广告投放收益模型

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

基于Java jsp+mysql+Spring的汽车出租平台租赁网站平台设计和实现

基于Java jspmysqlSpring的汽车出租平台租赁网站平台设计和实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 …

Linux环境下配置Nginx

文章目录安装环境配置安装Nginx需要安装第三方的开发包安装Nginx启动并访问Nginx安装完毕Linux——centos7版本 安装环境配置 Nginx是C语言编写的,所以需要配置C语言编译环境(要联网) 安装gcc环境 [roota ~]# yum install gcc-c 已加载插件…

Go 1.19.3 error原理简析

Go error是一个很痛的话题(真心难用) 标准库 error 的定义 // The error built-in interface type is the conventional interface for // representing an error condition, with the nil value representing no error. type error interface {Error() string }error 是一个…

【1】K8s的组件及概念

目录 1、K8s的组件 2、组件概念 1、K8s的组件 一个kubernetes集群主要是由控制节点(master)、工作节点(node)构成,每个节点上都会安装不同的组件。 master: 集群的控制平面,负责集群的决策 ApiServer:资源操作的唯一入口,接收用户输入的命令…

【Java集合】Collections工具类

文章目录01 Collections工具类介绍02 排序操作03 查找、替换01 Collections工具类介绍 Collections 是一个操作 Set、List 和 Map 等集合的工具类;Collections 中提供了一系列静态方法对集合元素进行排序、查询和修改操作; 02 排序操作 均为static方法…
最新文章