嵌入式实训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 结…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...

vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...