亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

个人气象站(Arduino+ ESP8266 + Thingspeak)

组件和用品

Adafruit BMP180
× 1
DHT11 温湿度传感器(4 针)
× 1
LDR
光敏电阻
× 1
乐鑫 ESP8266 ESP-01
× 1
Arduino Nano R3
× 1
电阻 4.75k ohm
× 1
电阻 51K
× 1
LM2596 DC-DC 降压转换器降压电源模块
× 1
DC 插孔
× 1
开关
× 1
12v-2A 墙上适配器
× 1
PCB
× 1
男性标题 40 位置 1 行 (0.1")
× 1
女性标题 8 位置 1 行 (0.1")
× 5
塑料盒
× 1

必要的工具和机器

剥线钳
热胶枪(通用)
烙铁(通用)
螺丝刀
文件
用于手工

应用和在线服务

Arduino IDE
ThingSpeak API

关于这个项目

简介:制作个人气象站

坐在房间里,你开始出汗或感到寒冷;你想知道你房间里的温度是多少?或者湿度是多少?这发生在我身上。

这导致了个人气象站的诞生,它监控您房间的温度、湿度、压力和光照强度,并将其上传到 thingspeak.com 上的私人频道。

让我们开始吧。

第 1 步:快速视频

这是一个小视频,它在 5 分钟内总结了所有事情。

点击此处在 youtube 上观看。

第 2 步:个人气象站所需的电子元件

说明: 我们将使用 DHT11 来感测湿度,使用 BMP180 来感测温度和压力,并使用光敏电阻 (LDR) 来大致了解光强度。 Arduino nano 将从这些传感器收集数据并将其发送到 ESP8266,以便将其上传到 thingspeak.com 上的私人频道。我们将通过 12V-2A 壁式适配器为 Arduino nano 供电,传感器和 ESP8266 将从基于 LM2596 的降压转换器接收下转换电压。

组件列表:

  • BMP180 压力和温度传感器,
  • DHT11 湿度传感器,
  • 光敏电阻 (LDR),
  • ESP8266 wifi 模块(固件就绪),
  • Arduino nano,
  • 2 个电阻器 - 51 KΩ 和 4.7 KΩ,
  • LM2596 降压转换器,
  • 直流插孔,
  • 切换和
  • 12V-2A 墙上适配器。

第 3 步:个人气象站所需的工具和额外物品

说明: 我们将使用剥线钳剥线,锉刀平滑外壳上的切口/孔,胶枪用于将组件放置在外壳内,螺丝刀关闭外壳盖,并使用焊锡线烙铁在通用电路板(GCB)上组装电路. 4x4x2 英寸塑料盒用作外壳。我们还需要公母贝格条以及母连接器,以便在 GCB 上正确组装。

工具列表:

  • 剥线钳,
  • 文件,
  • 胶枪,
  • 螺丝刀和
  • 烙铁和焊锡丝。

额外项目列表:

  • 4x4x2 英寸塑料盒(我用过这个尺寸,附近的任何尺寸都可以),
  • 通用电路板,
  • 男性和女性伯格带和
  • 母接头。

第 4 步:软件要求

描述:为了看到传感器数据的价值,我们需要在 thingspeak.com 上有一个私人频道。我们将需要 Arduino IDE 来为 arduino nano 编写 arduino 代码。 (我假设你们拥有个人电脑/笔记本电脑和可以访问互联网的 wifi 路由)

软件要求列表:

  • Thingspeak.com 上的私人频道和
  • Arduino IDE(最好是最新版本)。

您可以从 arduino.cc 下载最新版本的 Arduino IDE。现在让我们在 thingspeak.com 上创建一个私人频道。

第 5 步:在 Thingspeak.com 上创建私人频道

要在 thingspeak.com 上创建私人频道,请按以下步骤操作:

  • 打开您的网络浏览器并转到 thingspeak.com 并点击右上角的“注册”选项卡,(图 1)
  • 填写详细信息并点击“创建帐户”,(图片编号 2)
  • 现在点击“新频道”标签,(图片编号 3)
  • 再次填写频道的详细信息并启用 4 个字段(因为我们将发送 4 个传感器值),向下滚动并单击“保存频道”选项卡,(图片编号 4/5)
  • 在此页面上,单击“API 密钥”选项卡并记下您的“写入 API 密钥”。

就是这样,现在您拥有了自己的私人 ThingSpeak 频道。

现在让我们把所有的电子元件放在一起。

第 6 步:个人气象站示意图

在这里,我附上了个人气象站的示意图。我也为此附上了fritzing文件。连接相当简单。

  • BMP180 连接到 arduino nano 的 I2C 端口。
  • LDR 与 51 KOhm 电阻器以分压器方式连接,结点连接到 arduino nano 的 A1 引脚。
  • DHT11 的数据引脚被 4.7 KOhm 电阻拉高并连接到 arduino nano 的 A0 引脚。
  • ESP8266 的 TX 和 RX 分别连接到 arduino nano 的 D10 和 D11。 ESP8266 的 CH_PD 连接到 3.3V 电源轨。
  • 通过打开该模块上的电位器将 LM2596 模块的输出调整为 3.3V。将该模块的输出分别连接到 BMP180、DHT11、LDR 的 Vcc 和 Gnd 以及 ESP8266 的 Vcc 和 Gnd。
  • LM2596 模块的输入来自 12V-2A 墙上适配器,该适配器还连接到 Arduino nano 的 Vin 和 Gnd。

我们需要在通用电路板上组装这个电路。让我们这样做。

第 7 步:在通用电路板 (GCB) 上组装电路

步骤 3 中的硬件工具和额外物品现已投入使用。

  • 对 Arduino nano 和 ESP8288 在 GCB 上的放置使用女性 berg 条,
  • 使用烙铁和焊锡丝将它们电气连接到电路板上,
  • 使用母连接器来扩展所有传感器和 LM2596 模块的覆盖范围,因为它们会粘在外壳的盖子和壁上,
  • 使用凸形条为上面制作的凹形延伸件制作连接点,
  • 使用电线(使用剥线钳将它们剥离)或熔化的焊锡线导轨在 GCB 上实现电路原理图,最后,
  • 在使用万用表为电路供电之前检查排序。

现在所有的硬件都放在了 GCB 上,让我们看一下代码。

第 8 步:编码

个人气象站的代码相当简单。为了便于移植,我已经正确地注释了代码。 在刻录代码之前,请注意以下事项。

  • 确保已安装所有库,
  • 将代码第 14 行中的连字符替换为您的接入点(wifi 路由器)的 SSID,
  • 将代码第 15 行中的连字符替换为您的 wifi 网络的密码,
  • 将第 17 行中的连字符替换为您的 ThingSpeak 私人频道写入 API 密钥,
  • 在对 Arduino nano 进行编程时,请确保您的 12V 直流电源处于关闭状态。

这是 github(个人气象站)的链接,用于下载我使用的代码和库。

现在我们的硬件和软件都准备好了,剩下的就是打包了。

第 9 步:外壳准备

现在我们需要在 4x4x2 英寸的盒子上打出各种形状和大小的孔。我们需要为 DC 插孔打孔并打开任何首选的外壳壁。我们还需要在外壳的盖子上为传感器打孔。

我附上了一张图片,显示了我们需要在外壳上制作的孔的尺寸。

使用热刀片切开塑料。

使用锉刀平滑孔。

现在您的机箱已准备好托管您的电路。

第 10 步:盖上盖子

将组装好的 GCB 放入外壳内。

将开关和直流插孔放在墙上的孔中;盖子孔上的传感器。确定它们的位置并使用胶枪固定它们。最后用螺丝刀关闭盖子。

你有它,你的个人气象站。打开电源,通过您的 ThingSpeak 私人频道上的智能手机/PC/笔记本电脑/平板电脑,从世界任何地方查看您房间的温度、湿度、压力和光照强度。

这就是这个项目的全部内容。如有任何疑问,请发表评论。谢谢阅读。

代码

  • 代码
代码Arduino
#include #include #include #include #define DEBUG 0 // 将值更改为 1 以启用使用串行监视器的调试 #define dht_pin A0 // 为 DHT 传感器定义引脚 A0#define lightSensor A1 // 将引脚 A1 定义为 LDR 分压器的输入引脚 DHT;Adafruit_BMP085 bmp;SoftwareSerial esp8266Module(10, 11); // RX, TXString 网络 ="----"; // 您的接入点 SSIDString 密码 ="------------"; // 你的wifi接入点密码#define IP "184.106.153.149" // thingspeak.com的IP地址String GET ="GET /update?key=----------------"; // 替换为您的频道 keyvoid setup(){ if(DEBUG){ Serial.begin(9600); // 设置硬件串口波特率为 9600 } esp8266Module.begin(9600); // 将软串行波特率设置为 9600 if (!bmp.begin()) { if(DEBUG){ Serial.println("找不到有效的 BMP085 传感器,请检查接线!"); } while (1) {} } delay(2000);}void loop() { setupEsp8266(); DHT.read11(dht_pin);双 humi =DHT.湿度;双 bmp_temp =bmp.readTemperature();双 bmp_pressure =bmp.readPressure(); int lightIntensity =analogRead(lightSensor); updateTemp(String(bmp_temp),String(lightIntensity),String(bmp_pressure),String(humi));延迟(30000);}//------------------------------------------- -------------------------//以下功能设置esp8266,将其放入station made并//连接到wifi接入点。//- -------------------------------------------------- ---------------void setupEsp8266() { if(DEBUG){ Serial.println("Reseting esp8266"); esp8266Module.flush(); esp8266Module.println(F("AT+RST"));延迟(7000); if (esp8266Module.find("OK")) { if(DEBUG){ Serial.println("Found OK"); Serial.println("更改espmode"); esp8266Module.flush();改变模式();延迟(5000); esp8266Module.flush();连接到WiFi(); } else { if(DEBUG){ Serial.println("OK 未找到"); } }}//-------------------------------------------- ----------------------// 以下函数将 esp8266 设置为站模式//----------------- -------------------------------------------------- bool changesMode(){ esp8266Module.println(F("AT+CWMODE=1")); if (esp8266Module.find("OK")) { if(DEBUG){ Serial.println("模式改变");返回真; } else if(esp8266Module.find("NO CHANGE")){ if(DEBUG){ Serial.println("Already in mode 1");返回真; } else { if(DEBUG){ Serial.println("更改模式时出错");返回假; }}//---------------------------------------------- ---------------------// 以下函数将esp8266连接到wifi接入点//----------------- -------------------------------------------------- bool connectToWiFi(){ if(DEBUG){ Serial.println("inside connectToWiFi"); } String cmd =F("AT+CWJAP=\""); cmd +=网络; cmd +=F("\",\""); cmd +=密码; cmd +=F("\""); esp8266Module.println(cmd);延迟(15000); if (esp8266Module.find("OK")) { if(DEBUG){ Serial.println("Connected to Access Point");返回真; } else { if(DEBUG){ Serial.println("无法连接到接入点");返回假; }}//---------------------------------------------- ---------------------// 以下函数将传感器数据发送到thingspeak.com//---------------- -------------------------------------------------- -void updateTemp(String voltage1,String voltage2,String voltage3,String voltage4){ String cmd ="AT+CIPSTART=\"TCP\",\""; cmd +=IP; cmd +="\",80"; esp8266Module.println(cmd);延迟(5000); if(esp8266Module.find("Error")){ if(DEBUG){ Serial.println("发送时出错"); } 返回; } cmd =GET +“&field1=”+电压1+“&field2=”+电压2+“&field3=”+电压3+“&field4=”+电压4+“\r\n”; esp8266Module.print("AT+CIPSEND="); esp8266Module.println(cmd.length());延迟(15000); if(esp8266Module.find(">")) { esp8266Module.print(cmd); if(DEBUG){ Serial.println("数据发送"); } }else { esp8266Module.println("AT+CIPCLOSE"); if(DEBUG){ Serial.println("连接关闭"); } }}
个人气象站的库和代码
查看自述文件https://github.com/jayraj4021/Personal-Weather-Station-14

示意图

原理图.fzz

制造工艺

  1. 基于树莓派的气象站
  2. Raspberry Pi 2 气象站
  3. Raspberry Pi 气象站
  4. 与您的气象站一起加入 IOT – CWOP
  5. Weather Monitor
  6. Weather Station V 2.0
  7. 智能百叶窗
  8. MKR1000 到 ThingSpeak.com
  9. $10 便携式 Arduino 气象站 (AWS)
  10. eDOT - 基于 Arduino 的精密时钟和气象站
  11. ThingSpeak Arduino 气象站
  12. 当地气象站