I am doing an embedded systems project, precisely, an electronic chessboard. Currently, I am doing research and trying to prepare the list of electronic components which I will need and to get the general picture of what should I do and where to start from. The project has three main subsections which are
1. design of some PCB's, with sensors, LED's, multiplexers, Raspberry Pi, LCD screen and other components incorporated. These PCB's are interconnected, data exchange happens between modules build onto each PCB. They make up the skeleton of the electronic board.
2. software design (not from scratch, but aimed to be highly improved), in particular, taken some Chess Engine, I have to program a few new capabilities which electronic chessboard will perform later on as a working prototype. Also, I have to design an UI, since a user will have to interact with buttons while analyzing stuff on the LCD screen. In a word, very similar to what one can see on the screen while playing chess online, but much much improved version of that.
3. design of the chessboard itself (product design).
Below I wrote down a few questions I am concerned about, I would be very thankful if you can shed some lights on all or some of them, in the same order I indicated:
Question 1: Electronics, Software and Product Design are all interconnected subsections, one should carefully design each section so that everything performs properly. But I am not sure which part should I start from? Should I design electronics first, finish with all PCB's, then pass to building software and lastly design the board? Or another way around? Confused with an order.
Question 2: I have little experience in electronics and design, and no experience in software engineering at all. Should I start from some general tutorials on Embedded Systems, Virtual PCB Prototyping, Software engineering etc,spend a few months on those, and then pass to specific problems I have to solve on my way? Or should I face the specific problem and particularly look for related materials on how to solve them?
Question 3: I received some funding for the project, which only allows me to buy some electronic components. What I am stuck with is whether to Virtually Prototype all PCB's or buy many breadboards and try to build circuits by hands and see how things work in practice? I am not even sure whether I can virtually prototype everything and see the exact simulation I would like to? I have no experience in Virtual PCB Prototyping, but If that's what I have to go on with, I will learn that.
Question 4: Is it possible to finish the project by myself (without a team) in a year or two?
Question 5: Have anyone worked with Chess Engines before? Any idea on whether it's even possible to modify the engine and add a bunch of new properties and functions to it? Or should I build a software from scratch? In the end, the electronic chess board should run the software/engine and perform some tasks.
I highly appreciate your time, thanks in advance!
Best of luck with your developments, looking forward to your replies. Thank You!
Sorry to say this, but it's just crazy for you to attempt this project at all. If you know nothing about Software Engineering how can you hope to improve on a topic which has been the subject of continuous effort by countless competent engineers pretty much since computers have existed.
I'm not sure what course you are studying but I think your tutors need to seriously re-consider what they are asking.
You mainly tell us about things you are not experienced in, turn it the other way round, what ARE you experienced in (or good at, or really want to be good at) - can you use those skills to make an electronic chessboard that is in some way novel ? If, for example, you are a brilliant sculptor then just buy in everything except the chess pieces and carve them yourself. If you have no skill that is relevant then choose a different project.
Thanks for your reply Mr. Kellett,
I will agree with the fact that the project is tough. I have some experience in each of three subsections, in particular, with programming skills in C, C#, and Python, CAD modeling in SolidWorks and basic electronics. I have newly graduated with Applied Mathematics degree, with focus on applications in Engineering (Robotics and Computer Science). I have been developing a 4x4 demo of this project for 6 months last year , with a fewer range of capabilities tho. However, I succeeded in all of my attempts, which were similar to what I would like to do now, just on a smaller scale. This project is not an assignment, it's my own project which I aim to finish in coming 2 (maybe 3 years at most), either by myself or with a good team. In fact, things I would like to develop are not kind of innovative-technical improvements, but rather some additional capabilities one device can do(regarding Software part). I have about 2 years experience with my own amateur projects with Arduino and Raspberry Pi, I've just been trying everything in practice without making serious circuit designs of large scales, making PCB's or building a software before. Electronics, Product Design, and Programming are what I am passionate about, I am looking for boosting my skills in these branches and simply decided to work on a more serious project.
I probably had to mention something about my background in the post, so that people can judge more objectively and give some practical advice. Thank you for your attention sir. Best of luck with your projects.
Without any experience or background, maybe you start with something simple, like taking an Arduino board and blink some LED's, then use a breadboard with some simple circuitry.
The current project will exceed your level and will result just in frustration.
Learn first to walk before you try running.
Hmmm, I can appreciate ambition, but the scope of work and your experience level makes this a tall order. That said, here's how I'd go after it:
>> First, advice: Breadboard Everything, only commit to a PCB Known functional modules. Modularize as much as you can, simpler functions make debugging So much easier. Don't get caught up in how many wires of interconnect, you can integrate later, access now is more important.
> Design and build the display. Figure out a simple way to drive and test it. Design both the image of the board, but also a data format for the state of the board. Work with the "primary" on display design, they've got to approve it.
> Develop an audit trail process that can record all states of a game. Make it exchangeable in some file format (probably out to a USB drive). This is a game feature: reviewing & replaying games starting at any point. A readable text format will take more space, but be valued by users. If there's a standard, adopt it.
> Evolve the driver into the UI you have in mind. Let the evolving guide what you think the UI should be.
> Make 2 UI drivers and develop how they interact. Test it with friends until it seems good. You now have an electronic chessboard.
> Show this prototype to the "primary" of the project. Use it with them and take notes on what just doesn't work as well as it should. Implement and repeat until you have a smoothly working example for 2 human players to use (also a game feature).
> Now the hard part: finding the Chess Engine. The CE will take input from the board state and issue output to the UI. Writing the 2 interfaces will be both daunting and fun, enjoy the process. The more open the CE is to it's input / output is paramount.
> How long this will take you is unknowable. I've got 40+ yrs doing this kind of stuff, the display and CE will be the hardest, with the UI not trivial either.
Good Hunting -- you're stalking big game. <<<)))
Thank you very much for practical pieces of advice, I found them very useful and will try to implement them carefully. I will try my best sir, thanks!
First, I agree with the other responses. This would be a senior-level project in a combined EE/Embedded/CS 4-year university course.
If you are dead-set on this, I would first suggest going the "pure" sw approach. Create a library the chess program would interface with. (Actually, I would use a checkers program first - the same board, moving pieces, same sensors, etc). Specifically, functions to create the board data structure, display the data structure, read in the sensors, illuminate the squares, etc. This would become the interface later to the actual hardware. A mouse click substitutes for a finger touching a square on the hardware version.
Once that is working, then you can start on the hardware. Get an arduino kit and good book and start through them. Amazon has the "Elegoo EL-KIT-003 UNO Project Super Starter Kit with Tutorial for Arduino" - a reasonable starting point. There are others out there.
Look at hackerspaces.org. Find a hackerspace near you. Become a member. Other members can help you learn programming and making hardware.
But - if you can, enroll in a good university as a combined EE and CS. You will learn the skills you need, not just to do this project, but to have a successful career.