Close

First Working Prototype

A project log for Open Digital Checklist

Digital, portable, open source, and simple checklist for every day carry. Replace apps and paper for good.

dustinDustin 09/04/2024 at 14:160 Comments

Yesterday I finally dug out some hardware and started coding the digital checklist. I have two Arduino Uno boards and two 16x2 LCD boards with buttons. I dug them out of storage and got one working. For initial hardware testing I used the Arduino game The Lonely Cottage from a games collection on GitHub. It's actually quite a pleasant little game. The low refresh rate and terrible buttons make for a not so great experience, but it's quite cool overall. 

After getting the hardware working, I found some examples LCD menu libraries to start testing with. The goal is to have the name of the current list stay at the top of the screen. With the current menu item below that. Scrolling left and right will switch between lists, and up and down scrolls between list items. The select button simply toggles a check box to the left of the item, or moves it down to a section for completed items. I've not quite decided on that yet. Using a checkbox would use up one of the limited character spaces though. I'm considering upgrading the display to a 20x4 character LCD to allow for multi line checklist items and displaying more info at once, such as a name, phone number, email, and address for contacts. The larger ddisplay would make the device larger, which would allow more room for extra components such as a flashlight, extra buttons, and larger batteries.

Speaking of batteries, I'm leaning most towards 4 AAA batteries or a lithium ion pouch battery. It must be easily replaced to prevent the device from becoming landfill fodder. AAAs will give the most longevity. Powerex makes excellent rechargeable versions as well. I could eventually integrate charging circuitry into the main board, but that's a feature for a future revision. For a battery door cover I'm considering just having a PCB back panel that screws in place. 4 AAA batteries should last quite a long time of the power savings and deep sleep features of modern microcontrollers are taken advantage of.

As far as the coding goes, I've gotten 3 lists added with 2 list items each. I can scroll left and right between the lists and up and down between list items. I need a way to toggle the tasks done and undone, as well as add, edit, and remove tasks and lists. I'll most likely start with text entry by having the user scroll up and down between characters and select them, moving the cursor to the right after each selection. I'll have to impose a character limit as well, since the display can only handle 16 characters across. To add a new list I'll have the user scroll to the left from the first list where a "Add New List" option would live. This would create a new list in the array of lists. At the bottom of each list will be "Add List Item" where the user can add new items. Long pressing the select button could be used to delete items. An index of all lists, directly to the left of the first list, could be used to quickly navigate to a desired list, while long pressing select would allow for deletion or re-ordering of lists. The user interface design is nearly complete, with the various features just needing to be coded and tested. An auto off timer would be added as well. An RGB backlight would allow for color coding lists and menu items. This device could be as simple or complicated as I want it to be. I want to be able to add as many truly useful features as I can to make it as useable as possible. All of the obvious features will be implemented right away, with various luxuries added later, if at all. I'd like to at least have a timers and contact storage. This device could become an all in one every day carry if done properly.

For the hardware, I'm considering using an ESP32 or Raspberry Pi Pico W. I need decent processing power to ensure the device is responsive, and want hardware with wireless functionality to eventually add a web server that allows for managing the device wirelessly. I'm using an Arduino Uno currently, as that's what I have on hand, but it doesn't have enough storage space or RAM for what I want to do. I'll continue testing on it and using memory saving tricks as needed, but will eventually upgrade to a more capable microcontroller when the time comes. I'd like to have some mass storage capabilities, but adding something like a micro SD card adds significant cost and complexity. I'll likely add the largest external EEPROM that I can find and use that to store lists and various data. The device settings would likely live on the internal EEPROM and all user data on the external. I've used an Arduino's EEPROM to save state data between power cycles for a water heater controller and it works great. I just have to worry about write cycle longevity. I could use socketed EEPROM chips for persistent data storage to allow for easy replacement in the future. I suspect most people will have standard checklists, such as grocery lists, that will reuse much of the same data over and over again. Moving an item to the bottom of the list and putting a check mark by it would allow it to be unchecked and reused. I plan to add a piezo buzzer to allow for audible notifications such as timers for reminders. A small vibrating motor could be added for use in very noisy environments as well. Large battery capacity would hopefully allow the device to run for multiple days on a set of batteries. For industries like boating and manufacturing, ruggedized version could be made by epoxy potting the entire device and using a sealed membrane over the keypad buttons. I'll design the hardware with provisions for epoxy potting, as well as sealing the battery cover. I personally want a device tough enough to take with me on the roof of a house, under water while working on boats and docks, in a pocket while welding, and on off road bicycle adventures, such as bicycle touring.

With any luck, I'll get the software finished soon and can start working on designing custom hardware. The last step is having a custom board manufactured with the display, all buttons, microcontroller, external EEPROM, and battery mounts on a single board, with a PCB case to house and protect it all. AAA batteries will make the case thick and heavy, but I suspect the kind of person who would use such a device would appreciate the heat and quality build.

That's all I've got for now. I've got tons more work to do on the software, some shrinking to do in the initial prototype, and then the building of a battery powered prototype. I've not given up on this project. It's been on my mind on and off for many years now. I finally have the skills, time, and confidence to really start bringing it to life. I really need such a device now, as I start a business. This may be one of my first offerings at some point as well. I'll still keep the design open source, but I also want to make sure that the average non technical person can get a hold of them as well. I know how frustrating it is to want one of these niche devices so badly and be unable to get one.

Discussions