Go back

Can a DIY GSM module replace a commercial SMS/OTP service

Ahmed TariqJune 14, 20264 min read
ArduinoGSMOTPSMSSIM800L

Executive Summary

This is to evaluate whether a Do It Yourself GSM device, an Arduino Nano paired with a SIM800L cellular module, is a viable way to send One-time passwords (OTPs) and SMS, and how it compares with local and international messaging services.

The hardware is remarkably cheap to assemble (roughly Rs 1,500 – 3,000) and can deliver an excellent experiment project. It exposes GSM AT commands, serial communication, power electronics, and a full web control interface.

3 viable reasons make the case for non-utilization of such hardware in a production environment.

  1. Anti-spam rules set by telecom services to throttle/block a consumer SIM at certain volume.

  2. Hardware limitations of SIM800L; power instability, 2G module, fragile delivery confirmation.

  3. For commercial systems, a managed API(e.g. Twilio) is still cheaper & reliable.

Project Objective

Build a system that sends an SMS (and optionally places a call or runs a USSD balance check) to a chosen phone number from a computer interface, for use as an OTP / verification sender. The implementation uses an Arduino Nano as a serial bridge and a SIM800L GSM module as the cellular radio, driven from either a Next.js web app or a single-file browser console using the Web Serial API.

System Architecture

The design separates concerns across three layers:

  • Browser UI

  • Host process

  • Embedded radio

Untitled-2025-07-29-0800.png

Embedded layer

Arduino Nano running firmware that exposes a simple line protocol (STATUS, SEND, CALL, HANGUP, USSD, INBOX) and translates it to SIM800L AT commands.

Host Layer

A single static HTML file using the browser Web Serial API.

Firmware & UI files (Claude)

IMG_9810.jpegscreencapture-file-C-Users-atari-Downloads-sim800-html-2026-06-12-21_32_36.png

Hardware Cost

Arduino Nano (Microcontroller) - Rs 730 Price

SIM800L (GSM Module) - Rs 1500 Price

Li-ion Battery 18650 - Rs 280 Price

Total: Rs 2510

Price of other accessories (e.g. wires & resistors) and a registered SIM Card is not included.

Prices may vary with time.

Hardware pinout & Wiring

circuit_image.svg

Black (GND) [Nano, Battery, GSM]

Red (VCC) [Battery, GSM]

Green [Nano - D2 (TX), GSM - RXD ]

Blue [Nano - D3 (RX), GSM - TXD]

USB - Serial Port

Additional Resistors may be required due to power instability and fluctuations. Make sure the voltage (3.7v-4.2v) supply is good and the antenna is attached properly.

LED Status Indicators

Blink 1/s

Blink 2/s

blink 3/s

Netlight-LED-Blinking-Finding-Network-Connection.gifNetlight-LED-Blinking-Active-GPRS-Connection.gifNetlight-LED-Blinking-Network-Connection-Established.gif

Powered on. Finding cellular network.

GPRS connection is active and working.

The module is ready to send/receive SMS & call.

Operating Cost - per SMS

Carrier

on-net

Off-net

international

Jazz

Rs 1.20 + tax

Rs 1.50 + tax

Rs 5.00 + tax

Ufone

~Rs 2.0 - 2.55 (PTA brand)

~similar

-

Reference

Note: Every recharge loses ~15% withholding tax up front (a Rs 100 card credits ~Rs 87).

Bundles affect the rate lowering per SMS cost, but bundles are designed for human texting, not automated OTP traffic. Reference

Regulatory & Technical Limits

These are major constraints that make the DIY route unsuitable for production, regardless of cost.

  • Anti-spam throttle (all networks): PTA states outgoing SMS is auto-blocked beyond ~150 SMS / 15 min, ~250 / hour, and ~750 / 24 hours. Restoring service can require submitting an affidavit and repeat violations risk a permanent block. Reference

  • Content filter: Identical messages (templated OTPs) are flagged faster than varied text.

  • 2G-only radio: the SIM800L works only on 2G/GSM. It functions in Pakistan today but is dead where 2G has been retired, creating long-term risk.

  • Reliability: no delivery receipts to the network level, single point of failure (one SIM, one module), and power-induced resets.

  • Single number: With online commercial services, user can register multiple numbers for various purposes. The DIY hardware does not provide that leverage potentially limiting diversity of phone numbers.

Alternatives & Price Comparison

Solution

cost/otp

setup/friction

ideal for

DIY SIM800L

~Rs 1.4 - 3.0 + capex

High/Gets blocks at volume

Learning/Personal use

Local SMS Aggregator (SendPK)

~Rs 2-4

NTN/CNIC + ~ Rs 5,000/yr mask; OTP via transaction route

Registered PK businesses volume

Twilio Verify

$0.05 - Rs 14

Very low; instant

Low volume, fast launch, testing

Twilio raw SMS

$0.0083(PK higher)

Low

Custom flows

WhatsApp Business OTP

~$0.005 (~Rs 1.4)

Medium; Meta verification

Users with WhatsApp

App TOTP (Authenticator)

Free

Low (Library only)

App logins/2FA

Email OTP

~Free

Low

App with email accounts

Reference

Trade-offs Analysis

Let's have the advantages vs Disadvantages of the DIY.

Advantages of the DIY build

  • No recurring per-message vendor fee

  • Full control; works without internet

  • Low one-time cost (~Rs 3,000)

  • Can also call & run USSD

Disadvantages for production

  • Auto-blocked by anti-spam limits at volume

  • 2G-only; power-fragile; frequent resets

  • No delivery guarantee, no sender ID

  • Single SIM/module = single point of failure

  • Manual scaling; consumer SIM not meant for Application to Person; legal grey area

Services for Use-cases

Scenario

recommended solution

Learning, hobby, project

SIM800L

Single user alerts / 2FA

DIY / App TOTP

Startup, MVP, Low Volume, Quick launch

Twilio, SendPK

Users with accounts

TOTP, Email OTP (free)

The ~Rs 3,000 hardware equals only about 200 Twilio Verify OTPs. But the DIY route’s hidden costs - SIM blocking, downtime, failed deliveries, and developer time - quickly outweigh that saving for anything people rely on.

Conclusion & Recommendation

The Arduino Nano + SIM800L OTP sender is a high-value learning project and a low-value production system. For roughly the price of a few hundred managed-API messages, it teaches the full stack of cellular messaging.

For any system real users depend on, the economics and reliability point elsewhere. If a phone number must be reached, use a managed service (e.g Twilio, Gmail) for speed and low volume, or a registered local aggregator once volume justifies the setup. Better still, avoid SMS where possible - app-based TOTP and email OTP are free, more secure, and not subject to carrier throttling.

The DIY route is ideal for learning and small scale projects, not so much for production with high volume traffic. Reserve SMS-OTP for cases that truly need a phone number, and deliver it through a service designed for application-to-person traffic.