HiGrow plants monitoring sensor

soil moisture, humidity and temperature for monitoring your plants

Similar projects worth following
HiGrow is a Soil Moisture, Temperature, Humidity sensor. HiGrow communicates with a cloud application for uploading data and the user can check his plants and sensor with an app.It uses ESP32 to powered by lipo battery, a Soil Moisture sensor and a DHT11 Temp and Humidity sensor.HiGrow hardware is almost opensource. We'll publish very soon the instruction to assemble your HiGrow and 3D print the case on http://www.higrow.techYou can find the ongoing firmware udpates, based on Arduino IDE, on GitHub: the ones interested in developing apps working with ESP32 we are also doing a porting of ESP TOUCH Smart Config to Xamarin. So you can integrate the libraries in your cross platform pr

#Installation steps

Firmware is based on Mongoose OS platform once you have installed Mongoose OS the HiGrow firmware project is available from the Library

javascript - 3.33 kB - 02/12/2018 at 21:08


markdown - 738.00 bytes - 02/12/2018 at 21:08


yml - 1.48 kB - 02/12/2018 at 21:08


  • 1
    Flash the firmware

    We moved the project to Mongoose OS which has a more stable and flexible library for Bluetooth. 

    From Mongoose is really easy to flash your board:

    1. Install Mongoose OS following the instructions here
    2. Connect your device via USB and turn it On (some light should blink :)
    3. Clone the project form library to your dashboard
    4. Build the project and then flash it on the board
  • 2
    Install the app

    app are almost ready, keep you posted

View all instructions

Enjoy this project?



pinewoodranger wrote 08/07/2019 at 16:18 point

Board sucks for 18650. I will sign that. In deep sleep mode it was drawing 25mA from the battery and an faint audible beep was present. I'm assuming this is all caused by some voltage regulator.

The thing works but as pat said, I'd advise against it IF you wish to run it off a battery. If cable is your thing, no problem.

  Are you sure? yes | no

nmuntyanov wrote 07/26/2019 at 08:17 point

Hi, guys!

I've started my own similar project with such board, using ESP-IDF 3.2.2 and Neil Kolban's cpp snippets on ESP32 side and Symfony + Angular 7 on server side. 

And I found out that this board consume a lot of current even in deep sleep mode (about 15mA) . Does anyone have "normal" scheme  for this board? My one doesn't have all circuits on it. 

  Are you sure? yes | no

pat wrote 06/16/2019 at 18:10 point

Hi, this project is clearly not finished, it has a bunch of consumption issues to fix yet, even in deep sleep mode the board consumption is absolutely enormous, probably 200 to 1000 times what should be guessed if the deep sleep mode hadn't been sabotaged by the idle consumption of the board. But it is nevertheless a very handy hardware to monitor plants watering. But do not even dream of using your higrow on a 18650 battery, it only works with a wire. It is extremely disapointing to see that after years the minor upgrades that are needed to turn higrow to a fantastic hardware second to none hasn't been done yet.
Some suggestions for users :
- if you want to monitor a bunch of pots you can hook up to 15 additional sensors via 3 wires cables. That is essentially the capacity of a pretty decent grow tent, so you will only need one HiGrow in each tent. By doing that you will be able to get all the 16 measurements on only one webpage/API call. BTW, you will find such additional soil sensors for less than 1.5$ each (search eBay for "Capacitive Soil Moisture Sensor v1.2"), so the whole setup won't be expensive at all. You can also get and process those info automatically in an Open Office spreadsheet by using the "Sheet > Link to External data..." function, extremely handy. 
- @Adrian Blake : you read the data by connecting a web browser to the higrow on the ip address assigned by your router/internet box dhcp server. You can also set a fixed ip address when initializing the higrow wifi connection by using the following syntax instructions :

IPAddress local_IP(192, 168, 1, <your HiGrowfixedIP>);
IPAddress gateway(192, 168, 1, <yourinternetgatewayIP>);
IPAddress subnet(255, 255, 255, 0);
IPAddress primaryDNS(192, 168, 1, <yourinternetgatewayIP>); 

It is then very easy to configure your internet box in order to monitor your growing plants from any browser/phone.

- @rgarciadelarosa : IMO this projet is not a scam, it will run pretty well on a usb power adapter.  But I never could manage to have it running on a 18650 battery, it just doesn't work (at least in my case).

- @yann R : just use the provided sample code, it worked fine for me : "const int soilpin = 32;" Here is where I got the code :

