Have you ever though about using the Internet-of-Things to search for easter eggs - we call it now the Internet-of-Eggs #IoE, hunting for eggs is getting into an new level of fun!
a. The proximity detector ... the eggs know that you are close - not you ...
b. The retrieval avoidance sensor ... gives the eggs a chance to hide themselves ...
c. add YOUR ideas ... it´s open ... it´s #Arduino compatible and may talk to your App!
Oh btw the egg has enough space to carry surprises too.
The project just started couple hours back (April 3th) --- will add more details during the day ... stay tuned!
Step 1:
Select your favored egg design from e.g. thingiverse, I used this one, love the design:
http://www.thingiverse.com/thing:734951
Step 2:
Print your egg on a 3D printer - lucky if you have one ;-) or find one in your makerspace close by!
Step 3:
Now we do need to think about the UX - what should capability do need our egg?
Proximity detection, there are two ways of interaction:
- using Beacon proximity (BLE) to find the egg, that one is easy, we read the Bluetooth(TM) Smart RSSI value and you use your favorite BLE scanner App, e.g. use the "Locate" App from Radius Networks. This app shows nicely the distance to the egg!
Hint: don't forget to calibrate your RSSI receiver app - 1 meter distance 30 sec measurement of the RSSI e.g. -72, this makes sure the hunters are getting right values of distance!
- making the egg proximity aware - it will detect that you are close by and takes action, that one is harder, you do need a BLE module which can become a scanner e.g. BLE112 and you use the BGLib and some lines of Arduino Code - done!
Retrieval avoidance, the egg could hide, act or sound ...
- an 9 axis, absolute orientation sensor will be used to detect movement of the egg, is somebody touching the egg, or tries to move it, or ...
More specifics on the retrieval avoidance mode:
a. as we can san BLE devices (e.g. Smartphones) close by, when they turn on an beacon App (like the Estimote App) - the BLE112 / Platinchen can scan them and detect their distance based on the received RSSI value, using the BGlib (see above).
b. now as the egg know the proximity off an retriever we can take now actions:
- switch off the RGB lightning
- turn on an motor to move the egg, the two part of the egg shell can be connected to motors ... or you can use a Vibrating Mini Motor Disc plus motor controller for fun movements of the egg! (we just tried it)
c. if we have not used the scan mode of the BGlib, we could switch off the BLE advertisement if retriever is coming close by ...
You see there might be tons of ideas and actions we can assign to the egg!
BTW as we are talking about the Internet-of-Eggs #IoE, we could connect the eggs to a mesh network ...
Now combing the new super strengths of our egg: proximity awareness and motion sensitiveness, we do get a super fun egg hunt ... the egg can take actions e.g. roll on, change color, sound, ... you name it!
YOUR ideas ...??
Step 4:
Assembly and programming. The egg can be easily be snapped together. We will put in to the egg our electronic components: Arduino Mini Pro 8MHz/3.3V or "Platinchen" (carries an BLE too) ... wire the sensor to the I2C ... BNO055 from Bosch is our choice for the absolute orientation ... add an WS2812N RGB LED ... most done.
Hint: put the battery as balance weight in the lower part of the egg ;-)
Step 5:
Deploy it into the wild - have fun ... and don't forget to put an surprise inside the egg!
Tuning:
Battery:
We might want to use the egg with more options for actuators like motors etc. So we need more power - adding a 2xAAA battery holder.
Sound:
We use an transducer (3V - 4kHz) to alert if the egg was moved or shaked.
Arduino Code is very simple, we connect to digital 2 as the piezo has its peak at 4kHz we tune it on 4000:
tone (2, 4000);
Motor:
To make the egg turn away or make funny movements when retriever is close by we applied an motor - in this case an vibration motor with dedicated controller attached to the I2C bus:
// set the effect to play
drv.setWaveform(0, effect); // play effect
drv.setWaveform(1, 0); // end waveform
// play the effect!
drv.go();
In the wild!
Lucky it is water resistant - that was not planned ;-) RSSI feed ist good ... now further work on the retrieval avoidance mode is required ...
Comments