@Hiago Martins Acredito que a melhor forma seja utilizar um webserver para o webserver se conectar ao Arduino, e a sua aplicação no smartphone faz as requisições para o webserver e não para o arduino. Isso impacta na latência mas é mais robusto e dinâmico do que conectar o smartphone diretamente ao arduino.
Fica assim então, o smartphone faz uma requisição a um servidor web, pode ser um servidor rodando um programa em php, esse servidor web se conecta via socket TCP/IP ao seu arduino. O seu arduino estará ouvindo em uma porta especifica para receber essa conexão de socket. Após isso o arduino retorna ao servidor web o resultado da requisição e o servidor retornará para o smartphone. Fora que dessa maneira fica fácil acessar sua aplicação a partir de um browser.
Outra solução, que eu não recomendo, é desenvolver uma aplicação no smartphone que faz o conexão diretamente no arduino, também via socket.
Claro, essas soluções que eu mostrei são utilizando Ethernet TCP/IP, você pode utilizar Bluetooth também, parendo o arduino com o smartphone e trocando dados.
É isso
@allanmarum