BTW, I saw some critics about an allegedly abusive reuse by HiGrow of previous projects. One have to consider that open source software/hardware licences used in the makers world, which are permissive (usually MIT for software / CERN OHL for hardware), allow everyone to reuse them without much constraints.

  Are you sure? yes | no

Adrian Blake wrote 06/09/2019 at 09:09 point

How can I read the data, temp, humidity and moisture ?

  Are you sure? yes | no

Andy wrote 05/03/2019 at 19:25 point

as marknitro wrote the power consumption even in deep sleep is really disapointing. I measured approx 40mA. Unfortunately there is no adequate documentation available. Nevertheless I made some modifications on the PCB wiring and I'm now at a level of 15mA in deep sleep.

One problem with the layout is, that the DHT11 and the moisture sensor curcuit is directly wired to Vcc, so the draw permanently current.

Therfore i cut off the Vcc of the DHT11 and wired it to pin 23 on the ESP. Now I can swich it on and during deep sleep it's off. This saved approx. 5 mAmps.

Next I cut off the Vcc of the moisture sensor. Exactly I cut through the Vcc line for the TLC555 circuit at the backside of the PCB. Next I soldered a wire from pin 8 of the TLC555 to pin 2 of the ESP. Now I can switch it on as well. This saved approx 20mA. I also cut off the red power LED but it seems didn't make a remarkable change.

I didn't test it right now but I assume the battery should last now for approx a week.

My next modification will be to add a LiPo fuel gauge, just have to wait for the parts to arrive from China

  Are you sure? yes | no

Chris Barth wrote 04/10/2019 at 12:04 point

any news on this project I see diymore and pixelelectric sell it now

  Are you sure? yes | no

rgarciadelarosa wrote 11/25/2018 at 15:50 point

Good afternoon everyone.
  After following this thread and analyzing different information.
I understand that it is a commercial project not finished.
he did not use the scheme nor the open code to be able to evolve and understand it.
the manufacturer made erroneous cards that he is selling.
It sounds like a scam.
Has someone started it?
Does anyone have the electrical blueprint?
Does someone know where to connect to send data?
etc. etc. etc.
I have two that I will try to use for other things.
do not waste your money

  Are you sure? yes | no

marknitro wrote 12/31/2018 at 13:51 point

Hi, it seems that the rev1 board was developed by Lily GO (as seen in the list of esp32 hardware at ).

They made a meshup of stolen hardware projects as far as I understood.

The main board is a clone of Travis Lin's Pocket 32 with on top a DHT11 temperature and humidity sensor and in the bottom part a capacitive soil humidity sensor cloned from DFRobots (

The main problem on the original Pocket 32 was the bad choice of ICs to manage the battery power as a commenter in the project wrote:

" If you want to use this board for long-term battery powered applications using the deep-sleep function of the ESP32, you will likely be disappointed. My measurements indicate 15mA from the battery during deep-sleep. (Note this is with rev1 silicon and Arduino IDE fixes for deep-sleep.) The ESP32 alone should only draw around 10 micro-amps during deep-sleep, not milli-amps. The seller believes the main reason is the charging system. The board uses a TP5410 which is a boost regulator which works something like this: 3.7V from 18650 battery --> TP5410 boost to 5V ---> regulated down to 3.3V for devices on the board. Further research on the internet tells me designs using this TP5410 are not meant for lengthy stand-alone battery use. Much too power inefficient. The board will be fine if constantly connected to USB for power and then 18650 will be the auto backup supply. Also, as I stated before, it doesn’t help that there is no way to programmatically monitor the actual battery voltage on this board"

I discovered this after buying 2 of this boards and a bunch of standalone capacitive soil sensors in order to monitor my plants. I'm going to use usb to power the boards ignoring the battery. Currently I'm using Arduino IDE and Cayenne MQTT Api to store the readings from the onboard sensors and I want to wxpand the system with output for automatic watering, fan, lights, etc...

If someone is interested I can post the code. Maybe it's nota complete waste of money.

  Are you sure? yes | no

Gabriele.vidali wrote 01/07/2020 at 06:04 point

It looks like lilygo t-higrow changed its hw and it now states:

Comparison before and after the soil test module G301 upgrade: (Upgrade time: September 7, 2019)

1. Changed from the original ESP32 module to a separate ESP32 chip.
2. The lithium battery was changed from the original 18650 to a 500MA lithium battery.


Working current: 150MA
Sleep current: 220UA

Did anybody test it? How long does it last on battery only?

