Baby Monitor using BeagleBone and MIMO Smart Baby Monitor sensor (part 1)

I’m a new dad and consider myself a technology innovator, so it is probably to be expected that I’d look for high-tech ways to monitor my baby, beyond the standard remote cameras. Of course, not all the ways I want to monitor are really easy to reproduce, but the folks at Rest Devices have done something scalable. They created the MIMO Smart Baby Monitor. It uses Bluetooth Low Energy to send data back from the sensor, making it very easy to connect to a BeagleBone Black (or SeeedStudio BeagleBone Green) using a BLE dongle (such as http://www.amazon.com/Plugable-Bluetooth-Adapter-Raspberry-Compatible/dp/B009ZIILLI as we did in https://jkridner.wordpress.com/2014/07/08/ibm-tutorial-on-using-ti-sensortag-with-beaglebone-black/).

The most critical reason I chose to do this is because I don’t want to rely on a cloud service to monitor my child. While I appreciate having the phone app and relatively reliable proxy of the Rest Devices provided cloud service, I really wanted to make sure I had reliable monitoring and notifications within the home, not depending on any network other than between my BeagleBone and the sensor itself. With this sort of setup, I am also looking at eventually automating the bottle warmer such that I have a warm bottle available right as he’s starting to stir. Of course, I still want to be able to visualize things on a web page, but this time just one served up in my private network on a BeagleBone.

For this part 1 article, I’m just going to show you how I started to extract the data. I’ll start looking at analyzing real-world data in part 2.

For my setup, I opted to use an inexpensive Chromebook so that I could hack and monitor via a local web interface. Eventually, I’ll plug the BeagleBone in to wall-wart power and wire it via Ethernet to my local LAN.

mimo_connect_1

I started with the ‘bluez’ tools and the ‘hcitool’ in particular. It took me a second to note that scanning for BLE devices mean using the ‘lescan’ argument.

root@beaglebone:/var/lib/cloud9# hcitool lescan
LE Scan ...
9C:20:7B:A2:1A:5F (unknown)
9C:20:7B:A2:1A:5F (unknown)
68:D9:3C:91:EA:80 (unknown)
7C:D1:C3:00:DA:1E (unknown)
68:D9:3C:91:EA:80 (unknown)
00:07:80:77:C4:5A (unknown)
00:07:80:77:C4:5A
7C:D1:C3:00:DA:1E (unknown)
C1:87:44:21:74:CD (unknown)
C1:87:44:21:74:CD fA7

To figure out which of these devices is actually the MIMO sensor, I opted to utilize a Python library called ‘bluepy’. I discovered it had some simple tools for reading BLE endpoints. Installing ‘bluepy’ was done trivially with ‘pip’. Other devices tended to show some identifying information. Some guesswork led me to believe this was the right sensor.

root@beaglebone:/var/lib/cloud9# python /usr/local/lib/python2.7/dist-packages/bluepy/btle.py 00:07:80:77:C4:5A
Connecting to: 00:07:80:77:C4:5A, address type: public
Service :
 Characteristic , supports NOTIFY READ
 -> '\xaa\xed\x18\x01\x01\x00\x00\x9d\x00R\x86Y'

At this point, I needed to adapt an example for ‘bluepy’ to read this data repeatedly. I called the Python code ‘readturtle.py’:

import binascii
import struct
import time
from bluepy.btle import UUID, Peripheral
uuid = UUID("d96a513d-a6d8-4f89-9895-ca131a0935cb")
 
p = Peripheral("00:07:80:77:C4:5A", "public")
 
try:
 ch = p.getCharacteristics()[0]
 if (ch.supportsRead()):
  while 1:
   val = binascii.b2a_hex(ch.read())
   print str(val) + ""
   time.sleep(1)
 
finally:
 p.disconnect()

Running ‘python readturtle.py’ gave me some results.

root@beaglebone:/var/lib/cloud9# python readturtle.py
 
aaed1800ab00000000000000000000d8e2ca9258
aaed1800a600000000000000000000d7f9ca9558
aaed1800a1000000000000000000001d380a9558

This looked interesting, but it wasn’t obvious to me what the data meant. I figured I could try to reverse-engineer it by applying various stimulus and looking at the changes, but I’ve also been monitoring the Quantified Self forums off and on for a while; I figured it wouldn’t hurt to ask if anyone was trying the same thing. Amazingly, an individual from Rest Devices hopped on and gave me a sufficient break down of the data format (respiration, motion, temperature, etc.) that I should be able to move forward quickly now.

https://forum.quantifiedself.com/t/tapping-into-mimo-smart-baby-monitor/1758

For the on-going work, keep a look out for my next blog post where I actually visualize some respiratory data from my baby. Also, check out my notes and code on my Github gist at:

BeagleBone Green Hands-On: Lower Price, Same Horsepower

Hackaday gets its hands on a @beagleboardorg compatible SeeedStudio #BeagleBoneGreen

Hackaday

Although the BeagleBone Green was announced at the Bay Area Maker Faire last May, there hasn’t been much said about it on the usual forums and IRC channels. Now, it’s finally out and I got my hands on one of them. Through a cooperation between the BeagleBoard foundation and Seeed Studios, the best small Linux board for doing real work with small Linux boards is now cheaper, a little more modern, and green.

The BeagleBone Green is an update to the venerable BeagleBone Black, the dev board based on a TI ARM Cortex-A8. It’s an extremely capable machine with a few interesting features that make it the perfect device for embedded applications. With the BeagleBone Green, the BB Black gets a small hardware refresh and a drastic reduction in price. If you want to do real work on a Linux board, this is the one to get. Check out the review…

View original post 708 more words

Call for Makers is now Open!

Cleveland Mini Maker Faire

Ingenuity and Cleveland Public Library Announce 3rd Annual Cleveland Mini Maker Faire

Call for Makers Now Open

Cleveland, OH – (February 20, 2015) Ingenuity and the Cleveland Public Library announce the third annual Cleveland Mini Maker Faire (CMMF) to be held on June 6th from 10am to 6pm at the Library’s downtown branch (325 Superior Ave. E, Cleveland, OH 44114). Admission is free and open to the public.

This event showcases creativity, innovation, and interactivity from all segments of the maker community including crafts, technology, art, hands-on activities, and more. The CMMF will allow people of all ages to learn, discover, create, and play along with makers from the region’s business, non-profit, and scholastic sectors.

A call for participants is currently open. Individuals, groups, or organizations that would like to demonstrate inventions, crafts, innovations, technology, or creations are invited to apply. To apply, please visit www.makerfairecleveland.com.

“We’re…

View original post 655 more words

BeagleBones At MRRF

Hackaday

[Jason Kridner] – the BeagleBone guy – headed out to the Midwest RepRap Festival this weekend. There are a lot of single board computers out there, but the BeagleBoard and Bone are perfectly suited for controlling printers, and motion control systems thanks to the real-time PRUs on board. It’s not the board for you if you want to play retro video games or build a media center; it’s the board for building stuff.

Of interest at the BeagleBooth were a few capes specifically designed for CNC and 3D printing work. There was the CRAMPS, a clone of the very popular RAMPS 3D printer electronics board made for the Beagle. If you’re trying to control an old mill that is only controllable through a parallel port, here’s the board for you. There are 3D printer boards with absurd layouts that work well as both printer controller boards and the…

View original post 71 more words

Follow

Get every new post delivered to your Inbox.

Join 9,805 other followers