PennApps Post-Mortem: Too Hot - Day Two

April 25th, 2017

Oh boy, here I go writing again.

I had spent the night in very quiet (though not empty) computer lab on the first floor, and arose at around 7:30am with a solid 3.5 hours of sleep under my belt. Ji, not having brought a change of clothes, a sleeping bag, a pillow, or even a sheet, slept with his face flat on our table. Now, if this wasn't pitiable enough, I went to check the git repo and found that his last commit was 6:53am. My watch read 7:34am. Less than two hours later, Ji would be up and at it again.

I immediately engaged myself in connecting the Arduino to wifi using a Wifi101 'shield'. Special commendations to the people working at the 24-hour hardware station. The arduino's wifi capabilities were sadly limited, unable to use either the penn-guest network or eduroam, so we set up a mobile hotspot. Thankfully, as the amount of data being transferred was at most kilobytes over the entirety of the competition, it didn't burn a whole in anyone's wallet.

I took a short break from technical work to hunt down Ethan. No-one knew where he had gone to sleep, and so I quite literally checked every corridor and open room in the engineering quad where he could have been. This included wading through the swamp of sleeping bodies in the basement corridors with Anthony. When he showed up at a few minutes past noon, we found out that he had been one of the huddled masses we had carefully stepped over, camouflaged all to well.

The next task -- after failing to find Ethan -- was to do proximity detection to trigger the sensor. I initially tried to do this with some unmarked, three cent infrared sensor, but after failing to get anything resembling consistent behavior I ditched it in favor of a much better documented ultrasonic rangefinder. About an hour after breakfast, I had figured out its breaking points and was reliably detecting bypassers. With this, it was time to start sending data to our Amazon AWS which was ready to receive with REST thanks to Ji and Anthony. Refining both ends for smooth processing and database storage took until around 2pm.

Our beauiful (read: super jank) device needed a beautiful (read: super jank) case. I pulled up my good CAD friend, Autodesk Inventor, and threw together a nice round box with holes in appropriate locations for the sensors and ports. Now, measuring the dimensions of those holes turned out to be surprisingly challenging because, and I shit you not, none of the volunteers I asked could point me to a single ruler or set of calipers in the entire engineering quad. Eventually, I pulled up a ruler on my laptop screen and calibrated it with a dollar bill. A little bit under an hour into the first print I found out it was rejected for taking too long, so I took the good ol' swiss cheese machine to the IPT, removing most of the bottom, and cutting generous 'ventilation slots' into the sides, getting the print time to within PennApps permissible lengths. It was ready to pick up after dinner.

With the system on our end essentially working, it was time to actually calibrate it to detect fevers. First, I noticed that the debugging temperature readings the Arduino spat out changed depending on how far away my hand was. Ethan and I took several thousand measurements of our foreheads at various distances, threw them over into Excel, and (after filtering the data a bit for faults of the rangefinder) derived a regression line. There was the further problem of delineating our fever threshold, as facial skin temperature is not equal to core temperature, but a little but of googling and guess-work gave us what seemed to be a sensible figure. At this point, the system was essentially continuously on, so Anthony's tablet would inform passers-by of their fever status. We tested the system using a bottle of hot water, which, thankfully, triggered appropriately.

It was getting on in the evening, just after the donuts and shirts, when I realized that a) we hadn't made a lid for our case and b) the 3d print shop closed at 10pm. I ran down with a file that would have printed just in time, but thankfully one of the volunteers -- a saint and a scholar -- informed me that the single slab of material with a logo on it could be accomplished in five seconds with a laser-cutter rather than a full hour with a printer. It came out beautifully, transparent with a slight green hue. I did make it a very tight fit, so getting the damn thing on took ten times longer than the entire process of making it.

At this point, the entire system basically worked, with some strange hiccups on the javascript side, and the Button API not behaving itself. It took until 2am, but through many jogs down to the Button representative, head-bashing, and determination, the giant-among-men known in our tongue as Ji Hyuk Bae got it working and we successfully tested it after I downloaded Uber on my phone.

- Hey guys?
- Yeah? What?
- Shouldn't the sensor actually be on the wall at face height?
- Oh, yeaaaaaaaaaaa.....

This exchange, at around 3am, is what prompted us to head out onto the abandoned streets, to the slightly sketchier areas surrounding Penn, passing a frat-house, replete with several thoroughly drunk party goers stumbling out and collapsing on the sidewalk in front of us, to buy a roll of masking tape. Sleep deprivation finally began to kick in on the way back, but while we were getting a little twitchy, Ethan seemed genuinely afraid of the possibility of being shanked and/or mugged.

Whatever conscious time we had left was spent making adjustments to the styling on the admin page. I stumbled into the same lab as before, and slept for nearly four hours.

< Newer PostOlder Post >