Do you also know if I can control it via Alexa routines?

  Are you sure? yes | no

Franky wrote 08/21/2018 at 18:56 point

very interested project, I very curious about how to port the EspTouch Smart Config to Xamarin. Are you using the nuget version 1.04? Thanks 

  Are you sure? yes | no

Bruno Araújo Aguiar wrote 07/27/2018 at 07:51 point

Hi i bought this board, but i cant program it using Arduino, i get the message:

A fatal error occurred: Failed to connect to ESP32: Invalid head of packet ('.')

  Are you sure? yes | no

Dirk wrote 06/14/2018 at 09:26 point

Hi Luca,

thank you for this really cool idea. I got 2 samples of the V1 board from the sources you have mentioned. Unfortunately, one of these is already dead, probably because it ran at very low battery. The problem is described here:

It looks like I cannot re-vitalize this dead HiGrow board. But this shows two things:

- version 1 is not usable for long term usage, might be ok just for experimenting

- a battery measurement possibility is essential, otherwise it will not be possible, to avoid the problem described above

- maybe there is a way to switch the board off completely, when battery drops to a too low voltage. I am not so good at hardware design, thus this is something I cannot answer

- question: is it possible to add a solar panel to load the battery? Any recommendations, how/where to connect the panel?

Otherwise I added MQTT comunication to your mongoose-os based implementation and enabled deep sleep (to save battery capacity). I am happy to provide sources for these changes, if wanted.

A picture of the hardware design would be very helpful to understand what is available and how to add more features. I still do not understand the usage of the button labeled "EN" and did not try to find out, which GPIO it is connected to. The same with the LEDs -- several are on the board, but it is hard to find out, where/how they are connected.

  Are you sure? yes | no

yann R wrote 05/20/2018 at 12:52 point

Hello Luca, thank you for your work.

That she is the number pin of the sensor ?

to integrate soil moisture into blynk

Thank you

  Are you sure? yes | no

rgarciadelarosa wrote 05/16/2018 at 16:11 point

Este proyecto sigue vivo ??

alguien lo tiene en marcha

tengo dos tarjetas compradas para poder instalar.

muchas gracias.

  Are you sure? yes | no

fhefter wrote 04/18/2018 at 17:59 point

Hallo Luca, 

your github sketch has a light sensor (pin 33). 

This seems to produce random numbers around 90-110 in my case. Where is the light sensor on the board? Is it the multi pin rectangle in the center? I already played with the adc attenuation and resolution but had no luck.

I use the rev1 board with the HiGrow icon.  

A circuit diagram would be very helpful. Rev 1 and Rev 2, if possible. 

Btw.: I'm also missing the transistor opposite to the "H" of the Icon. What is it for?

Thank you for all your work!

  Are you sure? yes | no

seriousori wrote 04/18/2018 at 17:14 point


I have mangoose installed on my esp32.
After that, I uploaded your program.
If I access the esp only see this page.

What did I do wrong?

  Are you sure? yes | no

Markus-Rolf wrote 02/18/2018 at 08:30 point

Hi to all,

very nice project this sensor. I would love to test it but I can't get my hardware running because of the header files. Is it possible, that you can also upload the *.h files? I'm not sure where to get them.

Thanks for your help,


  Are you sure? yes | no

Luca Fabbri wrote 02/12/2018 at 21:10 point

Hi everyone, thanks for your support! If anyone has experience with Mongoose OS you can review the code: any improve would be really appreciated!

  Are you sure? yes | no

Marcus Hoffmann wrote 03/17/2018 at 18:16 point

Hello Luca, is there any Android App available, yet?

  Are you sure? yes | no

Svirik82 wrote 01/03/2018 at 04:09 point

Hi people, I have a problem with your sketch!
Error during compilation. Can tell me what to do?

I took it from here:

Maybe it's in the DHT sensor library.
which library do you use?
The error is this:

C:\Users\HP_DV7\Documents\Arduino\sketch\HiGrowEsp32\HiGrowEsp32.ino: In function 'void setup()':

HiGrowEsp32:50: error: 'esp_deep_sleep_enable_timer_wakeup' was not declared in this scope

   esp_deep_sleep_enable_timer_wakeup(1800 * uS_TO_S_FACTOR);


HiGrowEsp32:51: error: 'esp_deep_sleep_pd_config' was not declared in this scope

   esp_deep_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_OFF);


C:\Users\HP_DV7\Documents\Arduino\sketch\HiGrowEsp32\HiGrowEsp32.ino: In function 'void loop()':

