1
\$\begingroup\$

I'm just starting out my journey developing my own board and need some advice how to get started and understand a few things in better context.

I will ask my first question first and provide the preconditions- I need to create a board that supports: bluetooth, audio out, LCD screen, camera, various LEDs. Those are the preconditions; from what I understand ARM Cortex M7 would work quite well for this but do not want to over-do it and need some professional opinions on what you recommend? etc. I would like to stick to ARM here as I have invested some time into understanding it etc. and all the boards I currently have are utilising ARM so it's nice to stick to this.

For my second question here; As a newbie to Electrical Engineering the part that really stalls me is the pins and their functions- I am aware of the different communication protocols and what they do, but there are many other pins on perhaps the ARM board that are not immediately intuitive and connecting the components I mentioned seems like a real challenge and i'm sure it is, so really my question is- are there any great resources to learn these pin functions or does someone have a pin cheat sheet they can point me to so I can advance my understanding on how these components connect with one another and work in an expected fashion. I do understand with every chip there comes a datasheet which one needs to look at but my misunderstanding seems to be coming before this step - probably because I do not have formal education in this domain. Thanks in advance.

ADDED INFO- Operation or expected scenario of the board goes like this. User takes photo of them self using their phone as a controller connected via. bluetooth. Photo is taken and sent to the phone where X handles the rest of the process. So really this board has a job of (1) being connected via. bluetooth in bidirectional communication (2) displaying various lights such as red light on green light on etc. (3) playing a voice file that was sent from the users phone which will be played through an audio out speaker.

\$\endgroup\$
20
  • 2
    \$\begingroup\$ Draw a block diagram of a board with all of the interfaces it needs to support. This will define the peripherals you need. Peripherals are the ones who are defining the "pins". But you are talking about ARM core which does not have such peripherals, but serves as a computation and control unit for these. So this difference is the first important thing to understand here. \$\endgroup\$
    – Eugene Sh.
    Commented Apr 11, 2019 at 14:27
  • 2
    \$\begingroup\$ You're going to have trouble getting the camera going with an MCU. It can be done, but you are in over your head trying to make it happen. Things like buffer memory become a challenge, once you are no longer restricting yourself to on-chip memory you are effectively crossing the MCU-SoC divide. \$\endgroup\$ Commented Apr 11, 2019 at 14:39
  • 1
    \$\begingroup\$ Is there a reason you can't use something like a Raspberry Pi? It seems to already have all the capabilities you are asking for and available for $25-$35. \$\endgroup\$ Commented Apr 11, 2019 at 15:14
  • 3
    \$\begingroup\$ If you are trying to do this from scratch, both h/w and s/w, you should budget about a year of engineer time. If you are located in Europe or the USA that's around $60 per hour or about $100k for the project. I have worked on underbudgeted stuff with "workarounds" and "shortcuts", and its a nightmare \$\endgroup\$ Commented Apr 11, 2019 at 15:28
  • 1
    \$\begingroup\$ @DirkBruere that sounds about right. I would suggest that newbies read postmortems of some failed hardware kickstarters and then think carefully on whether they want to do this or hire expert assistance. \$\endgroup\$
    – pjc50
    Commented Apr 11, 2019 at 15:31

3 Answers 3

3
\$\begingroup\$

My only suggestion is try and find an existing board that does what you want, and see what hardware they use. If the design and firmware is open source, then you have your solution with a bit of hacking. In my experience the hardest part is programming the pins and on-chip peripherals

\$\endgroup\$
7
  • \$\begingroup\$ You mean getting all the components communicating with one another in an appropriate order? \$\endgroup\$
    – Invic18
    Commented Apr 11, 2019 at 14:42
  • 2
    \$\begingroup\$ To see if you can hook up the peripherals, but also to see if you can fit your application's needs into constrained memory. Very constrained one you start talking about pictures or video if you insist on going the MCU route. To some extent, what you should probably do is just find a cheap phone, put a custom/cut down OS on it and call it your product. A small trailing edge phone or tablet SoC would be the right place to look if you get to the eventual point of making something custom. \$\endgroup\$ Commented Apr 11, 2019 at 15:04
  • \$\begingroup\$ Okay thanks for the advice \$\endgroup\$
    – Invic18
    Commented Apr 11, 2019 at 15:11
  • \$\begingroup\$ @Invic18 You are probably going to need an operating system to hook up all of those devices seamlessly \$\endgroup\$ Commented Apr 11, 2019 at 15:23
  • 1
    \$\begingroup\$ @Invic18 light linux version makes the software much easier, but anything with enough RAM to run Linux has external DRAM, so you need a reasonable level of board design skill to make that work at all. \$\endgroup\$
    – pjc50
    Commented Apr 11, 2019 at 15:28
1
\$\begingroup\$

I am aware of the different communication protocols and what they do, but there are many other pins on perhaps the ARM board that are not immediately intuitive and connecting the components I mentioned seems like a real challenge and i'm sure it is, so really my question is- are there any great resources to learn these pin functions or does someone have a pin cheat sheet they can point me to so I can advance my understanding on how these components connect with one another and work in an expected fashion. I do understand with every chip there comes a datasheet which one needs to look at but my misunderstanding seems to be coming before this step - probably because I do not have formal education in this domain. Thanks in advance.

Well, the datasheet is the explanation. If you get the proper datasheet this will be pretty comprehensive; I worked with an iMX53 that had a 1,500 page full manual covering all the functions. It had a lot of functions.

For your project, the camera will be a serious problem. You need to find what camera interface it has; this is usually CSI. Then you need to find a chip with a CSI peripheral.

\$\endgroup\$
4
  • \$\begingroup\$ That was the daunting thing coming to embedded the datasheets are huge but necessary obviously. Is there another go-to you guys use though? or mostly pre-existing knowledge with the datasheet. You guys are scaring me with this camera here, unfortunately that's basically the most important part \$\endgroup\$
    – Invic18
    Commented Apr 11, 2019 at 15:14
  • \$\begingroup\$ Usually we shop around for evaluation boards having the capabilities close enough for our requirements, looking at their details, and then, if it is an overkill, then looking for the processor (and other components) "siblings" and "cusins" and stripping it down to whatever we need. \$\endgroup\$
    – Eugene Sh.
    Commented Apr 11, 2019 at 15:17
  • \$\begingroup\$ that's great advice on how you guys do things, thanks \$\endgroup\$
    – Invic18
    Commented Apr 11, 2019 at 15:24
  • \$\begingroup\$ Teardowns (e.g. ifixit) are a good source of information; another very useful thing to know about is "parametric search" on Digikey and other vendors. \$\endgroup\$
    – pjc50
    Commented Apr 11, 2019 at 15:26
1
\$\begingroup\$

Before you think of what hardware you need to put together, you should think about what software you are going to need to run all of that stuff.

As many have mentioned in the comments, from the sounds of it, this is not a weekend project, and this is going to cost you a handsomely amount of money, but most importantly time.

My suggestion to you is use something like a Raspberry Pi CM4 for now. Not only do you get a lot of power and peripherals for that price, but you also get the ability to boot GNU Linux on it. Writting software for all of those peripherals is no fun, or maybe it is, but why re-invent the wheel?

Building a carrier board for this will also be much cheaper AND faster. Spinning out a couple of revisions for a carrier board will hurt you much less than throwing away a $20 MCU or a $40 MPU (RAM, etc) if you make a tiny mistake, or if the dimensions aren't quite right

Considering you are still doubtful of the different interfaces used, your chances of getting EVERYTHING right the first time are not very likely.

Choose function over form. Creating a board from scratch is cool and all but that's not the purpose of what you're doing.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.