ESP32 based project
This commit is contained in:
55
esp32/include/ControllerConfiguration.h
Normal file
55
esp32/include/ControllerConfiguration.h
Normal file
@@ -0,0 +1,55 @@
|
||||
/**
|
||||
* @file ControllerConfiguration.h
|
||||
* @author your name (you@domain.com)
|
||||
* @brief
|
||||
* @version 0.1
|
||||
* @date 2020-05-30
|
||||
*
|
||||
* @copyright Copyright (c) 2020
|
||||
* Describe the used PINs of the controller
|
||||
*/
|
||||
#ifndef CONTROLLER_CONFIG_H
|
||||
#define CONTROLLER_CONFIG_H
|
||||
|
||||
#define FIRMWARE_VERSION "0.9.5"
|
||||
|
||||
#define ADC_TO_VOLT(adc) ((adc) * 3.3 ) / 4095)
|
||||
#define ADC_TO_VOLT_WITH_MULTI(adc, multi) (((adc) * 3.3 * (multi)) / 4095)
|
||||
|
||||
#define SOLAR_VOLT(adc) ADC_TO_VOLT_WITH_MULTI(adc, 4.0306) /**< 100k and 33k voltage dividor */
|
||||
#define ADC_5V_TO_3V3(adc) ADC_TO_VOLT_WITH_MULTI(adc, 1.7) /**< 33k and 47k8 voltage dividor */
|
||||
#define MS_TO_S 1000
|
||||
|
||||
#define SENSOR_LIPO 34 /**< GPIO 34 (ADC1) */
|
||||
#define SENSOR_SOLAR 35 /**< GPIO 35 (ADC1) */
|
||||
#define SENSOR_PLANT1 32 /**< GPIO 32 (ADC1) */
|
||||
#define SENSOR_PLANT2 33 /**< GPIO 33 (ADC1) */
|
||||
#define SENSOR_PLANT3 25 /**< GPIO 25 (ADC2) */
|
||||
#define SENSOR_PLANT4 26 /**< GPIO 26 (ADC2) */
|
||||
#define SENSOR_PLANT5 27 /**< GPIO 27 (ADC2) */
|
||||
#define SENSOR_PLANT6 14 /**< GPIO 14 (ADC2) */
|
||||
|
||||
#define OUTPUT_PUMP1 5 /**< GPIO 5 */
|
||||
#define OUTPUT_PUMP2 18 /**< GPIO 18 */
|
||||
#define OUTPUT_PUMP3 19 /**< GPIO 19 */
|
||||
#define OUTPUT_PUMP4 21 /**< GPIO 21 */
|
||||
#define OUTPUT_PUMP5 22 /**< GPIO 22 */
|
||||
#define OUTPUT_PUMP6 23 /**< GPIO 23 */
|
||||
|
||||
#define OUTPUT_SENSOR 4 /**< GPIO 4 */
|
||||
#define INPUT_WATER_LOW 2 /**< GPIO 2 */
|
||||
#define INPUT_WATER_EMPTY 15 /**< GPIO 15 */
|
||||
#define INPUT_WATER_OVERFLOW 12 /**< GPIO 12 */
|
||||
|
||||
#define SENSOR_DS18B20 13 /**< GPIO 13 */
|
||||
#define BUTTON 0 /**< GPIO 0 */
|
||||
|
||||
#define MIN_TIME_RUNNING 10UL /**< Amount of seconds the controller must stay awoken */
|
||||
#define MAX_PLANTS 3
|
||||
#define EMPTY_LIPO_MULTIPL 3 /**< Multiplier to increase time for sleeping when lipo is empty */
|
||||
#define MINIMUM_LIPO_VOLT 3.3f /**< Minimum voltage of the Lipo, that must be present */
|
||||
#define MINIMUM_SOLAR_VOLT 4.0f /**< Minimum voltage of the sun, to detect daylight */
|
||||
|
||||
#define HC_SR04 /**< Ultrasonic distance sensor to measure water level */
|
||||
|
||||
#endif
|
52
esp32/include/DS18B20.h
Normal file
52
esp32/include/DS18B20.h
Normal file
@@ -0,0 +1,52 @@
|
||||
/**
|
||||
* @file DS18B20.h
|
||||
* @author your name (you@domain.com)
|
||||
* @brief
|
||||
* @version 0.1
|
||||
* @date 2020-06-09
|
||||
*
|
||||
* @copyright Copyright (c) 2020
|
||||
* Based on the LUA code from the ESP8266
|
||||
* --------------------------------------------------------------------------------
|
||||
* -- DS18B20 one wire module for NODEMCU
|
||||
* -- NODEMCU TEAM
|
||||
* -- LICENCE: http://opensource.org/licenses/MIT
|
||||
* -- Vowstar <vowstar@nodemcu.com>
|
||||
* -- 2015/02/14 sza2 <sza2trash@gmail.com> Fix for negative values
|
||||
* --------------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#ifndef DS18B20_H
|
||||
#define DS18B20_H
|
||||
|
||||
#include <OneWire.h>
|
||||
|
||||
class Ds18B20 {
|
||||
private:
|
||||
OneWire* mDs;
|
||||
int foundDevices;
|
||||
public:
|
||||
Ds18B20(int pin) {
|
||||
this->mDs = new OneWire(pin);
|
||||
}
|
||||
|
||||
~Ds18B20() {
|
||||
delete this->mDs;
|
||||
}
|
||||
/**
|
||||
* @brief read amount sensots
|
||||
* check for available of DS18B20 sensors
|
||||
* @return amount of sensors
|
||||
*/
|
||||
int readDevices(void);
|
||||
|
||||
/**
|
||||
* @brief Read all temperatures in celsius
|
||||
*
|
||||
* @param pTemperatures array of float valuies
|
||||
* @param maxTemperatures size of the given array
|
||||
* @return int amount of read temperature values
|
||||
*/
|
||||
int readAllTemperatures(float* pTemperatures, int maxTemperatures);
|
||||
};
|
||||
#endif
|
76
esp32/include/PlantCtrl.h
Normal file
76
esp32/include/PlantCtrl.h
Normal file
@@ -0,0 +1,76 @@
|
||||
/**
|
||||
* @file PlantCtrl.h
|
||||
* @author your name (you@domain.com)
|
||||
* @brief Abstraction to handle the Sensors
|
||||
* @version 0.1
|
||||
* @date 2020-05-27
|
||||
*
|
||||
* @copyright Copyright (c) 2020
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef PLANT_CTRL_H
|
||||
#define PLANT_CTRL_H
|
||||
|
||||
class Plant {
|
||||
|
||||
private:
|
||||
int mPinSensor=0; /**< Pin of the moist sensor */
|
||||
int mPinPump=0; /**< Pin of the pump */
|
||||
|
||||
int mValue = 0; /**< Value of the moist sensor */
|
||||
|
||||
int mAnalogValue=0; /**< moist sensor values, used for a calculation */
|
||||
|
||||
public:
|
||||
|
||||
/**
|
||||
* @brief Construct a new Plant object
|
||||
*
|
||||
* @param pinSensor Pin of the Sensor to use to measure moist
|
||||
* @param pinPump Pin of the Pump to use
|
||||
*/
|
||||
Plant(int pinSensor, int pinPump);
|
||||
|
||||
/**
|
||||
* @brief Add a value, to be measured
|
||||
*
|
||||
* @param analogValue
|
||||
*/
|
||||
void addSenseValue(int analogValue);
|
||||
|
||||
/**
|
||||
* @brief Calculate the value based on the information
|
||||
* @see amountMeasurePoints
|
||||
* Internal memory, used by addSenseValue will be resetted
|
||||
* @return int analog value
|
||||
*/
|
||||
void calculateSensorValue(int amountMeasurePoints);
|
||||
|
||||
/**
|
||||
* @brief Get the Sensor Pin of the analog measuring
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
int getSensorPin() { return mPinSensor; }
|
||||
|
||||
/**
|
||||
* @brief Get the Pump Pin object
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
int getPumpPin() { return mPinPump; }
|
||||
|
||||
int getSensorValue() { return mValue; }
|
||||
|
||||
/**
|
||||
* @brief Check if a plant is too dry and needs some water.
|
||||
*
|
||||
* @param boundary
|
||||
* @return true
|
||||
* @return false
|
||||
*/
|
||||
bool isPumpRequired(int boundary) { return (this->mValue < boundary); }
|
||||
};
|
||||
|
||||
#endif
|
39
esp32/include/README
Normal file
39
esp32/include/README
Normal file
@@ -0,0 +1,39 @@
|
||||
|
||||
This directory is intended for project header files.
|
||||
|
||||
A header file is a file containing C declarations and macro definitions
|
||||
to be shared between several project source files. You request the use of a
|
||||
header file in your project source file (C, C++, etc) located in `src` folder
|
||||
by including it, with the C preprocessing directive `#include'.
|
||||
|
||||
```src/main.c
|
||||
|
||||
#include "header.h"
|
||||
|
||||
int main (void)
|
||||
{
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
Including a header file produces the same results as copying the header file
|
||||
into each source file that needs it. Such copying would be time-consuming
|
||||
and error-prone. With a header file, the related declarations appear
|
||||
in only one place. If they need to be changed, they can be changed in one
|
||||
place, and programs that include the header file will automatically use the
|
||||
new version when next recompiled. The header file eliminates the labor of
|
||||
finding and changing all the copies as well as the risk that a failure to
|
||||
find one copy will result in inconsistencies within a program.
|
||||
|
||||
In C, the usual convention is to give header files names that end with `.h'.
|
||||
It is most portable to use only letters, digits, dashes, and underscores in
|
||||
header file names, and at most one dot.
|
||||
|
||||
Read more about using header files in official GCC documentation:
|
||||
|
||||
* Include Syntax
|
||||
* Include Operation
|
||||
* Once-Only Headers
|
||||
* Computed Includes
|
||||
|
||||
https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html
|
Reference in New Issue
Block a user