【雕爷学编程】MicroPython手册之 ESP32-C3 WebREPL (Web浏览器交互提示)

在这里插入图片描述
MicroPython是为了在嵌入式系统中运行Python 3编程语言而设计的轻量级版本解释器。与常规Python相比,MicroPython解释器体积小(仅100KB左右),通过编译成二进制Executable文件运行,执行效率较高。它使用了轻量级的垃圾回收机制并移除了大部分Python标准库,以适应资源限制的微控制器。

MicroPython主要特点包括:
1、语法和功能与标准Python兼容,易学易用。支持Python大多数核心语法。
2、对硬件直接访问和控制,像Arduino一样控制GPIO、I2C、SPI等。
3、强大的模块系统,提供文件系统、网络、图形界面等功能。
4、支持交叉编译生成高效的原生代码,速度比解释器快10-100倍。
5、代码量少,内存占用小,适合运行在MCU和内存小的开发板上。
6、开源许可,免费使用。Shell交互环境为开发测试提供便利。
7、内置I/O驱动支持大量微控制器平台,如ESP8266、ESP32、STM32、micro:bit、掌控板和PyBoard等。有活跃的社区。

MicroPython的应用场景包括:
1、为嵌入式产品快速构建原型和用户交互。
2、制作一些小型的可 programmable 硬件项目。
3、作为教育工具,帮助初学者学习Python和物联网编程。
4、构建智能设备固件,实现高级控制和云连接。
5、各种微控制器应用如物联网、嵌入式智能、机器人等。

使用MicroPython需要注意:
1、内存和Flash空间有限。
2、解释执行效率不如C语言。
3、部分库函数与标准版有差异。
4、针对平台优化语法,订正与标准Python的差异。
5、合理使用内存资源,避免频繁分配大内存块。
6、利用原生代码提升速度关键部位的性能。
7、适当使用抽象来封装底层硬件操作。

在这里插入图片描述
ESP32-C3是一款由乐鑫科技开发的物联网芯片,它具有以下主要特性:

搭载 RISC-V 32 位单核处理器,时钟频率高达 160 MHz,支持 2.4 GHz Wi-Fi 和 Bluetooth 5 (LE)。
内置 400 KB SRAM,384 KB ROM,支持最大 16 MB 的外置 Flash。
集成了天线开关、射频巴伦、功率放大器、接收低噪声放大器、滤波器、电源管理模块等功能,仅需要 20 余个外围元件。
具有 22 个可编程 GPIO 管脚,支持 ADC、SPI、UART、I2C、I2S、RMT、TWAI 和 PWM。
具有完善的安全机制,包括安全启动、Flash 加密、数字签名和 HMAC 外设、世界控制器模块等。
沿用乐鑫成熟的物联网开发框架 ESP-IDF,支持 Arduino 和 MicroPython 等开源平台。

在这里插入图片描述
MicroPython的ESP32-C3 WebREPL(Web浏览器交互提示)是一种基于Web浏览器的交互式提示工具,用于与ESP32-C3微控制器板进行远程编程和调试。下面是对ESP32-C3 WebREPL的主要特点、应用场景以及需要注意的事项的详细解释:

主要特点:

远程访问:ESP32-C3 WebREPL允许用户通过Web浏览器与连接到WebREPL服务器的ESP32-C3板进行远程访问。这使得开发人员可以在不直接连接到物理设备的情况下,通过互联网进行编程和调试。

交互式提示:ESP32-C3 WebREPL提供了一个交互式的命令行界面,在Web浏览器中可以直接输入和执行MicroPython代码。这使得用户可以快速测试和调试代码,以及与ESP32-C3板进行实时交互。

文件传输:ESP32-C3 WebREPL支持文件传输功能,允许用户在ESP32-C3板和本地计算机之间传输文件。这对于将代码和其他资源上传到板上,或者从板上下载数据和日志等非常有用。

多用户支持:ESP32-C3 WebREPL可以配置为支持多个用户访问,并提供用户认证和权限管理功能。这使得团队可以同时远程访问和管理ESP32-C3板,以进行协作开发和维护。

应用场景:

远程开发和调试:ESP32-C3 WebREPL适用于需要远程访问和调试ESP32-C3板的场景。开发人员可以通过Web浏览器连接到板上的WebREPL服务器,远程执行代码、调试问题和查看输出日志,从而方便地进行开发和调试工作。

无线传感器网络:ESP32-C3 WebREPL可用于无线传感器网络应用中,例如环境监测、物联网设备等。通过WebREPL,用户可以方便地远程管理和控制分布在不同位置的ESP32-C3节点,收集传感器数据并进行实时分析。

教育和培训:ESP32-C3 WebREPL提供了一个友好的界面和交互式的编程环境,非常适合用于教育和培训目的。学生和初学者可以通过Web浏览器与ESP32-C3板进行交互,并学习编程、物联网和嵌入式系统开发等相关知识。

需要注意的事项:

安全性:由于ESP32-C3 WebREPL允许远程访问和控制ESP32-C3板,因此在使用时应注意安全性。建议采取适当的安全措施,如使用安全的网络连接、配置用户认证和访问权限等,以保护系统免受未经授权的访问和攻击。

网络稳定性:由于ESP32-C3 WebREPL依赖于网络连接进行远程访问,因此应确保网络连接的稳定性和可靠性。不稳定的网络连接可能导致远程访问和传输的中断,影响开发和调试工作。

适当使用:ESP32-C3 WebREPL是一个强大的工具,但在使用时需要适度。避免在生产环境中过度依赖WebREPL,以免对系统性能和安全性产生负面影响。在生产环境中,应使用更为稳定和安全的部署方式。

总结而言,MicroPython的ESP32-C3 WebREPL是一种基于Web浏览器的交互提示工具,为ESP32-C3开发者提供了远程编程和调试的便利。它的主要特点包括远程访问、交互式提示、文件传输和多用户支持。它的应用场景涵盖远程开发和调试、无线传感器网络以及教育和培训等领域。使用时需要注意安全性、网络稳定性和适当使用的原则。

案例一:控制LED灯

from machine import Pin
import time

# 定义引脚
led = Pin(2, Pin.OUT)

while True:
    led.value(1)  # 点亮LED
    time.sleep(1)  # 延时1秒
    led.value(0)  # 熄灭LED
    time.sleep(1)  # 延时1

要点解读:这个程序使用MicroPython的ESP32-C3控制了一个连接到GPIO2的LED灯。程序会无限循环地让LED灯闪烁,每次闪烁之间有1秒的间隔。

案例二:读取温度传感器数据

from machine import Pin, ADC
import time

# 定义引脚和ADC对象
temp_sensor = ADC(Pin(34))
temp_sensor.atten(ADC.ATTN_11DB)

while True:
    temp_value = temp_sensor.read()  # 读取温度值
    temp_voltage = temp_value * (3.3 / 4095)  # 将ADC值转换为电压值
    temp_celsius = (temp_voltage - 0.5) * 100  # 计算摄氏温度
    print("Temperature: {:.2f}°C".format(temp_celsius))
    time.sleep(1)  # 延时1

要点解读:这个程序使用MicroPython的ESP32-C3读取了一个连接到GPIO34的温度传感器的数据。程序会无限循环地读取温度值,并将其转换为摄氏温度后打印出来。每次读取之间有1秒的间隔。

案例三:控制舵机

from machine import Pin, PWM
import time

# 定义引脚和PWM对象
servo = PWM(Pin(18), freq=50)

def set_angle(angle):
    duty = angle / 18 + 2
    servo.duty(duty)

while True:
    for angle in range(0, 181, 10):
        set_angle(angle)
        time.sleep(0.5)
    for angle in range(180, 0, -10):
        set_angle(angle)
        time.sleep(0.5)

要点解读:这个程序使用MicroPython的ESP32-C3控制了一个连接到GPIO18的舵机。程序会无限循环地让舵机以10度的间隔旋转,先顺时针旋转到180度,再逆时针旋转到0度。每次旋转之间有0.5秒的间隔。

案例四:点亮LED灯

import machine  
import time  
  
pin = machine.Pin(2, machine.Pin.OUT)   # 设定GPIO2为输出模式  
pin.on()                             # 点亮LED灯  
time.sleep(5)                       # 等待5秒  
pin.off()                           # 关闭LED灯

这个程序将GPIO2配置为输出模式,然后打开LED灯,等待5秒,最后关闭LED灯。这个程序可以在WebREPL中运行,也可以在MicroPython的终端中运行。

案例五:读取温度传感器数据

import machine  
import time  
  
def read_temp():  
    sensor = machine.ADC(machine.Pin(36, machine.Pin.IN))  # 设定ADC通道为36,输入模式  
    adc_value = sensor.read()                             # 读取ADC值  
    temperature = (adc_value * 3.3) / 4096 * 100             # 将ADC值转换为温度值(假设使用的是100k欧姆的温度传感器)  
    return temperature  
  
while True:  
    print(read_temp())                                     # 打印温度值  
    time.sleep(1)                                           # 等待1

这个程序将GPIO36配置为ADC输入模式,然后读取ADC值,并将其转换为温度值。然后在一个无限循环中,每隔一秒打印一次温度值。这个程序可以在WebREPL中运行,也可以在MicroPython的终端中运行。

案例六:控制GPIO输出高低电平

import machine  
import time  
  
pin = machine.Pin(2, machine.Pin.OUT)   # 设定GPIO2为输出模式  
for i in range(10):                    # 循环10次  
    pin.on()                         # 输出高电平  
    time.sleep(1)                   # 等待1秒  
    pin.off()                       # 输出低电平  
    time.sleep(1)                   # 等待1

这个程序将GPIO2配置为输出模式,然后在一个循环中,依次输出高电平和低电平,每个状态持续一秒钟,循环10次。这个程序可以在WebREPL中运行,也可以在MicroPython的终端中运行。

