嵌入式实训day6
1、
from machine import Pin
from neopixel import NeoPixel
import timeif __name__=="__main__"#创建RBG灯带控制对象,包含5个像素(5个RGB LED)rgb_led = NeoPixel(Pin(4,Pin.OUT),5)#定义RGB颜色RED=(255,0,0)GREEN(0,255,0)BLUE =(0,0,255)YELLOW=(255,150,0)WHITE=(255,255,255)# 白色BLACK=(0,0,0)#黑色(不亮)COLORS =(RED,GREEN,BLUE,YELLOW,WHITE,BLACK)for color in COLORS:#逐一点亮每个RGB LEDfor i in range(5):rgb_led[i]=(color[0], color[1], color[2])rgb_led.write()time.sleep_ms(200)time.sleep_ms(300)
2、
from machine import Pin
import time
import tm1637
if __name__=="__main__":# 定义数码管控制对象display =tm1637.TM1637(clk=Pin(16),dio=Pin(17))# 显示小数display.numbers(13,14)# 13.14time.sleep(2)#显示十六进制display.hex(100)#0x64time.sleep(2)#亮度调节display.brightness(0)time.sleep(2)display.brightness(7)time.sleep(2)#显示温度值display.temperature(26)time.sleep(2)display.temperature(-10)#低温报警:Lotime.sleep(2)display.temperature(100)#高温报警:Hitime.sleep(2)#显示字符串display.show("ABCD")time.sleep(2)#字符串滚动显示display.scroll("18712345678",500)#倒计时10秒num = 10while num >=0:display.number(num)num -= 1time.sleep(1)
3、
import ds18x20
import onewire
from machine import Pin
from machine import Timer
import sys#创建单总线驱动对象
ow= onewire.OneWire(Pin(4))
#定义DS18B20控制对象
ds18b20=ds18x20.DS18X20(ow)
#扫描设备,获取64位序列码,返回结果保存列表中
roms =ds18b20.scan()
if not roms:print("没有扫描到DS18B20设备,请检查硬件连接!")sys.exit()
else:print("扫描到DS18B20设备,序列码是:",roms)#定时器回调函数#
def get_temp(timer0):ds18b20.convert_temp()for rom in roms:temp= ds18b20.read_temp(rom)print("Ds18B20的温度是:%.2f℃"% temp)if __name__=="__main__":timer0 =Timer(0)timer0.init(mode=Timer.PERIODIC, period=1000,callback=get_temp)while True:pass
4、
from machine import Pin
import network
import timeled1=Pin(15,Pin.OUT,value=1)#准备手机热点
ssid="yishen"
password="20020618"def wifi_connect():#创建WLAN对象,STA模式wlan=network.WLAN(network.STA_IF)#激活WIFI模块wlan.active(True)#记录当前的时间用于WIFI连接的超时判定start_time=time.time()if not wlan.isconnected():#准备建立连接print(wlan.scan())wlan.connect(ssid,password)#等待连接让LED闪烁while not wlan.isconnected():led1.value(not led1.value())time.sleep_ms(300)#判定超时if time.time()-start_time>30:print("WIFI连接超时")return Falseelse:#已经连接成功led1.value(0)print("网络配置信息",wlan.ifconfig())return Trueif __name__=="__main__":wifi_connect()
5、
"""
通过socket编程实现一个简易的HTTP服务器
使用手机可以连接到服务器帮控制LED开关
测试:在手机的浏览器输入开发板的IP地址
"""
from machine import Pin
import network
import time
import socket
import sys# 定义LED控制对象,作为连接WIFI指示灯
led1 = Pin(15, Pin.OUT, value=1)# 准备手机热点
ssid = "yishen"
password = "20020618"def wifi_connect():# 创建WLAN对象,STA模式(ESP32开发板连接手机热点-AP)wlan = network.WLAN(network.STA_IF)# 激活WIFI模块wlan.active(True)# 记录当前时间,用于WIFI连接的超时判定start_time = time.time()if not wlan.isconnected():# 准备建立连接# print(wlan.scan())print("开始连接WIFI...")wlan.connect(ssid, password)# 等待连接让LED1闪烁while not wlan.isconnected():led1.value(not led1.value())time.sleep_ms(300)# 超时判定if time.time() - start_time > 30:print("WIFI连接超时!")return Falseelse:# 已经连接成功(如果之前连接过WIFI,上电后会自动连接)led1.value(0)print("网络配置信息", wlan.ifconfig()) # 重点关注IP地址return True# 网页数据
def web_page():# 获取开关灯的状态if led1.value() == 0:led_state = " "else:led_state = "checked"html = \
"""
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>HTTP</title><meta name="viewport" content="width=device-width, initial-scale=1"><style>body {font-family: Arial;text-align: center;margin: 0px auto;padding-top: 30px;}.switch {position: relative;display: inline-block;width: 120px;height: 68px}.switch input {display: none}.slider {position: absolute;top: 0;left: 0;right: 0;bottom: 0;background-color: #ccc;border-radius: 34px}.slider:before {position: absolute;content: "";height: 52px;width: 52px;left: 8px;bottom: 8px;background-color: #fff;-webkit-transition: .4s;transition: .4s;border-radius: 68px}input:checked+.slider {background-color: #2196F3}input:checked+.slider:before {-webkit-transform: translateX(52px);-ms-transform: translateX(52px);transform: translateX(52px)}</style><script>function toggleCheckbox(element) {var xhr = new XMLHttpRequest();if (element.checked) {xhr.open("GET", "/?led1=on", true);}else {xhr.open("GET", "/?led1=off", true);}xhr.send();}</script>
</head><body><h1>ESP32 LED</h1><label class="switch"><input type="checkbox" onchange="toggleCheckbox(this)" %s><span class="slider"></span></label>
</body></html>
""" % (led_state)return html if __name__ == "__main__":# 连接WiFiwhile True:try:if wifi_connect():breakexcept Exception as ex:print("WIFI连接异常:", ex)time.sleep_ms(1000)print("WIFI连接成功!")try:# 创建HTTP通信的套接字(本质就是TCP通信)http_socket = socket.socket()# 设置地址重用选项http_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)# 绑定地址http_socket.bind(("0.0.0.0", 80))# 设置监听http_socket.listen()print("创建HTTP服务器成功")except Exception as ex:print("创建HTTP服务器失败:", ex)sys.exit()# 服务器一直运行while True:try:# 等待客户端连接,返回两个数据,分别是和客户端通信的套接字、客户端地址client, addr = http_socket.accept()print("客户端%s建立了连接" % str(addr))# 接收客户端请求数据request = client.recv(1024)request = str(request)print("收到客户端请求=%s" % request)# GET /?led1=off HTTP/1.1......# GET /?led1=on HTTP/1.1......if request.find("/?led1=on") == 6:led1.value(1)elif request.find("/?led1=off") == 6:led1.value(0)# 发送响应:给客户端返回数据client.send("HTTP/1.1 200 OK\n") # 状态行client.send("Content-Type: text/html\n") # 响应头client.send("Connection: close\n\n") # 响应头response = web_page() # 响应消息体client.write(response) # 发送响应消息client.close() # 关闭本次通信except Exception as ex:print("HTTP通信异常:", ex)
6、
from machine import Pin
import network
import time
import socket
import onewire
import ds18x20#创建单总线驱动对象
ow= onewire.OneWire(Pin(4))
#定义DS18B20控制对象
ds18b20=ds18x20.DS18X20(ow)
#扫描设备,获取64位序列码,返回结果保存列表中# 初始化LED对象
led1 = Pin(15, Pin.OUT, value=1)roms =ds18b20.scan()#定时器回调函数#
def get_temp(timer0):ds18b20.convert_temp()for rom in roms:temp= ds18b20.read_temp(rom)print("Ds18B20的温度是:%.2f℃"% temp)# 准备手机热点
ssid = "yishen"
password = "20020618"def wifi_connect(ssid, password):wlan = network.WLAN(network.STA_IF)wlan.active(True)start_time = time.time()if not wlan.isconnected():print("连接到WiFi...")wlan.connect(ssid, password)while not wlan.isconnected():passprint("网络配置信息:", wlan.ifconfig())return wlan# 准备网页数据
def web_page(temp):html = """
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>DS18B20</title><style>html {font-family: Arial;display: inline-block;margin: 0px auto;text-align: center;}h2 {font-size: 3.0rem;}p {font-size: 3.0rem;}.units {font-size: 1.2rem;}.ds-labels {font-size: 1.5rem;vertical-align: middle;padding-bottom: 15px;}</style>
</head>
<body><h2>ESP32</h2><p><i class="fas fa-thermometer-half" style="color:#059e8a;"></i><span class="ds-labels">Temperature</span><span id="temperature">""" + "%0.1f" % temp + """</span><sup class="units">°C</sup></p><p><i class="fas fa-thermometer-half" style="color:#059e8a;"></i><span class="ds-labels">Temperature</span><span id="temperature">""" + str(round(temp * (9 / 5) + 32.0, 1)) + """</span><sup class="units">°F</sup></p>
</body>
</html>
"""return htmlif __name__ == '__main__':# 初始化WiFi连接wlan = wifi_connect(ssid, password)try:# 创建TCP套接字并绑定地址s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)s.bind(('0.0.0.0', 80))s.listen(5)print('HTTP服务器已启动.')while True:conn, addr = s.accept()print('客户端地址:', addr)request_data = conn.recv(1024)request_data = str(request_data)print('收到请求:', request_data)# 获取DS18B20传感器数据get_temp(None) # 此处传入None,因为定时器回调函数不需要参数# 读取最新得到的温度数据temp = ds18b20.read_temp(roms[0]) # 假定只有一个DS18B20设备# 准备并发送网页响应response = web_page(temp)conn.send(b'HTTP/1.1 200 OK\n')conn.send(b'Content-Type: text/html\n')conn.send(b'Connection: close\n\n')conn.sendall(response)conn.close()except Exception as ex:print("HTTP服务器异常:", ex)
相关文章:

