Wild Life Camera using Linkit One

WLC

This is just an idea for now.

For the camera I was thinking of this Grove Camera

GPS will run only at startup to determine location and will be activated to sync to real time occasionally.
Ultrasonic ranger sensor will be used to detect movement in front of the camera and will trigger the camera.
Updates can be sent using the GPRS module.
For example:

  • “Movement has been detected, picture has been taken. (42 images stored)”
  • “Battery is at 33% now”
  • “Battery level is very low, time for a pickup. I’m at [GPS Coordinates]”

Home Monitor

Lately I’ve been working on a Home Monitor using the Linkit One platform.

Setup

  • Linkit One with Grove Shield
  • Grove Sensor Temperature (Green)
  • Grove Sensor Humidity (Blue)
  • Grove Sensor Barometric (Orange)
  • Grove Sensor AirQuality (Pink)
  • Linkit One Battery, GPS & WiFi

Using Arduino Webserver I’ve exposed a simple csv webpage which gets polled by a WinForms application on the same network. The application in turn handles local persistence of all values.

HM001

All values are represented in their color on the line graph.

To Do

  1. Translate GPS value to coordinates
  2. Create Battery monitor controller (lasted how long?)
  3. When polling flash LED
  4. LED Blink RED when battery low?
  5. Persist values to online location (FTP?)
  6. Make winforms application run from internet
  7. Add intelligence (Is room safe? What’s the trend? Email alerts)
  8. Add events (Room triggers)
  9. Add sensors (which ?)
  10. Add Solarpowered Battery Pack & Test usage.
    Should recharge battery during the day.
  11. When discharging, notify winforms application to request less (Power Saving)

Battery Autonomy Test

MARK I

I am using Smartliving as a cloud platform to post my data. You can create a free account on their beta.smartliving.io site.

Source Code for creating assets & publishing data on Smartliving.

SETUP

Checking Battery status every 30 seconds, send update every time to SmartLiving servers. Device is at room temperature of 21°C.

OBJECTIVES
Verify strain on battery life when sending data frequently.

UPDATE Ran for more than 35 hours, updates of assets were not being saved. In the meantime suggest toggling LED based on power levels below 50% (updated code with LED toggling).

UPDATE 2 Running test again, this time with data publishing.

DURATION
Started on                                  16:55 03/02/2015

UPDATE 12:00 04/02/2015       Device still running, line graph stopped working, don’t
really know why. Battery level reads 66%
(range of Linkit One Battery Level is 0, 33, 66 or 100).

Stopped communication on       21:25 04/02/2015

Transmitting live !

As there is no historic data, only live data gets shown. And given that the interval of updates is 30 sec, you might want to wait a minute before the line graph starts showing data. Also since the platform is in beta, the dates aren’t being registered. (Company is aware of this and says it will get fixed in the next update March 1ste 2015.

Track progress on website

REMARKS
In this configuration the battery held out for 28,30 hours. Seems like communication stopped well before then. Looking at the issue. Probably learn more when trying temperature logging.

Checking Battery

Quick example on how to check your battery level.

Battery level returns an int, out of the following possibilities (0, 33, 66, 100). No really accurate, but still interesting to know.

Checking the battery happens like this (more info)

#include “LBattery.h”
unsigned int prevVal = 0;
bool prevBool = false;
void loop()
{
delay(5000);
Serial.println(“Checking Battery”);
//BATTERY
int batteryLevel = LBattery.level();
bool batteryCharging = LBattery.isCharging()==1;

Serial.print(“Battery: “);
Serial.println(String(batteryLevel));

if(prevBool != batteryCharging)
{
Device.Send(String(LBattery.isCharging()==1),a1Id);
prevBool = batteryCharging;
}

if(prevVal != batteryLevel){
Device.Send(String(batteryLevel), a0Id);
prevVal = batteryLevel;
}

if(batteryLevel>50)
{
Serial.println(“LED on”);
digitalWrite(a1, HIGH); //change the LED status to true
}
else
{
Serial.println(“LED off”);
digitalWrite(a1, LOW); //change the LED status to false
}

Device.Process();

Battery & the switch

First thing that went through my mind when looking at the Linkit & its connected battery was: “Is it going to work in a power off/power on scenario?
By that I mean, if I connect the battery, set the device in battery mode and put the device with sensors somewhere, powered by USB cable and the power drops, does it continue on battery power and will it recharge?
On the MediaTek forums they claim that this is indeed the case, but I will need to check. Link

Extra good news is that unlike with the Arduino, pausing the Linkit One with the Delay() function will put the device on sleep while still keeping the Wifi connected. (Link to article)

These cases should be clearly visible in the upcoming tests.

Intro

Hi everyone,

The guys of Seeedstudio were so kind to send me a Linkit One to play around with. I’ve have done multiple setups and have gotten quite a few sensors working.

First topics I’m starting with are Battery related.