登录 立即注册

找到72个回复 (用户: 童真再见)

童真再见 65楼回复 童真再见有玩esp32的吗?买了个板子上传项目老是出错不知道是不是接线问题 (2023-04-01//)

include <Wire.h>

include "MAX30105.h"

include "spo2_algorithm.h"

include <WiFi.h> // 引入WiFi 库

// WiFi 参数
const char ssid = "64412";
const char
password = "32323433";

WiFiServer server(80); // 在端口80上创建一个web服务器

MAX30105 particleSensor;

define MAX_BRIGHTNESS 255

if defined(AVR_ATmega328P) || defined(AVR_ATmega168)

//Arduino Uno不具备足够的SRAM来存储32位格式的50个红外LED数据和红色LED数据。
//为了解决这个问题,采样数据的16位MSB将被截断。样品变成16位数据。
uint16_t irBuffer[50]; //红外LED传感器数据
uint16_t redBuffer[50]; //红色LED传感器数据

else

uint32_t irBuffer[50]; //红外LED传感器数据
uint32_t redBuffer[50]; //红色LED传感器数据

endif

int32_t spo2; //SPO2值
int8_t validSPO2; //指示SPO2计算是否有效
int32_t heartRate; //心率值
int8_t validHeartRate; //指示心率计算是否有效

bool sensorEnabled = false; //标志位,表示传感器是否启用

void setup()
{
Serial.begin(115200); // 以115200比特/秒初始化串行通信:

// 初始化WIFI连接
Serial.println();
Serial.println();
Serial.print("连接到 ");
Serial.println(ssid);
WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}

Serial.println("");
Serial.println("WiFi 连接成功");
Serial.println(WiFi.localIP());

// 初始化Web服务器
server.begin();
Serial.println("Web服务器已启动");

// 初始化传感器
Wire.begin(4, 5); // SDA = GPIO 4, SCL = GPIO 5
if (!particleSensor.begin(Wire, I2C_SPEED_FAST)) //使用默认的I2C端口,400kHz的速度
{
Serial.println(F("未找到MAX30105。 请检查布线/电源。"));
while (1);
}

particleSensor.setup(55, 4, 2, 200, 411, 4096); //使用这些设置配置传感器

// 初始化结束后关闭传感器模块
particleSensor.shutDown();
sensorEnabled = false;
}

long lastActiveTime = 0;

void loop()
{
// 等待Web客户端连接
WiFiClient client = server.available();
if (client) {
Serial.println("New Client.");
String currentLine = "";
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
if (c == '\n') {
if (currentLine.length() == 0) {
// 发送HTTP头部
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println();

        // 发送HTML内容
        client.println("&lt;html>");
        client.println("&lt;head>&lt;title>MAX30102 控制&lt;/title>&lt;/head>");
        client.println("&lt;body>");
        client.println("&lt;h1>MAX30102 控制&lt;/h1>");
        client.println("&lt;p>当前状态: " + String(sensorEnabled ? "已打开" : "已关闭") + "&lt;/p>");
        client.println("&lt;form method=\"POST\">");
        if (sensorEnabled) {
          client.println("&lt;input type=\"submit\" name=\"action\" value=\"关闭传感器\"/>");
        } else {
          client.println("&lt;input type=\"submit\" name=\"action\" value=\"打开传感器\"/>");
        }
        client.println("&lt;/form>");
        client.println("&lt;/body>");
        client.println("&lt;/html>");

        // 处理命令
        if (currentLine.indexOf("GET /?action=打开传感器") != -1) {
          if (!sensorEnabled) {
            // 打开传感器模块
            particleSensor.wakeUp();
            delay(500); // 给传感器启动一些时间
            sensorEnabled = true;
          }
        } else if (currentLine.indexOf("GET /?action=关闭传感器") != -1) {
          if (sensorEnabled) {
            // 关闭传感器模块
            particleSensor.shutDown();
            sensorEnabled = false;
          }
        }

        break;
      } else {
        currentLine = "";
      }
    } else if (c != '\r') {
      currentLine += c;
    }
  }
}

// 断开连接
client.stop();
Serial.println("Client Disconnected.");

}

// 检查传感器是否需要关闭
if (sensorEnabled && (millis() - lastActiveTime > 60000)) {
particleSensor.shutDown();
sensorEnabled = false;
}

//读取前50个样本,并确定信号范围
for (byte i = 0 ; i < 50 ; i++)
{
while (particleSensor.available() == false) //是否有新数据?
particleSensor.check(); //检查传感器是否有新数据

redBuffer<span style="font-style:italic"> = particleSensor.getRed();
irBuffer<span style="font-style:italic"> = particleSensor.getIR();
particleSensor.nextSample(); //处理完当前样本后,转到下一个样本
Serial.print(F("红光="));
Serial.print(redBuffer<span style="font-style:italic">, DEC);
Serial.print(F(", 红外="));
Serial.println(irBuffer<span style="font-style:italic">, DEC);

}

//在前50个样本之后计算心率和SpO2(前4秒的样本)
maxim_heart_rate_and_oxygen_saturation(irBuffer, 50, redBuffer, &spo2, &validSPO2, &heartRate, &validHeartRate);

