自动化浇花 (耳熟能详的项目) 文饼创新
很多人都玩过这个项目 这次我用Blinker 做一个。
材料
DTH11
esp8266nodemcu //模拟io口有且只有一个 本来想弄多点的 有不想加个Arduino 麻烦
土壤模块
几个继电器
水泵
话不多说 上代码
[mw_shl_code=arduino,true]
//温度 湿度 风机
//土壤 水泵
//空气的温度和湿度 控制 风机
//土壤的湿度控制水泵
#define BLINKER_WIFI
#include <dht11.h>//库文件
#include <LiquidCrystal_I2C.h>//库文件
#define DHT11PIN D1 //定义引脚
#include <Blinker.h>
LiquidCrystal_I2C lcd(0x27,16,2); //lcd27or36/// 要不要在用一个lcd屏呢
dht11 DHT11; //温湿度传感类
int sensorPin = A0; // 设置模拟口A0为信号输入端,土壤传感器 esp8266只有一个 哎
int zlhPin0 =D2; //继电器 现在是arduino 控制
int zlhPin1=D3;
int zlhPin2=D4; // 设置继电器控制引脚为8,水泵
int zlhPin3=D5; //定义这个脚为7
int sensorValue = 0; // 存放土壤模拟信号量的变量
float h=0; //初始化
float t=0;
BlinkerNumber soil("soil");//土壤湿度的值
BlinkerNumber T("t");//温度
BlinkerNumber H("h");//湿度
BlinkerButton MO("mo");//手动英文缩写
BlinkerText text1("text1");//文本提示1
BlinkerText text2("text2");//文本提示2
BlinkerText text3("text3");
BlinkerText text4("text4");
char auth[] = "27fe62df681";
char ssid[] = "1234";
char pswd[] = "12345678";
void heartbeat()//心跳包
{
soil.print(sensorValue);
T.print(t);
H.print(h);
}
void MOp(const String & state)//手动浇花 随心所欲
{
BLINKER_LOG("get button state: ", state);
if(state=="on")
{
digitalWrite(zlhPin0,HIGH);
text1.print("浇花中");
MO.print("on");
}
if(state=="off")
{
digitalWrite(zlhPin0,LOW);
text1.print("浇花结束");
}
}
void setup()
{
Serial.begin(9600);//开启串口,这是电脑的串口
Blinker.begin(auth, ssid, pswd);
Blinker.attachHeartbeat(heartbeat);
MO.attach(MOp);
lcd.init(); // initialize the lcd //lcd 还有对比度,调后面的电阻
lcd.init(); //两行
lcd.backlight(); //lcd的背光
pinMode(zlhPin0, OUTPUT);//灌溉水泵
pinMode(zlhPin1,OUTPUT);//风机
pinMode(zlhPin2,OUTPUT);//升温
}
void loop()
{
Blinker.run();
int AAA = DHT11.read(DHT11PIN);//读取数据,
//电脑串口显示
Serial.print("Humidity (%): ");
Serial.println((float)DHT11.humidity, 2);//湿度
Serial.print("Temperature (oC): ");
Serial.println((float)DHT11.temperature, 2);//温度
h=((float)DHT11.humidity);
t=((float)DHT11.temperature);
Blinker.delay(20);
//lcd显示
lcd.setCursor(0,0);//lcd显示
lcd.print("Hum(%): ");//湿度
lcd.setCursor(10,0);//
lcd.print((float)DHT11.humidity, 2);
lcd.setCursor(0,1);
lcd.print("Temp(oC): ");//温度
lcd.setCursor(10,1);
lcd.print((float)DHT11.temperature, 2);
Blinker.delay(200);
//土壤模块 或者是用舵机 喷洒灌溉 区域性灌溉
sensorValue = analogRead(sensorPin);//读取数据
if(sensorValue>200)//当读取的值,启动,这个数据还有待观察
{
digitalWrite(zlhPin0, HIGH);
text2.print("autoflower");
}else
{
digitalWrite(zlhPin0, LOW);
text2.print("pause flowering");
}
Serial.println(sensorValue);
Blinker.delay(200);
//通风模块 马达
float HUMLIDITY=DHT11.temperature;
if(HUMLIDITY<50){
digitalWrite(zlhPin1,HIGH);//也是继电器
text3.print("wing");
}else
{
digitalWrite(zlhPin1,LOW);
text3.print("no wing");
}
//升温模块。加热或者冷却 在大棚里面 用步进电机
float TEMPERATURE=DHT11.temperature;
if(TEMPERATURE<27)
{
digitalWrite(zlhPin2,HIGH);//是一个继电器 继电器控制加温措施
text4.print("hot");
}else
{
digitalWrite(zlhPin2,LOW);
text4.print("no hot");
}
}[/mw_shl_code]
以上 是代码
功能
手动浇花 随心所欲
自动浇花
自动调节空气温度 湿度(应该是这样的 看花的品种吧)
接下来的步骤解释配置BLinker app里面的按键了 这个简单
还有就是 向各位大神们 问问 设备不是怎么好连接 比较难连 是怎么一回事
qq1341180280
|