Tuesday, October 25, 2016

Particle Photon MQTT Integration With Adafruit.io,IFTTT,and Google drive

For the past few days i have been actively exploring the features of Particle Photon in other IoT platforms.We already have discussed about particle in older posts.In this post i am going to explain
  1. how to visualize sensor data from particle in Adafruit dashboard.
  2. how to create IFTTT channel in between adafruit channel and google drive.
We already discussed that how to visualize data from particle in Thingspeak.In that example we were using data from particle event(particle.publish).But here we are not using particle.publish.Instead we are going to use MQTT protocol.There is library available for mqtt implementation to adafruit.io.

Before starting this you have to
  1. create account in adafruit.io
  2. create account in IFTTT
In the time of creating account we have to note two things
  1. username
  2. AIO key
we have to give these data in particle code

// This #include statement was automatically added by the Particle IDE.
#include "Adafruit_MQTT/Adafruit_MQTT.h"

#include "Adafruit_MQTT/Adafruit_MQTT_SPARK.h"
#include "Adafruit_MQTT/Adafruit_MQTT.h"

/************************* Adafruit.io Setup *********************************/

#define AIO_SERVER      "io.adafruit.com"
#define AIO_SERVERPORT  1883                   // use 8883 for SSL
#define AIO_USERNAME    "username"//replace with your user name
#define AIO_KEY         "8c6b48de9fab4r2da9f2463e79373ee"//replace with your key

/************ Global State (you don't need to change this!) ******************/
TCPClient TheClient;

// Setup the MQTT client class by passing in the WiFi client and MQTT server and login details.
Adafruit_MQTT_SPARK mqtt(&TheClient,AIO_SERVER,AIO_SERVERPORT,AIO_USERNAME,AIO_KEY);

/****************************** Feeds ***************************************/

// Setup a feed called 'voltage' for publishing.
// Notice MQTT paths for AIO follow the form: /feeds/
Adafruit_MQTT_Publish voltage = Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/voltage");



/*************************** Sketch Code ************************************/
int x = 0;
void setup()
{
    Serial.begin(115200);
    delay(10);
    pinMode(A0,INPUT);
    Serial.println(F("Adafruit MQTT demo"));
   
    // Setup MQTT subscription for onoff feed.
    mqtt.subscribe(&onoffbutton);
}

void loop()
{
    int value=analogRead(A0);
  if( mqtt.Update() ){
 
        voltage.publish(value);
     
  }
    delay(10000);//delay is important here
}



please not the lines in code

#define AIO_USERNAME    "username"/
#define AIO_KEY         "8c6b48de9fab4r2da9f2463e79373ee"
replace those lines with your username and AIO key

Here I am just posting some data from analog pin A0 to adafruit.io using MQTT.

Circuit

wire up the circuit as given above and upload the above code after adding the library.
Now open adafruit.io
In Your Feeds tab you can see our new feed "voltage"by clicking on that you can see simple graphical visualization of the feed like below
Now we can create our own dashboard by clicking Your dashboard tab. We can add different blocks to our dashboard and add our feed to it

You can set labels for graphs,can set maximum value and many other features.You can test your own blocks.After setting dashboard rotate the preset and change voltage in A0 pin.Now you can see values changing in dashboard according to  changes in hardware

IFTTT recipes integration

No we can integrate this with IFTTT for that click on settings tab
 Add IFTTT in settings page and save.
Then we can set up our own recipe with adafruit and google drive channels.You can see all available channels in channels tab
if you are not already connected with adafruit channel, connect  with it here
then connect with google drive channel
Now by clicking create new we can make our own recipe






You can also use my published recipe for testing

IFTTT Recipe: adafruit dashboard google drive integration connects adafruit to google-drive





Now you open your google drive you can see one new folder created in the  path adafruit/io/{{FeedName}}
you will have new spreadsheet created named adafruit.io.{{FeedName}}
Now open that google sheet you can see data  from adafruit dashnoard.