嵌入式实训day6
1、 from machine import Pin from neopixel import NeoPixel import timeif __name__"__main__"#创建RBG灯带控制对象,包含5个像素(5个RGB LED)rgb_led NeoPixel(Pin(4,Pin.OUT),5)#定义RGB颜色RED(255,0,0)GREEN(0,2…...
产品经理是青春饭吗?终于有了答案!
不少考生疑惑产品经理是青春饭吗?产品经理能干到多少岁?弄清楚这些问题,我们才会有长久的规划。产品经理是青春饭吗?产品经理能干到多少岁?一起来看看 一、产品经理是青春饭吗? 产品经理是否吃青春饭需要…...

FPGA - 数 - 加减乘除
一,数的表示 首先,将二进制做如下解释: 2的0次方1 2的1次方2 2的2次方4 2的3次方8 ..... 以此类推,那么任何整数,或者说任意一个自然数均可以采用这种方式来表示。 例如,序列10101001,根据上述…...

软件性能测试之负载测试、压力测试详情介绍
负载测试和压力测试是软件性能测试中的两个重要概念,它们在保证软件质量和性能方面起到至关重要的作用,本文将从多个角度详细介绍这两种测试类型。 一、软件负载测试 负载测试是在特定条件下对软件系统进行长时间运行和大数据量处理的测试ÿ…...
科研辅助工具
科研工具收集 1. 如何筛选出最合适的SCI论文投稿杂志:点击直达 2. 分享三种正确查找期刊全称、缩写的网站: 点击直达...

