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?
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
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?
- Some hardware to measure something
- A way to send the measurements to a client
- 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.
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.