La COOL Board is a connected environmental monitoring and control board. It can be used to build custom weather stations, self-watering plants, hydroponic control systems, pH probes, and many other things. It's also extensible and compatible with numerous external sensors and actuators.
- 100% Arduino compatible
- Supported by an Espressif's ESP8266, including onboard WiFi
- 7 onboard sensors: IR and visible light, UV index, atmospheric pressure, humidity, temperature, soil moisture.
- Onboard RTC Clock
- USB to serial UART with onboard FTDI chip (female micro-USB port)
- NeoPixel Digital RGB programmable LED
- Solar panel and LiPo battery plug
- Fully makeable, hackable and customizable open-hardware
Have a look at our Eagle files - but you can also buy it from us! Don't hesitate to contact or check out our website
It contains a set of Arduino libraries, wrappers and sketches that simplify the access to and usage of the sensors and other hardware features provided by La COOL Board.
The default operating mode of La COOL Board is sleep mode, which uses the deep-sleep low-energy consumption mode of the ESP8266 (80µA). It is on by default and should be enabled whenever your board:
- runs on battery power (e.g. in a weather station)
- runs on AC power, but logs data at a very slow rate. It's time to do you part in saving the planet!
If you need a higher sample rate, you may want to deactivate it.
When in sleep mode, your COOL Board will run the following loop:
- read sensors values
- activate actuators
- log data (either locally or over the network)
- check for updates
- go to sleep for
logInterval
seconds
For minor fixes of code and documentation, please go ahead and submit a pull request.
Larger changes (rewriting parts of existing code from scratch, adding new functions to the core, adding new libraries) should generally be discussed by opening an issue first.
Feature branches with lots of small commits (especially titled "oops", "fix typo", "forgot to add file", etc.) should be squashed before opening a pull request. At the same time, please refrain from putting multiple unrelated changes into a single pull request.
If you encounter a problem, have some genius, crazy idea or just want to have a chat with us, please open an issue, a pull request or send us an email at [email protected] - we'd absolutely love to hear from you !
-
Install Platform IO core
-
Break out the sensor board and insert its pins into the main board header
-
Connect the COOL Board to your computer and ensure you that your switch is in the LOAD position
-
On a terminal, enter
git clone https://github.com/LaCoolCo/LaCOOLBoard.git` cd LaCoolBoard` patch/patch.sh`
-
Go to [www.lecool.menu], create an account and choose
Join us
-
Contact La COOL Co via mail ([email protected]) to ask for your certificate and private keys. We'll provide you with two files :
privateKey.bin
andcertificate.bin
- Save
privateKey.bin
inexamples/WeatherStation/data/privateKey.bin
- Save
cerificate.bin
inexamples/weatherStation/data/certificate.bin
- Save
-
In your terminal, type
pio run -e prod -t uploadfs`
-
Hit the RESET switch, then type
pio run -e prod -t upload`
-
Put the side switch back in RUN position & press the RESET button
-
After a few seconds, you COOL Board LED should glow purple to signal that the onboard Wifi access point has started. You'll now need to:
-
connect your computer (or phone/tablet) to the Wifi network named CoolBoard-XXXXXXXXXXXX
-
open https://192.168.4.1 in your browser.
-
click configure Wifi
-
Select the Wifi network you want your board to connect to and enter its password
The COOL Board embedded software makes heavy use of the SPIFFS for storing its configuration and data files. Here is a description of the configuration files and keys.
logInterval
: time interval in seconds between two log events.ireneActive
: set this totrue
if you are using the IRN3000 modulejetpackActive
: set this totrue
if you are using the JetPack moduleexternalSensorsActive
: set totrue
if you are using a supported external sensorsleepActive
: set totrue
if you want your COOL Board to enable sleep modeuserActive
: set this totrue
if you want your COOL Board to collectuserData
(userName
,macAddress
,timeStamp
)manual
: set this totrue
to enable MQTT remote-control of onboard actuators, bypassing rule-based configuration. Be extremely careful with this mode: when it is active, the COOL Board will not restart automatically to apply any new configuration sent on theupdate
MQTT topic. Plus, restarting a COOL Board in manual mode will disable all the actuators. Thus, never forget to reset this to false to go back to normal mode!
ledActive
: Put this flag to 1(true) if you want to turn on the onboard LED.
temperature
: set this totrue
if you want to sample temperature using the BME280 Sensorhumidity
: set this totrue
if you want to sample air humidity using the BME280 Sensorpressure
: set this totrue
if you want to collect atmospheric pressure using the BME280 Sensorvisible
: set this totrue
if you want to collect the visible light index using the SI114X Sensorir
: set this totrue
if you want to measure the infrared light using the SI114X Sensoruv
: set this totrue
if you want to measure ultraviolet index using the SI114X Sensorvbat
: set this totrue
if you want to measure battery voltagesoilMoisture
: set this totrue
if you want to activate the soil moisture sensorwallMoisture
: set this totrue
if you want to use the moisture sensor for wall/wood moisture sensing.soilMoisture
MUST befalse
in this case
sensorsNumber
: the number of supported external sensors you connect to the COOL Boardreference
: the reference of a supported external sensor (e.g. NDIR_I2C, Dallas Temperature...)type
: the type of measurment you are taking (e.g. CO2, temperature, voltage...)address
: the sensor's address, if it has one (e.g. NDIR_I2C CO2 sensor's address is 77)kind0
...kind4
: names of the sensors sensor connected to ADCs models ADS1015 and ADS1115 (kind0
is sensor on A0,kind1
is A1, and so on)
waterTemp.active
: set totrue
to use the temperature sensor connected to the Irene3000phProbe.active
: set totrue
to use the ph sensor connected to the Irene3000adc2.active
: set totrue
to use the extra ADC input of the Irene3000adc2.gain
: this is the value of the gain applied to the extra ADC input of the Irene3000adc2.type
: the type of measurements you are making (e.g. CO2, temperature,voltage...)
Act[i].actif
: set this totrue
in order to use the jetpack output #i
(0 to 7)Act[i].inverted
: set this totrue
if the actor is inverted (e.g. a cooler is turned on whenTemp > TempMax
)Act[i].temporal
: set this totrue
if you want the actor to turn on or off based on time of day.Act[i].type: [ <primaryType>, <secondaryType> ]
: this array contains the primary type and the secondary type of the actuatorprimaryType
: type of the sensor (e.g. ifTemperature
, actuator is associated to the "Temperature" sensor).secondaryType
is only used in temporal mode. It can be:""
(empty): the actor will be on fortimeHigh
ms and off fortimeLow
ms"hour"
: the actor will be on when current hour is greater than or equal tohourHigh
. and off when greater than or equal tohourLow
."minute"
: the actor will be on when the current minute is greater than or equal tominuteHigh
, and off when greater than or equal tominuteLow
"hourMinute"
: behavior of both"minute"
and"hour"
Act[i].low[rangeLow,timeLow,hourLow,minuteLow]
: this array contains the low values of the activation rangerangeLow
is the minimum sensor value at which to turn on (or off in inverted mode) the actortimeLow
is the time spent off in temporal modehourLow
is the hour to turn off the actor whensecondaryType
ishour
orhourMinute
minuteLow
is the minute to turn off the actor whensecondaryType
isminute
orhourMinute
Act[i].high[rangeHigh,timeHigh,hourHigh,minuteHigh]
: this array contains the high values of the activation rangerangeHigh
is the maximum of the range at which to turn off (or on in inverted mode) the actortimeHigh
is the time spent on in temporal modehourHigh
is the hour to turn on the actor whensecondaryType
ishour
orhourMinute
minuteHigh
is the minute to turn on the actor whensecondaryType
isminute
orhourMinute
Note that coolBoardActorConfig.json
contains only one actor.
mqttServer
: MQTT server IP address or hostname
NTP
: set totrue
if you want the RTC to synchronize with a NTP Pool. Disable this if you don't have an Internet connection!timePool
: indicates the NTP Server with the lowest latency in CoolTime.htimeSync
: the last time the board updated the RTC (UNIX Time). By default, La COOL Board tries to update once a week.
timeOut
: access point timeout in seconds