ThingSpeak é um serviço que oferece uma infraestrutura de web e um protocolo de comunicação baseado em http para envio e recebimento de dados gerados em Arduino ou qualquer outro dispositivo com recursos para comunicação em rede. Pode-se dizer que qualquer dispositivo com conectividade para a Internet com serviço http e capaz de realizar GET e POST pode se comunicar com o ThingSpeak. Com esse serviço é possível por exemplo usar o Arduino para gerar um tweet, criar uma rede social de dispositivos ou controlar a distância motores e outros dispositivos. Nesse experimento vamos utilizar a montagem para medir temperatura e umidade já apresentada, será associada a shield ethernet para comunicação com a rede. Vou considerar que você já tem seu Arduino com o shield montado e funcionando e partir para a criação da conta no ThingSpeak e configuração. Criar a conta é a forma padrão, nome de usuário senha e informações adicionais.
Com a conta criada acesse o menu superior e selecione Canais e depois Meus Canais.
O passo seguinte é criar um canal e configurá-lo. É no canal que serão exibidos os dados.
Preencha as informações como nome e descrição. Os dados serão associados ao Campos numerados de 1 a 8. No meu caso vou usar o Canal 1 para temperatura e o 2 para umidade. Lembre de clicar no botão Atualizar Canal
Para acessar o canal é preciso gerar uma chave de escrita que funciona como um mecanismo de autenticação do seu canal. Acesse aba Chave e clicar no botão Gerar nova chave de escrita.
Com esse passos o canal está configurado e pronto para receber os dados. Vamos para a etapa de escrever o código para o Arduino destacando os pontos principais da implementação. O código completo pode ser obtido aqui.
1. Configure o endereço do site
char thingSpeakAddress[] = “api.thingspeak.com”;
2. Insira a chave de escrita criada anteriormente
String writeAPIKey = “sua chave de escrita aqui”;
3. A linha abaixo faz chamada a função que recebe como parâmetros os campos que serão atualizados, field1 corresponde ao Campo 1 configurado no site, associado aos valores de temperatura e umidade.
updateThingSpeak(“field1=” + v_temperatura + “&field2=” + v_umidade);
Faça os ajustes no código fonte carregue no Arduino e se não houver nenhum problema de comunicação com a rede os dados serão enviados para o ThingSpeak e exibidos na forma de gráfico. Também é possível associar um plugin para por exemplo exibir o dado na forma de um mostrador. Vou tratar disso em outro experimento.
Pelo fato da minha shield ethernet estar travando com certa regularidade configurei o watchdog timer do Arduino para tratar os travamentos.
Tenho deixado esse experimento ligado e executando por vários dias seguidos sem nenhum problema.
Algumas referências e materiais que utilizei nesse experimento: