基于阿里云物联网的无人值守远程农业智慧盒DIY之(三)arduino土壤湿度监测短信平台。
csdn的网友Onetuzi今天留言催更。最近一直忙活别的事情,没有及时更新,希望大家见谅哈。为表达歉意,今天先把arduino上的源代码全部奉献,大家可以先看看,一起研讨。明天把设计思路、电路图、核心代码注释、遇到的坑、监测效果详细更新哈。谢谢大家的关注哈。
设计思路及价格清单:
1.土壤监测功能模块清单:包括arduino、土壤湿度传感器*3、短信模块SIMA900等组成。
2.设计的目的:这个部分的功能设计,主要是为了能够及时掌握土壤湿度的实际状态,而且通过短信模块能够远程发送至监控人的手机。
3.价格清单。SIMA900A 40元;土壤传感器为耐腐蚀探头传感器 15元*3;arduino 咸鱼上的二手大概50一块。手机卡我使用的是中国移动,在我原来的手机号上新开了副卡,本来套餐里的短信就用不完,每天4条短信,每个月120条。以上合计的投资大概130元,
实现土壤状态实时采集与传输,感觉很性价比非常高。
联系示意图:今天用visio简单画了示意图,请大家参考。arduino主板右边的是R3 V5.0 arduino扩展板

#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(counts2,0,1023,100,0);
int humidity3= map(counts3,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=\"xxxxxxx\"\r\n"); //设置手机号
delay(9000);
Serial.print("NO1 humidity= "); //短信内容
delay(9000);
}
void WR(){
delay(9000);
Serial.write(0x1A);
}
1539

被折叠的 条评论
为什么被折叠?