亿达中国武汉园区入选“武汉市科技金融工作站”及“武汉市线下首贷服务站”
近日,武汉市2024科技金融早春行活动在深交所湖北资本市场培育基地举行。会上,第四批武汉市科技金融工作站试点单位名单及第五批武汉地区金融系统线下首贷服务站名单正式公布,武汉软件新城成功入选上述两个名单。 为缓解科技型企业融资难题&a…...
Docker配置阿里云加速器(2续)
默认情况下镜像是从docker hub下载,由于docker hub服务器在国外,由于网络原因镜像下载速度较慢,一般会配置镜像加速进行下载 国内镜像加速器有阿里云、网易云、中科大等,本章配置阿里云镜像加速器,速度较快 镜像加速源 镜像加速器 镜像加速器地址 <...

我用chatgpt写了一款程序
众所周知,Chatgpt能够帮助人们写代码,前几天苏音试着完全用Chatgpt写一款Python程序 有一句话我很赞同,未来能代替人的不是AI,是会使用AI的人。 最终,写下来效果还不错,完全提升了我的办公效率。 开发前…...

Python实现逻辑回归与判别分析--西瓜数据集
数据 数据data内容如下: 读取数据: import numpy as np import pandas as pd data pd.read_excel(D:/files/data.xlsx) 将汉字转化为01变量: label [] for i in data[好瓜]:l np.where(i 是,1,0)label.append(int(l)) data[label] lab…...

