Thank you for reading this.

Generally there are libraries for GSM and Ultrasound sensors for the software called Proteus and you can simulate them along with you MCU and the interfacing peripherals and simulate .

I have big problem at my hand , I want to simulate ESP8266 or any other relevant wifi module with my Arduino (Simulation Libraries for Arduino are available ) and get the data from sensor , all in software . Then , I want the wifi device (in software ) to show an ip address , so that I can log the data to an online cloud .

The software and module does not have to be specific , I want to know , If there are any professional software that let you simulate IoT based systems.

I'am new to IoT designing and I'am always comfortable with simulating everything.

If you have any other similar guide on how to design and simulate IoT systems , Let me know .

Have a great day

  • 3
    Possible duplicate of Can I program for Arduino without having a real board?
    – Dat Ha
    Commented Oct 22, 2016 at 12:01
  • no mate . I already have a virtual arduino running in proteus . I wanted a much advanced featured soft. part Commented Oct 23, 2016 at 19:59
  • Sounds like the sort of thing you might use Matlab for, but equally, maybe you could just write some C-code on a PC. Commented Oct 23, 2016 at 20:37

2 Answers 2


There are tools to simulate Arduino, but it's not meant for anything beyond basic (i.e. simple circuit). Support is limited, you can't just simulate any and every sensor and shields (e.g. LAN, Wireless). Furthermore, ESP8266 is so cheap that hardly anybody has actual use-case to simulate them. I suggest you work on a real device =)

If you need to simulate data stream into your cloud or IoT platform, I suggest you just spin up a machine and run some code to generate data.


I don't know of any simulators, but you might be able to do it yourself.

What you could do is to add a hardware abstraction layer to your code. When you are running on hardware this just passes the calls to the hardware, i.e. HAL_digitalRead(D0) calls digitalRead(D0). When you want to simulate the hardware then you #ifdef the simulated code in and it calls {return DigitalPins[GetIndexFromPinName('D0')]; }

The theory is very simple but I don't think its an easy task. I am surprised someone hasn't done it already, because debugging in Visual Studio or GDB in pure software would be much easier than doing it on the hardware.

I've never use Proteus, so I don't know if that will fit in with how that works at all.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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