土壤湿度传感器与家庭自动化动态网络项目指南
立即解锁
发布时间: 2025-08-21 00:15:10 阅读量: 1 订阅数: 4 


英特尔Galileo开发实战指南
### 土壤湿度传感器与家庭自动化动态网络项目指南
#### 1. 土壤湿度传感器项目
##### 1.1 测试花脸显示
测试花脸显示十分简单有趣。依照原理图完成所有连接后,若一切正常,首先会看到一张只有一只眼睛亮起的悲伤脸,这代表选中了传感器 1。按下按钮,如果按钮连接及其消抖间隔正常工作,就会看到两只眼睛都亮起的快乐脸,代表选中了传感器 2。
##### 1.2 运行项目
运行项目前,需对代码进行一些修改。
- **定义连接**:定义传感器的连接位置,并设置一个变量来设定初始值。示例代码如下:
```cpp
/* Moisture sensor - Analog Input */
#define ANALOG_MOISTURE_SENSOR_1 A0
#define ANALOG_MOISTURE_SENSOR_2 A1
int sensor_value = 0;
```
- **设置边界值**:创建一个定义,为土壤足够湿润时设定一个边界值。具体操作步骤如下:
1. 将 `DEBUG` 定义设置为 “1” 以启用调试消息:
```cpp
#define DEBUG 1
```
2. 使用 IDE 上传程序后,通过按下 `Ctrl + Shift + M` 或选择 `Tools ➤ Serial - Monitor` 启动串口监视器。
3. 在串口终端会看到 “sensor value:” 及相应的值,校准过程中要确保选择正确的传感器。
4. 将 `SOIL_ID_GOOD` 设置为合适的值,示例中设置为 350:
```cpp
/* The analog reading boundary when soil is good */
#define SOIL_IS_GOOD 350
```
以下是修改后的 `loop` 函数代码:
```cpp
void loop() {
// reading the button state
checkButtonState();
if( button_state != lastButtonState)
{
// button pressed
current_sensor++;
if (current_sensor > 1) current_sensor = 0;
}
// reading the sensor
switch (current_sensor)
{
case 0:
sensor_value = analogRead(ANALOG_MOISTURE_SENSOR_1);
// first sensor - one LED ON
digitalWrite(PIN_RIGHT_EYE, HIGH);
digitalWrite(PIN_LEFT_EYE, LOW);
break;
case 1:
sensor_value = analogRead(ANALOG_MOISTURE_SENSOR_2);
// second sensor - two LEDs ON
digitalWrite(PIN_RIGHT_EYE, HIGH);
digitalWrite(PIN_LEFT_EYE, HIGH);
break;
}
if (DEBUG)
{
Serial.print("current_sensor:");
Serial.println(current_sensor);
Serial.print(" sensor_value:");
Serial.println(sensor_value);
}
if (sensor_value >=SOIL_IS_GOOD)
{
drawMatrix(array_happy_face);
}
else
{
drawMatrix(array_sad_face);
}
}
```
##### 1.3 项目展示
在创客博览会上展示该项目时,使用了两个土壤样本,一个干燥,另一个含水量良好。土壤放在两个一次性杯子中并连接传感器,花脸部分添加了一些彩色叶子,这些叶子可以使用从家得宝等建筑商店获取的免费绘画纸样本制作。
##### 1.4 项目改进思路
- **增加传感器数量**:该项目目前仅使用两个传感器,但英特尔 Galileo 引脚包含六个模拟端口,可通过对软硬件进行最小改动来扩展传感器数量。若需要多于两个传感器,可构建一个带有多个 LED
0
0
复制全文
相关推荐










