网页制作一个网站八个页面咋做,高端定制网站公司哪家好,怎么在百度上发表文章,计算机软件开发需要学什么传感器PinI/O状态D412输出1开0关D513输出1开0关 概述
MicroPython是python3编程语言的精简实现#xff0c;能够在资源非常有限的硬件上运行#xff0c;如MCU微控制器Micropython的网络功能和计算功能很强大#xff0c;有非常多的库可以使用#xff0c;它为嵌入式开发带来了…传感器PinI/O状态D412输出1开0关D513输出1开0关 概述
MicroPython是python3编程语言的精简实现能够在资源非常有限的硬件上运行如MCU微控制器Micropython的网络功能和计算功能很强大有非常多的库可以使用它为嵌入式开发带来了一种新的编程方式和思维模式。嵌入式工程师不需要每次从最底层开始构建系统可以直接从经过验证的硬件系统和软件架构开始设计把重点放在应用层的开发上降低了开发门槛提高了开发效率。
合宙ESP32 C3外观及引脚分布 固件烧录
可使用在线网站进行固件烧录https://dev.16302.com/tools/#/
GPIO相关知识 导入GPIO模块
from machine import Pin创建一个GPIO对象
# 三种构造函数
# 2引脚
# Pin.OUT输出方向为输出
#value1: 高电平
#value0: 低电平
ledPin(2)
ledPin(2,Pin.OUT)
ledPin(2,Pin.OUT,value1)输入输出电频的两种方法
# 示例2引脚输出高电频
from machine import Pin
ledPin(2,Pin.OUT)
# 方法一
led.value(1)
# 方法二
led.on()# 示例2引脚输出低电频
from machine import Pin
ledPin(2,Pin.OUT)
# 方法一
led.value(0)
# 方法二
led.off() 延时相关知识点 导入延时模块
import time延时三种级别
# 秒
time.sleep(1)
# 毫秒
time.sleep_ms(1)
# 微妙
time.sleep_us(1)LED灯闪烁
from machine import Pin
import time
led Pin(9,Pin.OUT,value0)
while True:led.on()time.sleep(1)print(开)led.off()time.sleep(1)print(关)
# D4和D5交替闪烁
from machine import Pin
import time
led12 Pin(12,Pin.OUT,value0)
led13 Pin(13,Pin.OUT,value0)
while True:led12.off()led13.on()time.sleep(1)led12.on()led13.off()time.sleep(1) PWM相关知识点 导入PWM模块
from machine import Pin,PWM
创建PWM对象
# 参数一引脚
# 参数二频率
# 参数三占空比pwm1PWM(Pin(2,Pin.OUT),freq500,drty512)其他方法 PWM呼吸灯
from machine import Pin,PWM
import time
# 判断状态
# 0:1023到0
# 1:0到1023
open_off0
pwmval1023
pwm9PWM(Pin(9,Pin.OUT),freq500,dutypwmval)
while True:if open_off0:pwmvalpwmval-1if pwmval0:open_off1else:pwmvalpwmval1if pwmval1023:open_off0pwm9.duty(pwmval)time.sleep_ms(1) 定时器相关知识点 导入Timer模块
from machine import Timer创建一个定时器对象
ti Timer(-1) # -1表示使用软件定时器
# 初始化定时器单次循环和循环定时
# 参数一间隔 单位毫秒
# 参数二工作模式单次和循环
# 参数三回调函数
ti.init(period200,modeTimer.ONE_SHOT,callbackfunciton1)
ti.init(period200,modeTimer.PERIODIC,callbackfunciton1)其他函数 # 待验证from machine import Timer
timTimer(-1)
result 0
def Service_T(tim):global reusltresult result1print(当前秒数,reuslt)tim.deinit()tim.init(period1000,modeTimer.PERIODIC,callbackService_T)DS18B20 导入模块
from machine import Pin
import onewire,ds18x20,time
创建单总线对象将其作为参数创建DS18B20对象
owonewire.OneWire(Pin(5))
dsds18x20.DS18X20(ow)温度采集基本流程
rowsds.scan()
ds.convert_temp()
time.sleep_ms(750)
for row in rows:ds.read_temp(row)网络连接相关功能
网络模块network主要针对wifi,提供网络驱动和程序配置功能可以很方便的进行参数设置和网络连接。
导入模块
import network
# WLAN类提供了WIFI网络驱动
# 创建WLAN网络接口对象支持两种网络接口
# 第一种AP热点模式作为服务器让其他WIFI客户端连接
apnetwork.WLAN(network.AP_IF)
# 第二种常用普通客户端模式连接到WIIF热点
stanetwork_WLAN(network.STA_IF) 其他方法
action() # 激活或禁用网络接口
scan() # 扫描无线网络扫描可用WIFI名称 import network
wifi network.WLAN(network.STA_IF)
wifi.active(True)
scan wifi.scan()
for row in scan:print(row[0])
# # 结果
# %Run -c $EDITOR_CONTENT
# baaa
# b\xe4\xba\x91\xe8\xae\xa1\xe7\xae\x97\xe5\xb7\xa5\xe4\xbd\x9c\xe5\xae\xa4
# bJSJ
# bWZXY
# b
# b
# bJSJ
# bWZXY
# bWZXY
# bTineco_0269
# bWZXY
# b
# b\xe5\xa4\xa7\xe6\x95\xb0\xe6\x8d\xae\xe5\xb7\xa5\xe4\xbd\x9c\xe5\xae\xa4
# b
# bJSJ
# b
# bHUAWEI-JCQ262
# bFJXX-2.4G
# bTP-LINK_5CE4
# bTP-LINK_DD
# b
# bWZXY
# b
# b706
# bWZXY
# bTP-LINK_DD
# bCMCC-eqh6
# AP模式和config()方法
# 设置连接WIFI热点的名称、密码、信道
ap.config(essid名称,password密码,channel1)
# 读取热点名称# 例
import network
apnetwork.WLAN(network.AP_IF)
ap.active(True)
ap.config(essidaaa, password12345678 )
# 查询名称
print(ap.config(essid))STA模式和ifconfig方法
实践说明
#ifconfig方法的参数一个元组
# 元组中有四个参数分别是ip/子网掩码、网关、dnsimport network
sta network.WLAN(network.STA_IF)
sta.active(True)sta.ifconfig((192.168.1.1,255.255.255.0,192.168.1.254,8.8.8.8))
# 不传参数使用该方法则返回配置信息
print(sta.ifconfig()) 接入WIFI网络 # connect(ssid,password) 方法连接网络
# disconnect() 断开网络
# isconnected() 查询网络状态案例 import time,networksta network.WLAN(network.STA_IP)
sta.active(True)
if not sta.isconnected():print(正在等待网络连接)sta.connect(aaa,12345678)while not sta.isconnected():pass
print(sta.ifconfig())
time.sleep(10)
sta.disconnect
print(网络已断开)Socket相关知识
导入模块
import socket构造函数
# 三个参数
# 参数一socket_INET/socket_INET6
# 参数二
TCPsocket.SOCK_STREAM
UDP: socket.SOCK_DGRAM
# 参数三可选
socket()其他方法
WIFI模块登录新大陆云平台 登录新大陆云平台
建立物联网项目并添加设备 登录云平台http://www.nlecloud.com开发者中心》新建项目》填写项目名称和选择联网方案下一步》填写网关名称、设备标识和选择通信方式点击确定添加设备》完成。 根据设备标识和传输密钥封装登录数据包发送到云平台后进行登录。传输数据格式 | JSON键 | JSON值 | 说明 | 消息示例 | | — | — | — | — | | t | 1 | 固体数字1代表连接请求 | | | device | 设备标识 | 在平台上添加设备时的设备标识1 新大陆网关进入网关设置-》【参数设置】-》【系统参数】中的序列号2 新大陆农业网关浏览器登录农业网关设置页面-》【设备状态】中的设备编号3 新大陆家居网关进入平板的家居网关主界面界面左上角的一行序列号4 其它的MCU/SOC/网关/手机等设备可自行输入一个唯一的标识用于与平台连接 | PF12345678 | | Key | 传输密钥 | 参考以下鉴权方式 | | | ver | 客户端代码版本号 | 可以是自己拟定的一组客户端代码版本号值 | V1.1 |
# device :为设备标识
# key: 为传输密钥{t:1,device:f3234242f,key:cac7287d416b48abbca2ad6428ec26be,ver:v0.0.0.0} import socket,time,network
from machine import Pin
# 连接WIFI
print(设备上电成功,end\n)
sta network.WLAN(network.STA_IF)
ssidaaa
password12345678
sta.active(True)
if not sta.isconnected():print(正在进行网络连接中)sta.connect(ssid,password)while not sta.isconnected():passprint(WIFI:,ssid,连接成功)
print()
# socket 连接并发送心跳包
ssocket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((121.37.241.174,8600))
time.sleep(1)
s.send(b{t:1,device:f3234242f,key:cac7287d416b48abbca2ad6428ec26be,ver:v0.0.0.0})
msg s.recv(256)
print(msg)# socket.socket(socket.AF_INET,socket.SOCK_STREAM)# 返回结果
b{status:0,t:2}\r效果图 心跳包请求
心跳包是为了保持esp32_c3保持与云平台上的连接在90秒内单片机与云平台无通信或没有心跳包时 云平台会自动与设备断开连接。心跳请求是客户端周期性的向平台端发送心跳包通知对方自己状态的一种机制。TCP协议的默认超时时间为1分钟设备连接后在超时期内无数据传输时需要定期向平台端发送PING_REQ消息以保持连接如果双方在固定1分钟时间内没有任何报文交互包括此心跳报文则服务端将主动关闭该连接。
import socket,time,network
from machine import Pin
# 连接WIFI
print(设备上电成功,end\n)
sta network.WLAN(network.STA_IF)
ssidaaa
password12345678
sta.active(True)
if not sta.isconnected():print(正在进行网络连接中)sta.connect(ssid,password)while not sta.isconnected():passprint(WIFI:,ssid,连接成功)
print()
# socket 连接并发送心跳包
ssocket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((121.37.241.174,8600))
time.sleep(1)
s.send(b{t:1,device:f3234242f,key:cac7287d416b48abbca2ad6428ec26be,ver:v0.0.0.0})
msg s.recv(256)
print(msg)
print(成功登录云平台)
# 发送心跳包
num0
while True:num 1s.send(b$ok##)print(第,num,次心跳包)# 解码打印print(s.recv(256).decode(utf-8))time.sleep(10)
效果图