Owl Project Details:- ------------- steve symons steve@owlproject.com 07980 650 605 Owl Project is based at Rogue Artists Studios, Chapeltown Street owlproject.com flowmill.org Person Spec:- ------------ Arduino programmer, able to work at least semi-autonomously (should be able to provide documentation of at least 2 previous Arduino projects they have completed). Needs to be familiar with learning libraries from examples, arrays, constructing Strings, systems with multiple states, analog inputs and digital io. Bottom line:- --------- deadline for expressions of interest: Monday 12th September 2011 Deadline for finished programming: 25th September 2011 Duration: About 2 days, partly working alongside Owl Project at Rogue Studios. Most code identified and tested from examples, but needs pulling together into complete system. Overview:- --------- A small part of the ~Flow project (see owlproject.com) requires the transmission of Data and Text online and to Twitter. We wish to run a 48 hour test on the 29th September 2011. Every half hour river water will be pumped into a bucket, with sensors inside. Readings will be taken, stored if necessary and then broadcast. Required Work (what we want programmed): ---------------------------------------- Arduino Mega state based system to take data samples and to post to web interface (provided) and twitter using GSM PLayground shield. Up to 10 analog samples to be taken and max/min levels stored locally, GSM interface to be power managed. Sampling trigered by external switch and/or half hourly using timing chip (NBDS1307 REALTIME CLOCK KIT, see http://www.ladyada.net/learn/breakoutplus/ds1307rtc.html) System must also be able to activate an external solenoid (a water pump) and then monitor an input for water level control. All GSM and sensing code to be written into own methods Outline below is not definitive - exact state diagram etc to be design alongside Steve Symons from Owl Project. NB 1) see GSMplayground Library examples (most recent version) for module control, HTTP GET and SMS 2) visual triggers/lights for states to be added at later stage ============================ variables ============================ currentData[10] -- most recent sensor readings maxData[10] -- max sensor readings minData[10] -- most recent sensor readings maxminFlag -- series of bit flags for setting GSM? also need constants for i/o pins ============================ main loop ============================ case status of.. waiting for trigger: filling: emptying: starting GSM: sensing and storing: stopGSM broadcasting: tidying-up: MonitorOtherAnySensors() RandomTwitterComment() ---------------------------- endof main loop. ---------------------------- State Specific Method descriptions =================================== waiting for trigger: ---------------------------- Check external switch trigger, if not triggered then check external timer chip - has 30 mins passed? If so then start logging system ** change state to "filling" ---------------------------- filling: ---------------------------- start pump if need be if full, stop pump and ** change state tp "sensing and storing" ???time out error??? ---------------------------- emptying: ---------------------------- possibly not needed at this stage - as depends on pump flow and waste flow speeds. ---------------------------- starting GSM: ---------------------------- enable module if not enabled if time out then ** change state tp "stopGSM" if active then ** change state to "broadcasting" ---------------------------- sensing and storing: ---------------------------- up to 10 analog inputs sensed and stored as current (pos storing of max/min, and setting of max/min flags) ---------------------------- broadcasting: ---------------------------- construct String message of data, create and add timestamp ... use http get/post to send to server ** Twitter message ** change state to "tidying-up" ---------------------------- tidying-up ---------------------------- stopGSM() clear any flags, set max/min etc ** change state to "broadcasting" Other possible Methods ================================== stopGSM() startGSM() sendDataGSM(message) sendTwitter(message) generateTwitterMessage() getTime()