本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页
最热资讯


亲,“电路城”已合并升级到更全、更大、更强的「新与非网」。点击查看「新与非网」
该项目利用温湿度传感器、GPS模块在选择的特定位置之间进行温度和湿度的数据监测,可用于对温度的监控等应用,只需将设备放置在具有电源、网络连接的位置。如要测量内外部温度,则需将传感器正确安装。
项目特点:
流程图:
硬件部件:
电路图:
代码:
1、GPS和温度传感器代码(此代码将数据从NEO-6M GPS模块和DHT22温度传感器输出到粒子云)
// 此#include语句是由粒子IDE自动添加的
#include <TinyGPS-gngga.h>
// 此#include语句是由粒子IDE自动添加的
#include <Particle-GPS.h>
// 此#include语句是由粒子IDE自动添加的
#include <PietteTech_DHT.h>
// 此#include语句是由粒子IDE自动添加的
#include <PietteTech_DHT.h>
// 此#include语句是由粒子IDE自动添加的
#include <Particle-GPS.h>
// 此#include语句是由粒子IDE自动添加的
#include <Particle-GPS.h>
// 此#include语句是由粒子IDE自动添加的
#include <TinyGPS-gngga.h>
#include "PietteTech_DHT.h"
#define DHTTYPE DHT22 // 传感器类型DHT11 / 21/22
#define DHTPIN D3
//版权所有©2016-2017 Daniel Porrey。版权所有。
//
//此文件是Particle.GPS库的一部分。
//
// Particle.GPS库是免费软件:您可以重新分发和/或修改
//根据GNU发布的GNU通用公共许可证的条款
//自由软件基金会(许可的第3版)或
//(根据您的选择)任何更高版本。
//
//分发了Particle.GPS库,希望它会有用,
//但没有任何保证;甚至没有默示的保证
//特定用途的适销性或适用性。见
//有关更多详细信息,请参见GNU通用公共许可证。
//
//您应该已经收到了GNU通用公共许可证的副本
//以及Particle.GPS库。如果不,
//参见http://www.gnu.org/licenses/。
//
#include "Particle-GPS.h"
// ***
// ***创建一个Gps实例。RX和TX引脚连接到
// ***电子(Serial1)上的TX和RX引脚。
// ***
Gps _gps = Gps(&Serial1);
// ***
// ***创建一个定时器,每1 ms触发一次以捕获
// ***从GPS输入的串行端口数据。
// ***
Timer _timer = Timer(1, onSerialData);
PietteTech_DHT DHT(DHTPIN, DHTTYPE);
int n;
void setup()
{
Serial.begin(9600);
while (!Serial.available() && millis() < 30000) {
Serial.println("Press any key to start.");
Particle.process();
delay(10000);
}
Serial.println("DHT Simple program using DHT.acquireAndWait");
Serial.print("LIB version: ");
Serial.println(DHTLIB_VERSION);
Serial.println("---------------");
DHT.begin();
// ***
// ***初始化USB串行进行调试。
// ***
Serial.begin();
Serial.println("Initializing...");
// ***
// ***初始化GPS。
// ***
_gps.begin(9600);
// ***
// *** 请求发送所有数据
// ***
_gps.sendCommand(PMTK_SET_NMEA_OUTPUT_ALLDATA);
// ***
// *** 启动计时器
// ***
_timer.start();
}
void onSerialData()
{
_gps.onSerialData();
}
void loop()
{
// ***
// ***这将显示从接收到的字符串
// *** GPS单位。如果GPS可能有些是空的
// ***未设置为发送所有数据。
// ***
Serial.print("Data[0] = "); Serial.println(_gps.data[0]);
Serial.print("Data[1] = "); Serial.println(_gps.data[1]);
Serial.print("Data[2] = "); Serial.println(_gps.data[2]);
Serial.print("Data[3] = "); Serial.println(_gps.data[3]);
Serial.print("Data[4] = "); Serial.println(_gps.data[4]);
Serial.print("Data[5] = "); Serial.println(_gps.data[5]);
Serial.print("Data[6] = "); Serial.println(_gps.data[6]);
Particle.publish("Brian_GPS", String(_gps.data[0]), PUBLIC);
Particle.publish("Brian_GPS", String(_gps.data[1]), PUBLIC);
Serial.print("\n");
Serial.print(n);
Serial.print(": Retrieving information from sensor: ");
Serial.print("Read sensor: ");
int result = DHT.acquireAndWait(1000);
switch (result) {
case DHTLIB_OK:
Serial.println("OK");
break;
case DHTLIB_ERROR_CHECKSUM:
Serial.println("Error\n\r\tChecksum error");
break;
case DHTLIB_ERROR_ISR_TIMEOUT:
Serial.println("Error\n\r\tISR time out error");
break;
case DHTLIB_ERROR_RESPONSE_TIMEOUT:
Serial.println("Error\n\r\tResponse time out error");
break;
case DHTLIB_ERROR_DATA_TIMEOUT:
Serial.println("Error\n\r\tData time out error");
break;
case DHTLIB_ERROR_ACQUIRING:
Serial.println("Error\n\r\tAcquiring");
break;
case DHTLIB_ERROR_DELTA:
Serial.println("Error\n\r\tDelta time to small");
break;
case DHTLIB_ERROR_NOTSTARTED:
Serial.println("Error\n\r\tNot started");
break;
default:
Serial.println("Unknown error");
break;
}
delay(1000);
Serial.print("Humidity (%): ");
Serial.println(DHT.getHumidity(), 2);
Serial.print("Temperature (oC): ");
Serial.println(DHT.getCelsius(), 2);
Serial.print("Temperature (oF): ");
Serial.println(DHT.getFahrenheit(), 2);
Serial.print("Temperature (K): ");
Serial.println(DHT.getKelvin(), 2);
int temp_c = (DHT.getCelsius()); //读取DHT传感器
int temp_f = (DHT.getFahrenheit()); //读取DHT传感器
int humid = (DHT.getHumidity()); // 读取DHT传感器
//发送来自粒子的发布
Particle.publish("T_C", String(temp_c),60,PUBLIC);
Particle.publish("T_F", String(temp_f),60,PUBLIC);
Particle.publish("H_%", String(humid),60,PUBLIC);
n++;
delay(10000);
}
2、GPS、温度传感器代码(这是来自第二个Argon的代码,该代码也将GPS和温度传感器数据报告给粒子云)
//此#include语句是由粒子IDE自动添加的
#include <TinyGPS-gngga.h>
// 此#include语句是由粒子IDE自动添加的
#include <Particle-GPS.h>
// 此#include语句是由粒子IDE自动添加的
#include <PietteTech_DHT.h>
// 此#include语句是由粒子IDE自动添加的
#include <PietteTech_DHT.h>
// 此#include语句是由粒子IDE自动添加的
#include <Particle-GPS.h>
// 此#include语句是由粒子IDE自动添加的
#include <Particle-GPS.h>
//此#include语句是由粒子IDE自动添加的
#include <TinyGPS-gngga.h>
#include "PietteTech_DHT.h"
#define DHTTYPE DHT22 // 传感器类型DHT11 / 21/22
#define DHTPIN D3
//版权所有©2016-2017 Daniel Porrey。版权所有。
//
//此文件是Particle.GPS库的一部分。
//
// Particle.GPS库是免费软件:您可以重新分发和/或修改
//根据GNU发布的GNU通用公共许可证的条款
//自由软件基金会(许可的第3版)或
//(根据您的选择)任何更高版本。
//
//分发了Particle.GPS库,希望它会有用,
//但没有任何保证;甚至没有默示的保证
//特定用途的适销性或适用性。见
//有关更多详细信息,请参见GNU通用公共许可证。
//
//您应该已经收到了GNU通用公共许可证的副本
//以及Particle.GPS库。如果不,
//参见http://www.gnu.org/licenses/。
//
#include "Particle-GPS.h"
// ***
// ***创建一个Gps实例。RX和TX引脚连接到
// ***电子(Serial1)上的TX和RX引脚。
// ***
Gps _gps = Gps (&Serial1 );
// ***
// ***创建一个定时器,每10毫秒触发一次以捕获
// ***从GPS输入的串行端口数据。
// ***
Timer _timer = Timer(10, onSerialData);
PietteTech_DHT DHT(DHTPIN, DHTTYPE);
int n;
int temp_f2;
void setup()
{
Serial.begin(9600);
while (!Serial.available() && millis() < 30000) {
Serial.println("Press any key to start.");
Particle.process();
delay(10000);
}
Serial.println("DHT Simple program using DHT.acquireAndWait");
Serial.print("LIB version: ");
Serial.println(DHTLIB_VERSION);
Serial.println("---------------");
DHT.begin();
// ***
// ***初始化USB串行进行调试.
// ***
Serial.begin();
Serial.println("Initializing...");
// ***
// *** 初始化GPS
// ***
_gps.begin(9600);
// ***
// *** 请求发送所有数据
// ***
_gps.sendCommand(PMTK_SET_NMEA_OUTPUT_ALLDATA);
// ***
// ***启动计时器
// ***
_timer.start();
Particle.subscribe("T_F", tempfHandler, MY_DEVICES);
Particle.variable("temp_f2", temp_f2);
}
void onSerialData()
{
_gps.onSerialData();
}
void loop()
{
// ***
// ***这将显示从接收到的字符串
// *** GPS单位。如果GPS可能有些是空的
// ***未设置为发送所有数据。
// ***
Serial.print("Data[0] = "); Serial.println(_gps.data[0]);
Serial.print("Data[1] = "); Serial.println(_gps.data[1]);
Serial.print("Data[2] = "); Serial.println(_gps.data[2]);
Serial.print("Data[3] = "); Serial.println(_gps.data[3]);
Serial.print("Data[4] = "); Serial.println(_gps.data[4]);
Serial.print("Data[5] = "); Serial.println(_gps.data[5]);
Serial.print("Data[6] = "); Serial.println(_gps.data[6]);
Particle.publish("GPS_0", String(_gps.data[0]), PRIVATE);
Serial.print("\n");
Serial.print(n);
Serial.print(": Retrieving information from sensor: ");
Serial.print("Read sensor: ");
int result = DHT.acquireAndWait(5000);
Serial.print("Humidity (%): ");
Serial.println(DHT.getHumidity(), 2);
Serial.print("Temperature (oC): ");
Serial.println(DHT.getCelsius(), 2);
Serial.print("Temperature (oF): ");
Serial.println(DHT.getFahrenheit(), 2);
Serial.print("Temperature (K): ");
Serial.println(DHT.getKelvin(), 2);
int temp_c = (DHT.getCelsius()); // 读取DHT传感器
int temp_f = (DHT.getFahrenheit()); //读取DHT传感器
int humid = (DHT.getHumidity()); //读取DHT传感器
// 发送来自粒子的发布
Particle.publish("T_C", String(temp_c),PRIVATE);
Particle.publish("T_F", String(temp_f),PRIVATE);
Particle.publish("H_%", String(humid),PRIVATE);
n++;
delay(10000);
}
void tempfHandler(const char *event, const char *data)
{
temp_f2 = atof(data);
}
项目演示:
实时温度数据:点击查看
实时湿度数据:点击查看
实时GPS数据:点击查看
该温度监控器优势在于对温度的实时监控、生产率提高、设备监控等,这些传感器的数据可发布到粒子云中,可通过互联网查看,并将数据导出到与Internet连接的其他应用程序和服务,如IFTTT应用程序和Google云端硬盘。
开启“人工智能”——贝尔金WeMo智能插座套装拆解
2014-05-23
iPhone 6 plus最专业传感器深入解析
2014-10-22
智能手机里面都装着哪些传感器?它们都记录了你的什么?
2016-04-11
NXP开发板不知道选什么,看这里就对了!
2016-07-28
盘点全球知名传感器芯片巨头Top10
2015-08-21
这套工业物联网解决方案把乐高变成了一座智慧城市
2019-06-24
[项目实录]全流程LoRaWAN开发
2019-07-22
【视频秀】用STM32和光传感器控制电机马达开关窗户
2019-06-12
基于ESP8266的天气预报显示器
2021-08-14
一款小尺寸、高性能的智能家居设备
2019-06-21
讨论