I'm finally trying the Microcontrollers.
What you see here (L to R) is an Arduino Uno with USB Shield, a Teensy 3.1 with USB Shield and an Arduino Mega ADK. Currently the ADK setup is running with the Dexcom and the TI watch. Battery life is amazing. I have the Mega written to "wake up" every 2 minutes, get the number from the Dexcom and update the watch, so the Mega is only using full current for a couple of seconds out of every 2 minutes.
The big hurdle with the microcontrollers, is USB support. The Mega ADK comes with a single port, so I've added a USB hub. I also was working with two Arduinos using I2C, one communicates with the TI the other with the Dexcom. The problem with that configuration, is I can't save power by putting the Arduinos to sleep.
I may be able to get by with a very small battery, and have everything work for days without a recharge. The TI watch has yet to require a charge since I purchased it last year. The Metawatch needs a charge daily.
The Arduino Uno, was a failure, it can't handle the amount of data coming from the Dexcom. I'm hoping the Teensy will work. If it does, this will be almost pocket sized.
I also have on order a transmitter for the TI, that may have improved range. Might be a week or two before I see that. Also, with this device, I'll only need one USB Port, so the hub goes away.
Snowy weekend coming up, hope to at least see if the Teensy will work.
Thursday, January 2, 2014
Friday, December 6, 2013
Tuesday, November 12, 2013
Changing the Transmitter Battery ?
Well, I'm getting screwed by my insurance company, so I'm paying for the transmitter out of pocket.
Once I have my replacement in hand, we will be covering replacing the transmitter battery.
Stay tuned.
12/6: Update: Battery is still working. I think the low battery conniption the Dex throws must be coded in, and has nothing to do with the battery. Very uncool. Do the math, if the battery was so low 40 days ago, that the receiver was missing signals etc., for a week, how does it fix itself and work problem free after that? Range is still great, not like some internal setting kicked the transmitter output down to conserve battery.
Once I have my replacement in hand, we will be covering replacing the transmitter battery.
Stay tuned.
12/6: Update: Battery is still working. I think the low battery conniption the Dex throws must be coded in, and has nothing to do with the battery. Very uncool. Do the math, if the battery was so low 40 days ago, that the receiver was missing signals etc., for a week, how does it fix itself and work problem free after that? Range is still great, not like some internal setting kicked the transmitter output down to conserve battery.
Friday, September 27, 2013
Software Improvements
I've had a while to field test this. Lost one watch water skiing. Some issues that have been bothering me:
- Since the RasPI doesn't have an internal clock, and the MetaWatch resets each time you re-charge it (ridiculous), I have to spend a few minutes with the RasPI networked to get the time correct. Not ideal, this needs to be as close to "grab and go" as I can get it.
- Bluetooth issues. This thing uses "bleeding edge" bluetooth. I create a new bluetooth connection to the watch every time there's a new value to send. Intermittently, I start getting "bluetooth.btcommon.BluetoothError: (113, 'No route to host')" errors. Sometimes the device recovers, or I just reboot the PI and things go back to normal.
The Time Issue:
Finally figured out how to get the current time from the Dex. I do this on startup and set the RaspPI system time to the current time reported by the Dexcom. This keeps everything in sync, and gives me a functional watch to boot. One of many "interesting" issues here, C# on Debian doesn't do dates. Huge bug. Luckily, I can pass "Seconds since the epoch" to the Unix date function and it does it for me.
Bluetooth:
I've been using "/etc/init.d/bluetooth restart" after every call to the watch. Randomly, the bluetooth device time's out, and stays unreachable. Determined today that calling "hciconfig hci0 reset" fixes that issue. So now I'm using hciconfig after every call instead of restart.
Thursday, July 11, 2013
Getting it Smaller
Took a shot at reducing the case size. The large version(7"x5"x2") is good for 7.5 hours, and is nearly indestructible. The small case is a tiny fishing tackle box, the size of a match box(5"x3"x1.75"), good for 2.5 hours. I've left a USB cord attached to it, so it can be plugged in whenever possible. Decent for trips to the gym.
5" long is as small as you can get and fit the Dexcom with it plugged in. Had to special order a 90 degree micro usb plug.
A picture of the inside of the box. The battery is underneath. The switch allows me to charge the battery while still running the PI. Not sure what's with this brand of battery/charger circuit(enercell), but it shuts off power when charging. The PI has been extensively modified. I've cut off just about everything that sticks up. Also, relocated the USB ports. Allot of time was spent with a magnifying glass doing this work. I've also shortened the numerous USB cables. You run out of room fast with extra cord length. USB plugs were also shaved with a razor blade to make them lower profile, and more bendable. Power is supplied to the PI via the GPIO pins, since I didn't have another 90 degree USB. Also removed the case from the battery, which freed up 1/8", allowing the Dex to sit on a plastic plate, and not directly on the circuitry beneath.
Did some additional tests with the Chronos, battery life is shorter on the transmitter side then using bluetooth. So the Chronos is entirely out of the picture now.
Monday, July 1, 2013
A fully functional Dex Watch...
Finally got this running on a Raspberry PI, so it's portable.
This is a waterproof Otterbox. Costs about the same as the Raspberry PI. The PI is underneath the Dexcom. Some modifications were made to the PI with a dremel! I removed the audio out and all the pin headers, to allow the battery to sit flat in the case. The Powergen battery gives about 7.5 hours.
I'm now using the Metawatch. This is the only Waterproof smart watch on the market(at this time).
There's still mud on the watch from its first enduro.
I was also hoping for increased range, between the PI and the watch, but I'm not really getting that. The range is maybe a few feet greater than the TI Chronos. What I do get is an easier to use API for the watch, and the ability to make the watch buzz, for low and high alerts. That's glucose on the left, the minute the reading was taken on the right. Also, in the center I show up or down arrows for rapid rise/fall rates. The minute indicator is so I know if things aren't working.
Initially I wrote everything in C#. Then I ported it over to Linux on my laptop. In Ubuntu Linux, I was unable to communicate with the Dexcom using the driver that Linux chose. Luckily, when I tried this on the Raspberry PI, the driver that loaded there, worked fine.
Getting the Metawatch working was also a challenge. I ended up using a python script (pymw.py) that is publicly available. The C# drawing routine that I was using to generate the bmp for the display wouldn't run on the PI, so I ended up making a call out to imagemagik.
This is it for now. I'm still not thrilled with the overall size, but it works for me. I think it could be feasible to use a jail broken iPhone 5, the major hurdle would be the USB driver.
This is a waterproof Otterbox. Costs about the same as the Raspberry PI. The PI is underneath the Dexcom. Some modifications were made to the PI with a dremel! I removed the audio out and all the pin headers, to allow the battery to sit flat in the case. The Powergen battery gives about 7.5 hours.
I'm now using the Metawatch. This is the only Waterproof smart watch on the market(at this time).
I was also hoping for increased range, between the PI and the watch, but I'm not really getting that. The range is maybe a few feet greater than the TI Chronos. What I do get is an easier to use API for the watch, and the ability to make the watch buzz, for low and high alerts. That's glucose on the left, the minute the reading was taken on the right. Also, in the center I show up or down arrows for rapid rise/fall rates. The minute indicator is so I know if things aren't working.
Initially I wrote everything in C#. Then I ported it over to Linux on my laptop. In Ubuntu Linux, I was unable to communicate with the Dexcom using the driver that Linux chose. Luckily, when I tried this on the Raspberry PI, the driver that loaded there, worked fine.
Getting the Metawatch working was also a challenge. I ended up using a python script (pymw.py) that is publicly available. The C# drawing routine that I was using to generate the bmp for the display wouldn't run on the PI, so I ended up making a call out to imagemagik.
This is it for now. I'm still not thrilled with the overall size, but it works for me. I think it could be feasible to use a jail broken iPhone 5, the major hurdle would be the USB driver.
Wednesday, June 5, 2013
Conquering the Dexcom API's and Shopping for Watches
I've made great progress with finding what to call in the Dexcom DLL's. 7 lines of code and I can get an XML document with everything on the receiver in it. This works great from Windows.
Now the hard part. I've figured out how to parse the raw serial data coming out of the Dex. This should allow me to port this over to Linux without needing the Dexcom DLL's. A rainy weekend is forecast, so I'll be trying to communicate with the Dex from the Raspberry PI. I've already confirmed the PI will talk to the TI Watch without issue.
Now that I'm getting close, I'm getting greedy. The TI Watch will work perfectly for my hazardous duty requirements, but it only has a transmit range of 10 feet or so. The Dexcom will go to 20 feet. I think I might have to look into the MetaWatch, water resistant and capable of greater distance with bluetooth.
I'm trying to avoid having to network with a Smart Phone though. I don't want to have to pay for Hotspot features, nor do I want to be dependent on cell phone access.
Now the hard part. I've figured out how to parse the raw serial data coming out of the Dex. This should allow me to port this over to Linux without needing the Dexcom DLL's. A rainy weekend is forecast, so I'll be trying to communicate with the Dex from the Raspberry PI. I've already confirmed the PI will talk to the TI Watch without issue.
Now that I'm getting close, I'm getting greedy. The TI Watch will work perfectly for my hazardous duty requirements, but it only has a transmit range of 10 feet or so. The Dexcom will go to 20 feet. I think I might have to look into the MetaWatch, water resistant and capable of greater distance with bluetooth.
I'm trying to avoid having to network with a Smart Phone though. I don't want to have to pay for Hotspot features, nor do I want to be dependent on cell phone access.
Subscribe to:
Posts (Atom)
