X

Sorry...Pre-order has been closed.

Pre-order of Qmote has been closed since March 31st, 2016. We are currently working on the production of "Qmote S." Please stay tuned! We will be back with the exciting Qmote S soon!

Here you may sign up "Qblinks Update" to get our latest news!

Development Kit
Qmote is an intuitive, single-button remote control which lets you
perform actions on your phone, even when it’s out of reach.
Project 3: Ambient Temperature Logger on Dropbox
SEP 14, 2015
written by Qblinks
Makers

Using Arduino and an ambient temperature sensor, this project allows you to take ambient temperature and humidity readings at preset intervals, perhaps every 1 minutes, and then upload the record to Dropbox, Google Drive or other free cloud resource without need of any additional cloud or app programming.

Material Used:

Arduino includes:
- Qmote Maker's Module
- Arduino Uno or Arduino Pro Mini
- Sensirion SHT3x-DIS with breakout

Arduino Library Used:
- AltSoftSerial (https://www.pjrc.com/teensy/td_libs_AltSoftSerial.html)
- SHT3x library (https://github.com/winkj/arduino-sht)

This demo project uses Sensirion SHT3x for a better accuracy. You could use different temperature/humidity sensor, for example, DHT11 or DHT21. SHT3x-DIS is using I2C bus, so A4/A5 ports of Arduino are used in this project. Qmote Maker's Module communicates with Arduino in baudrate 38,400. This project is using Arduino software serail with the Maker's Module, instead of the programming/serial monitor UART, so you can keep using it with the development IDE. The Arduino software UART isn't working too well in bardrate 38,400, so AltSoftSerial library is used instead.


Make this project compact with Arduino Pro Mini:

 

/*
  Qmote Humidity and Temperature Logger with Maker's Module

  Get the humidity and temperature reading and log them on the cloud storage will never be easier with Qmote Maker's Module
  For more information, please refer to http://qblinks.com/devkit
  For Sensirion SHT3x Arduino library, please refer to https://github.com/winkj/arduino-sht
  Fot the information of AltSoftSerial, please refer to https://www.pjrc.com/teensy/td_libs_AltSoftSerial.html
  
  Author: Samson Chen, Qblinks Inc.
  Date: Aug 27th, 2015
*/

#include 
#include 
#include "sht3x.h"

// Using Sensirion SHT3x for the accurate measurements
SHT3X sht3x;

// for AltSoftSerial, TX/RX pins are hard coded: RX = digital pin 8, TX = digital pin 9 on Arduino Uno
AltSoftSerial portOne;

void setup() {
  // Setup SHT3x
  sht3x.setAddress(SHT3X::I2C_ADDRESS_44);
  sht3x.setAccuracy(SHT3X::ACCURACY_MEDIUM);
  Wire.begin();

  // Start the software serial port
  portOne.begin(38400);

  // let serial console settle
  delay(1000);
}

void loop() {
  String qmoteCmd;

  // read SHT3x
  sht3x.readSample();

  // let SHT3x read
  delay(1000);

  // get Qmote command for plaintext
  qmoteCmd = "ATBN=0x0A,\"RH=";      // using click combination code 0x0A
  qmoteCmd += sht3x.getHumidity();
  qmoteCmd += ", Temp=";
  qmoteCmd += sht3x.getTemperature();
  qmoteCmd += "\"\r\n";

  // output to Maker's module
  portOne.write(qmoteCmd.c_str());

  // delay before next command
  delay(2000);
  
  // get Qmote command for ThingSpeak.com with Humidity
  qmoteCmd = "ATBN=0x09,\"";        // using click combination code 0x09
  qmoteCmd += sht3x.getHumidity();  // To save UartMsg size, leave "field1=" to IFTTT
  qmoteCmd += "&field2=";
  qmoteCmd += sht3x.getTemperature();
  qmoteCmd += "\"\r\n";

  // output to Maker's module
  portOne.write(qmoteCmd.c_str());
  
  // delay a minutes until next reading
  delay(60000);
}

 

Add this Qmote in the Qmote App. Create two IFTTT patterns, one is Long-Short-Short-Short (combination 0x09), another one is Long-Long-Short-Short (combination 0x0A). These two combinations will be used as two different recipes in IFTTT.

Go to http://thingSpeak.com, sign-up and create a new channel. Enable Field 1 and Field 2, as Humidity and Temperature. Go to API to find your Channel-Write-API-Key. We will need this API key for the information update.

The Arduino actually sends the following two commands every minute:

ATBN=0x0A,"RH=xxx, Temp=yyy"
ATBN=0x09, "xxx&field2=yyy"
(where xxx=humidity, and yyy=temperature)

Two IFTTT patterns have been created previously, so the above two commands will send the data to IFTTT. We are going to use them.

Recipe 1: Send the data to ThingSpeak.com

Create IFTTT recipe that the trigger is Qmote that the click pattern is -..., and the action is Qmote's Connection to the Internet Service with the following configurations:
  Destination URL: https://api.thingspeak.com/update
  Http Mathod: Post
  Http Parameters: api_key={your_api_key}&field1={{UARTMsg}}

Information sensed by Arduino will be sent to ThingSpeak.com at the end. You can use the ThingSpeak.com visualization to show your statictics. Or you can use the MatLAB features of ThingSpeak.com to perform some analysis.

Recipe 2: Log the information on Dropbox

With the other command sent from Arduino, you can use it with your cloud storage, for example, Dropbox. Create IFTTT recipe that the trigger is Qmote that the click pattern is --.., and the action is to append text in your Dropbox.

It was really easy to make IoT applications with Qmote Maker's Module. With you imaginations, you can create a lot more applications with it.

Comment