@ -1,6 +1,6 @@
# 应用物联网预测植物生长


> Sketchnote by [Nitya Narasimhan ](https://github.com/nitya ). 如果你想看比较大的图片,请点击它。
@ -14,11 +14,11 @@
这节课程将包含:
* [数字农业 ](# digital-agriculture )
* [为什么温度在耕作中很重要? ](# why-is-temperature-important-when-farming )
* [测量环境温度 ](# measure-ambient-temperature )
* [生长度日 (GDD) ](# growing-degree-days )
* [用温度传感器数据计算 GDD ](# calculate-gdd-using-temperature-sensor-data )
* [数字农业 ](# 数字农业 )
* [为什么温度在耕作中很重要? ](# 为什么温度在耕作中很重要? )
* [测量环境温度 ](# 测量环境温度 )
* [生长度日 (GDD) ](# 生长度日 )
* [用温度传感器数据计算 GDD ](# 用温度传感器数据计算 GDD )
## 数字农业
@ -36,9 +36,8 @@
✅ 做些研究。还有哪些技术是用来提高农业产量的?
> 🎓 The term 'Precision Agriculture' is used to define observing, measuring and responding to crops on a per-field basis, or even on parts of a field. This includes measuring water, nutrient and pest levels and responding accurately, such as watering only a small part of a field.
> 🎓 “精准农业”一词被用来定义在某块田地,甚至在某块田地的部分区域的尺度上,对作物进行的观察、测量和反应。这包括测量水、养分和虫害程度,并作出准确的反应,例如只对一小部分田地进行浇灌。
>
> “精准农业”一词被用来定义在某块田地,甚至在某块田地的部分区域的尺度上,对作物进行的观察、测量和反应。这包括测量水、养分和虫害程度,并作出准确的反应,例如只对一小部分田地进行浇灌。
## 为什么温度在耕作中很重要?
@ -48,9 +47,9 @@
植物有基础温度或者说最低温度、最佳温度和最高温度,所有这些都基于日平均温度。
* 基础温度 Base temperature - 这是植物生长所需的最低日平均温度。
* 最佳温度 Optimum temperature - 这是能够使植物获得最多生长的最佳日平均温度。
* 最高温度 Maximum temperature - 这是植物可以承受的最高温度。超过这个温度,植物就会停止生长,以节省水分和保持存活。
* 基础温度 ( Base temperature) - 这是植物生长所需的最低日平均温度。
* 最佳温度 ( Optimum temperature) - 这是能够使植物获得最多生长的最佳日平均温度。
* 最高温度 ( Maximum temperature) - 这是植物可以承受的最高温度。超过这个温度,植物就会停止生长,以节省水分和保持存活。
> 💁 这些都是平均温度,是每日和每夜温度的平均值。植物也需要昼夜不同的温度以帮助它们更有效地进行光合作用并在夜间节省能量。
@ -58,7 +57,7 @@
✅ 做些研究。对于那些花园、学校或当地公园里的植物,你是否可以找到其基础温度。


上图显示了一个生长率与温度关系图的例子。在最低温度之前植物不会生长。随着温度升高生长率增加,并在最佳温度处达到这个峰值,然后下降。在最高温度处,生长停止。
@ -78,23 +77,21 @@
通过以下这些相关指南,应用你的物联网设备监测温度:
* [Arduino - Wio Terminal ]( wio-terminal-temp.md)
* [Single-board computer - Raspberry Pi]( pi-temp.md)
* [Single-board computer - Virtual device]( virtual-device-temp.md)
* [Arduino - Wio Terminal ](../ wio-terminal-temp.md)
* [单板机 - Raspberry Pi](../ pi-temp.md)
* [单板机 - 虚拟设备](../ virtual-device-temp.md)
## 生长度日
生长度日 Growing degree days (也称为生长度单位 growing degree units) 是根据温度衡量植物生长的一种方式。假设一株植物具有足够的水分、养分和二氧化碳,温度将会决定植物的生长率。
Growing degree days, or GDD are calculated per day as the average temperature in Celsius for a day above the plants base temperature. Each plant needs a certain number of GDD to grow, flower or produce and mature a crop. The more GDD each day, the faster the plant will grow.
生长度日 (Growing degree days),也称为生长度单位 (growing degree units),是根据温度衡量植物生长的一种方式。假设一株植物具有足够的水分、养分和二氧化碳,温度将会决定植物的生长率。
生长度日,或称 GDD, 是以每日中高于植物基础温度的的平均温度( 摄氏度) 来计算的。每个植物需要一定数量的生长度日来生长、开花、成熟。每天的 GDD 越多,植物的生长就越快。
> 🇺🇸 For Americans, growing degree days can also be calculated using Fahrenheit. 5 GDD< sup > C< / sup > (growing degree days in Celsius) is the equivalent of 9 GDD< sup > F< / sup > (growing degree days in Fahrenheit). < = 华氏度计算
GDD的完整公式有点复杂, 大多是情况下使用一个简化方程就能得到一个很好的近似值:
GDD 的完整公式有点复杂,大多是情况下使用一个简化方程就能得到一个很好的近似值:


* **GDD** - 生长度日的数量
* **T<sub>max</sub>** - 每日最高温度,单位是摄氏度
@ -103,14 +100,14 @@ GDD的完整公式有点复杂, 大多是情况下使用一个简化方程就
> 💁 T< sub > max< / sub > 高于 30°C 或者 T< sub > min< / sub > 低于 T< sub > base< / sub > 的情况下有所不同,但是我们暂且忽略。
### 例子 - Corn/Maize 🌽
### 例子 - 玉米 🌽
根据品种的不同,玉米大概需要 800 到 2,700 的 GDD 来成熟,基础温度是 10°C。
在高于基础温度的第一天,测量的温度值如下:
| Measurement | Temp °C |
| :---------- | :-----: |
| 测量 | 温度 °C |
| :--- | :-----: |
| 最高 | 16 |
| 最低 | 12 |
@ -122,7 +119,7 @@ GDD的完整公式有点复杂, 大多是情况下使用一个简化方程就
可得:


玉米在这一天获得了4 GDD。假设这个品种的玉米需要800 GDD, 那么它还需要796 GDD 才能成熟。
@ -136,7 +133,7 @@ GDD的完整公式有点复杂, 大多是情况下使用一个简化方程就
通过使用物联网设备收集温度数据,农民可以在植物接近成熟时自动收到通知。这方面的典型架构是让物联网设备测量温度,然后使用类似 MQTT 的协议在互联网上发布这些遥测数据。接着服务器代码监听这些数据并将其保存在某个地方,比如数据库。这意味着之后能够对这些数据进行分析,比如在每晚计算当天的 GDD, 对每种作物的 GDD 进行累计,如果植物接近成熟就发出警报。


服务器代码也可以通过添加额外的信息来增强数据。例如,物联网设备可通过一个标识符以表明它是哪个设备,而服务器代码可以使用这个标识符来查找设备的位置以及它正在监测哪些作物。还可以添加一些基本数据,如当前时间,因为一些物联网设备没有追踪时间的必要的硬件或者是需要额外的代码来通过互联网读取当前时间。
@ -146,8 +143,8 @@ GDD的完整公式有点复杂, 大多是情况下使用一个简化方程就
通过以下这些相关指南,应用你的物联网设备通过 MQTT 发布温度数据,以便之后的分析:
* [Arduino - Wio Terminal ]( wio-terminal-temp-publish.md)
* [Single-board computer - Raspberry Pi/Virtual IoT device]( single-board-computer-temp-publish.md)
* [Arduino - Wio Terminal ](../ wio-terminal-temp-publish.md)
* [单板机 - Raspberry Pi/虚拟物联网设备](../ single-board-computer-temp-publish.md)
### 任务 - 捕获并存储温度信息
@ -165,9 +162,9 @@ CSV 文件将有两列 - *时间 (date)*和*温度 (temperature)*。*时间*列
* 编写代码来监听发布在遥测主题上的 MQTT 消息
> ⚠️ 你可以参考 [the instructions in lesson 4 for creating a Python app to receive telemetry if needed ]( ../../../1-getting-started/lessons/4-connect-internet/README.md#receive-telemetry-from-the-mqtt-broker).
> ⚠️ 如果需要的话你可以参考 [课程 4 中关于创建 Python 应用来接受遥测数据的说明 ](../ ../../../1-getting-started/lessons/4-connect-internet/README.md#receive-telemetry-from-the-mqtt-broker)。
这个项目的文件夹名是 `temperature-sensor-server` .
这个项目的文件夹名是 `temperature-sensor-server` 。
1. 确保 `client_name` 反映该项目:
@ -222,12 +219,12 @@ CSV 文件将有两列 - *时间 (date)*和*温度 (temperature)*。*时间*列
1. 运行这段代码一段时间以获取数据。理想情况下,你应该运行它一整天来收集足够的数据用于 GDD 的计算。
> 💁 如果你正在使用 Virtual IoT Device ,选择随机复选框并设置一个范围来避免每次返回温度时都得到同样的值。
> 
> 💁 如果你正在使用虚拟物联网设备 ,选择随机复选框并设置一个范围来避免每次返回温度时都得到同样的值。
> 
> 💁 如果你想运行一整天,那么你需要确保用于服务器代码运行的电脑不会进入休眠,你可以改变电源设置,或者运行 [this keep system active Python script ](https://github.com/jaqsparow/keep-system-active )。
> 💁 如果你想运行一整天,那么你需要确保用于服务器代码运行的电脑不会进入休眠,你可以改变电源设置,或者运行 [这个保持系统活跃的 Python 脚本 ](https://github.com/jaqsparow/keep-system-active )。
> 💁 你可以在 [code-server/temperature-sensor-server ]( code-server/temperature-sensor-server) 文件夹内找到需要的代码。
> 💁 你可以在 [code-server/temperature-sensor-server ](../ code-server/temperature-sensor-server) 文件夹内找到需要的代码。
### 任务 - 使用存储的数据计算出 GDD
@ -243,13 +240,13 @@ CSV 文件将有两列 - *时间 (date)*和*温度 (temperature)*。*时间*列
例如,如果这一天最高温度是 25°C, 最低温度是 12°C:


* 25 + 12 = 37
* 37 / 2 = 18.5
* 18.5 - 10 = 8.5
所以草莓获得了 **8.5** GDD。草莓需要大概 250 GDD 来结果,所以 还得等一会儿呢。
所以草莓获得了 **8.5** GDD。草莓需要大概 250 GDD 来结果,看来 还得等一会儿呢。
---
@ -271,4 +268,4 @@ CSV 文件将有两列 - *时间 (date)*和*温度 (temperature)*。*时间*列
## 作业
[Visualize GDD data using a Jupyter Notebook]( assignment.md)
[使用 Jupyter Notebook 进行 GDD 数据的可视化](../ assignment.md)