课时154:项目发布_手工发布_手工发布
1.2.3 手工发布 学习目标 这一节,我们从 基础知识、简单实践、小结 三个方面来学习 基础知识 简介 为了合理的演示生产环境的项目代码发布,同时又兼顾实际实验环境的资源,我们这里将 B主机和C主机 用一台VM主机来实现,A主机单…...
鸿蒙开发 一 (四)、ArkTS开发 --UI篇
相对布局 RelativeContainer 支持容器内部的子元素设置相对位置关系子元素支持指定兄弟元素作为锚点,也支持指定父容器作为锚点,基于锚点做相对位置布局 //alignRules 写法let AlignRus:Record<string,Record<string,string|VerticalAlign|Horiz…...

影音发烧友必入:高清先生M8 8K蓝光播放机使用体验8K播放器
影音发烧友必入:高清先生M8 8K蓝光播放机使用体验 高清先生在5.18成功举办新品8K蓝光播放机“M8”的发布会后,心心念念想尝鲜,于是果断下单了一台。 外形 收到货后,是牛皮纸包装,醒目的“高清先生”标识印在正面&…...

【34W字CISSP备考笔记】域1:安全与风险管理
1.1 理解、坚持和弘扬职业道德 1.1.1.(ISC)职业道德规范 1、行为得体、诚实、公正、负责、守法。 2、为委托人提供尽职、合格的服务。 3、促进和保护职业。 4、保护社会、公益、必需的公信和自信,保护基础设施。 1.1.2.组织道德规范 1、RFC 1087 ࿰…...

Camtasia Studio 2024软件下载附加详细安装教程
amtasia Studio 2024是一款功能强大的屏幕录制和视频编辑软件,由TechSmith公司开发。这款软件不仅能够帮助用户轻松地记录电脑屏幕上的任何操作,还可以将录制的视频进行专业的编辑和制作,最终输出高质量的视频教程、演示文稿、培训课程等。 …...
人工智能(AI)与机器学习(ML):塑造未来的技术引擎
目录 前言 一、人工智能(AI)概述 二、机器学习(ML)的作用:深入解析与应用前景 1、机器学习的作用机制 2、机器学习在各个领域的应用 3、机器学习的挑战与前景 三、AI与ML的融合与应用:深度解析与前景…...

post为什么会发送两次请求详解
文章目录 导文跨域请求的预检复杂请求的定义服务器响应预检请求总结 导文 在Web开发中,开发者可能会遇到POST请求被发送了两次的情况,如下图: 尤其是在处理跨域请求时。这种现象可能让开发者感到困惑,但实际上它是浏览器安全机制…...

MySQl基础入门⑯【操作视图】完结
上一边文章内容 表准备 CREATE TABLE Students (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100),email VARCHAR(255),major VARCHAR(100),score int,phone_number VARCHAR(20),entry_year INT,salary DECIMAL(10, 2) );数据准备 INSERT INTO Students (id, name, ema…...
Android Root全教程
1.安装指定镜像:https://blog.csdn.net/weixin_43846562/article/details/130028258 2.安装 magisk:https://blog.csdn.net/qq1337715208/article/details/115922514 3.打开 adb root:https://liwugang.github.io/2021/07/11/magisk_enable…...

对yoloV8进行标签过滤来实现行人检测
前言 上一章我们介绍的通过迁移学习,在新的行人数据集上使用已经学习到的特征和权重,从而更快地实现行人检测任务。模型就会调整其参数以适应新的数据集,以提高对行人的识别性能。接下来介绍一种更快更便捷的方法,依旧是基于yolo…...

论文阅读笔记:Towards Higher Ranks via Adversarial Weight Pruning
论文阅读笔记:Towards Higher Ranks via Adversarial Weight Pruning 1 背景2 创新点3 方法4 模块4.1 问题表述4.2 分析高稀疏度下的权重剪枝4.3 通过SVD进行低秩逼近4.4 保持秩的对抗优化4.5 渐进式剪枝框架 5 效果5.1 和SOTA方法对比5.2 消融实验5.3 开销分析 6 结…...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...