How to move forward with updating/redesigning a project

I'm somewhat at a loss as to how I should progress and thought I'd ask here for some advice.

I have some boards that a friend and I developed in the early 2000's using Mega-8's. This was before Arduino was even a thing. I had a friend that was doing the code and I was doing the board construction. He knew the intricacies of the boards and what all the settings did. I'm not sure how to communicate what those features are or what they mean to someone who isn't familiar with the way the boards operate already.

End goal, create a new product in the same form factor as the old one, but switch to an ESP32 instead of the Mega chips so I can interface wirelessly through either wifi or BT. There are a lot of variables that I used to have a windows Gui that would allow users to change settings via a pc. I'd like to update so I can do that easily with a phone, and add an OLED that can show some of the settings that the board is set to. I haven't really messed with coding anything from scratch in probably 10 years, so I'm looking to hire someone to do this for me.

In my mind, there's a couple of ways I can do this. I'm not sure if these are actually feasible.

Start with the Mega8 firmware, make the changes necessary to make it work on an ESP, then add the other new features to that existing code.

Start from scratch with the code?

Should I do the pcb layout first before I have someone start on the firmware or wait until after the code is done and just breadboard it on a development board?

And like I said, I'm not sure what info I need to provide to someone to help them understand what the end product is. Is there a standard set of info I should provide? I've never hired anyone to do coding, it's always been just me and a friend hacking away at it.

I wanted to do it myself but I'm not in a place that I can actually do that. I have little time due to family and am in several different therapies recovering from a brain injury from a car wreck ealier this year. So when I do have time, my brain isn't computing the way it normally would, which is also part of the reason I'm having difficulty with this.

Can anyone help steer me in the correct direction? I'd be happy to share finer details via PM, but due to having some competitors I don't want to say too much.

Thank you so much!

sorry to hear about the car wreck, hope you'll recover fully soon.

The boards are very different and it's no longer the early 2000's.. I would start from scratch, taking the learnings from the previous project as a guide for the improved version.

Before defining GUIs, type of board, PCB or whatever, you would start with a high level specification of what the product does (not how it does it).

1 Like

@J-M-L has it correct. Follow a design process where the project is defined, all inputs, all outputs and what happens in the middle. Then design the hardware and do a feasibility design review, be sure software designer(s) is/are involved in all portions of the project. Do this as many times as needed. Then finalize the design and do a final DFEMA (Design failure mode and effect analysis) is a process that helps engineers understand the impact of potential risks associated with a design.

For a more detailed explanation follow this link:
https://www.ansys.com/blog/what-is-dfmea

This is an interesting endeavor. Your brain will re-connect lost pathways. You might suggest this re-learning be part of your therapy. You could be "getting paid" to learn coding!! and giving your therapist data of a lifetime.

I'm definitely improving. It's not bad, but at this point it's hard to concentrate and my typing skills went to crap. I'm currently taking Cognitive, Vision, and Vestibular (for balance) therapies.

Thanks for the input.

I'll try my skills with outlining and thinking of all the finer points that I need to have ready.

1 Like

I would suggest looking at replacing your Windows GUI interface with a web server on the ESP32. This will allow you to interface with anything that supports a browser - Windows,Linux or MAC PC, Android phone, Apple phone etc. You may be able to recycle some of the old window layout and interactions by rewriting in HTML.

1 Like

That's what I was thinking of doing. That seems to be the easiest way.

  • Suggest you pay someone to do this for you, then enjoy the finished product.

  • Speedy recover :+1:.

If the interface is not needed often (just to set some parameters from time to time or may be even just once at the start) then have a look at captive portals and what you can do with that. (Look at GitHub - tzapu/WiFiManager: ESP8266 WiFi Connection manager with web captive portal)

Assuming the current board does what you want and the only issue is changing the way that configuration parameters are fed in to it, then you could start with a schematic and a list of constraints for the board design, say its size, the layout of headers on the board for external connections and mounting holes.

However, if you are changing the processor to say ESP32, you have to know that not all pins are suitable for all purposes. Some have to be in the correct state HIGH/LOW during a start up and some may, for example, cause unwanted activity on a relay during boot. If you change to a processor where the pins are 3v3 you may need level shifting if you have 5v components on the board.
There are also some things to bear in mind when using an ESP32 on a board, for example, a ground plane should be restricted in the area of the antenna.

Currently, printed circuit boards are dirt cheap so you can afford a few iterations at getting it right. Design the first one to be easily hackable ensuring all traces can be cut somewhere, have a few holes in the board to drag repair wires from one side to the other and have jumpers to isolate parts of the circuit so it can still work for partial tests. If you use a lot of ICs which are available only in surface mount packages, it may be better to go straight to a PCB and omit earlier prototyping stages. However, if these are chips you have never worked with before and are not fully confident that you are interpreting the data sheet correctly, it may then be better to get such chips soldered onto break out boards with 0.1" headers for experiments.

For firmware development it is preferable to have soldered circuit instead of a breadboard because otherwise often it is not clear if there is a firmware problem or a connectivity problem somewhere.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.