家里种了一些雏菊,对土壤湿度要求很高,对我这样的新手来说还是有些困难的。为了掌握花盆的湿度,使用它arduino一个小的土壤湿度监测装置,可以通过小屏幕观察土壤湿度,也可以通过SIM900A,收到短信湿度短信。我贴出源码,有时间补充照片和设备连接。
#include <Adafruit_GFX.h> // Core graphics library #include <Adafruit_ST7735.h> // Hardware-specific library for ST7735 #include <SPI.h> #include <SD.h> #include<Arduino.h> #include<String.h>
#define TFT_CS 10 #define TFT_RST 9 ///我在这里用的arduino硬复位,软复位请9脚 #define TFT_DC 8
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
/读取土壤湿度传感器的模拟量/ float vpp = 0.0048828125; //5/1023 转换电压系数
void setup() { Serial.begin(9600); tft.initR(INITR_144GREENTAB); //初始化 tft.fillScreen(ST7735_BLACK);//设置黑屏 tft.setRotation(0)//旋转屏幕 Serial.print(“AT CMGD=1\r\n”); }
void loop() { int counts = analogRead(A0); //A0接模拟采样口 int counts2 = analogRead(A1); //A0接模拟采样口 int counts3 = analogRead(A5); //A0接模拟采样口 int humidity= map(counts,0,1023,100,0); int humidity2= map(counts二、0、1023、100、0); int humidity3= map(counts三、0、1023、100、0); tft.setTextColor(ST7735_RED);///设置字体颜色为黄色 tft.setTextSize(1)//设置字体大小 tft.setCursor(0,10); tft.print(“NO.1 humidity: “); tft.print(humidity); tft.println(” % “); tft.println(””); tft.print(“NO.2 humidity: “); tft.print(humidity2); tft.println(” % “); tft.println(””); tft.print(“NO.3 humidity: “); tft.print(humidity3); tft.println(” % “); tft.println(””); tft.fillScreen(ST7735_BLACK); delay(21600000);
CS(); CF(); CG();
Serial.print(humidity); delay(9000); Serial.println(" %RH");
Serial.print(“NO2 humidity= “); ///短信内容 delay(9000); Serial.print(humidity2); delay(9000); Serial.println(” %RH”);
Serial.print(“NO3 humidity= “); ///短信内容 delay(9000); Serial.print(humidity3); delay(9000); Serial.println(” %RH”); WR(); }
void CS(){ Serial.print(“AT CSCS=“GSM”\r\n”); //设置GSM字符集 //Serial.print(““AAAA””); delay(9000); }
void CF(){ Serial.print(“AT CMGF=1\r\n”); ///设置为文本模式 delay(9000); }
void CG(){ Serial.print(“AT CMGS=“18853105850”\r\n”); //设置手机号码 delay(9000); Serial.print("NO1 humidity= "); ///短信内容 delay(9000); }
void CQ(){ Serial.print(“AT CMGS=“18853105850”\r\n”); //设置手机号码 delay(9000); Serial.print("NO1 humidity= "); ///短信内容 delay(9000); }
void WR(){ delay(9000); Serial.write(0x1A); }