Often times when we want to create a project it's important to think about what hardware will be used. The images above are early sketches from my Boat Control project that you can find on this website as well. It doesn't have to be pretty, it needs to be clear what devices interface in what way. In the example above you can see a bluetooth client connecting to a bluetooth LE adapter. From there the adapter has access to the backbone of the boat which includes the Raymarine NMEA protocols and a custom serial service.
When starting to code on any app you pretty much need to make a domain model. These models help you understand the structure and flow of the code better. If you don't think about the architecture of your app first you're going to end up with very unorganised code. Because we want code to be maintainable by any other developer we need to use standard coding conventions and having a domain model to look at while trying to figure out how a program fits together can be a huge help.