0

I am an experienced developper, and I want to learn IoT beginning with a small project. Automatic Watering the plants of my house.

Here are the requirements:

  • The project is for learning purpose
  • It must be simple
  • It should be easily scalable ( if I want to buy a new plant, I should just buy a new sensor )
  • Right now, I think I only care about Moisture data
  • When the moisture level is too low, it pumps water into the plant
  • The installation should be discrete. I love plants, and wouldnt like to convert them into a big technological visible installation
  • I would like to code with Python, or JS. I wouldn't like to code with C or C++ if possible.
  • I am efficient on AWS, so I would like to use AWS IoT if it brings me something valuable.
  • Easy learning curve if possible
  • Optional - Mobile Dashboard - I saw blynk, I should maybe use it, but this part is more the one I know, so it should not be so difficult.

Should I use Arduino or RasperryPi ?

What kind of architecture should I use ?

Or basically, any idea of what should I read, where should I start?

  • This question is way too broad – hardillb Aug 15 '18 at 10:15
  • 1
    "•The installation should be discrete. I love plants, and would like to convert them into a big technological visible installation" seems contradictory – Mawg says reinstate Monica Aug 15 '18 at 11:41
  • Yes you are right. I wouldn t want... Will correct it right niw – Juliatzin del Toro Aug 15 '18 at 12:05
  • 1
    Be careful, I know someone that choose plant watering as a project because they spend months in another city seasonally. When they returned, the system had malfunctioned and literally cost $150,000 in repairs due to water damage. – Tyson Aug 15 '18 at 13:36
  • Yes, I might train the system all year long, and always monitor it, it is absolutely true – Juliatzin del Toro Aug 15 '18 at 13:40
4

This is a very generic question, the answers mainly depend on your existing skills, and if you desire to progress into developments that might be commercially relevant. Depending how far you want to plan your learning ahead, you might want to start simple, and upgrade the architecture/implementation as you go along.

Platform

An SBC (Pi or similar) is great if your want to focus on high level software. This question addresses some of the reasons that working with an SBC and an MCU present different experiences. An SBC is rather power hungry and might not come with built in short range connectivity.

There are small mcu boards with either WiFi or BLE built in, these are much better suited for battery powered operation. MCU boards can be coded in python, the micro:bit has bluetooth and supports micropython (but might not be well optimised for ultra-low power if you use it like this).

If you care about making a secure platform (now or in the future) then you might also care about having secure on-chip memory, good entropy sources, etc.

Architecture

The 'many nodes, one hub/gateway' approach is good for battery powered devices. You can have an array of battery powered/short range devices (mesh or otherwise), communicating with a central SBC device. The SBC handles your WAN/cloud interface and also some stand-alone features if necessary.

If you make each node a peer (with wifi/WAN access) then you only need to write one software stack, but it's more complex, and you end up being reliant on LAN for any communications - so power outage operation isn't possible.

To clarify the types of devices:

SBC Single Board Computer, the Raspberry Pi is the most common. These can run linux, and might also be a NAS, a WiFi router, smart home device or a mobile phone/tablet which is running a bit of software to handle the automation task.

MCU A much wider class of device, not necessarily significantly lower in processing capability, but more likely to run a real-time OS, and more likely to use event driven programming. There are lots of small eval boards, WiFi or Bluetooth modules with some spare cycles, and dedicated small form factor boards like the teensy series. An MCU might be better to interface to certain types of sensor, and will often have a wide range of interfaces available (even displays).

| improve this answer | |
  • 1
    Well, the idea is to have a first experience, and then I would try to get a work on IoT. So yes, Begin easy, but with the possibility to improve it. Right now, security is not my concern. I saw a great thread: raspberrypi.org/forums/viewtopic.php?t=204685 . what they basically say is: in each plant: sensor + ESP. ESP would be responsible for sending data to MQTT broker. Are you saying that Pi is SBC and Arduino is MCU ? – Juliatzin del Toro Aug 15 '18 at 9:11
  • 1
    Yes. What you describe there is nodes/gateway. – Sean Houlihane Aug 15 '18 at 9:13

Not the answer you're looking for? Browse other questions tagged or ask your own question.