Is there a way to connect one hundred SIM800L's to Arduino? Essentially I want to be able to communicate with any of them that I want. If Arduino isn't capable of doing this, what do you suggest, so I could connect to and control 100 SIM cards?

Thanks for your help in advance!


  • Wow, 100 is much. Maybe with a series of multiplexer modules (only talking to one at a time). But why do you need to talk to 100 SIM800L? What are you trying to achieve? – chrisl Dec 7 '19 at 15:32
  • It is likely the additional hardware needed will exceed that of most Arduino platforms. That is, while using an Arduino Uno may work, it would be like building a race car from a go cart. – st2000 Dec 7 '19 at 15:47
  • @chrisl That's for a project I am creating a PoC for. Ideally I want to be able to talk to an unlimited number of SIMs for making calls, sending texts etc. Can you please provide a link or example for using "multiplexer modules" ? – Ramin Arabbagheri Dec 7 '19 at 16:11
  • @st2000 That's fair do's. It doesn't really have to be an Arduino. I just don't know how to connect a SIM800L to a Desktop computer for example, let alone connecting hundreds of them. If money wasn't an object (within reason), what hardwares would you propose to achieve this? I'm a software engineer so coding it up is I guess the easier part, as long as it's possible to talk to the modules. – Ramin Arabbagheri Dec 7 '19 at 16:14
  • 1
    You need to think modular. Forget one central "brain" with hundreds of modems connected to it - think lots of small brains with only a few modems on each one, all communicating to a central controller over some other transmission medium (ethernet?) – Majenko Dec 7 '19 at 17:13

You left unclear, what your exact requirements are. So the answer will be as general as your question. The SIM800L uses the Serial interface (UART). So the point is to connect to 100 different serial interfaces.

If it is ok to talk to each SIM800L sequentially (only one at a time), you can use a series of multiplexers. A multiplexer chip connects one pin to one of multiple pins (called channels here). Depending on the used chip, the channel can be selected in different ways. The standard way is with simple digital input pins, that construct a binary number. So for 8 channels you need 3 input pins (2^3). Other ways are through communication interfaces like SPI or I2C.

Normally a multiplexer has only 8 channels, though you can also find once with more, but I don't think there are multiplexers with 100 channels. So you could next the multiplexers. If you put another multiplexer on every channel of the first multiplexer, you get 8*8 = 64 channels with 9 multiplexers in total. Add some more multiplexers on the next level and you will get to over 100 channels. Then you need 2 of these multiplexer trees to multiplex both serial lines (TX and RC). Since that are a lot of multiplexers and thus a lot of inputs to choose the correct channels, you could use multiplexers with SPI or I2C interface. The first would require 1 digital output pin of the Arduino per multiplexer as slave select pin, the latter would require either a multiplexer type, that can as many different I2C addresses as multiplexers in your system, or a bit more complex programming and also 1 pin per multiplexer to change the address of the chip to configure. How to use these multiplexers with Arduino depends on the used chip. You should refer to it's datasheet.

As you now see, connecting one single Arduino to 100 serial interfaces it a complex task. Depending on your actual requirements and goals in your "PoC project", it might be a better way to follow Majenkos advice and build it more modular with multiple Arduinos/microcontrollers.

  • Thanks, I understood what those multiplexers do. I assume the multiplexers switching between pins would have a delay. That, and the fact I wouldn't be able to for example ask 10 SIM800L's to each do something (multithreading if you like), makes it a not so good option. Agreed Majenkos' solution sounds better. – Ramin Arabbagheri Dec 8 '19 at 0:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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