Родился в семье железнодорожного рабочего.
В 1914 семья переехала на станцию Тулун.
С 1928 по 1929 учился в ФЗО в Нижнеудинске, после чего работал учеником токаря на инструментальном заводе города Сестрорецка.
В 1930 добровольно пошел служить на Балтийский флот, окончил 8-ю школу авиамотористов, затем 11-ю школу военных пилотов.
В 1933-1936 служил в авиационных частях на Украине.
В октябре 1936 лейтенант Шмельков добровольцем отправился воевать в Испанию. Участвовал в воздушной обороне Мадрида. В небе Испании совершил 66 боевых вылетов. По одним данным сбил лично 5 самолетов противника и столько же в группе, по другим — 4 самолета противника лично и 2 в группе.
Постановлением ЦИК СССР 31 декабря 1936 ему присвоено звание Героя Советского Союза.
В 1938 окончил курсы усовершенствования при Липецкой авиашколе, участвовал в советско-финской войне, командуя авиационной бригадой. Был награжден орденом Красного Знамени.
В годы Великой Отечественной войны командовал 145-м истребительным авиаполком (Карельский фронт). Летал на И-16. Был контужен при бомбёжке.
После пребывания в госпитале, в 1942 окончил КУКС при Военно-Воздушной академии.
Командовал 297-й истребительной авиадивизией ПВО. Участвовал в разгроме фашистов в Белоруссии, Польше, Германии.
В 1945 вернулся во Владимирскую область.
Скончался 23 мая 1967 (по одним данным, 24 марта 1967 — по другим). Похоронен в посёлке Красная Горбатка Селивановского района.
Был награждён медалью «Золотая Звезда» Героя Советского Союза № 25, орденом Ленина (31.12.1936), орденом Красного Знамени (21.03.1940), медалями.
В городе Тулуне в честь Николая Ивановича Шмелькова названа одна из улиц. В посёлке Красная Горбатка его именем названа улица, установлена мемориальная доска, а на Площади Памяти в посёлке в честь Шмелькова установлен самолёт СУ-9.