davekeck
Aren’t these numbers .2 ms, ie 200 microseconds?
(The first thing that comes to my mind would be to use an oscilloscope with two probes, one to each machine, but I’m guessing that’s not it.)
I researched how to perform rigorous PFAS testing but it looks like the best method is PIGE which requires a particle accelerator, which aren’t exactly easy to come by.
Anyway just posting this in case anyone has thoughts or would be interested in working on something like this.
- For this specific project, I needed to program an FPGA so I drew on my college experience (18-240) where we learned about FPGAs and Verilog. Coursera's "Introduction to FPGA Design for Embedded Systems" looks like a good option.
- Don't be discouraged by hardware tools. Coming from a software background, using hardware tools is like traveling to a foreign land where good UX is punishable by death. At its core, designing PCBs is really just drawing 2D shapes, and it's striking how painful drawing is using hardware tools (eg Eagle, Kicad) versus how delightful drawing is using artistic tools (eg Sketch, Figma).
I need to make a blog post showing how to replace the battery.
I assembled ~120 of these devices beforehand so I just need to package them up and ship them out when I get an order.
> Also do you actively use it currently on your bike or do you know some use cases of someone that bought/has it?
I intended to put the device in the garage to catch the thief, rather than attach it to the bike. But with a good mounting solution (which I should invest some time into!) you could certainly use it on a bike for time-lapses. It should work great for a cross-country road trip.
A friend of mine is using it to do a timelapse of a house construction project, and I mailed out the first orders today so they're in the wild now!
In case it helps explain the wording: I went with "exclusively for Mac" because I intended it to be an in-group signal to Mac folks that the product is high quality and conforms to the norms of the Mac platform. In my experience, cross-platform GUI software usually doesn't conform to Mac software conventions (and IMO just kinda sucks by Mac software standards). So my wording is trying to convey that the software isn't your typical cross-platform Electron/QT/GTK app.
Anyway, would love to add Linux support, just trying to figure out if that's what I want to do with my life right now.
Time-lapses are certainly one of the intended use-cases. I still need to add video-export features to the companion app though. Right now it only supports exporting images.
> Anyway to know when it’s about to write over itself in storage?
Currently it silently overwrites the oldest photos once the storage is filled, but I've been thinking it should have a setting to prevent that.
When the battery gets below 2%, the device enters "battery trap", where it stops capturing images and simply blinks the red LED every 5 seconds. Maybe there should be an optional setting to enter that mode when the storage is filled. Would that work for you?
Related to compression -- a dirty little Photon secret is that currently, the 12-bit RAW pixels are written as 16-bit words, so 25% of the SD card (the high 4 bits of every pixel) is actually zeroes. So an easy compression win is to compact those pixels, and we'll go from being able to store 20k photos to 27k photos, and spend less time writing the photos (like you said) which should translate to longer battery life.
It would be interesting to quantify what the biggest consumer of power is while capturing a photo. I'm honestly not sure what the power breakdown would look like (image sensor vs SDRAM vs SD card vs ICE40).
For the PCB, it came down to who could meet the specs that I needed for the board. I recall the three important specs being BGA pad spacing, wire thickness, and wire spacing. The ICE40 was the aggressing chip IIRC. I ended up using nextpcb.com.
For the enclosure, I think I just Googled some and had 3 different manufacturers make the same enclosure, and chose the best one to mass produce. I ended up using mfgproto.com.
> - How do you assemble all the parts (do you do that yourself or did you find a company to do that for you)?
For the PCB, I had NextPCB do PCBA, except for the BGAs (which I soldered myself, 500 of them!) and motion sensors, because I didn't trust mailing my high-value stock to China during Chipageddon. That was likely a mistake -- in the future I would have them assemble everything, because their process isn't designed for how I wanted to do things, and soldering that many BGAs sucked.
For the final assembly I did everything by hand (insert PCB into the enclosure, screw in PCB screws, connect battery, add battery shims [to prevent rattling], add RTV gasket to the backplate, screw in backplate screws, add lens adhesive, focus lens while streaming images). It's a ton of manual labor!
> On the other side, the demo images on the Mac app page seem to be all outdoor pictures, so I wonder if excessive motion sensitivity is really an issue.
FWIW I captured those using the time-based triggering (every 30 seconds), so the motion sensor was disabled for those photos.
I've been using adhesive pads to mount it to things. The Gorilla "mounting tape squares" are strong and don't leave any residue.
Note though that the SD card can only fit 20k photos, so the battery typically lasts longer than the SD card, and after that the oldest photos are overwritten!
The SD card is accessed as a ring buffer, so all addresses are written evenly. (It was my understanding that SD cards implement wear leveling themselves though, so the wear leveling should be free even if the SD card was written to randomly -- if my understanding is correct.)
> how do you handle memory dropouts for a given address/cell/whatever you call a memory location, or as above?
SD card write failures cause the firmware to crash and reset itself, so it'll try again when another photo is triggered. (It also logs the reset so it can be debugged.)
FWIW I'm using Samsung 128 GB "PRO Endurance" SD cards, with endurance == 820 TBW, which works out to 820e12 / 5.97e6 (size of one photo) == 137e6. So you can capture 137 million photos before the SD card is expected to fail.
https://github.com/toasterllc/MDCCode/blob/rev10/Tools/MDCUt...
For example:
$ MDCUtil ImgReadFull <image number> output.cfa
That outputs the raw data stored on the SD card though, so I need to implement converting that to a standard format like DNG.I went the native route mainly because I love native software, particularly native Mac software. I never quite enjoy using web apps, but I certainly understand the appeal.
Until I get the ordering system taking international addresses, send me an email ([email protected]) with your address and I can send a Stripe invoice.
Haha me too man, me too.
(Edit: I don't mean that sarcastically, I'm genuinely interested how others would make this thing.)
A big part of porting Photon Transfer to Linux would be converting the image pipeline from Metal to... Vulcan (?). The main chunks of that are FFCC illuminant estimation (for white balancing) and LMMSE debayering:
https://github.com/toasterllc/FFCC-Metal https://github.com/toasterllc/LMMSE-Metal
The GUI stuff (list views, image grids, image zooming, oh my) would be a good chunk of work too.