@[智能温室系统第一步传感器数据采集 Arduino
# 开发板用的是arduino开发板
使用的是arduino ide 可以去官网下载
我的代码里涉及到了三个外部包LORA 温湿度 线程
懒得话可以在下载我的源码。里面包含lora的原始收发程序
https://download.csdn.net/download/publicdust/11388928
本代码的功能有三个
一
读取各个传感器的数据,包括温湿度传感器、红外传感器、光敏、土壤湿度、烟雾
二
将数据通过LoRa实现和树莓派以及其他Arduino的通讯
三
接受树莓派的数据,做出相应的操作。包括电机转动、水泵抽水、开启电灯、蜂鸣器警报。
在这里多说一句,代码里涉及到了数据格式的转化,其实如果大家仅仅是为了读取数据完成数据的传输和不需要代码转化,因为我需要将数据通过NBIOT发出去所以在代码里添加了这个转化,不需要的可以注释掉。在这里声明一下代码里采用的通讯频率是434。
二话不说直接上代码
代码里都有注释
#include <DHT.h>
#include <DHT_U.h>
#include <DHT.h>
#include <DHT_U.h>
#include <DHT.h>
#include <DHT_U.h>
#include <pt.h>
#include <SPI.h> // include libraries
#include <LoRa.h>
#include <String.h>
#include <DHT.h>
#include <Stepper.h>
#define Smoke_sensor A1 //烟雾模块引脚
#define Smoke_sensor_D 0 //D0
#define Soil_sensor A2 //土壤模块引脚
#define Soil_sensor_D 1 //D1
#define PIN_A A0 //光敏模块引脚2
#define PIN_D 2 //D2
#define Control_bee 3 //指示D3 蜂鸣器
#define Control_waterpump 4 //指示D4 水泵
#define DHTPIN 5 //温度输出引脚,D5
#define DHTTYPE DHT11 //定义传感器类型
#define Control_led 6 //指示D6 灯泡
#define Control_motor 7 //控制电机
#define Control_fan 8 //指示D13 风扇
//人体红外传感器
#define PIR_sensor A3 //指定PIR模拟端口 A3
DHT dht(DHTPIN, DHTTYPE); //define DHT温湿度
const int csPin = 10; // LoRa radio chip select
const int resetPin = 9; // LoRa radio reset
const int irqPin = 2; // change for your board; must be a hardware interrupt pin
String outgoing; // outgoing message
byte msgCount = 0; // count of outgoing messages
byte localAddress = 0xFF; // address of this device
byte destination = 0xBB; // destination to send to
long lastSendTime = 0; // last send time
int interval = 6000; // interval between sends
//自控制flag标志
int bee_flag = 0; //设定蜂鸣器flag
int fan_flag = 0; //设定风扇flag
int waterpump_flag = 0; //设定水泵flag
int redlight_value; //红外值
int light_value; //光强
float tem_float ; //温度
int soilsensor_value2; //土壤湿度
int array[100];
//全局字符串
String temandhum = ""; //温湿度
String redlight = ""; //红外
String light = ""; //光敏
String smoke = ""; //烟雾
String soil = ""; //土壤湿度
String mergestring = ""; //合并后的字符串
String encode_str = "";//编码后的字符串
//线程的函数名字
static struct pt receive_pt, water_pt, send_pt, motor_pt,fan_pt;
void setup() {
pinMode(PIR_sensor, INPUT); //设置PIR模拟端口为输入模式 //人体红外
pinMode(Soil_sensor, INPUT);//土壤湿度传感器
pinMode(Soil_sensor_D, INPUT);
pinMode(Smoke_sensor, INPUT);//烟雾湿度传感器
pinMode(Smoke_sensor_D, INPUT);
pinMode(Control_led, OUTPUT); //设置数字端口为输出模式 //灯泡
pinMode(Control_bee, OUTPUT); //蜂鸣器
pinMode(Control_fan, OUTPUT); //风扇
digitalWrite(Control_fan, LOW);
pinMode(Control_waterpump, OUTPUT); //水泵
digitalWrite(Control_waterpump, LOW);
pinMode(Control_motor, OUTPUT); //电机
digitalWrite(Control_motor, LOW);//关闭电磁锁
//线程定义
PT_INIT(&receive_pt);
PT_INIT(&water_pt);
PT_INIT(&send_pt);
PT_INIT(&motor_pt);
PT_INIT(&fan_pt);
Serial.begin(9600); // initialize serial
while (!Serial);
dht.begin(); //initialize dht
Serial.println("LoRa Duplex");