案例七:WebREPL服务器

import network
import webrepl

# 连接到Wi-Fi网络
ssid = 'your_wifi_ssid'
password = 'your_wifi_password'
wifi = network.WLAN(network.STA_IF)
wifi.active(True)
wifi.connect(ssid, password)

# 启动WebREPL服务器
webrepl.start()

要点解读:
代码使用network.WLAN()创建一个Wi-Fi网络对象。
使用wifi.connect()连接到您的Wi-Fi网络,需要提供您的Wi-Fi的SSID和密码。
调用webrepl.start()启动WebREPL服务器。

案例八:使用WebREPL执行远程代码

import webrepl

# 连接到WebREPL
webrepl.start()

# 执行远程代码
webrepl.exec('import machine')
webrepl.exec('led_pin = machine.Pin(2, machine.Pin.OUT)')
webrepl.exec('led_pin.on()')

要点解读:
调用webrepl.start()启动WebREPL服务器。
使用webrepl.exec()执行远程代码。在这个示例中,我们导入machine模块,创建一个引脚对象,然后将引脚设置为输出模式,并将其设置为高电平。

案例九:在WebREPL中上传和运行文件
将名为main.py的文件上传到ESP32-C3,然后通过WebREPL运行它。

import urequests
import webrepl

# 连接到WebREPL
webrepl.start()

# 上传文件到ESP32-C3
def upload_file(filename):
    url = "http://192.168.4.1/put"
    files = {'file': open(filename, 'rb')}
    response = urequests.post(url, files=files)
    print(response.text)

# 运行上传的文件
def run_file(filename):
    url = "http://192.168.4.1/run"
    data = {'filename': filename}
    response = urequests.post(url, json=data)
    print(response.text)

# 测试上传和运行文件
upload_file("main.py")
run_file("main.py")

要点解读:
代码使用urequests库进行HTTP请求,用于上传文件和执行文件。
调用webrepl.start()启动WebREPL服务器。
定义了两个函数:upload_file()用于上传文件到ESP32-C3,run_file()用于运行上传的文件。
在upload_file()函数中,使用urequests.post()方法将文件上传到ESP32-C3的WebREPL服务器。
在run_file()函数中,使用urequests.post()方法发送POST请求,指定要运行的文件名。
在测试部分,调用upload_file()函数上传名为main.py的文件,然后调用run_file()函数运行该文件。
请确保您的ESP32-C3已经连接到Wi-Fi网络,并已启动WebREPL服务器。将要上传的文件放置在与上述代码文件相同的目录中,并将upload_file()和run_file()函数中的filename参数替换为您要上传和运行的文件名。执行代码后,您将在终端中看到上传和执行文件的结果。这段代码允许您通过WebREPL在ESP32-C3上上传和运行文件。使用此功能,您可以轻松管理和执行ESP32-C3上的代码,而无需直接连接到设备或使用其他开发工具。

请注意,以上案例只是为了拓展思路,可能存在错误或不适用的情况。不同的硬件平台、使用场景和MicroPython版本可能会导致不同的使用方法。在实际编程中,您需要根据您的硬件配置和具体需求进行调整,并进行多次实际测试。需要正确连接硬件并了解所使用的传感器和设备的规范和特性非常重要。对于涉及到硬件操作的代码,请确保在使用之前充分了解和确认所使用的引脚和电平等参数的正确性和安全性。

在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
fre内网穿透只能穿透http协议,且页面大小限制在1496B以内(MTU,包含header头部) 包含函数如下: begin(char*,char*,char*,uint16,String,String);//设定参数信息,第一个参数是wifi名称,第二个参数是wifi密码,第三个参数是服务器地址,第四个参数是服务器端口,都五个参数是自定义域名密码,第六个参数是域名(多个域名以英文逗号分割) on(String,void);//页面以及回调函数,第一个参数是页面路径,第二个参数是回调函数 header(String,String);//设定header头部信息 sendfile();//发送默认的SPIFFS文件 sendfile(String);//发送指定的SPIFFS文件 send(int,string,string);//发送string,第一个参数是响应代码一般是200,第二个参数是页面类型,第三个参数是需要发送的文本 send(int,string,uint8_t*,size_t);//发送uint8_t数组文件,第一个参数是响应代码一般是200,第二个参数是页面类型,第三个参数是需要发送的uint8_t数组文件,第四个参数是uint8_t数组文件的大小 send(int,string,char*,size_t);//发送char数组文件,第一个参数是响应代码一般是200,第二个参数是页面类型,第三个参数是需要发送的char数组文件,第四个参数是char数组文件的大小 Authenticate(String, String);//判断Auth鉴权信息,第一个参数是用户名,第二个参数是密码 requestAuthentication();//向页面返回鉴权需求,使页面弹出Auth鉴权登录信息 getheader(String);//返回header指定头部信息参数值 arg(String);//返回GET请求参数值

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驴友花雕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值