//无线循环地从MAX30102中采样。每1秒计算一次心率和SpO2
while (1)
{
//将内存中的前25个样本丢弃,并将最后25个样本移动到顶部
for (byte i = 25; i < 50; i++)
{
redBuffer[i - 25] = redBuffer;
irBuffer[i - 25] = irBuffer;
}

//在计算心率之前,采取25个样本集。
for (byte i = 25; i &lt; 50; i++)
{
  while (particleSensor.available() == false) //是否有新数据?
    particleSensor.check(); //检查传感器是否有新数据

  redBuffer<span style="font-style:italic"> = particleSensor.getRed();
  irBuffer<span style="font-style:italic"> = particleSensor.getIR();
  particleSensor.nextSample(); //处理完当前样本后,转到下一个样本
  Serial.print(F("红光="));
  Serial.print(redBuffer<span style="font-style:italic">, DEC);
  Serial.print(F(", 红外="));
  Serial.print(irBuffer<span style="font-style:italic">, DEC);

  Serial.print(F(", 心率="));
  Serial.print(heartRate, DEC);

  Serial.print(F(", HRvalid="));
  Serial.print(validHeartRate, DEC);

  Serial.print(F(", 血氧饱和度="));
  Serial.print(spo2, DEC);

  Serial.print(F(", SPO2Valid="));
  Serial.println(validSPO2, DEC);

}

//收集25个新样本后,重新计算HR和SP02
maxim_heart_rate_and_oxygen_saturation(irBuffer, 50, redBuffer, &spo2, &validSPO2, &heartRate, &validHeartRate);
printToSerial();

}
}

void printToSerial() {
if(validSPO2 && validHeartRate) {
Serial.print(F("心率: ")); Serial.println(heartRate, DEC);
Serial.print(F("血氧饱和度: ")); Serial.println(spo2, DEC);
} else {
Serial.println(F("无效"));
}
}

// 如果需要关闭传感器模块,则可以使用以下函数
void shutDownSensorModule() {
if (sensorEnabled) {
particleSensor.shutDown();
sensorEnabled = false;
}
}
这段代码中Web服务器,传感器的采样和计算代码在一个无限循环中会崩溃,帮我修改一下
手机

童真再见 126楼回复 cherrydra[网页插件] hu60bot: 立即与openai 对话 (2023-03-30//)

@老虎会游泳,原来如此
手机

童真再见 103楼回复 cherrydra[网页插件] hu60bot: 立即与openai 对话 (2023-03-30//)

@老虎会游泳,是我网页插件的问题吗
手机

童真再见 9楼回复 老虎会游泳ChatGPT机器人已支持GPT-4抢先体验(3小时限额25条) (2023-03-16//)

谢谢老虎,这玩意可比百度好用多了

手机
童真再见 14楼回复 童真再见有玩esp32的吗?买了个板子上传项目老是出错不知道是不是接线问题 (2023-03-05//)

@罐子@Curtion,找到原因了是排针和板子接触不良
手机

童真再见 10楼回复 童真再见有玩esp32的吗?买了个板子上传项目老是出错不知道是不是接线问题 (2023-03-04//)

@胡图图@罐子,线的位置换了后出现这个错误,是不是线的质量不好啊?

esptool.py v3.0-dev
Serial port COM3
Connecting......................................_____

A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header
A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header

微信截图_20230304230539.png(61.65 KB)

手机

童真再见 9楼回复 童真再见有玩esp32的吗?买了个板子上传项目老是出错不知道是不是接线问题 (2023-03-04//)

发完帖后发现端口也选错了,USB转ttl的驱动没装,装完后显示第三个端口了,再试上传显示这个错误,这个错误看来就是线接错了

微信图片_20230304210211.png(35.62 KB)
手机

童真再见 8楼回复 童真再见有玩esp32的吗?买了个板子上传项目老是出错不知道是不是接线问题 (2023-03-04//)

@胡图图@罐子没仔细看原来是接错了...我刚才把软件卸载了,现在重下呢,疏忽了
手机

童真再见 1楼回复 童真再见有玩esp32的吗?买了个板子上传项目老是出错不知道是不是接线问题 (2023-03-04//)

微信图片_20230304155514.jpg(4.02 MB)
手机

童真再见 8楼回复 残缘20元的个人服务器(随身wifi.附刷机资料链接) (2023-02-11//)

是里面放卡那种吗
手机

童真再见 14楼回复 胡椒舰长QQ音乐真恶心,偷偷跑了我2T的上传流量, (2023-02-05//)

@老虎会游泳,以前看过这种事,最后也没消息了,个人维权感觉很麻烦
手机

童真再见 4楼回复 胡椒舰长QQ音乐真恶心,偷偷跑了我2T的上传流量, (2023-02-03//)

这种行为违法不
手机

童真再见 3楼回复 张小强有什么方式可以将web页面封装成apk (2023-01-25//)

用APP封装的容易闪退
手机

童真再见 9楼回复 老虎会游泳不要问ChatGPT生活常识问题,它确实不知道自己在说什么 (2023-01-17//)

视频链接

手机

童真再见 4楼回复 童真再见一直正常运行的file_get_contents和curl突然出错了怎么回事? (2023-01-04//)

等在用不了时候试试
手机

童真再见 1楼回复 童真再见一直正常运行的file_get_contents和curl突然出错了怎么回事? (2023-01-03//)

又正常了…不知道哪里的问题
手机

童真再见 2楼回复 童真再见virus.js.qexvmc.2这个是什么病毒 (2022-11-24//)
童真再见 11楼回复 凡焰求推荐blog程序 (2022-10-27//)

有没有用过这个的wellcms
手机

童真再见 7楼回复 童真再见c盘里有个乱码文件夹,是病毒还是哪个软件的? (2022-10-26//)

@老虎会游泳,只要 不是病毒就行,我还以为电脑里有隐藏病毒了呢
手机

童真再见 5楼回复 童真再见c盘里有个乱码文件夹,是病毒还是哪个软件的? (2022-10-25//)

@无名啊,我替换文件时发现的
手机

下一页 上一页 (2 / 4页)

10月22日 23:25 星期三

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1