资料介绍
描述
几个世纪以来,感知风和天气对人类来说一直很重要。雅典人在公元前一世纪建造了八面风之塔,以纪念八位风神。风之塔至今仍矗立在雅典古老的集市或市场中。
多年来,许多重大的天气事件影响了人类。我们知道这些,因为它们的影响已成为历史的一部分。由于历史的大部分内容是对一系列战争和战斗的回忆,有趣的是,早期著名的关于天气重要性的提法来自中国哲学家孙祖,他说:“知己知彼, 胜利是有保证的。知地而知天,方能全胜。”
在很久以后的历史中,我们知道拿破仑在 1812 年入侵俄罗斯受到阻碍,因为该季节的降雪和寒冷天气比他和他的将军们计划的要早。这与俄罗斯民兵的袭击相结合,帮助击败了法国人,法国人带着 500,00 名士兵入侵,只剩下 20,000 名幸存者。一百三十年后,当希特勒对苏联的入侵再次被严寒的冬季天气部分挫败时,这种情况再次发生。
在 20 世纪,恶劣的天气条件带来了大规模的人口迁移,包括 1930 年代美国的沙尘暴、整个世纪亚洲的多次干旱以及非洲萨赫勒地区的三个重要干旱时期。造成许多人死亡和影响的个别事件包括 1952 年伦敦的大烟雾事件,该事件在 12 月的五天内造成 4,000 人死亡,美国东海岸的许多飓风影响,以及几场值得注意的暴风雪。人对环境的影响也可以从天气中看到,在最近的事件中,当乌克兰切尔诺贝利的反应堆事故释放出放射性粒子时,被苏联以外的传感器检测到,并使用复杂的天气传感器和气象模型追溯到切尔诺贝利。以类似的方式,当地气象仪器被用来帮助估计 1991 年海湾战争期间油井大火产生的烟雾和煤烟的影响。
今天,风和其他天气变量同样受到关注,并且可能对我们现代高科技生活方式产生更大的影响。天气影响广泛的人类活动,包括农业、交通和休闲时间。通常,这些影响涉及气体和微粒在大气中的移动。现代天气监测系统和网络旨在以具有成本效益的方式进行必要的测量,以跟踪这些运动。这要求将监测系统的总生命周期成本降至最低,而做到这一点的一种方法是尽量减少或消除对天气监测系统的维护。使用固态系统来测量天气,包括风速和风向,对于最大限度地减少设备维修和成本至关重要。传统的天气监测系统由单独的传感器组成,用于测量一个气象变量,每个传感器都连接到数据收集设备或记录器。现代技术允许将多个传感器组合成一个集成气象站,该气象站可以永久位于一个站点或运输到需要局部天气的站点。
因此,利用 Ada 的所有强大功能以及一系列 BM1383AGLV 压力-温度传感器,我们将构建一个具有各种应用的本地化气象站。
硬件
1. 树莓派 3B+
众所周知,树莓派是一系列小型单板机,树莓派 3B+ 是该家族的最新版本之一。我选择它是因为它操作快速且易于处理,而且 Ada 内置了对 Raspberry Pi 的支持。
但 RPI 的主要问题之一是它无法从其 GPIO 读取模拟输入。为了克服这个问题,我选择了一个支持 I2C 的传感器,这样我就可以轻松地访问来自传感器的数据。
2.BM1383AGLV
BM1383AGLV 是一种压阻式压力传感器。它对芯片内部的MEMS进行温度补偿,因此很容易获得压力信息。它由温度和压力传感器组成,并提供 I2C 接口。它可以读取从 300hPa 到 1100hPa 的压力和从 -40°C 到 +85°C 的温度。
硬件设置
硬件连接示意图如下。将 SDA 引脚连接到 GPIO2,将 SCL 引脚连接到 GPIO3。DRDY 引脚是可选的。如果您在代码中使用它,请将其拉至 1。
软件
1. GNAT
GNAT 是 Ada 编程语言的免费软件编译器,它是 GNU 编译器集合的一部分。它支持所有版本的语言,即 Ada 2012、Ada 2005、Ada 95 和 Ada 83。
要在 Raspberry Pi 中安装 GNAT 编译器,请在终端中输入以下命令。
sudo apt-get install gnat
2. ADA 代码
选择传感器后,我继续搜索任何提供 I2C 支持的 Ada 库,但我很失望,因为我找不到。所以我决定从头开始为 BM1383AGLV 构建一个库。
我使用了一些 bash 命令与 I2C 模块进行通信,并且能够从模块中读取数据。
i2c检测
我使用此命令搜索连接的 I2C 模块
i2cget
我使用这个命令来读取存储在传感器中的数据。
所以我开始寻找一个可以执行 bash 命令的 Ada 模块,我找到了Interfaces.C模块。
使用这段代码,我能够在终端中执行命令
function System (Cmd : String) return Integer is
function C_System (S : Interfaces.C.char_array) return Integer;
pragma Import (C, C_System, "system");
begin
return C_System (Interfaces.C.To_C (Cmd));
end System;
然后我开始将命令合并到 Ada 代码中。i2c.adb 文件读取为
with Interfaces.C;
with Ada.Strings.Fixed;
with GNAT.Expect;
package body i2c is
R,V1: Integer;
W1: String:="i2cset -y -a 1 0x5d 0x12 0x01";
W2: String:="i2cset -y -a 1 0x5d 0x13 0x01";
W3: String:="i2cset -y -a 1 0x5d 0x14 0x9";
R1: String:="i2cget -y -a 1 0x5d 0x19";
R2: String:="i2cget -y -a 1 0x5d 0x1A";
R3: String:="i2cget -y -a 1 0x5d 0x1B";
R4: String:="i2cget -y -a 1 0x5d 0x1C";
procedure write is
function System (Cmd : String) return Integer is
function C_System (S : Interfaces.C.char_array) return Integer;
pragma Import (C, C_System, "system");
begin
return C_System (Interfaces.C.To_C (Cmd));
end System;
pragma Inline (System);
begin
R := System (W1);
DELAY 0.5;
R := System (W2);
R := System (W3);
end write;
procedure read is
function System (Cmd : String) return Integer is
function C_System (S : Interfaces.C.char_array) return Integer;
pragma Import (C, C_System, "system");
begin
return C_System (Interfaces.C.To_C (Cmd));
end System;
pragma Inline (System);
Com: String:="sudo chmod +x i2c.sh && ./i2c.sh";
begin
V1 := System (Com);
end read;
end i2c;
在职的
现在是检查工作的时候了。下载代码并执行以下命令以查看它们是否正常工作。
gprbuild -d aws.gpr -XPrivate_Warnings=FALSE -XModule=MOD_RPI aws.adb
然后你可以在 bin 文件夹中找到一个可执行文件。使用以下命令执行它
sudo ./aws
它会给你这样的结果
未来会怎样?
我们现在开发了一个本地化的气象站,能够不时监测天气变量。将这些变量结合到现有的机器学习模型中,我们将能够更准确地预测未来几天的天气。
有关更多文档和详细信息,请访问GitHub 存储库。
- Arduino在线气象站(NodeMCU)
- 如何制作简单的气象站
- Arduino无线气象站
- Arduino气象站
- 基于LoPy4的气象站设计 0次下载
- Sigfox和Arduino气象站
- 基于Arduino的无线气象站 0次下载
- Arduino气象站项目
- DIY简单气象站
- 使用Arduino和NodeMCU的气象站
- 基于网络的InqWeather气象站
- 手持式气象站BNL-GPRS系列使用手册 4次下载
- 带有Adafruit_IO的气象站监视器源码 9次下载
- 自动气象站的抗干扰技术 26次下载
- 基于MSP430的智能气象站的设计
- 基于几何的泰森多边形来生成形体骨架 820次阅读
- 4G气象站的设计与实现 880次阅读
- 如何利用ESP32实现太阳能气象站的设计 4281次阅读
- 如何利用ESP8266实现防雨物联网气象站的设计 4963次阅读
- 如何利用粒子光子把你的雨伞变成气象站 1391次阅读
- 如何使用ESP32创建一个气象站 3771次阅读
- 利用Arduino Nano 33 IoT构建的微型互联网气象站 3373次阅读
- 如何手动制作一个风速仪 5629次阅读
- 基于树莓派组成的可随身携带气象站设计方案 2815次阅读
- 如何使用两个dht传感器及HC12模块制作远程气象站? 2792次阅读
- 基于创建带有空气质量传感器的室内气象站 2186次阅读
- 基于电子墨水屏实现RGB显示器的开发设计 4141次阅读
- dfrobotDIY智能气象站套件简介 1618次阅读
- 光照传感器的工作原理 4.4w次阅读
- 基于STM32的自动气象站控制模块设计 8306次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多