项目简介
本项目是基于C语言开发的应用程序,运行于Azure Sphere平台,结合Seeed Studio Grove Shield和Grove温湿度传感器(SHT31),实现温湿度数据的读取并输出到调试日志,还能通过GPIO控制LED灯闪烁。
项目的主要特性和功能
- 数据采集:利用Grove温湿度传感器(SHT31)实时采集环境的温度和湿度数据。
- 数据输出:将采集到的温湿度数据输出到调试日志,方便开发人员查看。
- LED控制:通过GPIO控制LED灯的闪烁,实现简单的状态指示。
安装使用步骤
开发环境准备
- 复制项目源码。
- 安装Azure Sphere SDK,建议使用Azure Sphere SDK 19.11或更高版本,该版本使用CMake构建系统。
- 复制MT3620 Grove Shield库。
创建Visual Studio项目
- 启动Visual Studio,在复制MT3620 Grove Shield库的同一目录下创建新项目。
- 在搜索框中输入 sphere,选择Azure Sphere Blink模板。
- 命名项目并设置保存位置。
配置CMakeLists.txt
- 打开项目中的
CMakeLists.txt
文件。 - 添加MT3620 Grove Shield库的源位置和目标链接库。
设置应用程序权限
- 查看 Grove Shield Sensor Capabilities Quick Reference,了解每个传感器所需的权限。
- 打开
app_manifest.json
文件。 - 添加Uart ISU0,并确保GPIO 9用于控制LED灯。
更新代码
将 main.c
文件中的现有代码替换为以下代码:
```c
include
include
include
include
include
include
include
include
// Grove Temperature and Humidity Sensor
include "../MT3620_Grove_Shield/MT3620_Grove_Shield_Library/Grove.h"
include "../MT3620_Grove_Shield/MT3620_Grove_Shield_Library/Sensors/GroveTempHumiSHT31.h"
static volatile sig_atomic_t terminationRequested = false;
static void TerminationHandler(int signalNumber) { // Don't use Log_Debug here, as it is not guaranteed to be async signal safe terminationRequested = true; }
int main(int argc, char* argv[]) { Log_Debug("Application starting\n");
// Register a SIGTERM handler for termination requests
struct sigaction action;
memset(&action, 0, sizeof(struct sigaction));
action.sa_handler = TerminationHandler;
sigaction(SIGTERM, &action, NULL);
// Change this GPIO number and the number in app_manifest.json if required by your hardware.
int fd = GPIO_OpenAsOutput(9, GPIO_OutputMode_PushPull, GPIO_Value_High);
if (fd < 0) {
Log_Debug(
"Error opening GPIO: %s (%d). Check that app_manifest.json includes the GPIO used.\n",
strerror(errno), errno);
return -1;
}
// Initialize Grove Shield and Grove Temperature and Humidity Sensor
int i2cFd;
GroveShield_Initialize(&i2cFd, 115200);
void* sht31 = GroveTempHumiSHT31_Open(i2cFd);
const struct timespec sleepTime = { 1, 0 };
while (!terminationRequested) {
GroveTempHumiSHT31_Read(sht31);
float temp = GroveTempHumiSHT31_GetTemperature(sht31);
float humi = GroveTempHumiSHT31_GetHumidity(sht31);
Log_Debug("Temperature: %.1fC\n", temp);
Log_Debug("Humidity: %.1f%%\n", humi);
GPIO_SetValue(fd, GPIO_Value_Low);
nanosleep(&sleepTime, NULL);
GPIO_SetValue(fd, GPIO_Value_High);
nanosleep(&sleepTime, NULL);
}
} ```
部署应用程序
- 通过USB将Azure Sphere连接到计算机。
- 从 Select Startup 下拉菜单中选择 GDB Debugger (HLCore)。
- 在Visual Studio中按 F5 键,构建、部署、启动应用程序,并将远程调试器附加到Azure Sphere。
查看调试输出
使用Visual Studio的 Ctrl+Alt+O 快捷键或点击底部/右侧的 Output 标签,打开 Output 窗口,查看 main.c
中 Log_Debug
语句的输出。
设置调试断点
在 main.c
文件中,点击要设置断点的代码行左侧的边距,设置调试断点。例如,在 GroveTempHumiSHT31_Read(sht31);
行设置断点。
停止调试器
使用Visual Studio的 Shift+F5 快捷键或点击 Stop Debugging 图标,停止调试器。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】