I am very new to IOT and don't have much knowledge of anything to do with it. I have spent a long time trying to learn more about it but everywhere I go to try to learn about IOT, there is always way too much assumed knowledge that I don't have. My end goal is to be able to develop applications for collecting data from IOT devices and presenting it to a client and I've decided the best way to do this is to get some practical experience. So I signed up to AWS and want to begin using the IOT service to get some idea of how its done. I want to learn how to create applications that collect data from IOT devices but I need some devices to do this with but I don't have any. Is there anywhere that allows me to may be play around with some fake devices or practice devices or something?

  • 1
    Can you please tell us more about your skill level. Do you have experience in embedded system programming? Do have have access to hobby electronic or starter electronic boards such as a [TIVA ARM® Cortex®-M4F Based MCU TM4C123G LaunchPad™ Evaluation Kit ](ti.com/tool/EK-TM4C123GXL) and/or TI SimpleLink™ Bluetooth® low energy CC2650 Module BoosterPack™ Plug-in Module. There are plenty of options in the market. – user8055 Aug 6 '19 at 16:19
  • 1
    I dont have experience in ebedded system programming and i dont have any electronic boards but I could by a £10 device in order for me to learn. My experience is complete begginer. I dont know what any of the terms used in the field really mean or how to create any part of an IOT system. All I do know is the general idea, IOT devices are made to collect data at "the edge" (showing off one of the only terms I know lol) and then that data is sent to servers in the cloud where people can write programs that collect, analyse and present the data (which is what im eventually trying to learn to do) – Ameen Izhac Aug 7 '19 at 9:25
  • In order to get where want to, I recommend getting some basic understanding of embedded programming. This link [How to Transition from “Basic” Microcontrollers to ARM Cortex? ](electronics.stackexchange.com/a/176824) has some references to help you get started. Particularly the Embedded Systems - Shape The World: Microcontroller Input/Output – user8055 Aug 7 '19 at 14:48
  • Not a direct duplicate, but very relevant is iot.stackexchange.com/questions/1425/… – Sean Houlihane Aug 20 '19 at 12:11

Welcome. I love your question, and have marked it a favo(ur)ite. However, it will probably be closed as far too broad. If you can narrow down your requirements, you will probably get a good answer (try to avoid GIGO). Here is one of many possible paths that you could take:

My end goal is to be able to develop applications for collecting data from IOT devices and presenting it to a client

Collect data only (telemetry) or also control the devices (SCADA)?

So I signed up to AWS

Why? Is AWS a hard requirement, to did you just associate it with IoT and think “why not”?

You certainly don't need AWS, and I would suggest starting with the simplest system you can think off and working your way into something more complicated.

What do you need?

  1. Some hardware to measure something
  2. A way to send the measurements to a client
  3. A way to display the data to a client (presumably a human client?)

1) The Raspberry Pi is very popular and has a lot of support an tutorial; it even has its own Stack Exchange site At less than US $10, it has WiFI, BlueTooth and GPIO pins for your sensors (you can also buy Hats with sensors to fit those pins, if you are way of soldering or even breadboards). The Raspberry Pi Zero W is the cheapest with internet connection and should be enough for any IoT project you are considering.

Having said that, I personally (and YKmH may vary), I find the Pi to be overkill, as I do not see that you need Linux. If you give more detailed requirements, we can point you at a processor. A good starter would be the ESP32, which you can pick up on AliExpress from about $7, maybe $14 with display. I also like the STM32, which I am about to look into because of its support for Ada 2012, but that might be a tad esoteric for you. Consider also the BBC Micro:bit which is expressly designed for leaners (they gave one to every school kid in the UK), and can be programmed in Python (as can the others I mentioned), or Ada ;-) or in a graphical language.

If you want a recommendation of ESP32, take a look at M5stack which is a modular system and allows you to easily combine (stack) devices and accessories (e.g device battery) and has a dozen or more sensors to measure many things. It is cheap (IMO) and easy to get to grips with, and I bought the lot, just to have a play. Once bonus is that you don't need to do any soldering or breadboarding (although you can); everything is plug 'n' play. You might be interested in the wrist “wearable”, which looks pretty cool & which I am using to track employees. See below for image

2) So, now you have programmed your device to read some sensor data, and want a way to send it to a server. There an numerous ways to do this, but personally I see it as a choice between developing a RESTful HTTP API, or using something FOSS and off the shelf. For the latter, there are a few options, but MQTT is very popular & well documented, and there are lots of examples. It is also very simple to learn.

3) Displaying the data. Again, there is a plethora – nay, a cornucopia – of choices for reports. However, the FOSS Node-RED is simple to use and very popular with good support.

You mentioned AWS, but that’s just one more thing to confuse yourself with at the start (not to say that you shouldn’t get into it later). Simpler is to run your own server, on your own PC. If you run Linux, you aleady have Apache installed. If Windows, then install something like Xampp which will run an Apache server on Linux and doesn’t require much/any knowledge.

That, as I said, is just one of many, many, many, many, many, many, many, many, many, many, many options, but it will get you started & allow you to pick up some other skills along the way.

If you do go for ESP32, then, in addition to many great free tutorials, I personally recommend reading Kolban's book on ESP32 and ESP32 Programming for the Internet of Things. For good tutorials, look at Random Nerd and Hackster. As an IDE, I strongly recommend PlatformIO_ over the Arduino IDE, as it supports debugging on many boards, plus lots more, and it has a great support community.

enter image description here

Did I miss any general advice?

I encourage others to expand on this answer. While the question is too broad to stay open, an answer would be very useful on the community wiki.

| improve this answer | |
  • 1
    "If you want a recommendation of ESP32" here do you mean a reccomendation for a model of the ESP32 processor? – Ameen Izhac Aug 6 '19 at 14:25
  • 1
    what is M5stack, is it like a model for the ESP32? – Ameen Izhac Aug 6 '19 at 14:32
  • 1
    oh ok nice I think i might just have to get that, so next you talk about sending the devices data to a server and gave the choice of either developing a "RESTful HTTP API" or using FOSS, keeping my end goal in mind, (creating applications for collecting analysing and presenting data for a buisness IOT system), do you think I could use FOSS or would I need to know how to develop my own RESTful HTTP API? If the latter could you please explain what a RESTful HTTP API is – Ameen Izhac Aug 7 '19 at 9:33
  • 1
    ok thanks ive been spending some time checking out the ESP32 and it looks like a very good option – Ameen Izhac Aug 7 '19 at 12:09
  • 1
    thanks best answer given – Ameen Izhac Aug 7 '19 at 12:47

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