HiGrowEsp32:75: error: 'esp_deep_sleep_enable_timer_wakeup' was not declared in this scope

   esp_deep_sleep_enable_timer_wakeup(DEEPSLEEP_SECONDS * uS_TO_S_FACTOR);


C:\Users\HP_DV7\Documents\Arduino\sketch\HiGrowEsp32\HiGrowEsp32.ino: In function 'void sensorsData(char*)':

HiGrowEsp32:98: error: 'class DHT' has no member named 'computeHeatIndex'

   float hic = dht.computeHeatIndex(temperature, humidity, false);       


We use the library WiFi ver 1.0 from the folder: C:\Users\HP_DV7\Documents\Arduino\hardware\espressif\esp32\libraries\WiFi We use the library HTTPClient ver 1.1from the folder: C:\Users\HP_DV7\Documents\Arduino\hardware\espressif\esp32\libraries\HTTPClient We use the library DHT from the folder: C:\Users\HP_DV7\Documents\Arduino\hardware\espressif\esp32\libraries\DHT (legacy)
We use the library WiFiClientSecure ver 1.0 from the folder: C:\Users\HP_DV7\Documents\Arduino\hardware\espressif\esp32\libraries\WiFiClientSecure exit status 1
'esp_deep_sleep_enable_timer_wakeup' was not declared in this scope

We use the library C:\Users\HP_DV7\Documents\Arduino\hardware\espressif\esp32\libraries\BLE: C:\Users\HP_DV7\Documents\Arduino\hardware\espressif\esp32\libraries\BLE

There may be a problem in the DHT library?

Be so kind as to tell me!
If you need a mail:

  Are you sure? yes | no

Ice2Cool wrote 01/19/2018 at 22:17 point

Try to include following:

#include "esp_deep_sleep.h"

  Are you sure? yes | no

seriousori wrote 05/01/2018 at 11:52 point

Hello, thank you for the suggestions.
Have it flashed but I'm not on the web server showing the data.
Nothing happens after flashing.

This shows the serial monitor:
ets Jun 8 2016 00:22:57

rst: 0x1 (POWERON_RESET), boot: 0x13 (SPI_FAST_FLASH_BOOT)
flash read err, 1000
ets_main.c 371
ets Jun 8 2016 00:22:57

rst: 0x10 (RTCWDT_RTC_RESET), boot: 0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP: 0xee
clk_drv: 0x00, q_drv: 0x00, d_drv: 0x00, cs0_drv: 0x00, hd_drv: 0x00, wp_drv: 0x00
mode: DIO, clock div: 1
load: 0x3fff0018, len: 4
load: 0x3fff001c, len: 956
load: 0x40078000, len: 0
load: 0x40078000, len: 13256
entry 0x40078a90
DeviceId: 207537695927856

  Are you sure? yes | no

Luca Fabbri wrote 02/12/2018 at 21:15 point

we moved the development to Mongoose OS, you find the code here

  Are you sure? yes | no

Ice2Cool wrote 01/02/2018 at 16:49 point

Hi, im looking into this project and bought two sets of PCB from aliexpress (this is where I stumbled onto it). Before loading any code to it I discover that my two boards does not have the transistor/FET, the 3 pin SMD component in the bottom part (toward soiltail). Does it exist any electrical drawing to this board so that I can investigate the board and its components?



  Are you sure? yes | no

Luca Fabbri wrote 02/12/2018 at 21:12 point

Hi! could you share a pic? the producer made an initial version which was faulty!

  Are you sure? yes | no

Bruno Araújo Aguiar wrote 04/09/2019 at 19:04 point

Did you manage to find what component were missing?

  Are you sure? yes | no

eok wrote 11/22/2017 at 18:46 point

is there a voltage divider to monitor the battery?

on which pin is it?

are there any more infos about the board?

which sensor is on which pin?

why is the github sketch not maintained?

  Are you sure? yes | no

Luca Fabbri wrote 02/12/2018 at 21:13 point

Not on thi sversion, rev2 is based on Adafruit schematics using LiPO and voltage divider on pin 13

  Are you sure? yes | no

alandonegan wrote 11/01/2017 at 16:48 point

Hi Luca,  I'd be very interested in purchasing one of your ESP32 dev boards for my project, are they available on any other online stores other than

  Are you sure? yes | no

Luca Fabbri wrote 02/12/2018 at 21:13 point

I posted the cheaper link to Aliexpress (they are almost everywhere just type higrow in your favourite repo)

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates