Background: KeepBox (and KeepHome)
Despite the two names, there is only one project at play here: KeepBox. KeepHome is the name for the Android app used to communicate to it/them. Oh, right, what's KeepBox?
KeepBox is a project that I did (started) for my Year 13 Electronics NCEA internals and external report.
Subsequent to that, I have continued to work on it in bits and pieces, as I never quite finished it, and thorougly intended to keep working on it even whilst trying to finish it for submission. Hence it is an ongoing project, and is highly subject to change!
KeepBox
This is the bit that physically receives packages. Packages? Yes, indeed this project is a "smart" parcel-box. OK, parcel-box doesn't explain much. If you get mail, it goes in your mailbox. Simple, eh? Well, nowadays people don't really do mail, but they do send and receive packages (woop, online shopping). So where do your precious (and expensive) parcels go? Oh, on your doorstep - if you're lucky. Most of the time they'll end up on whatever part of your property is closest to the road/driveway. If only there was a jumbo-sized mailbox for packages...
But, parcelboxes aleady exist! Yes, and they're all ugly metal rubbish that has a poor mechanical mechanism which drops your potentially fragile parcels into some large internal chamber. And of course, as deliveries get faster and more frequent, it would be kinda useful to know when things actually get delivered. Not everything's tracked, you know.
Introducing, KeepBox!
KeepBox is designed to receive anything that is delivered to you, without dropping or squishing it, whilst maintaining security as best possible, and ensuring you are notified along the way, as soon as practical.
How does it do it all? Well, it starts with a simple mechanical design, with isolated containers for parcels, and even a slot for mail, too. Next up, a lead-acid battery charged via solar panels powers the clever electronics. The electronics are detailed further in post #1.
Gimme the juicy code details!
Alright then, it's all on GitHub:
KeepBox, home-side: https://github.com/theonlytechnohead/LoRa_KeepHome
KeepBox, box-side: https://github.com/theonlytechnohead/LoRa_KeepHome
There's a little bit more code stuff in post #4, regarding finite state machines in C++.
KeepHome
And how do you communicate with these fantastical devices? With an app, of course! Unfortunately, Apple decides to make it quite difficult to develop anything for their hardware if you do not also own some. Thus, I cannot develop for iOS currently (once again, freedom wins through).
Code?
Ah well, if that's all you're interested in, GitHub:
KeepHome: https://github.com/theonlytechnohead/KeepHome
The app is currently being rewritten from scratch in Kotlin, using Compose with Material3. And this time, I'm doing everything right. I'm even using Volley
and whatnot to do things as officially as possible.
That being said, unfortunately the wonderful androidx.Preferences
Jetpack library is not up to date with Compose, so I have had to recreate the whole thing from scratch (but I am using the preferences-datastore
for storage of the settings, which is proper).