zygalaxy

  • 2024-10-31
  • 发表了主题帖: 【2024 DigiKey创意大赛】- 基于毫米波雷达的生命体征检测及健康监护系统-作品提交

    本帖最后由 zygalaxy 于 2024-10-31 23:13 编辑   基于毫米波雷达的生命体征检测及健康监护系统   作者:zygalaxy 一、作品简介 作品照片:   作品功能介绍: 本系统融合毫米波雷达与多传感器技术,提供心率、呼吸频率监测及睡眠质量分析,实时数据可通过LCD屏和手机APP查看;摔倒检测功能在确认后自动报警并通知相关联系人;环境监测温湿度,异常时自动提醒用户采取措施。系统设计全面监控健康与环境,提升生活安全与舒适度。 物料清单及简介: 1、毫米波雷达传感器(MR60BHA1和MR60ADF) 用于非接触式检测老年人的心率、呼吸频率和摔倒情况。这些传感器利用毫米波雷达技术实现高精度的生命体征检测。 2、ESP32-S3开发板 作为系统的主控制器,执行数据处理、分析与设备控制功能。 3、ESP32-S3-LCD-BOARD 实时显示采集到的数据进行展示。 4、温湿度传感器 监测室内环境的温度和湿度变化,帮助维持适宜的生活环境。   二、系统框图 设计思路: 通过集成毫米波雷达技术和多种传感器,实现对用户心率、呼吸频率、睡眠质量等健康指标的实时监测,并能在检测到摔倒等紧急情况时自动报警,同时还能监控室内空气质量,提醒用户改善居住环境,以此来提升生活质量和安全性。 系统软硬件介绍: 硬件部分 1、毫米波雷达传感器(MR60BHA1和MR60ADF):非接触式检测心率、呼吸频率及摔倒情况。 2、温湿度传感器:监测室内温度和湿度。 3、ESP32-S3开发板:作为主控制器,负责数据处理、分析和设备控制。 软件部分 1、ESP-IDF开发框架:基于C/C++,用于开发和调试系统应用。 2、手机应用:实时查看健康数据,接收报警通知。 3、网页应用:查看健康数据。 4、数据分析和可视化:对健康数据进行处理,提供可视化报表。 实现框图:   三、各部分功能说明 (1)健康监护模块 1、心率监测:通过MR60BHA1毫米波雷达实时监测心率,数据通过ESP32模块传输至LCD触摸屏显示器和用户手- 完成了心率监测功能,通过MR60BHA1毫米波雷达实现了非接触式的心率监测,并成功将数据传输到显示终端和手机APP。 2、呼吸频率监测已经可以准确捕捉呼吸频率的变化,并且在异常情况下能够及时报警。 3、睡眠质量监测已能提供详细的睡眠质量报告,帮助用户改善睡眠。   实现思路: 通过UART esp32 与毫米波雷达传感进行通信,esp32 解析串口发送的相关数据并解析为呼吸、睡眠、心率等信息进行传递。非接触式的采集信息能够大幅度避免人体的不适。   相关部分代码:   void app_main(void) { ESP_LOGI(TAG, "Compile time: %s %s", __DATE__, __TIME__); // Initialize NVS esp_err_t err = nvs_flash_init(); if (err == ESP_ERR_NVS_NO_FREE_PAGES || err == ESP_ERR_NVS_NEW_VERSION_FOUND) { ESP_ERROR_CHECK(nvs_flash_erase()); err = nvs_flash_init(); } ESP_ERROR_CHECK(err); // Initialize display and LVGL bsp_display_start(); ESP_LOGI(TAG, "Display LVGL demo"); // Lock the display to prevent interference during initialization bsp_display_lock(0); // Pre-initialize styles (if needed) lv_style_pre_init(); // 创建一个屏幕 lv_obj_t *scr = lv_disp_get_scr_act(NULL); // 创建一个容器并设置为网格布局 lv_obj_t *cont = lv_obj_create(scr); lv_obj_set_size(cont, 480, 480); // 假设屏幕分辨率为240x135,你可以根据实际情况调整 lv_obj_center(cont); lv_obj_set_flex_flow(cont, LV_FLEX_FLOW_COLUMN); // 创建并配置心率标签 lv_obj_t *label_hr = lv_label_create(cont); lv_label_set_text(label_hr, "Heart Rate: --"); lv_obj_set_style_text_font(label_hr, &lv_font_montserrat_26, 0); // 使用较大的字体 lv_obj_set_style_text_align(label_hr, LV_TEXT_ALIGN_CENTER, 0); // 文本居中 // 创建并配置呼吸率标签 lv_obj_t *label_br = lv_label_create(cont); lv_label_set_text(label_br, "Breathing Rate: --"); lv_obj_set_style_text_font(label_br, &lv_font_montserrat_26, 0); lv_obj_set_style_text_align(label_br, LV_TEXT_ALIGN_CENTER, 0); // 创建并配置温度标签 lv_obj_t *label_temp = lv_label_create(cont); lv_label_set_text(label_temp, "Temperature: --"); lv_obj_set_style_text_font(label_temp, &lv_font_montserrat_26, 0); lv_obj_set_style_text_align(label_temp, LV_TEXT_ALIGN_CENTER, 0); // 创建并配置湿度标签 lv_obj_t *label_humid = lv_label_create(cont); lv_label_set_text(label_humid, "Humidity: --"); lv_obj_set_style_text_font(label_humid, &lv_font_montserrat_26, 0); lv_obj_set_style_text_align(label_humid, LV_TEXT_ALIGN_CENTER, 0); // 保存标签指针 hr_label = label_hr; br_label = label_br; temp_label = label_temp; humid_label = label_humid; // 设置网格布局 lv_obj_set_layout(cont, LV_LAYOUT_FLEX); lv_obj_set_flex_flow(cont, LV_FLEX_FLOW_ROW_WRAP); lv_obj_set_flex_align(cont, LV_FLEX_ALIGN_SPACE_EVENLY, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER); // Unlock the display after initialization bsp_display_unlock(); // Initialize Wi-Fi wifi_init(); // Main loop to handle LVGL tasks while (1) { lv_task_handler(); // Process LVGL tasks vTaskDelay(pdMS_TO_TICKS(5)); // Short delay } } (2)摔倒检测: 1、通过MR60ADF毫米波雷达传感器检测人体摔倒事件,确认摔倒后,系统将自动触发报警并通知相关人员。 2、数据记录:记录摔倒事件的时间、地点等信息,供事后分析和改善。   实现思路: 通过 esp32检测雷达传感器的输出引脚,当检测到跌倒的时候会检测指定引脚的电平信号来判断是否摔倒,同时像服务器发送相关跌倒的信息进行报警。   相关部分代码: // #include <Arduino.h> #include <WiFi.h> #include <PubSubClient.h> #define FALL_DETECT_PIN 3 // 新增:定义摔倒检测引脚 // WiFi network credentials const char *ssid = "ExclusiveForQuZhihang"; const char *password = "quzhihang1314!"; // MQTT broker settings const char *mqtt_server = "192.168.2.105"; const int mqtt_port = 1883; const char *clientId = "fall_1"; const char *mqtt_user = "zygalaxy"; // 摔倒检测主题 const char *fall_topic = "t/fall_detection"; // 新增:定义摔倒检测的主题 WiFiClient wifiClient; PubSubClient client(wifiClient); void callback(char *topic, byte *payload, unsigned int length) { Serial.print("Message arrived on topic: "); Serial.println(topic); Serial.print("Message:"); for (int i = 0; i < length; i++) { Serial.print((char)payload[i]); } Serial.println(); } void reconnect() { while (!client.connected()) { Serial.print("Attempting MQTT connection..."); if (client.connect(clientId)) { Serial.println(" connected"); } else { Serial.print(" failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); delay(5000); } } } void setup() { Serial.begin(115200); while (!Serial) ; Serial.println("Ready"); pinMode(FALL_DETECT_PIN, INPUT_PULLUP); // 新增:设置摔倒检测引脚为输入模式,并启用内部上拉电阻 WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("\nConnected to the WiFi network"); client.setServer(mqtt_server, mqtt_port); client.setCallback(callback); } void loop() { if (!client.connected()) { reconnect(); } client.loop(); // 检测摔倒 if (digitalRead(FALL_DETECT_PIN) == LOW) // 新增:如果摔倒检测引脚为低电平 { Serial.println("Fall detected!"); // 发送摔倒信息 client.publish(fall_topic, "Fall Detected"); // 新增:发布摔倒信息 // 可以添加延迟或其他逻辑来避免重复发送 delay(3000); // 等待一段时间,防止连续触发 } delay(200); }   (3)环境监测模块 1、空气质量监测:集成空气温湿度传感器,实时监测室内空气温湿度。 2、环境信息展示:在LCD触摸屏和手机APP上实时展示空气温湿度等环境信息。 3、报警系统:当空气质量参数超出正常范围时,系统会自动报警。   实现思路: 通过 esp32 驱动 dht11 温湿度传感器,读取温湿度信息,通过 mqtt 协议把数据发送到服务端进行储存,以便于监护者能够准确获取室内舒适度信息。   相关部分代码: // #include <Arduino.h> #include <WiFi.h> #include <PubSubClient.h> #include "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); // WiFi network credentials const char *ssid = "ExclusiveForQuZhihang"; const char *password = "quzhihang1314!"; // MQTT broker settings const char *mqtt_server = "192.168.2.105"; const int mqtt_port = 1883; const char *clientId = "humidity_1"; const char *mqtt_user = "zygalaxy"; // 温湿度主题 const char *humidity_topic = "t/humidity"; // 'payload': '{"humidity": 57, "temperature": 25}' WiFiClient wifiClient; PubSubClient client(wifiClient); void callback(char *topic, byte *payload, unsigned int length) { Serial.print("Message arrived on topic: "); Serial.println(topic); Serial.print("Message:"); for (int i = 0; i < length; i++) { Serial.print((char)payload[i]); } Serial.println(); } void reconnect() { while (!client.connected()) { Serial.print("Attempting MQTT connection..."); if (client.connect(clientId)) { Serial.println(" connected"); } else { Serial.print(" failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); delay(5000); } } } void setup() { Serial.begin(115200); while (!Serial) ; Serial.println("Ready"); Serial.println(F("DHTxx test!")); dht.begin(); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println("\nConnected to the WiFi network"); client.setServer(mqtt_server, mqtt_port); client.setCallback(callback); } int a = 0; void loop() { if (!client.connected()) { reconnect(); } // 读取温湿度 float h = dht.readHumidity(); // Read temperature as Celsius (the default) float t = dht.readTemperature(); // Read temperature as Fahrenheit (isFahrenheit = true) float f = dht.readTemperature(true); // Check if any reads failed and exit early (to try again). if (isnan(h) || isnan(t) || isnan(f)) { Serial.println(F("Failed to read from DHT sensor!")); return; } client.loop(); // 定义发送的数据 String payload = "{\"humidity\":" + String(h) + ",\"temperature\":" + String(t) + "}"; client.publish(humidity_topic, payload.c_str()); delay(200); }   四、作品源码 作品源码:https://download.eeworld.com.cn/detail/zygalaxy/634864 (注意:运行项目需要确保安装环境搭建文档全部搭建好环境) 五、作品功能演示视频     六、项目总结 项目总结: 通过项目整合与调试,我成功地将基于毫米波雷达的生命体征检测及健康监护系统各个模块整合在一起,实现了健康监护和环境监测的功能。在调试过程中,我解决了各种问题,确保了系统的稳定性和可靠性。未来,我将继续优化系统的功能和性能,为用户提供更加智能化、便捷化的健康监护与环境监测服务。 帖子分享链接汇总: https://bbs.eeworld.com.cn/thread-1297669-1-1.html https://bbs.eeworld.com.cn/thread-1297670-1-1.html https://bbs.eeworld.com.cn/thread-1297673-1-1.html https://bbs.eeworld.com.cn/thread-1297671-1-1.html https://bbs.eeworld.com.cn/thread-1297674-1-1.html https://bbs.eeworld.com.cn/thread-1297704-1-1.html https://bbs.eeworld.com.cn/thread-1297705-1-1.html https://bbs.eeworld.com.cn/thread-1297763-1-1.html https://bbs.eeworld.com.cn/thread-1297752-1-1.html 七、其他 心得体会: 通过参加本次的【2024 DigiKey创意大赛】让我收获良多,学习了许多没有接触到的新知识,比如 ESP-IDF环境的开发,以及数据传输等多种方式,再次感谢本次大赛给我提供这么好的平台,祝大赛越办越好!  

  • 上传了资料: 【2024 DigiKey创意大赛】- 基于毫米波雷达的生命体征检测及健康监护系统-源码下载

  • 发表了主题帖: 【2024 DigiKey创意大赛】- 基于毫米波雷达的生命体征检测及健康监护系统-环境监测

    本帖最后由 zygalaxy 于 2024-10-31 19:56 编辑 ##【2024 DigiKey创意大赛】- 基于毫米波雷达的生命体征检测及健康监护系统 - 环境监测模块开发 ## 一、模块概述 本环境监测模块旨在通过温湿度传感器,实时监测室内温度和湿度,并将数据展示在LCD触摸屏和手机APP上。当温湿度参数超出正常范围时,系统会自动报警,提醒用户采取措施改善环境。 ## 二、功能需求 1. **温湿度监测**    - 利用空气温湿度传感器监测室内温度和湿度。 2. **环境信息展示**    - 在LCD触摸屏和手机APP上实时展示温湿度等环境信息。    - 以直观的图表和数字形式呈现,方便用户查看。 3. **报警系统**    - 当温湿度参数超出正常范围时,自动报警。    - 报警方式可以是声音、震动、推送通知等。 ## 三、硬件需求 1. **空气温湿度传感器**:监测室内温度和湿度。 2. **ESP32 评估板**:负责数据处理和传输。 3. **LCD 触摸屏显示器**:显示环境信息。 4. **手机 APP**:用户可以通过手机APP查看环境数据。 ## 四、软件设计 1. **数据采集**    - 通过温湿度传感器持续采集室内环境数据。    - 确保数据采集的准确性和稳定性。 2. **数据处理**    - 对采集到的数据进行处理和分析,提取有用的环境信息。    - 计算温湿度的平均值、最大值和最小值等统计信息。 3. **数据传输**    - 通过 ESP32 模块将处理后的数据传输至 LCD 触摸屏显示器和用户手机APP。    - 确保数据传输的实时性和可靠性。 4. **报警触发**    - 当检测到温湿度参数超出正常范围时,自动触发报警。    - 根据不同的参数设置不同的报警阈值。 ## 五、用户界面设计 1. **LCD 触摸屏显示器界面**    - 显示温湿度等环境信息。    - 提供简洁明了的图表和数字显示,方便用户查看。    - 可以设置报警阈值,当数据超出阈值时自动报警。 2. **手机 APP 界面**    - 实时显示室内环境数据。    - 提供历史数据查询功能,用户可以查看过去一段时间的环境数据。    - 推送报警通知,当检测到异常情况时及时提醒用户。                 ## 六、部分代码 硬件代码: ```c // #include #include #include #include "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); // WiFi network credentials const char *ssid = "ExclusiveForQuZhihang"; const char *password = "quzhihang1314!"; // MQTT broker settings const char *mqtt_server = "192.168.2.105"; const int mqtt_port = 1883; const char *clientId = "humidity_1"; const char *mqtt_user = "zygalaxy"; // 温湿度主题 const char *humidity_topic = "t/humidity"; // 'payload': '{"humidity": 57, "temperature": 25}' WiFiClient wifiClient; PubSubClient client(wifiClient); void callback(char *topic, byte *payload, unsigned int length) {   Serial.print("Message arrived on topic: ");   Serial.println(topic);   Serial.print("Message:");   for (int i = 0; i < length; i++)   {     Serial.print((char)payload);   }   Serial.println(); } void reconnect() {   while (!client.connected())   {     Serial.print("Attempting MQTT connection...");     if (client.connect(clientId))     {       Serial.println(" connected");     }     else     {       Serial.print(" failed, rc=");       Serial.print(client.state());       Serial.println(" try again in 5 seconds");       delay(5000);     }   } } void setup() {   Serial.begin(115200);   while (!Serial)     ;   Serial.println("Ready");   Serial.println(F("DHTxx test!"));   dht.begin();   WiFi.begin(ssid, password);   while (WiFi.status() != WL_CONNECTED)   {     delay(500);     Serial.print(".");   }   Serial.println("\nConnected to the WiFi network");   client.setServer(mqtt_server, mqtt_port);   client.setCallback(callback); } int a = 0; void loop() {   if (!client.connected())   {     reconnect();   }   // 读取温湿度   float h = dht.readHumidity();   // Read temperature as Celsius (the default)   float t = dht.readTemperature();   // Read temperature as Fahrenheit (isFahrenheit = true)   float f = dht.readTemperature(true);   // Check if any reads failed and exit early (to try again).   if (isnan(h) || isnan(t) || isnan(f))   {     Serial.println(F("Failed to read from DHT sensor!"));     return;   }   client.loop();   // 定义发送的数据   String payload = "{\"humidity\":" + String(h) + ",\"temperature\":" + String(t) + "}";   client.publish(humidity_topic, payload.c_str());   delay(200); } ``` 软件代码: ```python # 温湿度 @app.route('/humidity', methods=['POST']) def humidity():     reply = {"result": "ok", "message": "success"}     raw_data = request.get_json()     print(raw_data)     if raw_data['event'] == 'message.publish':         device_id = raw_data['clientid']         device = DeviceInfo.query.filter_by(device_id=device_id).first()         if device:             if device.device_type == 'humidity':                 """                 {'publish_received_at': 1723617041052, 'pub_props': {'User-Property': {}}, 'peerhost': '112.224.169.80', 'qos': 0, 'topic': 't/humidity', 'clientid': 'humidity_1',                   'payload': '{"humidity": 57, "temperature": 25}',                   'username': 'your_username', 'event': 'message.publish', 'metadata': {'rule_id': 'humidity_WH_D'}, 'timestamp': 1723617041052, 'node': 'emqx@172.17.0.4', 'id': '00061F9EDD75F3A432490013C2880018', 'flags': {'retain': False, 'dup': False}}                 """                 # payload转化为 json                 payload = json.loads(raw_data['payload'])                 humidity_data = HumidityData(                     device_id=device_id,                     timestamp=datetime.utcnow(),                     user_id=device.user_id,                     humidity=payload['humidity'],                     temperature=payload['temperature']                 )                 print(humidity_data)                 db.session.add(humidity_data)                 db.session.commit()         socketio.emit('message', '设备:' + device_id + ' 触发了温湿度检测')     return json.dumps(reply), 200 ``` ### 总结 通过本项目,我们构建了一个基于温湿度传感器的环境监测模块,能够实时监测并展示室内温度和湿度。该系统不仅提供了直观的数据展示,还具备智能报警功能,确保用户能够及时了解并应对环境变化。结合LCD触摸屏和手机APP,用户可以随时随地获取最新的环境数据,为创造一个舒适健康的居住环境提供支持。

  • 发表了主题帖: 【2024 DigiKey创意大赛】- 基于毫米波雷达的生命体征检测及健康监护系统-项目整合

    本帖最后由 zygalaxy 于 2024-10-31 20:23 编辑 ## 【2024 DigiKey创意大赛】- 基于毫米波雷达的生命体征检测及健康监护系统 - 项目整合 **一、项目概述** 本项目通过毫米波雷达技术和多种传感器完成了基于毫米波雷达的生命体征检测及健康监护系统,为用户提供生活保障。系统包括健康监护模块、摔倒检测模块和环境监测模块。 **二、模块完成情况** 1. **健康监护模块**    - 完成了心率监测功能,通过MR60BHA1毫米波雷达实现了非接触式的心率监测,并成功将数据传输到显示终端和手机APP。    - 呼吸频率监测已经可以准确捕捉呼吸频率的变化,并且在异常情况下能够及时报警。    - 睡眠质量监测已能提供详细的睡眠质量报告,帮助用户改善睡眠。 2. **摔倒检测模块**    - 摔倒检测功能已实现,使用MR60ADF毫米波雷达传感器检测摔倒事件,并在确认后触发报警。    - 数据记录功能已就绪,记录了摔倒的时间、地点等信息,便于后续分析。 3. **环境监测模块**    - 集成了空气温湿度传感器,可以实时监测空气质量,并将数据同步到显示终端和手机APP。    - 当空气质量超出安全范围时,系统能够自动报警。 **三、软件架构概览** 系统采用了模块化设计,每个模块负责特定的功能: - 数据采集层:负责从各种传感器获取原始数据。 - 数据处理层:处理和分析来自数据采集层的数据。 - 数据传输层:负责将处理后的数据传输到显示终端、手机APP或其他终端。 - 数据展示层:在LCD屏幕和手机APP上展示处理后的数据。 - 数据记录层:保存所有关键数据以便后续分析。 ## 总结 通过项目整合与调试,我们成功地将基于毫米波雷达的生命体征检测及健康监护系统各个模块整合在一起,实现了健康监护和环境监测的功能。在调试过程中,我们解决了各种问题,确保了系统的稳定性和可靠性。未来,我们将继续优化系统的功能和性能,为用户提供更加智能化、便捷化的健康监护与环境监测服务。

  • 发表了主题帖: 【2024 DigiKey创意大赛】- 基于毫米波雷达的生命体征检测及健康监护系统-摔倒检测

    本帖最后由 zygalaxy 于 2024-10-31 14:54 编辑 # 【2024 DigiKey创意大赛】- 基于毫米波雷达的生命体征检测及健康监护系统 - 摔倒检测模块开发 ## 一、模块概述 本摔倒检测模块旨在通过先进的毫米波雷达传感器技术,及时检测人体摔倒事件,并在确认摔倒后自动触发报警并通知相关人员,确保及时救助。同时,该模块还能记录摔倒事件的时间、地点等信息,供事后分析和改善。 ## 二、功能需求 1. **摔倒检测**    - 利用 MR60ADF 毫米波雷达传感器检测人体摔倒事件。    - 当检测到摔倒事件时,迅速确认并启动报警机制。 2. **报警通知**    - 自动触发报警,通知家人、医疗服务机构或指定的联系人。    - 报警方式可以包括声音、震动、推送通知等多种形式。 3. **数据记录**    - 记录摔倒事件的时间、地点等信息。    - 存储这些信息以便事后进行分析和改善。 ## 三、硬件需求 1. **MR60ADF 毫米波 60GHz 摔倒检测模块**:核心检测部件。 2. **ESP32 评估板**:用于数据处理和传输。 3. **报警装置**:扬声器等,用于发出报警信号。 4. **存储设备**:用于记录摔倒事件信息。 ## 四、软件设计 1. **数据采集**    - 通过毫米波雷达传感器持续监测人体活动状态。    - 采集的数据应准确反映人体的运动特征。     2. **数据处理**    - 对采集到的数据进行分析,判断是否发生摔倒事件。 3. **报警触发**    - 一旦确认摔倒事件,立即触发报警。    - 确保报警信号能够及时、准确地传达给相关人员。 4. **数据记录**    - 将摔倒事件的时间、地点等信息记录下来。    - 可以选择将数据存储在本地存储设备或通过网络上传至服务器。 ## 五、用户界面设计 设计一个简单的用户界面,用于显示摔倒检测模块的状态和历史记录。 1. 显示当前是否处于监测状态。 2. 展示最近的摔倒事件记录,包括时间和地点。 ## 六、相关代码 硬件代码: ```c // #include #include #include #define FALL_DETECT_PIN 3 // 新增:定义摔倒检测引脚 // WiFi network credentials const char *ssid = "ExclusiveForQuZhihang"; const char *password = "quzhihang1314!"; // MQTT broker settings const char *mqtt_server = "192.168.2.105"; const int mqtt_port = 1883; const char *clientId = "humidity_1"; const char *mqtt_user = "zygalaxy"; // 摔倒检测主题 const char *fall_topic = "t/fall_detection"; // 新增:定义摔倒检测的主题 WiFiClient wifiClient; PubSubClient client(wifiClient); void callback(char *topic, byte *payload, unsigned int length) {   Serial.print("Message arrived on topic: ");   Serial.println(topic);   Serial.print("Message:");   for (int i = 0; i < length; i++)   {     Serial.print((char)payload);   }   Serial.println(); } void reconnect() {   while (!client.connected())   {     Serial.print("Attempting MQTT connection...");     if (client.connect(clientId))     {       Serial.println(" connected");     }     else     {       Serial.print(" failed, rc=");       Serial.print(client.state());       Serial.println(" try again in 5 seconds");       delay(5000);     }   } } void setup() {   Serial.begin(115200);   while (!Serial)     ;   Serial.println("Ready");   pinMode(FALL_DETECT_PIN, INPUT_PULLUP); // 新增:设置摔倒检测引脚为输入模式,并启用内部上拉电阻   WiFi.begin(ssid, password);   while (WiFi.status() != WL_CONNECTED)   {     delay(500);     Serial.print(".");   }   Serial.println("\nConnected to the WiFi network");   client.setServer(mqtt_server, mqtt_port);   client.setCallback(callback); } void loop() {   if (!client.connected())   {     reconnect();   }   client.loop();   // 检测摔倒   if (digitalRead(FALL_DETECT_PIN) == LOW) // 新增:如果摔倒检测引脚为低电平   {     Serial.println("Fall detected!");     // 发送摔倒信息     client.publish(fall_topic, "Fall Detected"); // 新增:发布摔倒信息     // 可以添加延迟或其他逻辑来避免重复发送     delay(3000); // 等待一段时间,防止连续触发   }   delay(200); } ``` 软件部分代码: ```python # 摔倒检测 @app.route('/fall_detection', methods=['POST']) def fall():     reply = {"result": "ok", "message": "success"}     """     {'publish_received_at': 1723569671836, 'pub_props': {'User-Property': {}}, 'peerhost': '39.85.60.209', 'qos': 0, 'topic': 't/fall_detection', 'clientid': 'mqttx_7492d77a', 'payload': '{     \n  "msg": "hello HTTP Server"\n}', 'username': 'undefined', 'event': 'message.publish', 'metadata': {'rule_id': 'fall_detection_WH_D'}, 'timestamp': 1723569671836, 'node': 'emqx@172.17.0.4', 'id': '00061F93D60912043249000A6ABB0002', 'flags': {'retain': True, 'dup': False}}     """     # 解析 device_id     raw_data = request.get_json()     print(raw_data)     device_id = raw_data['clientid']     device = DeviceInfo.query.filter_by(device_id=device_id).first()     if device:         if device.device_type == 'fall_detection':             fall_detection_data = FallDetectionData(                 device_id=device_id,                 timestamp=datetime.utcnow(),                 user_id=device.user_id             )             db.session.add(fall_detection_data)             db.session.commit()             warning_record = WarningRecord(                 device_id=device_id,                 timestamp=datetime.utcnow(),                 user_id=device.user_id,                 warning_type=1             )             db.session.add(warning_record)             db.session.commit()             print('设备:', device_id, ' 触发了跌倒检测')             socketio.emit('message', '设备:' + device_id + ' 触发了跌倒检测')     return json.dumps(reply), 200 ``` ```javascript                                                                                                                                         跌倒详细记录                                                                                                                                                 {{ currentMonth }} ▼                                                                                                         导出数据                                                                                                                                 日期                                 时间                                 地点                                 持续时间                                 处理状态                                                                                                                         {{ item.date }}                                         {{ item.time }}                                         {{ item.location }}                                         {{ item.duration }}                                                                                                                                                 {{ item.status }}                                                                                                                                                                                                                                 上一页                                 {{ currentPage }}/{{ totalPages }}                                 下一页                                                                                                                                 本月跌倒总次数                                 {{ monthlyStats.totalFalls }}                                                                                 平均处理时间                                 {{ monthlyStats.avgHandleTime }}                                                                                 最常发生地点                                 {{ monthlyStats.mostLocation }}                                                         export default {                 data() {                         return {                                 chartData: {},                                 opts: {                                         color: ["#FC8452"],                                         padding: [15, 15, 0, 5],                                         enableScroll: false,                                         legend: {},                                         xAxis: {                                                 disableGrid: true                                         },                                         yAxis: {                                                 data: [{                                                         min: 0                                                 }]                                         },                                         extra: {                                                 column: {                                                         type: "group",                                                         width: 30,                                                         activeBgColor: "#000000",                                                         activeBgOpacity: 0.08                                                 }                                         }                                 },                                 currentMonth: '2024-07',                                 currentPage: 1,                                 pageSize: 10,                                 fallRecords: [],                                 monthlyStats: {                                         totalFalls: 0,                                         avgHandleTime: '',                                         mostLocation: ''                                 }                         };                 },                 computed: {                         totalPages() {                                 return Math.ceil(this.fallRecords.length / this.pageSize);                         }                 },                 onReady() {                         this.getInitialData();                         this.getFallRecords();                         this.calculateMonthlyStats();                 },                 methods: {                         getInitialData() {                                 let res = {                                         categories: ["2024-7-11", "2024-7-15", "2024-7-17"],                                         series: [{                                                 name: "摔倒次数",                                                 data: [2, 3, 1]                                         }]                                 };                                 this.chartData = JSON.parse(JSON.stringify(res));                         },                         getFallRecords() {                                                         },                         calculateMonthlyStats() {                                 // 计算月度统计数据                                 this.monthlyStats = {                                         totalFalls: this.fallRecords.length,                                         avgHandleTime: '4分钟',                                         mostLocation: '卧室'                                 };                         },                         onMonthChange(e) {                                 this.currentMonth = e.detail.value;                                 this.currentPage = 1;                                 this.getFallRecords(); // 重新获取数据                                 this.calculateMonthlyStats();                         },                         prevPage() {                                 if (this.currentPage > 1) {                                         this.currentPage--;                                 }                         },                         nextPage() {                                 if (this.currentPage < this.totalPages) {                                         this.currentPage++;                                 }                         },                         exportData() {                                 uni.showToast({                                         title: '数据导出中...',                                         icon: 'loading'                                 });                                 // 实现导出逻辑                         }                 }         };         .fall-analysis-container {                 padding: 20rpx;                 background-color: #f5f7fa;         }         .charts-box {                 width: 100%;                 height: 300px;                 background-color: #fff;                 border-radius: 12rpx;                 margin-bottom: 20rpx;         }         .table-header {                 display: flex;                 justify-content: space-between;                 align-items: center;                 padding: 20rpx 0;         }         .table-title {                 font-size: 32rpx;                 font-weight: bold;                 color: #333;         }         .filter-group {                 display: flex;                 align-items: center;                 gap: 20rpx;         }         .picker {                 background-color: #fff;                 padding: 10rpx 20rpx;                 border-radius: 8rpx;                 font-size: 28rpx;         }         .picker-arrow {                 font-size: 24rpx;                 color: #666;                 margin-left: 10rpx;         }         .export-btn {                 font-size: 24rpx;                 padding: 10rpx 20rpx;                 background-color: #4a90e2;                 color: #fff;                 border-radius: 8rpx;         }         .table-container {                 background-color: #fff;                 border-radius: 12rpx;                 overflow: hidden;         }         .table-head {                 display: flex;                 background-color: #f8f9fa;                 border-bottom: 2rpx solid #eee;         }         .th {                 flex: 1;                 padding: 20rpx;                 font-size: 28rpx;                 font-weight: bold;                 color: #333;                 text-align: center;         }         .table-body {                 max-height: 600rpx;         }         .table-row {                 display: flex;                 border-bottom: 2rpx solid #eee;         }         .row-even {                 background-color: #f9fbfd;         }         .td {                 flex: 1;                 padding: 20rpx;                 font-size: 26rpx;                 color: #666;                 text-align: center;         }         .status-tag {                 padding: 4rpx 12rpx;                 border-radius: 4rpx;                 font-size: 24rpx;         }         .status-resolved {                 background-color: #e8f5e9;                 color: #4caf50;         }         .status-pending {                 background-color: #fff3e0;                 color: #ff9800;         }         .pagination {                 display: flex;                 justify-content: center;                 align-items: center;                 padding: 20rpx;                 gap: 20rpx;         }         .page-btn {                 padding: 10rpx 20rpx;                 font-size: 26rpx;                 color: #4a90e2;         }         .page-btn.disabled {                 color: #ccc;         }         .page-current {                 font-size: 26rpx;                 color: #666;         }         .summary-box {                 margin-top: 20rpx;                 display: flex;                 justify-content: space-between;                 background-color: #fff;                 padding: 20rpx;                 border-radius: 12rpx;         }         .summary-item {                 text-align: center;         }         .summary-label {                 font-size: 24rpx;                 color: #666;                 display: block;                 margin-bottom: 8rpx;         }         .summary-value {                 font-size: 32rpx;                 color: #333;                 font-weight: bold;         } ``` ## 六、总结 通过的MR60ADF毫米波雷达传感器,结合ESP32的联网能力,成功实现了一个可以检测人体摔倒的模块。如果有什么实现上的问题可以留言。

  • 发表了主题帖: 【2024 DigiKey创意大赛】- 基于毫米波雷达的生命体征检测及健康监护系统-监护模块

    本帖最后由 zygalaxy 于 2024-10-31 19:52 编辑 ## 【2024 DigiKey创意大赛】- 基于毫米波雷达的生命体征检测及健康监护系统 - 健康监护模块开发 ## 一、模块概述 本健康监护模块旨在为用户提供实时的心率、呼吸频率和睡眠质量监测功能,通过先进的毫米波雷达技术和传感器,准确获取用户的生命体征数据,并在异常情况下自动报警,通知家人或医疗服务机构。同时,该模块还能生成详细的睡眠质量报告,帮助用户改善睡眠。 ## 二、功能需求 1. **心率监测**    - 利用 MR60BHA1 毫米波雷达实时监测用户的心率。    - 将心率数据通过 ESP32 模块传输至 LCD 触摸屏显示器和用户手机 APP,以便用户实时查看。 2. **呼吸频率监测**    - 采用毫米波雷达技术精准监测用户的呼吸频率。    - 当检测到呼吸频率异常时,自动报警并通知家人或医疗服务机构。 3. **睡眠质量监测**    - 通过传感器监测用户的睡眠状态。    - 生成详细的睡眠质量报告,包括入睡时间、睡眠时长、深度睡眠时间等信息。    - 为用户提供改善睡眠的建议。     ## 三、硬件需求 1. **MR60BHA1 毫米波非接触式心率传感器模块**:用于心率监测。 2. **毫米波雷达**:用于呼吸频率监测和睡眠质量监测。 3. **ESP32 评估板**:负责数据传输和处理。 4. **LCD 触摸屏显示器**:显示心率、呼吸频率和睡眠质量数据。 ## 四、软件设计 1. **数据采集**    - 利用传感器模块和毫米波雷达采集用户的心率、呼吸频率和睡眠状态数据。    - 确保数据采集的准确性和稳定性。    2. **数据处理**    - 对采集到的数据进行处理和分析,提取有用的信息。    - 计算心率、呼吸频率的平均值、最大值和最小值等统计信息。    - 分析睡眠状态数据,生成睡眠质量报告。 3. **数据传输**    - 通过 ESP32 模块将处理后的数据传输至 LCD 触摸屏显示器和用户手机 APP。    - 确保数据传输的实时性和可靠性。 4. **报警系统**    - 当检测到心率、呼吸频率异常或睡眠质量较差时,自动触发报警。    - 报警方式可以是声音、震动或推送通知等。 ## 五、用户界面设计 1. **LCD 触摸屏显示器界面**    - 显示用户的心率、呼吸频率和睡眠质量数据。    - 提供简洁明了的图表和数字显示,方便用户查看。 2. **手机 APP 界面**    - 实时显示用户的健康数据,包括心率、呼吸频率和睡眠质量报告。    - 提供历史数据查询功能,用户可以查看过去一段时间的健康数据。    - 推送报警通知,当检测到异常情况时及时提醒用户。                         ## 六、部分代码 硬件代码: ```c #include #include #include #include // WiFi network credentials const char *ssid = "zygalaxy"; const char *password = "12345678"; // MQTT broker settings const char *mqtt_server = "104.168.82.148"; const int mqtt_port = 1883; const char *clientId = "heart_breath_1"; const char *mqtt_user = "zygalaxy"; const char *mqtt_password = "YOUR_MQTT_PASSWORD"; //定义心率呼吸信息topic const char *heart_rate_topic = "t/heart_rate"; const char *breath_topic = "t/breath_rate"; //定义睡眠topic // 进出床状态 //0:未检测到;1:上床;2:下床 const char *bed_topic = "t/bed"; // 睡眠状态 const char *sleep_awake_topic = "t/sleep_awake"; const char *sleep_light_topic = "t/sleep_light"; const char *sleep_deep_topic = "t/sleep_deep"; const char *sleep_none_topic = "t/sleep_none"; // 睡眠时间 const char *awake_time_topic = "t/awake_time"; const char *light_time_topic = "t/light_time"; const char *deep_time_topic = "t/deep_time"; // 睡眠评分 const char *sleep_score_topic = "t/sleep_score"; // 综合睡眠状态 const char *sleep_statue_existence_topic = "t/sleep_statue/existence"; const char *sleep_statue_state_topic = "t/sleep_statue/state"; const char *sleep_statue_breath_rate_topic = "t/sleep_statue/breath_rate"; const char *sleep_statue_heart_rate_topic = "t/sleep_statue/heart_rate"; const char *sleep_statue_turn_num_topic = "t/sleep_statue/turn_num"; const char *sleep_statue_substantial_move_ratio_topic = "t/sleep_statue/substantial_move_ratio"; const char *sleep_statue_small_move_ratio_topic = "t/sleep_statue/small_move_ratio"; const char *sleep_statue_apnea_num_topic = "t/sleep_statue/apnea_num"; // 睡眠质量信息 const char *sleep_quality_score_topic = "t/sleep_quality/score"; const char *sleep_quality_time_total_topic = "t/sleep_quality/time_total"; const char *sleep_quality_awake_time_radio_topic = "t/sleep_quality/awake_time_radio"; const char *sleep_quality_light_time_radio_topic = "t/sleep_quality/light_time_radio"; const char *sleep_quality_deep_time_radio_topic = "t/sleep_quality/deep_time_radio"; const char *sleep_quality_outbed_time_topic = "t/sleep_quality/outbed_time"; const char *sleep_quality_outbed_num_topic = "t/sleep_quality/outbed_num"; const char *sleep_quality_breath_rate_topic = "t/sleep_quality/breath_rate"; const char *sleep_quality_heart_rate_topic = "t/sleep_quality/heart_rate"; const char *sleep_quality_apnea_num_topic = "t/sleep_quality/apnea_num"; // 异常睡眠情况 const char *sleep_less4h_topic = "t/sleep_less4h"; const char *sleep_over12h_topic = "t/sleep_over12h"; const char *longtime_noone_topic = "t/longtime_noone"; const char *error_none_topic = "t/error_none"; WiFiClient wifiClient; PubSubClient client(wifiClient); BreathHeart_60GHz radar = BreathHeart_60GHz(&Serial1); void callback(char *topic, byte *payload, unsigned int length) {     Serial.print("Message arrived on topic: ");     Serial.println(topic);     Serial.print("Message:");     for (int i = 0; i < length; i++) {         Serial.print((char) payload);     }     Serial.println(); } void reconnect() {     while (!client.connected()) {         Serial.print("Attempting MQTT connection...");         if (client.connect(clientId, mqtt_user, mqtt_password)) {             Serial.println(" connected");         } else {             Serial.print(" failed, rc=");             Serial.print(client.state());             Serial.println(" try again in 5 seconds");             delay(5000);         }     } } void setup() {     Serial.begin(115200);     Serial1.begin(115200);     while (!Serial);     Serial.println("Ready");     WiFi.begin(ssid, password);     while (WiFi.status() != WL_CONNECTED) {         delay(500);         Serial.print(".");     }     Serial.println("\nConnected to the WiFi network");     client.setServer(mqtt_server, mqtt_port);     client.setCallback(callback); } int a=0; void loop() {     if (!client.connected()) {         reconnect();     }     client.loop();     radar.BreathHeart_Breath_Sleep_Decode_Heart();     if (radar.sensor_report != 0x00) {         switch (radar.sensor_report) {             case HEARTRATEVAL:                 Serial.print("Sensor monitored the current heart rate value is: ");                 Serial.println(radar.heart_rate, DEC);                 client.publish(heart_rate_topic, String(radar.heart_rate).c_str());                 Serial.println("----------------------------");                 break;             case HEARTRATEWAVE:                 // Heart rate wave data can be published as well if needed.                 Serial.print("The heart rate waveform(Sine wave) -- point 1: ");                 Serial.print(radar.heart_point_1);                 Serial.print(", point 2 : ");                 Serial.print(radar.heart_point_2);                 Serial.print(", point 3 : ");                 Serial.print(radar.heart_point_3);                 Serial.print(", point 4 : ");                 Serial.print(radar.heart_point_4);                 Serial.print(", point 5 : ");                 Serial.println(radar.heart_point_5);                 Serial.println("----------------------------");                 break;             case BREATHNOR:                 Serial.println("Sensor detects current breath rate is normal.");                 client.publish(breath_topic, "Normal");                 Serial.println("----------------------------");                 break;             case BREATHRAPID:                 Serial.println("Sensor detects current breath rate is too fast.");                 //client.publish(breath_topic, "Rapid");                 Serial.println("----------------------------");                 break;             case BREATHSLOW:                 Serial.println("Sensor detects current breath rate is too slow.");                 //client.publish(breath_topic, "Slow");                 Serial.println("----------------------------");                 break;             case BREATHNONE:                 Serial.println("There is no breathing information yet, please wait...");                 break;             case BREATHVAL:                 Serial.print("Sensor monitored the current breath rate value is: ");                 Serial.println(radar.breath_rate);                 client.publish(breath_topic, String(radar.breath_rate).c_str());                 Serial.println("----------------------------");                 break;             case BREATHWAVE:                 // Breath wave data can be published as well if needed.                 Serial.print("The breath rate waveform(Sine wave) -- point 1: ");                 Serial.print(radar.breath_point_1);                 Serial.print(", point 2 : ");                 Serial.print(radar.breath_point_2);                 Serial.print(", point 3 : ");                 Serial.print(radar.breath_point_3);                 Serial.print(", point 4 : ");                 Serial.print(radar.breath_point_4);                 Serial.print(", point 5 : ");                 Serial.println(radar.breath_point_5);                 Serial.println("----------------------------");                 break;                 //睡眠信息             case OUTBED:                 Serial.println("Sensor detects someone currently leaving the bed.");                 Serial.println("----------------------------");                 break;             case INBED:                 Serial.println("Sensor detects that someone is currently in bed.");                 Serial.println("----------------------------");                 break;             case NOINOUT:                 Serial.println("No subject is detected leaving or going to bed.");                 Serial.println("----------------------------");                 break;             case SLEEPAWAKE:                 Serial.println("Sensor detects that the monitoring people is awake.");                 Serial.println("----------------------------");                 break;             case SLEEPLIGHT:                 Serial.println("Sensor detects that the monitoring people is in light sleeping.");                 Serial.println("----------------------------");                 break;             case SLEEPDEEP:                 Serial.println("Sensor detects that the monitoring people is in deep sleeping.");                 Serial.println("----------------------------");                 break;             case SLEEPNONE:                 Serial.println("Sleep state of the object is not detected.");                 Serial.println("----------------------------");                 break;             case AWAKETIME:                 Serial.print("Sensor monitored the awake sleep time is: ");                 Serial.print(radar.awake_time);                 Serial.println(" min");                 Serial.println("----------------------------");                 break;             case LIGHTTIME:                 Serial.print("Sensor monitored the light sleep time is: ");                 Serial.print(radar.light_time);                 Serial.println(" min");                 Serial.println("----------------------------");                 break;             case DEEPTIME:                 Serial.print("Sensor monitored the deep sleep time is: ");                 Serial.print(radar.deep_time);                 Serial.println(" min");                 Serial.println("----------------------------");                 break;             case SLEEPSCORE:                 Serial.print("Sensor judgment sleep score is: ");                 Serial.println(radar.sleep_score);                 Serial.println("----------------------------");                 break;             case SLEEPSTATUE:                 Serial.println("Sleep integrated state information -- ");                 Serial.print("Human existence: ");                 if (radar.existence)Serial.println("human exis");                 else Serial.println("human non-existent");                 Serial.print("Sleep state: ");                 if (radar.sleep_status == SLEEPDEEP)Serial.println("sleeping soundly");                 else if (radar.sleep_status == SLEEPLIGHT)Serial.println("light sleep");                 else if (radar.sleep_status == SLEEPAWAKE)Serial.println("awake");                 else if (radar.sleep_status == SLEEPNONE)Serial.println("off the bed");                 Serial.print("Average breathing: ");                 Serial.println(radar.breath_rate);                 Serial.print("Average heart rate: ");                 Serial.println(radar.heart_rate);                 Serial.print("Number of turning over during sleep: ");                 Serial.println(radar.turn_num);                 Serial.print("Percentage of substantial exercise during sleep: ");                 Serial.println(radar.substantial_move_ratio);                 Serial.print("Percentage of small-amplitude movements during sleep: ");                 Serial.println(radar.samll_move_ratio);                 Serial.print("Number of apnea: ");                 Serial.println(radar.apnea_num);                 Serial.println("----------------------------");                 break;             case SLEEPQUALITY:                 Serial.println("Quality of sleep information -- ");                 Serial.print("Sleep score: ");                 Serial.println(radar.sleep_score);                 Serial.print("Total time of sleep: ");                 Serial.print(radar.sleep_time);                 Serial.println(" min");                 Serial.print("Percentage of waking time: ");                 Serial.println(radar.awake_time_radio);                 Serial.print("Percentage of light sleep time: ");                 Serial.println(radar.light_time_radio);                 Serial.print("Percentage of deep sleep time: ");                 Serial.println(radar.deep_time_radio);                 Serial.print("Total time away from bed: ");                 Serial.print(radar.outbed_time);                 Serial.println(" min");                 Serial.print("Total number of times out of bed: ");                 Serial.println(radar.outbed_num);                 Serial.print("The number of turning over during sleep: ");                 Serial.println(radar.turn_num);                 Serial.print("Average breathing: ");                 Serial.println(radar.breath_rate);                 Serial.print("Average heart rate: ");                 Serial.println(radar.heart_rate);                 Serial.print("Number of apnea: ");                 Serial.println(radar.apnea_num);                 Serial.println("----------------------------");                 break;             case SLEEPLESS4H:                 Serial.print("The monitored subjects slept for less than 4 hours.");                 Serial.println("----------------------------");                 break;             case SLEEPOVER12H:                 Serial.print("The length of sleep of the monitored subjects exceeded 12 hours.");                 Serial.println("----------------------------");                 break;             case LONGTIMENOONE:                 Serial.print("Abnormally unoccupied for long periods of time.");                 Serial.println("----------------------------");                 break;             case ERRORNONE:                 Serial.print("No abnormal information.");                 Serial.println("----------------------------");                 break;         }     }     delay(200); } ``` 软件代码: ```python # 心率呼吸查询 @app.route('/heart_rate_respiration', methods=['GET']) def get_heart_rate_respiration():     reply = {"result": "ok", "message": "success"}     device_id = request.args.get('device_id')     start_date = request.args.get('start_date')     end_date = request.args.get('end_date')     if device_id and start_date and end_date:         # 先在心率查询,再在呼吸查询         heart_rate_data = HeartRateData.query.filter(             HeartRateData.device_id == device_id,             HeartRateData.timestamp >= start_date,             HeartRateData.timestamp = start_date,             RespirationData.timestamp

  • 发表了主题帖: 【2024 DigiKey创意大赛】- 基于毫米波雷达的生命体征检测及健康监护系统-环境搭建 5

    本帖最后由 zygalaxy 于 2024-10-30 09:56 编辑 ## 【2024 DigiKey创意大赛】- 基于毫米波雷达的生命体征检测及健康监护系统 -  环境搭建 - PlatformIO安装 ### 方法一:通过Homebrew安装(Mac) 1. **安装Homebrew**(如果尚未安装):    ```text    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"    ```         2. **使用Homebrew安装PlatformIO**:    ```text    brew install platformio    ``` 3. **验证安装**:    ```text    pio --version    ``` 详细文档请参考PlatformIO Homebrew安装文档 。 ### 方法二:通过安装脚本安装 1. **使用curl下载并运行安装脚本**:    ```text    curl -fsSL -o get-platformio.py https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py    python3 get-platformio.py    ``` 2. **或者使用wget下载并运行安装脚本**:    ```text    wget -O get-platformio.py https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py    python3 get-platformio.py    ``` 3. **验证安装**:    ```text    pio --version    ``` 详细文档请参考PlatformIO安装脚本文档 。 ### 方法三:通过PlatformIO IDE for VSCode安装 1. **下载并安装Visual Studio Code**:    1. 访问 VSCode 官方网站:https://code.visualstudio.com/ 下载对应系统版本的安装包    2. 运行下载的安装程序,并按照提示完成安装。    3. 打开 VSCode。 2. **在VSCode中安装PlatformIO IDE扩展**:    - 打开VSCode的扩展管理器(左侧栏的方块图标)    - 搜索`platformio ide`    - 点击`Install`进行安装                     3. **使用PlatformIO IDE**:    - 打开VSCode,点击左侧栏的蚂蚁图标进入PlatformIO Home    - 创建或导入PlatformIO项目 通过以上任意一种方法,你都可以在macOS平台上成功安装并使用PlatformIO。如果有任何问题,可以参考对应的官方文档、留言与我交流。

  • 发表了主题帖: 【2024 DigiKey创意大赛】- 基于毫米波雷达的生命体征检测及健康监护系统-环境搭建 4

    本帖最后由 zygalaxy 于 2024-10-29 21:21 编辑 ## 【2024 DigiKey创意大赛】- 基于毫米波雷达的生命体征检测及健康监护系统 - 环境搭建 - ESP-IDF环境安装 **一、Windows 平台(离线安装)** 1. 下载离线安装包    - 从 乐鑫的 esp-idf 官方网站下载离线安装包     2. 安装    - 打开下载的安装包,根据提示进行安装          这里应用修复以后,点击下一步进行安装    - 选择安装的路径        - 选择安装的芯片包          - 继续下一步进行安装,等待进度条走完 3. 安装完成    - 当显示下面的图片的时候就证明安装已经完成了    - **二、macOS 平台** 1. 安装 Homebrew    - 如果还没有安装 Homebrew,请执行下面的命令进行安装。      ```shell      /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"      ```       2. 安装 XCode 命令行工具    `xcode-select --install` 3. 安装 CMake 和 Ninja 编译工具    - 若有 [HomeBrew](https://brew.sh/),可以运行:      ```      brew install cmake ninja dfu-util      ```    - 强烈建议同时安装 [ccache](https://ccache.samba.org/) 以获得更快的编译速度。如有 [HomeBrew](https://brew.sh/),可通过 [MacPorts](https://www.macports.org/install.php) 上的 `brew install ccache` 或 `sudo port install ccache` 完成安装。 4. 安装 Python 3    - 检查 Python 版本 `python3 --version`    - 如果出现错误,执行下面的命令进行安装 `brew install python3` 5. 获取 ESP-IDF    - 打开终端,运行以下命令:      ```      mkdir -p ~/esp      cd ~/esp      git clone --recursive https://github.com/espressif/esp-idf.git      ```    - ESP-IDF 将下载至 `~/esp/esp-idf` 6. 设置工具    - 执行下面的命令安装对应各个芯片的工具包    ```    cd ~/esp/esp-idf    ./install.sh esp32    ``` **三、Linux 平台(以 (Debian、Ubuntu) 为例)** 1. 安装依赖项    - 打开终端。    - 运行以下命令安装必要的依赖项:`sudo apt-get install git wget flex bison gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0`。     2. 安装 Python    - 如果系统中没有安装 Python 3,或者需要安装特定版本的 Python 3,可以使用以下命令安装:`sudo apt-get install python3.8`(根据需要调整版本号)。    - 执行以下命令来检查当前使用的 Python 版本:    ```      python --version    ```     3. 安装 Git    - 运行 `sudo apt-get install git`。       4. 安装 ESP-IDF 工具    - 打开终端,运行以下命令:      ```      mkdir -p ~/esp      cd ~/esp      git clone -b v5.2.3 --recursive https://github.com/espressif/esp-idf.git      ```      ESP-IDF 将下载至 `~/esp/esp-idf`      这是下载已经开始            下面是安装完成的图片     5. 设置工具    - 除了 ESP-IDF 本身,还需要为支持 ESP32-S3 的项目安装 ESP-IDF 使用的各种工具,比如编译器、调试器、Python 包等。      ```shell      cd ~/esp/esp-idf      ./install.sh esp32s3      ```      **因为我这里只使用芯片 esp32 s3,所以只安装 esp32s3 的工具,esp32 需要单独安装./install.sh esp32**    - 要在安装工具时优先选择 Espressif 下载服务器,请在运行 `install.sh` 时使用以下命令:      ```      cd ~/esp/esp-idf      export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"      ./install.sh      ```       6. 设置环境变量    - 此时,刚刚安装的工具尚未添加至 PATH 环境变量,无法通过“命令窗口”使用这些工具。因此,必须设置一些环境变量。这可以通过 ESP-IDF 提供的另一个脚本进行设置。      请在需要运行 ESP-IDF 的终端窗口运行以下命令:      ```      . $HOME/esp/esp-idf/export.sh      ``` 至此各平台环境已经全部安装完成

  • 发表了主题帖: 【2024 DigiKey创意大赛】- 基于毫米波雷达的生命体征检测及健康监护系统-环境搭建 3

    本帖最后由 zygalaxy 于 2024-10-30 15:30 编辑 ## 【2024 DigiKey创意大赛】- 基于毫米波雷达的生命体征检测及健康监护系统 - 环境搭建 - EMQX 安装 由于我的服务器是 WindowServer2016,以下是在Windows平台安装EMQX的详细步骤: **一、系统要求检查** - 确保你的Windows系统是Windows 7或更高版本。并且系统已经安装了.NET Framework 4.5或更高版本。这是因为EMQX在Windows环境下运行依赖于相关的系统组件来保证正常的功能和性能。(一般Win10 以及以上都是满足的) - 一般如果在服务器上面,运行内存要尽量大一些,避免程序因为内存不足自动停止。 **二、下载EMQX安装包** 1. 访问EMQX官方网站(https://www.emqx.io/)。 2. 在官网的下载页面找到适合Windows系统的EMQX安装包。通常会提供不同版本供选择,根据你的需求下载对应的版本。也可以进入 github 的官网发布页面下载`https://github.com/emqx/emqx/releases` 3. 因为官方从5.3.2版本开始就不再提供 window 的最新版本,所以只能去 github下载最新版。    https://github.com/emqx/emqx/releases/download/v5.3.2/emqx-5.3.2-windows-amd64.zip ![856225](/data/attachment/forum/202410/29/213802h1bx9xqou9x1y3lq.png?rand=7093.639493902219) **三、解压文件** 1. 使用您喜欢的解压缩工具(如 WinRAR, 7-Zip 等)将下载的 `.zip` 文件解压到您希望安装 EMQX 的目录下。例如,可以创建一个名为 `C:\emqx` 的文件夹,并将所有内容解压至此。 ![856584](/data/attachment/forum/202410/30/152616vgqg5s4e0nccvlqq.png.thumb.jpg?rand=4077.0268814352153) **四、 启动 EMQX** 1. 打开命令提示符窗口(以管理员身份运行)。 2. 导航到 EMQX 的 bin 目录,例如:    ```    cd C:\emqx\bin    ``` ![856591](/data/attachment/forum/202410/30/152631j8u82yg36hlv82g8.png.thumb.jpg?rand=8415.790996336866) 3. 运行以下命令来启动 EMQX 服务:    ```    emqx start    ``` **四、验证安装** 1. 打开浏览器并访问 `http://localhost:18083`,这是 EMQX 默认的管理界面地址。如果在安装完成后没有自动启动EMQX服务,你可以通过以下方式手动启动:在安装目录下找到EMQX的可执行文件或者使用系统服务管理工具。在Windows系统中,可以通过在“开始菜单”中搜索“服务”,打开服务管理控制台。在服务列表中找到“EMQX”服务,右键点击它并选择“启动”。 2. 第一次访问时,您可能需要使用默认的用户名 `admin` 和密码 `public` 登录。在管理控制台中,你可以进行各种配置操作,如创建用户、管理连接、查看消息统计等。如果能够成功访问管理控制台,就说明EMQX已经成功安装并在你的Windows系统上运行。 因为其他版本在 EMQX 官网都有详细文档,所以不再赘述——https://docs.emqx.com/zh/emqx/latest/deploy/install-open-source.html

  • 发表了主题帖: 【2024 DigiKey创意大赛】- 基于毫米波雷达的生命体征检测及健康监护系统-环境搭建 2

    本帖最后由 zygalaxy 于 2024-10-29 20:58 编辑 ## 【2024 DigiKey创意大赛】- 基于毫米波雷达的生命体征检测及健康监护系统 - 环境搭建 - APP开发环境搭建 因为需要使用HBuilder X和uni-app开发App,所以需要按照以下步骤搭建开发环境: ### 1. 安装HBuilder X 首先,需要下载并安装HBuilder X,这是开发uni-app的主要工具。HBuilder X是一个强大的前端开发工具,专门为uni-app进行了优化。可以从官方网站下载最新版本的HBuilder X:[下载HBuilder X](https://www.dcloud.io/hbuilderx.html)。 ### 2. 创建uni-app项目 打开HBuilder X后,可以通过以下步骤创建一个新的uni-app项目: - 点击左上角的“文件”菜单,选择“新建” -> “项目”。 - 在弹出的对话框中,选择“uni-app”项目模板。 - 填写项目名称、项目路径等信息,然后点击“创建”按钮。 - 如果有DCloud账号,可以选择或创建一个AppID。如果没有,可以注册一个账号并绑定新的AppID。 - 创建项目后,会看到项目的目录结构,如果没有`package.json`文件,需要在终端运行`npm init`来创建它。 ### 3. 安装依赖和配置项目 - 打开终端,定位到的项目目录,运行`npm install`来安装项目依赖。(默认可以不做,下载的项目依据要求操作)。 - 配置项目的`manifest.json`文件,这是uni-app项目的配置文件,可以在这里设置App的名称、图标、权限等信息。 ### 4. 开发App - 使用Vue.js语法开发App,编写页面、组件和逻辑代码。 - 利用HBuilder X提供的代码提示和自动补全功能,提高开发效率。 ### 5. 运行和预览 - 在HBuilder X中,点击工具栏上的“运行”按钮,选择目标平台(如H5、微信小程序等),然后在模拟器或真机上预览项目效果。 ### 6. 发布App - 当App开发完成并测试无误后,可以通过HBuilder X的“发行”功能来发布App。 - 选择“发行”菜单,然后根据的需求选择不同的发布选项,例如发布为微信小程序、H5、原生App等。 ### 注意事项 - 开发App时,可能需要安装微信开发者工具,因为目前开发App也需要使用到它。 - 如果是第一次使用HBuilder X开发小程序,需要配置小程序IDE的相关路径,才能运行成功。 - 发布App时,需要根据目标平台的要求,配置相应的签名和证书。 通过以上步骤,可以使用HBuilder X和uni-app搭建起一个完整的App开发环境,并进行App的开发、调试和发布。 更多详细信息和高级配置,可以参考官方文档:[uni-app快速上手](https://uniapp.dcloud.io/quickstart) 。

  • 发表了主题帖: 【2024 DigiKey创意大赛】- 基于毫米波雷达的生命体征检测及健康监护系统-环境安装 2

    # **【2024 DigiKey创意大赛】- 基于毫米波雷达的生命体征检测及健康监护系统 -  环境搭建 - ESP-IDF环境安装** ### 方法一:通过Homebrew安装 1. **安装Homebrew**(如果尚未安装):    sh    ```text    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"    ``` 2. **使用Homebrew安装PlatformIO**:    sh    ```text    brew install platformio    ``` 3. **验证安装**:    sh    ```text    pio --version    ``` 详细文档请参考PlatformIO Homebrew安装文档 。 ### 方法二:通过安装脚本安装 1. **使用curl下载并运行安装脚本**:    sh    ```text    curl -fsSL -o get-platformio.py https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py    python3 get-platformio.py    ``` 2. **或者使用wget下载并运行安装脚本**:    sh    ```text    wget -O get-platformio.py https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py    python3 get-platformio.py    ``` 3. **验证安装**:    sh    ```text    pio --version    ``` 详细文档请参考PlatformIO安装脚本文档 。 ### 方法三:通过PlatformIO IDE for VSCode安装 1. **下载并安装Visual Studio Code**: 下载VSCode 2. **在VSCode中安装PlatformIO IDE扩展**:    - 打开VSCode的扩展管理器(左侧栏的方块图标)    - 搜索`platformio ide`    - 点击`Install`进行安装 3. **使用PlatformIO IDE**:    - 打开VSCode,点击左侧栏的蚂蚁图标进入PlatformIO Home    - 创建或导入PlatformIO项目 详细文档请参考PlatformIO IDE for VSCode文档 。 通过以上任意一种方法,你都可以在macOS平台上成功安装并使用PlatformIO。如果有任何问题,可以参考对应的官方文档获取更多帮助。 ![image-20241020204246299](/Users/Galaxy/Library/Application Support/typora-user-images/image-20241020204246299.png) ![image-20241020210852046](/Users/Galaxy/Library/Application Support/typora-user-images/image-20241020210852046.png)

  • 发表了主题帖: 【2024 DigiKey创意大赛】- 基于毫米波雷达的生命体征检测及健康监护系统 - 环境搭建1

    本帖最后由 zygalaxy 于 2024-10-29 20:52 编辑 ## 【2024 DigiKey创意大赛】- 基于毫米波雷达的生命体征检测及健康监护系统 - 环境搭建-Node.js 与 Python 的服务器开发环境搭建 由于大赛的项目需要设计软件方面,下面是一份安装 Node.js、Python 环境以及通过 PHPStudy 安装 MySQL 数据库环境的简易指南。请注意,由于软件版本会不断更新,具体步骤可能会有所变化,请参考官方文档获取最新信息。 ### 1. 安装 Node.js #### 步骤: 1. 访问 Node.js 官方网站:https://nodejs.org/ 2. 在首页上选择适合您操作系统的 LTS (长期支持) 版本或 Current (当前) 版本来下载。 3. 下载完成后,运行安装程序,并按照提示完成安装过程。 4. 验证安装是否成功,在命令行工具中输入 `node -v` 和 `npm -v` 来查看 Node.js 和 npm 的版本号。 ### 2. 安装 Python 环境 #### 步骤: 1. 访问 Python 官方网站:https://www.python.org/downloads/ 2. 根据您的操作系统选择合适的 Python 版本进行下载。建议选择最新的稳定版。 3. 运行下载好的安装包,确保勾选了“Add Python to PATH”选项以便于在命令行中直接使用 Python。 4. 按照安装向导的指示完成安装。 5. 打开命令行工具,输入 `python --version` 或 `python3 --version` 来验证 Python 是否已正确安装。 ### 3. 使用 PHPStudy 安装 MySQL PHPStudy 是一个集成了 Apache、Nginx、PHP 和 MySQL 的集成环境套件,非常适合开发人员快速搭建 Web 开发环境。 #### 步骤: 1. 访问 PHPStudy 官方网站:http://old.xp.cn/(注意检查网址的安全性) 2. 根据您的操作系统选择相应的 PHPStudy 版本下载。 3. 解压下载文件到您想要存放的位置。 4. 运行解压后的目录下的 `phpstudy.exe` 文件启动 PHPStudy 控制面板。 5. 在控制面板中找到 MySQL 服务并点击启动。首次启动时可能需要设置 root 用户密码。 6. 您可以通过 phpMyAdmin 工具来管理 MySQL 数据库,它通常会在安装后自动配置好访问路径。 至此服务器环境搭建完毕 ### 注意事项 - 对于 Windows 用户来说,这些软件大多提供了图形界面安装方式,相对直观简单。 - Linux 和 macOS 用户可能更倾向于使用命令行工具如 `apt`, `brew` 等来安装软件。 - 安装过程中如果遇到问题,可以查阅相关软件的官方文档或社区论坛寻求帮助。 如果有任何特定需求或遇到了困难,欢迎继续提问。

  • 2024-09-11
  • 发表了主题帖: 【2024 DigiKey创意大赛】- 基于毫米波雷达的生命体征检测及健康监护系统 - 物料开箱

    本帖最后由 zygalaxy 于 2024-9-11 20:05 编辑 【2024 DigiKey 创意大赛】- 基于毫米波雷达的生命体征检测及健康监护系统 - 物料开箱 首先感谢EEworld与DigiKey 举办这样的活动为我提供发展想象的平台,让我能够将自己的想法付诸实践。 2024 DigiKey 创意大赛所需物料都已经收到,再次感谢EEworld与DigiKey。 物料清单 ``1、ESP32-S3-LCD-EV-BOARD`` ``2、ESP32-S3-DEVKITC-1-N8R8`` 由于前期其他的比赛导致没有及时的更新开箱帖,十分抱歉。 后续会逐步跟进更新项目的进度!

  • 2024-08-30
  • 回复了主题帖: 【2024 DigiKey 创意大赛】睡眠监测设备制作进度分享

    秦天qintian0303 发表于 2024-8-26 11:31 这个还有方向的要求吗?主要应该是距离影响吧  不是这个方向嘞,说的是睡眠监测这个方向,这个毫米波雷达和主控mcu是有一定的高度要求的,要不会有很大的干扰嘞,

  • 2024-08-25
  • 回复了主题帖: 【2024 DigiKey 创意大赛】睡眠监测设备制作进度分享

    你好,我也是这个方向,请问你这个安装高度不会影响检测吗,就是他这个安装高度我看文档好像有一定的要求

  • 2024-08-11
  • 发表了主题帖: Sipeed MAix BiT AIoT 开发套件测评-评测总结报告

    本帖最后由 zygalaxy 于 2024-8-11 14:07 编辑 时间规划:评测第八天 内容要点: 优点与亮点: 总结Sipeed MAix BiT开发套件的突出特点,如易用性、性能、集成度等。 1. 易用性: Sipeed MAix BiT开发套件以其直观的开箱体验、详尽的文档以及顺畅的环境搭建流程,展现了出色的易用性。硬件设计紧凑,接口布局合理,便于快速上手和原型制作。 2. 性能: K210芯片的双核RISC-V CPU与AI加速器KPU提供了强大的运算能力和高效的AI处理能力,适合边缘计算应用,如实时图像识别和声音处理。 3. 集成度: 套件集成了屏幕和摄像头,提供了一体化的开发环境,非常适合AI视觉识别项目,增强了在智能家居和智能安防等场景的应用潜力。 改进建议: 基于测试中遇到的问题,提出具体的改进建议,包括硬件设计、软件支持、文档完善等方面。 1. 硬件设计: 提升摄像头模块的分辨率和质量,以适应更复杂图像处理的需求。 2. 软件支持: 增强IDE的功能,简化代码调试过程;提供更丰富的API文档和示例代码,帮助开发者快速掌握开发技巧。 3. 文档完善: 细化硬件接口说明,增加故障排查指南,确保新手也能轻松解决常见问题。 应用场景展望:根据评测结果,探讨该套件在不同领域的应用潜力及可能的改进方向。 1. 智能家居: 利用其集成的摄像头和屏幕,可以开发更智能的家庭安全系统,实现面部识别解锁、入侵警报等功能。 2. 智能安防: 在公共场所部署,进行人群行为分析,提高公共安全水平。 4. 教育与培训: 作为教学工具,用于教授AI和IoT原理,激发学生对技术的兴趣,促进教育发展。 6. 资源优化: 探索低功耗模式下的性能极限,适用于需要长时间运行的远程监控设备。

  • 2024-08-05
  • 回复了主题帖: Sipeed MAix BiT AIoT 开发套件测评-模型训练 (二)

    wangerxian 发表于 2024-8-5 09:17 改源码的话,只能离线训练了吧。 本地这个本身就是离线训练的,你只不过就是调用已经封装好的函数

  • 2024-08-03
  • 回复了主题帖: Sipeed MAix BiT AIoT 开发套件测评-模型训练 (二)

    wangerxian 发表于 2024-8-2 10:01 这个训练模型的工具可以调参吗? 本地训练这个能调整的参数有限, 大部分都封装在了软件内部(可以去改源码-在安装目录),建议还是他官方的在线训练,本机在没有 cuda的情况下还是比较慢的

  • 2024-08-01
  • 发表了主题帖: Sipeed MAix BiT AIoT 开发套件测评-性能与稳定性评估

    本帖最后由 zygalaxy 于 2024-8-11 11:39 编辑 ### 长时间运行测试 时间规划:评测第七天 内容要点: 稳定性监测: 让开发板执行一个中等复杂度的AI识别任务,连续运行超过24小时,记录任何异常情况。 这里我们选择1000 种物体分类模型来作为测试的模型,因为模型比较大,所以还需要刷minimum 版本固件 [下载1000 种物体分类模型](https://dl.sipeed.com/fileList/MAIX/MaixPy/model/mobilenet_0x300000.kfpkg "下载1000 种物体分类模型") 上面的模型按照刷固件的方式直接刷进去 [下载label.txt](https://github.com/sipeed/MaixPy-v1_scripts/tree/master/machine_vision/mobilenet_1000_class/labels.txt "下载label.txt") 因为模型比较大本次我们选择把label.txt放到SD卡中进行读取测试。(为什么不放模型呢,因为人家给打包在固件里面了:Onion-110:) SD卡中应该有以下两个文件 ``因为刷的是mini版本的固件,可能会不支持IDE,所以进行脱机测试,将运行的程序文件放到SD卡中,并且命名为main.py,当开机检测到这个文件的时候程序会自动执行`` main.py文件如下: ```python # refer to http://blog.sipeed.com/p/680.html import sensor, image, lcd, time import KPU as kpu import gc, sys def main(labels = None, model_addr="/sd/m.kmodel", lcd_rotation=0, sensor_hmirror=False, sensor_vflip=False):     gc.collect()     sensor.reset()     sensor.set_pixformat(sensor.RGB565)     sensor.set_framesize(sensor.QVGA)     sensor.set_windowing((224, 224))     sensor.set_hmirror(sensor_hmirror)     sensor.set_vflip(sensor_vflip)     sensor.run(1)     lcd.init(type=1)     lcd.rotation(lcd_rotation)     lcd.clear(lcd.WHITE)     if not labels:         raise Exception("no labels.txt")     task = kpu.load(model_addr)     try:         while(True):             img = sensor.snapshot()             t = time.ticks_ms()             fmap = kpu.forward(task, img)             t = time.ticks_ms() - t             plist=fmap[:]             pmax=max(plist)             max_index=plist.index(pmax)             img.draw_string(0,0, "%.2f\n%s" %(pmax, labels[max_index].strip()), scale=2, color=(255, 0, 0))             img.draw_string(0, 200, "t:%dms" %(t), scale=2, color=(255, 0, 0))             lcd.display(img)     except Exception as e:         sys.print_exception(e)     finally:         kpu.deinit(task) if __name__ == "__main__":     try:         with open("/sd/labels.txt") as f:             labels = f.readlines()         main(labels=labels, model_addr=0x300000, lcd_rotation=0, sensor_hmirror=False, sensor_vflip=False)         # main(labels=labels, model_addr="/sd/m.kmodel")     except Exception as e:         sys.print_exception(e)     finally:         gc.collect() ``` txt文件如下: ```python tench, Tinca tinca goldfish, Carassius auratus great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias tiger shark, Galeocerdo cuvieri hammerhead, hammerhead shark electric ray, crampfish, numbfish, torpedo stingray cock hen ostrich, Struthio camelus brambling, Fringilla montifringilla goldfinch, Carduelis carduelis house finch, linnet, Carpodacus mexicanus junco, snowbird indigo bunting, indigo finch, indigo bird, Passerina cyanea robin, American robin, Turdus migratorius bulbul jay magpie chickadee water ouzel, dipper kite bald eagle, American eagle, Haliaeetus leucocephalus vulture great grey owl, great gray owl, Strix nebulosa European fire salamander, Salamandra salamandra common newt, Triturus vulgaris eft spotted salamander, Ambystoma maculatum axolotl, mud puppy, Ambystoma mexicanum bullfrog, Rana catesbeiana tree frog, tree-frog tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui loggerhead, loggerhead turtle, Caretta caretta leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea mud turtle terrapin box turtle, box tortoise banded gecko common iguana, iguana, Iguana iguana American chameleon, anole, Anolis carolinensis whiptail, whiptail lizard agama frilled lizard, Chlamydosaurus kingi alligator lizard Gila monster, Heloderma suspectum green lizard, Lacerta viridis African chameleon, Chamaeleo chamaeleon Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis African crocodile, Nile crocodile, Crocodylus niloticus American alligator, Alligator mississipiensis triceratops thunder snake, worm snake, Carphophis amoenus ringneck snake, ring-necked snake, ring snake hognose snake, puff adder, sand viper green snake, grass snake king snake, kingsnake garter snake, grass snake water snake vine snake night snake, Hypsiglena torquata boa constrictor, Constrictor constrictor rock python, rock snake, Python sebae Indian cobra, Naja naja green mamba sea snake horned viper, cerastes, sand viper, horned asp, Cerastes cornutus diamondback, diamondback rattlesnake, Crotalus adamanteus sidewinder, horned rattlesnake, Crotalus cerastes trilobite harvestman, daddy longlegs, Phalangium opilio scorpion black and gold garden spider, Argiope aurantia barn spider, Araneus cavaticus garden spider, Aranea diademata black widow, Latrodectus mactans tarantula wolf spider, hunting spider tick centipede black grouse ptarmigan ruffed grouse, partridge, Bonasa umbellus prairie chicken, prairie grouse, prairie fowl peacock quail partridge African grey, African gray, Psittacus erithacus macaw sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita lorikeet coucal bee eater hornbill hummingbird jacamar toucan drake red-breasted merganser, Mergus serrator goose black swan, Cygnus atratus tusker echidna, spiny anteater, anteater platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus wallaby, brush kangaroo koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus wombat jellyfish sea anemone, anemone brain coral flatworm, platyhelminth nematode, nematode worm, roundworm conch snail slug sea slug, nudibranch chiton, coat-of-mail shell, sea cradle, polyplacophore chambered nautilus, pearly nautilus, nautilus Dungeness crab, Cancer magister rock crab, Cancer irroratus fiddler crab king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica American lobster, Northern lobster, Maine lobster, Homarus americanus spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish crayfish, crawfish, crawdad, crawdaddy hermit crab isopod white stork, Ciconia ciconia black stork, Ciconia nigra spoonbill flamingo little blue heron, Egretta caerulea American egret, great white heron, Egretta albus bittern crane limpkin, Aramus pictus European gallinule, Porphyrio porphyrio American coot, marsh hen, mud hen, water hen, Fulica americana bustard ruddy turnstone, Arenaria interpres red-backed sandpiper, dunlin, Erolia alpina redshank, Tringa totanus dowitcher oystercatcher, oyster catcher pelican king penguin, Aptenodytes patagonica albatross, mollymawk grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus killer whale, killer, orca, grampus, sea wolf, Orcinus orca dugong, Dugong dugon sea lion Chihuahua Japanese spaniel Maltese dog, Maltese terrier, Maltese Pekinese, Pekingese, Peke Shih-Tzu Blenheim spaniel papillon toy terrier Rhodesian ridgeback Afghan hound, Afghan basset, basset hound beagle bloodhound, sleuthhound bluetick black-and-tan coonhound Walker hound, Walker foxhound English foxhound redbone borzoi, Russian wolfhound Irish wolfhound Italian greyhound whippet Ibizan hound, Ibizan Podenco Norwegian elkhound, elkhound otterhound, otter hound Saluki, gazelle hound Scottish deerhound, deerhound Weimaraner Staffordshire bullterrier, Staffordshire bull terrier American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier Bedlington terrier Border terrier Kerry blue terrier Irish terrier Norfolk terrier Norwich terrier Yorkshire terrier wire-haired fox terrier Lakeland terrier Sealyham terrier, Sealyham Airedale, Airedale terrier cairn, cairn terrier Australian terrier Dandie Dinmont, Dandie Dinmont terrier Boston bull, Boston terrier miniature schnauzer giant schnauzer standard schnauzer Scotch terrier, Scottish terrier, Scottie Tibetan terrier, chrysanthemum dog silky terrier, Sydney silky soft-coated wheaten terrier West Highland white terrier Lhasa, Lhasa apso flat-coated retriever curly-coated retriever golden retriever Labrador retriever Chesapeake Bay retriever German short-haired pointer vizsla, Hungarian pointer English setter Irish setter, red setter Gordon setter Brittany spaniel clumber, clumber spaniel English springer, English springer spaniel Welsh springer spaniel cocker spaniel, English cocker spaniel, cocker Sussex spaniel Irish water spaniel kuvasz schipperke groenendael malinois briard kelpie komondor Old English sheepdog, bobtail Shetland sheepdog, Shetland sheep dog, Shetland collie Border collie Bouvier des Flandres, Bouviers des Flandres Rottweiler German shepherd, German shepherd dog, German police dog, alsatian Doberman, Doberman pinscher miniature pinscher Greater Swiss Mountain dog Bernese mountain dog Appenzeller EntleBucher boxer bull mastiff Tibetan mastiff French bulldog Great Dane Saint Bernard, St Bernard Eskimo dog, husky malamute, malemute, Alaskan malamute Siberian husky dalmatian, coach dog, carriage dog affenpinscher, monkey pinscher, monkey dog basenji pug, pug-dog Leonberg Newfoundland, Newfoundland dog Great Pyrenees Samoyed, Samoyede Pomeranian chow, chow chow keeshond Brabancon griffon Pembroke, Pembroke Welsh corgi Cardigan, Cardigan Welsh corgi toy poodle miniature poodle standard poodle Mexican hairless timber wolf, grey wolf, gray wolf, Canis lupus white wolf, Arctic wolf, Canis lupus tundrarum red wolf, maned wolf, Canis rufus, Canis niger coyote, prairie wolf, brush wolf, Canis latrans dingo, warrigal, warragal, Canis dingo dhole, Cuon alpinus African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus hyena, hyaena red fox, Vulpes vulpes kit fox, Vulpes macrotis Arctic fox, white fox, Alopex lagopus grey fox, gray fox, Urocyon cinereoargenteus tabby, tabby cat tiger cat Persian cat Siamese cat, Siamese Egyptian cat cougar, puma, catamount, mountain lion, painter, panther, Felis concolor lynx, catamount leopard, Panthera pardus snow leopard, ounce, Panthera uncia jaguar, panther, Panthera onca, Felis onca lion, king of beasts, Panthera leo tiger, Panthera tigris cheetah, chetah, Acinonyx jubatus brown bear, bruin, Ursus arctos American black bear, black bear, Ursus americanus, Euarctos americanus ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus sloth bear, Melursus ursinus, Ursus ursinus mongoose meerkat, mierkat tiger beetle ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle ground beetle, carabid beetle long-horned beetle, longicorn, longicorn beetle leaf beetle, chrysomelid dung beetle rhinoceros beetle weevil fly bee ant, emmet, pismire grasshopper, hopper cricket walking stick, walkingstick, stick insect cockroach, roach mantis, mantid cicada, cicala leafhopper lacewing, lacewing fly dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk damselfly admiral ringlet, ringlet butterfly monarch, monarch butterfly, milkweed butterfly, Danaus plexippus cabbage butterfly sulphur butterfly, sulfur butterfly lycaenid, lycaenid butterfly starfish, sea star sea urchin sea cucumber, holothurian wood rabbit, cottontail, cottontail rabbit hare Angora, Angora rabbit hamster porcupine, hedgehog fox squirrel, eastern fox squirrel, Sciurus niger marmot beaver guinea pig, Cavia cobaya sorrel zebra hog, pig, grunter, squealer, Sus scrofa wild boar, boar, Sus scrofa warthog hippopotamus, hippo, river horse, Hippopotamus amphibius ox water buffalo, water ox, Asiatic buffalo, Bubalus bubalis bison ram, tup bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis ibex, Capra ibex hartebeest impala, Aepyceros melampus gazelle Arabian camel, dromedary, Camelus dromedarius llama weasel mink polecat, fitch, foulmart, foumart, Mustela putorius black-footed ferret, ferret, Mustela nigripes otter skunk, polecat, wood pussy badger armadillo three-toed sloth, ai, Bradypus tridactylus orangutan, orang, orangutang, Pongo pygmaeus gorilla, Gorilla gorilla chimpanzee, chimp, Pan troglodytes gibbon, Hylobates lar siamang, Hylobates syndactylus, Symphalangus syndactylus guenon, guenon monkey patas, hussar monkey, Erythrocebus patas baboon macaque langur colobus, colobus monkey proboscis monkey, Nasalis larvatus marmoset capuchin, ringtail, Cebus capucinus howler monkey, howler titi, titi monkey spider monkey, Ateles geoffroyi squirrel monkey, Saimiri sciureus Madagascar cat, ring-tailed lemur, Lemur catta indri, indris, Indri indri, Indri brevicaudatus Indian elephant, Elephas maximus African elephant, Loxodonta africana lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca barracouta, snoek eel coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch rock beauty, Holocanthus tricolor anemone fish sturgeon gar, garfish, garpike, billfish, Lepisosteus osseus lionfish puffer, pufferfish, blowfish, globefish abacus abaya academic gown, academic robe, judge's robe accordion, piano accordion, squeeze box acoustic guitar aircraft carrier, carrier, flattop, attack aircraft carrier airliner airship, dirigible altar ambulance amphibian, amphibious vehicle analog clock apiary, bee house apron ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin assault rifle, assault gun backpack, back pack, knapsack, packsack, rucksack, haversack bakery, bakeshop, bakehouse balance beam, beam balloon ballpoint, ballpoint pen, ballpen, Biro Band Aid banjo bannister, banister, balustrade, balusters, handrail barbell barber chair barbershop barn barometer barrel, cask barrow, garden cart, lawn cart, wheelbarrow baseball basketball bassinet bassoon bathing cap, swimming cap bath towel bathtub, bathing tub, bath, tub beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon beacon, lighthouse, beacon light, pharos beaker bearskin, busby, shako beer bottle beer glass bell cote, bell cot bib bicycle-built-for-two, tandem bicycle, tandem bikini, two-piece binder, ring-binder binoculars, field glasses, opera glasses birdhouse boathouse bobsled, bobsleigh, bob bolo tie, bolo, bola tie, bola bonnet, poke bonnet bookcase bookshop, bookstore, bookstall bottlecap bow bow tie, bow-tie, bowtie brass, memorial tablet, plaque brassiere, bra, bandeau breakwater, groin, groyne, mole, bulwark, seawall, jetty breastplate, aegis, egis broom bucket, pail buckle bulletproof vest bullet train, bullet butcher shop, meat market cab, hack, taxi, taxicab caldron, cauldron candle, taper, wax light cannon canoe can opener, tin opener cardigan car mirror carousel, carrousel, merry-go-round, roundabout, whirligig carpenter's kit, tool kit carton car wheel cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM cassette cassette player castle catamaran CD player cello, violoncello cellular telephone, cellular phone, cellphone, cell, mobile phone chain chainlink fence chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour chain saw, chainsaw chest chiffonier, commode chime, bell, gong china cabinet, china closet Christmas stocking church, church building cinema, movie theater, movie theatre, movie house, picture palace cleaver, meat cleaver, chopper cliff dwelling cloak clog, geta, patten, sabot cocktail shaker coffee mug coffeepot coil, spiral, volute, whorl, helix combination lock computer keyboard, keypad confectionery, confectionary, candy store container ship, containership, container vessel convertible corkscrew, bottle screw cornet, horn, trumpet, trump cowboy boot cowboy hat, ten-gallon hat cradle crane crash helmet crate crib, cot Crock Pot croquet ball crutch cuirass dam, dike, dyke desk desktop computer dial telephone, dial phone diaper, nappy, napkin digital clock digital watch dining table, board dishrag, dishcloth dishwasher, dish washer, dishwashing machine disk brake, disc brake dock, dockage, docking facility dogsled, dog sled, dog sleigh dome doormat, welcome mat drilling platform, offshore rig drum, membranophone, tympan drumstick dumbbell Dutch oven electric fan, blower electric guitar electric locomotive entertainment center envelope espresso maker face powder feather boa, boa file, file cabinet, filing cabinet fireboat fire engine, fire truck fire screen, fireguard flagpole, flagstaff flute, transverse flute folding chair football helmet forklift fountain fountain pen four-poster freight car French horn, horn frying pan, frypan, skillet fur coat garbage truck, dustcart gasmask, respirator, gas helmet gas pump, gasoline pump, petrol pump, island dispenser goblet go-kart golf ball golfcart, golf cart gondola gong, tam-tam gown grand piano, grand greenhouse, nursery, glasshouse grille, radiator grille grocery store, grocery, food market, market guillotine hair slide hair spray half track hammer hamper hand blower, blow dryer, blow drier, hair dryer, hair drier hand-held computer, hand-held microcomputer handkerchief, hankie, hanky, hankey hard disc, hard disk, fixed disk harmonica, mouth organ, harp, mouth harp harp harvester, reaper hatchet holster home theater, home theatre honeycomb hook, claw hoopskirt, crinoline horizontal bar, high bar horse cart, horse-cart hourglass iPod iron, smoothing iron jack-o'-lantern jean, blue jean, denim jeep, landrover jersey, T-shirt, tee shirt jigsaw puzzle jinrikisha, ricksha, rickshaw joystick kimono knee pad knot lab coat, laboratory coat ladle lampshade, lamp shade laptop, laptop computer lawn mower, mower lens cap, lens cover letter opener, paper knife, paperknife library lifeboat lighter, light, igniter, ignitor limousine, limo liner, ocean liner lipstick, lip rouge Loafer lotion loudspeaker, speaker, speaker unit, loudspeaker system, speaker system loupe, jeweler's loupe lumbermill, sawmill magnetic compass mailbag, postbag mailbox, letter box maillot maillot, tank suit manhole cover maraca marimba, xylophone mask matchstick maypole maze, labyrinth measuring cup medicine chest, medicine cabinet megalith, megalithic structure microphone, mike microwave, microwave oven military uniform milk can minibus miniskirt, mini minivan missile mitten mixing bowl mobile home, manufactured home Model T modem monastery monitor moped mortar mortarboard mosque mosquito net motor scooter, scooter mountain bike, all-terrain bike, off-roader mountain tent mouse, computer mouse mousetrap moving van muzzle nail neck brace necklace nipple notebook, notebook computer obelisk oboe, hautboy, hautbois ocarina, sweet potato odometer, hodometer, mileometer, milometer oil filter organ, pipe organ oscilloscope, scope, cathode-ray oscilloscope, CRO overskirt oxcart oxygen mask packet paddle, boat paddle paddlewheel, paddle wheel padlock paintbrush pajama, pyjama, pj's, jammies palace panpipe, pandean pipe, syrinx paper towel parachute, chute parallel bars, bars park bench parking meter passenger car, coach, carriage patio, terrace pay-phone, pay-station pedestal, plinth, footstall pencil box, pencil case pencil sharpener perfume, essence Petri dish photocopier pick, plectrum, plectron pickelhaube picket fence, paling pickup, pickup truck pier piggy bank, penny bank pill bottle pillow ping-pong ball pinwheel pirate, pirate ship pitcher, ewer plane, carpenter's plane, woodworking plane planetarium plastic bag plate rack plow, plough plunger, plumber's helper Polaroid camera, Polaroid Land camera pole police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria poncho pool table, billiard table, snooker table pop bottle, soda bottle pot, flowerpot potter's wheel power drill prayer rug, prayer mat printer prison, prison house projectile, missile projector puck, hockey puck punching bag, punch bag, punching ball, punchball purse quill, quill pen quilt, comforter, comfort, puff racer, race car, racing car racket, racquet radiator radio, wireless radio telescope, radio reflector rain barrel recreational vehicle, RV, R.V. reel reflex camera refrigerator, icebox remote control, remote restaurant, eating house, eating place, eatery revolver, six-gun, six-shooter rifle rocking chair, rocker rotisserie rubber eraser, rubber, pencil eraser rugby ball rule, ruler running shoe safe safety pin saltshaker, salt shaker sandal sarong sax, saxophone scabbard scale, weighing machine school bus schooner scoreboard screen, CRT screen screw screwdriver seat belt, seatbelt sewing machine shield, buckler shoe shop, shoe-shop, shoe store shoji shopping basket shopping cart shovel shower cap shower curtain ski ski mask sleeping bag slide rule, slipstick sliding door slot, one-armed bandit snorkel snowmobile snowplow, snowplough soap dispenser soccer ball sock solar dish, solar collector, solar furnace sombrero soup bowl space bar space heater space shuttle spatula speedboat spider web, spider's web spindle sports car, sport car spotlight, spot stage steam locomotive steel arch bridge steel drum stethoscope stole stone wall stopwatch, stop watch stove strainer streetcar, tram, tramcar, trolley, trolley car stretcher studio couch, day bed stupa, tope submarine, pigboat, sub, U-boat suit, suit of clothes sundial sunglass sunglasses, dark glasses, shades sunscreen, sunblock, sun blocker suspension bridge swab, swob, mop sweatshirt swimming trunks, bathing trunks swing switch, electric switch, electrical switch syringe table lamp tank, army tank, armored combat vehicle, armoured combat vehicle tape player teapot teddy, teddy bear television, television system tennis ball thatch, thatched roof theater curtain, theatre curtain thimble thresher, thrasher, threshing machine throne tile roof toaster tobacco shop, tobacconist shop, tobacconist toilet seat torch totem pole tow truck, tow car, wrecker toyshop tractor trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi tray trench coat tricycle, trike, velocipede trimaran tripod triumphal arch trolleybus, trolley coach, trackless trolley trombone tub, vat turnstile typewriter keyboard umbrella unicycle, monocycle upright, upright piano vacuum, vacuum cleaner vase vault velvet vending machine vestment viaduct violin, fiddle volleyball waffle iron wall clock wallet, billfold, notecase, pocketbook wardrobe, closet, press warplane, military plane washbasin, handbasin, washbowl, lavabo, wash-hand basin washer, automatic washer, washing machine water bottle water jug water tower whiskey jug whistle wig window screen window shade Windsor tie wine bottle wing wok wooden spoon wool, woolen, woollen worm fence, snake fence, snake-rail fence, Virginia fence wreck yawl yurt web site, website, internet site, site comic book crossword puzzle, crossword street sign traffic light, traffic signal, stoplight book jacket, dust cover, dust jacket, dust wrapper menu plate guacamole consomme hot pot, hotpot trifle ice cream, icecream ice lolly, lolly, lollipop, popsicle French loaf bagel, beigel pretzel cheeseburger hotdog, hot dog, red hot mashed potato head cabbage broccoli cauliflower zucchini, courgette spaghetti squash acorn squash butternut squash cucumber, cuke artichoke, globe artichoke bell pepper cardoon mushroom Granny Smith strawberry orange lemon fig pineapple, ananas banana jackfruit, jak, jack custard apple pomegranate hay carbonara chocolate sauce, chocolate syrup dough meat loaf, meatloaf pizza, pizza pie potpie burrito red wine espresso cup eggnog alp bubble cliff, drop, drop-off coral reef geyser lakeside, lakeshore promontory, headland, head, foreland sandbar, sand bar seashore, coast, seacoast, sea-coast valley, vale volcano ballplayer, baseball player groom, bridegroom scuba diver rapeseed daisy yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum corn acorn hip, rose hip, rosehip buckeye, horse chestnut, conker coral fungus agaric gyromitra stinkhorn, carrion fungus earthstar hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa bolete ear, spike, capitulum toilet tissue, toilet paper, bathroom tissue ``` 文件已经拷贝完成以后,设备插入内存卡,重新上电就能看到程序已经执行了 连续运行超过24小时的异常情况: 1、接触不良导致开发板重启 2、电流要求最好250mA以上,否则也会有时导致重启 总体来说是比较稳定的,在24小时运行这段时间里面只发生了一次重启。 功耗测量: 在不同工作状态下(待机、轻载、满载)测量功耗,评估其能源效率。 待机: 轻载: 满载: ``总体来说整体功耗不错,运行也相对稳定``

  • 2024-07-27
  • 发表了主题帖: Sipeed MAix BiT AIoT 开发套件测评-模型训练 (二)

    本帖最后由 zygalaxy 于 2024-8-1 21:05 编辑 ## Sipeed MAix BiT AIoT 开发套件测评-模型训练 (二) 之前已经介绍了使用Maixpy hub进行训练模型,这是目前最方便的方法。因为他有训练的gpu,训练速度非常非快,如果大家不想使用官方提供的训练平台,接下来向大家介绍本地训练的方法。 1.首先需要关注公众号``import 创客``回复mx3获取软件(软件安装包也会放在底部) 2.安装下载好的安装包,打开软件看到如下页面 这次我们要做一个人脸表情识别的案例,首先点击工具集,选择数据采集助手进行图片的采集 **这个工具的本质是一个爬虫助手** 选择照片保存的路径以及输入下载图片的关键词,输入需要下载的张数 将下载的照片按分类进行保存到不同的文件夹 3. 进入训练的主界面,选择刚才保存图片的路径,然后点击训练,开始训练可以看到下面已经开始训练 ![828886](/data/attachment/forum/202408/01/205714ilr656lzlv7sd06b.png.thumb.jpg?rand=5641.909587207257) 4.训练完成,部署训练的模型 打开安装的软件的路径,进入图中的路径,找到模型 本次训练的模型可以根据 ``模型训练一`` 进行模型部署

最近访客

< 1/3 >

统计信息

已有24人来访过

  • 芯积分:228
  • 好友:--
  • 主题:27
  • 回复:7

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言