1
电子说
步骤1:组件
NodeMCU
DHT22传感器
10K欧姆电阻器
LED
220欧姆电阻器
按钮
面包板。 (我们使用了Adafruit Perma-Proto BreadBoards)
外壳和电缆接头
4x AA电池座和电池
步骤2:将其连线
以下是设备的基本接线图。你可以在这个教程的最后看到最终版本的样子。
虽然不需要,但我们已经包含了按钮以发布手册阅读。
步骤3:源代码
对于我们的天气传感器,我们将向READiness.io服务发布数据。为此,我们创建了一个READiness.io库来处理wifi和服务连接。我们还将所有配置变量拆分为单独的.h文件。
您可以在此处下载完整的源代码
weatherSensor.ino
#包括 “ DHT.h ”
# include 《 readiness_io.h 》
#包括 《 Ticker.h 》
# include “ config.h “
const int LED_PIN = 0 ; //连接LED的引脚(D3)
const 字节INTERRUPT_PIN = 12 ; //引脚连接测试按钮(D6)
volatile 字节中断= 0 ;
#定义 DHTPIN 4 //传感器连接的数字引脚(D2)
#定义 DHTTYPE DHT22 //指定DHT传感器的类型
DHT dht (DHTPIN,DHTTYPE);
readiness_io client (CHANNEL_ID,TOPIC,SENSOR_ID,VERSION,FORMAT);
Ticker timer;
void setup (){
pinMode (LED_PIN,OUTPUT);
pinMode (BUILTIN_LED ,OUTPUT);
digitalWrite (BUILTIN_LED,HIGH);
pinMode (INTERRUPT_PIN,INPUT_PULLUP);
Serial。 开始( 115200 );
Serial。 setTimeout ( 2000 );
while (!Serial){} //等待串口初始化。
Serial。 println ( ”设备已启动“ );
串行。打印( ”连接到“ );
Serial。 println (WIFI_SSID);
client。 wifiConnection (WIFI_SSID,WIFI_PASS);
attachInterrupt ( digitalPinToInterrupt (INTERRUPT_PIN),buttonInterrupt,FALLING);
timer。 attach (UPDATE_RATE,writeToServer);
client。 testConnection ();
}
void buttonInterrupt (){
interrupt ++;
}
/* 用于发送的中断计时器数据到Readiness.io服务器 */
void writeToServer (){
interrupt ++;
}
void 循环(){
if (中断》 0 ){
/* 读取DHT22传感器 */
float h = dht。 readHumidity ();
float t = dht。 readTemperature ();
/* 将数据写入json字符串并发送到服务器。 */
字符串天气= ” \“湿度 \”:“ + 字符串(h)+ “,” ;
weather + = “ \” 温度 \“:” + 字符串(t);
/* 将数据发布到readiness_io网络 */
client。 publishCustom (天气);
/* 重置中断变量,直到定时器中断或按钮将其关闭 */
interrupt = 0 ;
}
}
查看rawweatherSensor.ino由❤通过GitHub主持
config.h
cons t 字符串CHANNEL_ID = “ XXXXXXXXXXXX ” ; // Readiness.io通道ID
const 字符串SENSOR_ID = ” XXXXXXXXXXXXX “ ; //您的AgriWebb或组成的传感器ID
const 字符串TOPIC = ” XXXXXXX “ ; //传感器的类型或发送数据的名称
const 字符串VERSION = ” 1 “ ;
const 字符串格式= “ ” ; //将此处留空,除非您需要特定的就绪格式。
//即agriwebb
const char * WIFI_SSID = ” XXXXXXX “ ; //您的WiFi SSID/名称
const char * WIFI_PASS = ” XXXXXXX “ ; //您的WiFi密码
const uint16_t UPDATE_RATE = 30 ; //在发送数据之间等待多长时间(以秒为单位)
const uint8_t TIMEZONE_OFFSET = 10 ; //传感器所在的时区(例如GMT为10)
查看由GitHub承载❤的rawconfig.h
第4步:成品
以下是成品的样子。我们实际上已将传感器包含在外部分线板上,这样我们就可以保持外壳完全密封,并让传感器暴露在外。
全部0条评论
快来发表一下你的评论吧 !