-
Wireless firmware upload for uECG!
10/03/2020 at 13:12 • 0 commentsYou probably have noticed that updates began to appear more and more often! To be honest, we are also happy about this...
The development of the device partly coincides with our development, too, because the technologies we apply here are related to our growth as specialists. For example, a year ago we were able to make only primitive applications - rather, more data output to the screen - and over the past six months the quality and functionality of the application has grown significantly.
But today I would like to tell you a little about the technology that we have been trying to implement over the past few years: the bootloader. It is very strange, but no matter how we looked, we hadn't seen a single post covering the whole process, a single implementation available. Possibly it is because Nordic's softdevice has it, and even though this code is closed and proprietary, it gets the job done - so people are more or less ok with it.
Not us though. And it's in fact a very simple thing - but somehow it is not properly described anywhere! So we had to improve our knowledge of ARM architecture, linker scripts, physical memory layout of the program - and when it was good enough, actual programming of a wireless bootloader took less than two weeks. Yet the whole way to that point took about 2 years, with 5 or 6 failed attempts in the process. Hopefully our code and notes would save this time for anyone trying to do the same: https://github.com/ultimaterobotics/uECG/tree/master/ultimate_bootloader_uecg
So, at the end of August it finally became possible to upload firmware via radio! It is very cool! And we hope reliable... so we advise you not to rush to throw out st-link programmers just yet... We filmed a video review of the firmware upload process and will add this part to the instructions. But we will also record a separate video so that everyone who received the device before September 1 can upload the firmware without a programmer.
So we'll be in touch! And write if you have questions / suggestions / and just kind words!
-
uECG now on Windows!
09/21/2020 at 18:29 • 0 commentsUnbelievable, but it is a fact! We have finally released our application for Windows, macOS and Linux!
Initially, we were not sure that there would be a need for Windows application, but with your feedback we realized our mistake :) The process of installing and launching the application is described in detail in our Instructions section. We added all updates and new features there.
Also, while we were working on Windows app, we somewhat expanded its functionality. We added new charts, namely temperature (yes, we never told you, but there is a thermometer inside as well - but not really precise, so it's of less use for medical purposes) and battery voltage. And PC app works with x8 higher data rate than Android - which allows to see more details of the signal! But other than that, it is very similar now.
We invite you to watch our joyful greeting and review of the application in a new video!
-
A major app update (ECG plots, Poincare, HRV, accelerometer data)
09/08/2020 at 20:21 • 5 commentsOver the past six months, we have been biting our nails in hope for feedback on the use of uECG. But the feedback we got was mostly about the fact that the mobile app does not run on one phone or another… so we did a major app rework!
And also added new functionality:
- Poincare plots;
- HRV, BPM, GSR and accelerometer graphs;
- app can now run in the background;
- a lot of UI updates, like convenient interval choiceThe new app (already on Google Play) works on all of our four phones, on Android 6 and above - we checked up to Android 10 - but there is a trick with Android 6 phones to make it run. We recorded a short video to demo the new features and also show every step from installing to using the app.
We hope you find this video interesting and useful!
...and that now you will be able to actually use our app :) -
uECGs in stock on Tindie and last few months recap
07/13/2020 at 08:45 • 2 commentsHi everyone and hope you're in good health! We're back. Spent this time surviving under quarantine and returned to freelance for this, because COVID hit just before we could get the shop going.
It's been a few hard, but very interesting months. In time left from commercial projects, we tried to develop something useful for COVID and hit some hackathons (including EUvsVirus, which was amazing). This spawned two new projects - a bluetooth oximeter and an Odroid-based patient monitor.We also made a video with our thoughts on medical certifications featuring the patient monitor - apparently too edgy at the time of making, but look what's happening now. Major stuff all over the world. Maybe we'll see the end of gatekeeping in the medical industry not in several years, but much sooner!
Until then, we are going to do what we can from our side, which includes finally opening the shop. Or rather two shops: the Tindie one for global sales and our Ukrainian one for local sales. That'll have to do until we find a good international card payment system that works in Ukraine. With Tindie, we've had two problems: no PayPal (not available for receiving in Ukraine) and no money for paying initial order shipping fees because funds from sales become available on Tindie after one month only and everything we've earned from freelance we've spent on rent and food. Now we managed to secure both - a friend will host PayPal for us, and we also have some extra funds.
So without further ado, the Tindie shop is now open and uECGs are in stock! We're putting a small amount out for now. We'll add stock gradually if we have money left for shipping! :) Those who are on the waitlist, will receive emails automatically.
-
An Android app adventure
02/17/2020 at 20:44 • 0 commentsWe started writing Android app at the beginning of last year. Since most of the development was on my (Dmitry’s) Meizu phone, that’s the only phone it was tested on. Only after some time we found that not all phones on our team were able to run the application. A lot of things happened - Maker Faire, factory production, then manual assembly, packaging and distribution of devices. Only a couple of weeks ago we realized that a problem with the application could affect many users.
I’m a beginner Android developer. To be precise, I only wrote one Android app - once I copy-pasted something that works kinda the way I like, and since then I made many variations of that first app for different purposes. Even BLE functions were partially inherited from previous projects (these I proudly wrote myself using Android documentation, because I couldn’t find any example simple enough to understand). With one important difference: in uECG protocol, data stream really pushes capabilities of BLE advertising mode (not theoretical limit, but a practical one, where really a lot of packets could be lost). And I wanted advertising mode because it’s much simpler to implement on the device side. Yes, about the device side: there’s one thing - we are not using softdevice, for a number of reasons (microseconds-precise timing, LEDs driver, 1 ms data processing cycle - all of that is based on interrupts and softdevice would delay them. It kinda can be workarounded and/or reduced - but why restrict future development options?). So I’ve implemented advertising protocol manually. And it worked with my phone just fine (as well as team members’ phones at the moment), everything was going well, until we got a new phone and started to test with it. To my surprise, nothing worked at all - that new phone was just ignoring packets. I’ve started to dig into BLE documentation and wrote a BLE sniffer. In a few days I found and fixed several things that weren’t compliant with BLE specification (yet worked on older phones). And… nope, it still didn’t work on the new phone. Except for some strange cases: once in 10s or 100s of thousands packets something was getting through. I started to suspect that packets that actually got through were corrupted but by chance had correct CRC. Sure enough, after 3 days of experiments I found that custom data field length should be different from what’s described in BLE documentation (at least from that particular document I was using: actually there is no single point where you can get all the data you need). As soon as I changed it, everything started working on all of our phones… except for my own old one! After some more guessing I realized that Android banned my application from using any active form of BLE scanning - so when some other app was scanning BLE in the background, my app also received the data and worked just fine. But as soon as other, non-banned app, was turned off - my app stopped working too. I still have no idea why it happened and what to do about it (not a single hint anywhere), but apparently this is a problem of my particular phone and my Android being not happy with my code. I can live with that! :)
App in play store: https://play.google.com/store/apps/details?id=com.ultimaterobotics.uecgmonitor4_2
Source code: https://github.com/ultimaterobotics/uECG/tree/master/uECG_v4_2_monitor -
uECG instruction update
02/11/2020 at 02:22 • 1 commentWhile the shop is in last stages of development, we uploaded a new instruction for uECG! After sending first devices to Ingiegogo backers, it was time to seriously update the instruction section, cause it only contained information about the firmware. It now has 8 steps - for complete experience, we added lots of pictures and a video:
https://hackaday.io/project/164486/instructions
The instruction contains info about uECG kits, but it's also useful if you want to assemble your own uECG or just interested in the device, its parts and how everything works.
The first step is unpacking - we decided to show in detail what you receive if you order uECG. The second and third steps are power on and usage - turning on the device and placing it on the chest. Simple actions, but better to show them. Step 4 - using the app: we uploaded the app on Google Play and now you can download it (it’s free, of course) and use it to receive data from uECG on the phone. Steps 5 and 6 are power off and charge. And then, steps 7 and 8 - firmware update, showing how to connect the STLink programmer and pogo pins, and the firmware upload process itself.
Feedback is very important to us, so please write in the comments if you have thoughts or questions (especially if you already have uECG :)In the meantime, here’s a video instruction showing how everything works:
-
We are opening an online shop!
02/04/2020 at 00:35 • 0 commentsOkay, time to address the elephant in the room: the Tindie waitlist! There are 137 people there currently, and we're sure some of you are reading this log.
We watched as it grew, but couldn't do anything cause first we had to send the devices to Indiegogo backers. Now we can! There's around 20 sets that we can pack right now. But it turned out that we can't actually sell them through tindie without lots of effort. That's for two reasons:
1) In the New Year log, we mentioned capitalism as one of the confusing things that we faced recently. Now, we can elaborate: basically, we can't legally get money for uECG sales on Tindie in our country. That's cause Tindie only makes payouts to PayPal and it's not available in Ukraine. We can pay through it by linking a card, but we cannot withdraw (can't use PayPal balance).
Theoretically we could use a middleman webservice, but they take commissions of around 5-9% - that, plus Tindie fees, could get them close to 18-20%. That's a lot, cause uECG price is low on purpose to make it affordable, and we can't get it lower. We contacted Tindie support and unfortunately they can't add another payout option for now. We later discovered that a lot of platforms use PayPal primarily, so they don't work with Ukraine and some other countries out of the box. It's a pretty grim picture out there.
2) The other thing is that even if we had PayPal, we could only get a payout in a month minimum (there's a cooldown time for first-time sellers). So we would have sold all the uECGs at once and have no money for production (we have to borrow from our family for the next round partially anyway, but still need the rest).
Basically, we were very frustrated by this for the last few weeks. But then we realized we promised uECGs will be available, but it's not that important to everyone it will be on Tindie. What people want, first of all, is to just buy and use them.
So we decided to open our own online shop based in Ukraine! A couple of people from our team did web dev and e-commerce in the past, so we've been setting it up for the last couple of weeks and making some more progress just recently.
What's next:
- We plan to open a shop in the next few days; we are on the step of writing the content like delivery pages, fine-tuning the CMS (it's on Prestashop), and soon hopefully will be connecting the payment system. Why are all the e-commerce CMS still on PHP, though? It's been like 10 years! We looked for what's new and trendy in online shops and couldn't believe there was no large JS-based systems available.
- We plan to start new production cycle around February, 10 (we'll get new batch of uECGs by March - we plan to make 100 of them). We also hope everything will be okay for the Chinese people because of the virus :(
- Last, but not least - we miss actual device development and other projects! Who would've thunk this would take all of our time and more. We really want to return to making stuff in the relatively free time we get while waiting for the next batch production.
-
We sent uECGs to backers! (and some other January news)
02/02/2020 at 19:34 • 0 commentsWe've not written anything for a whole month! But we have been far from idle.
First of all, we just sent all of the uECGs to Indiegogo backers (finally!). That brought closure to a large period in our lives and we're really happy that we did it.
A LOT of crowdfunding campaigns do not deliver to backers at all, and we were determined that we don't only deliver, but do it on time. That didn't go exactly as planned (if you've been following us, you know that the Indiegogo platform didn't release funds for two months after the campaign was finished). Still, we were determined to ship them as fast as possible without compromising the quality and really tried to do our best on every step.
This is some of the packages shipping on Ukrposhta:
In the following weeks, we - among usual news - will write separately about the packaging and PCB production, cause there's a lot of details that won't fit in a usual log!
-----------
Second, we were actually going to send the devices to backers at the start of January, but we've, ugh, been writing a grant application for two weeks straight - from around January, 8 to 23rd.
Basically, we ran out of money (AGAIN), and as a team we're in one of those situations when freelance projects are kinda hard to start, because there's not much time anymore, and sales of our own devices aren't profitable yet. So around New Year, we stumbled upon a brand new state-sponsored grant program for small tech companies, and it didn't look so bad. In fact, it looked very inspiring and was led by a team of professionals. The grants were seed money only - $25K-$50K instead of throwing around thousands and millions - and you had to show lots of numbers and write a good application for that, so that's how we knew they meant business. In Ukraine, we have a lot of historical baggage and Soviet legacy infrastructure. Now, after long years of stagnation we have a new government which is much more efficient, but before that, the market here was very limited for professionals. For most people, it was mostly freelance/outsource programming, and not many people started tech businesses. So if you wanted a startup, or if you were a small tech company, you had to pitch at one of the startup challenges or hackathons with investors and the startups were all the same - lots of digital and blockchains and big data. Tangible stuff wasn't pitched or valued, and we considered participating and changing it, but we knew it could cost us a lot of hope in humanity and we probably wouldn't go for it anyway: it was all very cheesy, the mentors and investors weren't usually very professional, sometimes rude, and a lot of strings was attached, so we never did any of that. Long story short, for some years, there was generally an atmosphere of despair on the startup scene here, and it was even worse when you're in hardware development. There's almost no manufacturing in Ukraine. Even the hardware community itself is almost non-existent. We aim to change that and have lots of plans, so we ourselves never despaired - but that's the current state of affairs.
Basically, we decided to try and write a good grant application. This took two weeks and we were so exhausted doing it - though we learned a lot in the process and liked the result. Lots of things we just didn't know. We didn't have proper CVs, even, or didn't know how to write about market research and products and how to count financial stuff.
But in the end, we even managed to do a 5-year financial projection that didn't look too crazy. Well, at least to us. Maybe the professionals will have a laugh reading it, but we really tried. After we were done with the application, we had a couple days of rest and returned to packing and preparing the uECGs for shipping.
On January, 28 we finally sent them and now it's time to direct our attention to the future of uECGs that are left, because we promised they'll be in stock. But this was a long one, so we'll write about that in the next log on Monday! :)
-
Happy New 2020 Year!
12/31/2019 at 21:00 • 0 commentsWell, it was an interesting year, that's for sure!
Things happening all around the world. Climate change, obviously. Hong Kong! Trump impeachment!
And last, but not least - a big step for us, small step for humanity: first uECG production!
Yes, we know that we promised uECGs will be in stock on Tindie before Christmas. At least one of us did, because she ran out of symbols for the product url update (that'd be me, by the way), and "B4 XMAS" sounded so 2000. That is, if you noticed the new ETA on tindie product page at all. Well, technically, they were in stock, but nobody could buy them yet :3
Why didn't we add the stock? Short version: because capitalism! Hard to set up payments if you belong to a non-PayPal country. And also we suddenly found a small current leak through the ADC chip, which we needed to fix and test. Aaand we found out that Ukrainian air mail doesn't ship devices with batteries to several countries, including the US. Turned out they do send (with a twist), but several other challenges awaited us!
Long version: in a log a couple days after New Year.
Happy holidays, late Merry Christmas and happy New Year to everyone!
Here's some holiday uECGs for you:
New Year, new battery of 250 microamperes!
-
Work in progress!
12/20/2019 at 20:27 • 0 commentsJust a quick update straight from the Ultimate Robotics workstation: nine base stations done - 41 more to go! Oh, and uECGs are on the way - just replacing resistors for now, but we're working on it: