(一)MicroPython——WIFI点灯

news2024/11/23 19:06:56

目录

学习目标

成果展示 

硬件知识

代码 

总结 

学习目标

成果展示 

预备知识

代码 

总结


学习目标

        我们今天来学习有关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 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()         # 获得信息

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 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里面学过一点,到时候我再去学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/158336.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Allegro如何把快速BUS组高亮成不同颜色操作指导

Allegro如何把快速BUS组高亮成不同颜色操作指导 在做PCB设计的时候,会需要把BUS组高亮成不同颜色,方便评估与布线,Allegro支持快速把BUS高亮成不同的颜色,如下图 具体操作如下 打开颜色管理器出现颜色管理器

1576_AURIX_TC275_MTU控制与状态寄存器

全部学习汇总: GreyZhang/g_TC275: happy hacking for TC275! (github.com) 在这一页之前,连续有好几个寄存器都是预留的,因此可以直接跳过。访问使能寄存器的功能,从描述看其实是非常熟悉的,因为这个描述的模板可以从…

Java多线程:线程通信:生产者 和 消费者 || 顺序打印

Java多线程:线程通信:生产者 和 消费者 || 顺序打印 每博一文案 靠谱,是最高级的聪明:师父说:人生一回,道义一场。你对人对事的态度,藏着你一生的福报。 千金难买好人缘,人活的就是…

Android编译Skia库

Android编译Skia库 本文档提供两种方法编译Skia库 使用aosp源码进行编译使用skia源码进行编译 两种编译方法都可以编译,并且都可以使用在多个平台中,且可以使用在不同Android版本中 使用aosp源码编译 第一步是拿到aosp的源码.因为写这篇教程,使用的是msm8996的源码,因此,我…

Armitage图形化前端

开源免费图形前端 ● 作者自称是众多不会使用metasploit的安全专家之一(命令行) ● MSF基于命令行,缺少直观的GUI图形用户接口 Armitage只是调用MSF的漏洞利用能力 ● Armitage的每一个GUI操作都可以对应MSF中的一条命令 红队团队合作模拟…

OSCP vulhub LORD OF THE ROOT: 1.0.1

vulhub LORD OF THE ROOT: 1.0.1靶场信息&安装Description一、信息收集第一种ssh爆破第二种猜二、漏洞探测三、漏洞利用四、提权第二种方法:udf提权第三种缓冲区溢出提权靶场信息&安装 地址:https://www.vulnhub.com/entry/lord-of-the-root-10…

APSIM练习:向管理组件添加额外规则

“标准”作物管理组件没有提供很多选项来决定何时播种作物——很可能应该考虑一系列额外的种植规则(例如,土壤是否足够干燥以驱动拖拉机过去?),并且在播种时应采取额外措施(例如添加一些肥料)。…

Tofu目标识别跟踪模块介绍

1.简介Tofu3 是多波段视频物体识别跟踪模块,支持可见光视频与红外视频的输入,支持激光补光变焦自适应控制,支持视频下的多类型物体检测、识别、跟踪等功能。产品支持视频编码、设备管理、目标检测、深度学习识别、跟踪等功能,提供…

服务器防勒索病毒场景分析经验分享

服务器防勒索病毒 l 场景描述 互联网飞速发展,各企业均搭建了自己的服务器。包括文件服务器、代码服务器、业务系统服务器、数据库服务器等。目前大多数企业使用的服务器系统以Windows Server和Linux(Centos)居多,但随着国产操作…

python从入门到实践————图形界面(上)

系列文章目录 文章目录系列文章目录前言窗体组件窗体显示显示窗体文本显示项目实践总结前言 图形用户接口(Graphical User Interface,GUI)是人机交互的重要技术手段,在Python中利用tkinter模块就可以方便地实现图形界面。 在你p…

每日一题:Leetcode203 移除链表元素

文章目录 系列:链表专练 语言:java & go 题目来源:Leetcode203 移除链表元素 难度:简单 考点:头结点 && 虚拟头结点 思路和参考答案文章目录题目描述思路java参考代码go参考代码:题目描述 给…

xcelium——重要特性——提高编译仿真性能

以下图片来自于CadenceTECHTALK研讨会 解决编译仿真的瓶颈问题,提高整体性能 影响performance的因素 xcelium版本access rwccoverage收集snapshot过大,加载时间过长,可通过Zlib加快加快snapshot加载 编译/仿真添加选项: -new…

如何检查自己电脑是否被攻击了?

数据来源 本文仅用于信息安全的学习,请遵守相关法律法规,严禁用于非法途径。若观众因此作出任何危害网络安全的行为,后果自负,与本人无关。 通过系统命令排查账户安全 query user # 查看当前登录账户 lo…

21.字符串的概念,字符串的可修改性

字符串和指针 字符串的概念: 字符串就是以 ‘\0’ 结尾的若干字符的集合。字符串的地址,是第一个字符的地址。可以定义一个字符指针变量保存字符串的地址。比如: char* shelloworld"; 字符串的存储形式:数组、文字常量区、…

靶机测试haclabs-no_name

靶机地址https://www.vulnhub.com/entry/haclabs-no_name,429/靶机测试nmap扫描└─$ nmap -T5 -A 192.168.1.100 -oA hl-portsStarting Nmap 7.92 ( https://nmap.org ) at 2023-01-12 11:16 CST Nmap scan report for 192.168.1.100 Host is up (0.00040s latency). Not show…

获工信部认可!腾讯牵头的《零信任系统技术规范》入选工信部百项团标应用示范

近日,工信部发布《关于公布2022年团体标准应用示范项目的通告》,由腾讯安全牵头起草,公安部第三研究所、国家计算机网络应急技术处理协调中心、中国移动设计院等业内16家零信任厂商、测评机构及用户联合编制的中国第一部《零信任系统技术规范…

Webpack搭建本地服务器

1、开启本地服务器 1.1、为什么要搭建本地服务器? 目前我们开发的代码,为了运行需要有两个操作: 操作一:npm run build,编译相关的代码;操作二:通过live server或者直接通过浏览器&#xff0…

【ROS】—— 机器人系统仿真 —URDF语法 (十三)

文章目录前言1. 概述1.1 概念1.2 作用1.3 相关组件1.3.1 URDF1.3.2 RViz1.3.3 gazebo1.4 准备2. URDF集成Rviz基本流程2.1 创建功能包,导入依赖2.2 编写 URDF 文件2.3 在 launch 文件中集成 URDF 与 Rviz3. URDF语法详解3.1 robot3.2 link3.3 joint3.4 URDF练习3.5 …

Lock锁原理解析【Android进阶】

Lock锁原理解析【Android进阶】 Lock简介 Lock接口位于J.U.C下locks包内,其定义了Lock应该具备的方法。 Lock 方法签名: void lock():获取锁(不死不休,拿不到就一直等)boolean tryLock():获…

13.0、Linux-安装Tomcat、以及防火墙常用命令

13.0、Linux-安装Tomcat、以及防火墙常用命令 防火墙常用命令在本文最下方-> 安装 Tomcat -> 第一步:进入官网下载 Tomcat8 -> Apache Tomcat - Apache Tomcat 8 Software Downloads 第二步:将下载好的文件 通过 Xshell 和 Xftp 工具上传到 L…