一、模块调试
1、水位模块
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <DHT.h>
const char* ssid = "ESP82666";
const char* password = "12345678";
WiFiUDP Udp;
unsigned int localUdpPort = 2333;
char incomingPacket[255];
char replyPacket[] = "Hi there! Got the message :-)";
String comdata = "";
IPAddress local_IP(192, 168, 137, 185);
IPAddress gateway(192, 168, 137, 1);
IPAddress subnet(255, 255, 0, 0);
IPAddress primaryDNS(8, 8, 8, 8);
IPAddress secondaryDNS(8, 8, 4, 4);
void setup()
{
Serial.begin(9600);
Serial.println();
Serial.printf("Connecting to %s ", ssid);
if(!WiFi.config(local_IP, gateway, subnet, primaryDNS, secondaryDNS)) {
Serial.println("STA Failed to configure");
}
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println(" connected");
Udp.begin(localUdpPort);
Serial.printf("Now listening at IP %s, UDP port %d\n", WiFi.localIP().toString().c_str(), localUdpPort);
}
void loop()
{
while (Serial.available() > 0)
{
comdata += char(Serial.read());
delay(2);
}
if (comdata.length() > 0)
{
Serial.println(comdata);
int a_1=comdata.substring(7).toInt();
if(a_1<0){a_1=0;}
Udp.beginPacket("192.168.137.32", 2333);Udp.print(String(a_1));Udp.endPacket();
comdata = "";
}
int packetSize = Udp.parsePacket();
if (packetSize)
{
Serial.printf("Received %d bytes from %s, port %d\n", packetSize, Udp.remoteIP().toString().c_str(), Udp.remotePort());
int len = Udp.read(incomingPacket, 255);
if (len > 0)
{
incomingPacket[len] = 0;
}
Serial.printf("UDP packet contents: %s\n", incomingPacket);
}
}
2、DS18B20
#include "OneWire.h"
#include "DallasTemperature.h"
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup(void)
{
Serial.begin(9600);
Serial.println("Begin get temp!");
Serial.println();
sensors.begin();
delay(5000);
}
void loop()
{
sensors.requestTemperatures();
Serial.print("Temperature : ");
Serial.println(sensors.getTempCByIndex(0));
delay(1000);
}
3、PH
4.采集小结
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
const char* ssid = "ESP82666";
const char* password = "12345678";
WiFiUDP Udp;
unsigned int localUdpPort = 2333;
char incomingPacket[255];
String comdata = "";
IPAddress local_IP(192, 168, 137, 185);
IPAddress gateway(192, 168, 137, 1);
IPAddress subnet(255, 255, 0, 0);
IPAddress primaryDNS(8, 8, 8, 8);
IPAddress secondaryDNS(8, 8, 4, 4);
#define SensorPin A0
#define Offset 21.677
#define samplingInterval 20
#define printInterval 800
#define ArrayLenth 40
int pHArray[ArrayLenth];
int pHArrayIndex=0;
#include "OneWire.h"
#include "DallasTemperature.h"
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup()
{
Serial.begin(9600);
Serial.println();
sensors.begin();
Serial.printf("Connecting to %s ", ssid);
if(!WiFi.config(local_IP, gateway, subnet, primaryDNS, secondaryDNS)) {
Serial.println("STA Failed to configure");
}
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println(" connected");
Udp.begin(localUdpPort);
Serial.printf("Now listening at IP %s, UDP port %d\n", WiFi.localIP().toString().c_str(), localUdpPort);
}
void loop()
{
PHmain();
shuiwei();
UDP();
sensors.requestTemperatures();
Serial.print("Temperature : ");
Serial.println(sensors.getTempCByIndex(0));
Udp.beginPacket("192.168.137.32", 2334);Udp.print(String(sensors.getTempCByIndex(0)));Udp.endPacket();
}
void UDP(){
int packetSize = Udp.parsePacket();
if (packetSize)
{
Serial.printf("Received %d bytes from %s, port %d\n", packetSize, Udp.remoteIP().toString().c_str(), Udp.remotePort());
int len = Udp.read(incomingPacket, 255);
if (len > 0)
{
incomingPacket[len] = 0;
}
Serial.printf("UDP packet contents: %s\n", incomingPacket);
}
}
void shuiwei(){
while (Serial.available() > 0)
{
comdata += char(Serial.read());
delay(2);
}
if (comdata.length() > 0)
{
int a_1=comdata.substring(7).toInt();
if(a_1<0){a_1=0;}
Udp.beginPacket("192.168.137.32", 2333);Udp.print(String(a_1));Udp.endPacket();
comdata = "";
}
}
double avergearray(int* arr, int number){
int i;
int max,min;
double avg;
long amount=0;
if(number<=0){
Serial.println("Error number for the array to avraging!/n");
return 0;
}
if(number<5){
for(i=0;i<number;i++){
amount+=arr[i];
}
avg = amount/number;
return avg;
}else{
if(arr[0]<arr[1]){
min = arr[0];max=arr[1];
}
else{
min=arr[1];max=arr[0];
}
for(i=2;i<number;i++){
if(arr[i]<min){
amount+=min;
min=arr[i];
}else {
if(arr[i]>max){
amount+=max;
max=arr[i];
}else{
amount+=arr[i];
}
}
}
avg = (double)amount/(number-2);
}
return avg;
}
void PHmain(){
static unsigned long samplingTime = millis();
static unsigned long printTime = millis();
static float pHValue,voltage;
if(millis()-samplingTime > samplingInterval)
{
pHArray[pHArrayIndex++]=analogRead(SensorPin);
if(pHArrayIndex==ArrayLenth)pHArrayIndex=0;
voltage = avergearray(pHArray, ArrayLenth)*5.0/1024;
pHValue = -5.8887*voltage+Offset;
if(pHValue<=0.0){pHValue=0.0;}
if(pHValue>14.0){pHValue=14.0;}
samplingTime=millis();
}
if(millis() - printTime > printInterval)
{
Serial.print("Voltage:");
Serial.print(voltage,2);
Serial.print(" pH value: ");
Serial.println(pHValue,2);
Udp.beginPacket("192.168.137.32", 2335);Udp.print(String(pHValue));Udp.endPacket();
printTime=millis();
}
}
二