GithubHelp home page GithubHelp logo

espgarden's Introduction

espGarden - An automatic gardening system

Introduction

I'm a very big fan of homegrown stuff but, unfortunately, that's kind of difficult for me for I'm hardly ever at home. Thinking about it, I've searched for many automatic gardening systems on the Internet and one that got my attention was the Ardufarmbot2 for its simplicity. At that moment, I realized it can be something much simpler than it looks like.

On this repository, you'll find my own solution for an automatic gardening system, the reasons that led me to the choices I've made and how to replicate every step I've done.

Premises

I started this with a few premises that I'll list here:

  • Keep it simple: everything on this project is meant to be easy to understand, to build and to run!
  • No one is rich: I'll try to spend as little money as I can on this, yet being an elegant solution.
  • Make it scalable: espGarden is meant to be scalable, in order to be improved every day.

Decisions made

On Ardufarmbot2, Marcelo used an ESP8266 and the Blynk app, which was one of the most amazing things I've seen in a while, since I'm not into the IoT world too much. Lamentably, the free version of the app provides real serious limitations on how many widgets you can drag and drop.

Thinking about it, I started looking for alternatives for Blynk and then I found out about ThingsBoard. It's a very similar concept, but it's web-based, has few more features and, if you run your own local server, it has no limitations on use. That's exactly what I needed!

Then, I got a VPS on Ionos for $2/month with Debian Stretch that would attend to my hardware needs. Amazingly, ThingsBoard can be installed using Docker containers, which make things faster and easier to set up.

I already had an ESP32 module (the DEVKIT-V1 from DOIT) and decided I would use it for this project, since I would want to start with a small and simple thing and, eventually, scale it to a smart gardening system, maybe even using AI concepts! ESP32 provides very powerful hardware for its low cost and size, so it seems to be a very nice choice.

The sensors I've chosen were all based on the Ardufarmbot2, the amount of each one was arbitrarily decided:

Sensors list

  • 4x Soil moisture sensor (HL-69);
  • 2x Waterproof temperature sensor (DS18B20);
  • 1x Humidity and temperature sensor (DHT22);

And, obviously, probably the most important part of the gardening system: the watering system! I've chosen to use a simple solenoid valve with a garden hose for it's cheap and easy to install.

I'm still considering making a PCB for espGarden but I think that's something that would limit its scalability.

Replication steps

Setting up ThingsBoard

  • Set up a server with the OS of your choice (recommend Ionos VPS for cost/benefit);
  • Install Docker Community Edition on your server: Tutorial;
  • Install ThingsBoard Community Edition using docker: Tutorial;
  • Change the default passwords on the Web UI for security’s sake;
  • Add a new dashboard, using this template: Download;

You're done with ThingsBoard for now!

Setting up the development environment

This step is very personal, I'll provide the steps I've taken for simplicity. If you already have your own development environment, feel free to use it and skip this step.

  • Install Visual Studio Code: Download;
  • Install PlatformIO extension: Tutorial;
  • Create a new PlatformIO project, setting the board to the ESP32 DEVKIT and the framework to Arduino;

You're done!

Cloning this project

  • Open your working directory;
  • On terminal, run:
git clone https://github.com/gabriel-milan/espGarden

Running code on ESP32

TODO

espgarden's People

Contributors

gabriel-milan avatar

Stargazers

Gianluca Pandolfi avatar Simon avatar  avatar Drew Gilmore avatar Jonny avatar Ricardo Sánchez avatar Alexander O. avatar Sebastián Pineda Ospina avatar Ayk Borstelmann avatar

Watchers

James Cloos avatar  avatar Gianluca Pandolfi avatar

Forkers

jgghj4

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.