Here in this recipe we are posting to spreadsheet if the feed value is greater than 700.I think there is much more platforms are available for this king of integration.I am still exploring.And I would like to mention one more thing  that you can directly integrate particle with IFTTT.particle have its own channel in IFTTT .It can access particle events and particle variables.I had some hacks using those also,like email triggering according to sensor value,PUSH notification using IF notification channel etc
I will try to post more about these in my next posts.




Thursday, October 20, 2016

Webhook from Particle Photon to Thigspeak

In one of my old blog post we already had a introduction about the Particle IoT platform.As we discussed there particle events have many application and can be integrated to many other IoT services like webhooks,Thingspeak,IFTTT,Ubidots, etc.In this post i am going to share that how to create a webhook to thingspeak from particle.
It is very simple ,actually we are just using the particle event (particle.publish) here.No tactical coding is needed to send data to thingspeak from particle using webhook.for demo purpose i am just showing how to visualize varying analog voltage graphically in thingspeak.Here i am using a potentiometer to change the analog voltage.You can change it to any other sensor and visualize data graphically.even you can embed this graph into your personal site.

Wire up your particle photon as shown in the above circuit.Then open particle Web IDE and upload the below code to your photon.The code is simple it is just publish an event which is publishing the analog voltage on pin A0 in every 1 minute.

void setup(){
pinMode(A0,INPUT);
}
void loop() {
// Get some data


int value=analogRead(A0);
String val=String(value);


// Trigger the webhook
Particle.publish("value", val, PRIVATE);
// Wait 60 seconds
delay(60000);
}



Now we have published an event named "value". We can see the updates of this event in particle console.
Now we can create new  integration .For that select new integration in console and select webhook
You can see the above screen.Now we have to create a channel in thingspeak and fill the data to above form.Now open thingspeak and create a new account if you are new to thingspeak .Then create a new channel and note the channel API



Now we can fill the webhook form in particle console.Fill the boxes like below
  • Event Name=value
  • URL=https://api.thingspeak.com/update
  • Request type = POST
  • Device = Your device name
Now press advance setting tab and fill the boxes  

  • api_key: YOUR_API_KEY
  • field1: {{PARTICLE_EVENT_VALUE}}

now the webhook to thingspeak is created.Now you can see graphical representation of your sensor values in thingspeak


You can also embed the graph in your site also.

Tuesday, October 11, 2016

Arduino Wireless Remote with 2.5GHz NRF24L01



In many projects we may need wireless communication between different microcontrollers.For that we are using different modules like XBee/Zigbee, simple RF,bluetooth/BLE etc.Now on this blog I am going to explain a different wireless transceiver module NRF24L01 which is working on 2.5GHz ISM band frequency.

I was so lazy to work on this module since this is not a breadboard friendly module and i was not having female to male headers.And I was too lazy to make a connection circuit to this module to breadboard.Meanwhile i got an invitation from collaborizm a platform for entrepreneurs/engineers/creatives.I was about to have a look on a project on NRF24L01.So I tested my module for the first time.

NRF24L01 is designed for ultra low power wireless applications.It is a transceiver with an embedded base band protocol engine named Enhanced ShockBurst™.The module can be interfaced with arduino or any other microcontrollers via SPI bus.

Applications
  1. In wireless PC peripherals like keyboard,Mouse etc
  2. Remotes
  3. Toys
  4. Home automation
  5. Asset tracking systems
  6. Active RFID systems
  7. Ultra low power sensor networks
Demo project 
Here I am going to showcase a simple NRF24L01 based transmitter and receiver.Transmitter is act as remote control and receiver will ON/OFF a  LED in accordance with the data received.I am using arduino pro minis as my microcontrollers you can use your own arduinos.
you can  find the  arduino library for nrf24l01 here

Connection 

nrf24L01------Arduino
  • vcc-----3.3V
  •  GND----GND
  • MISO---pin12
  • MOSI---pin11
  • SCN---pin10
  • SCK---PIN13
  • CE----pin9
The connection is same for both transmitter and receiver you can find the fritzing project  files here



Transmitter






Receiver