I am 2 years old in this Arduino world. I am currently working on a project where I am about to make use of a fingerprint sensor. Now my question is that could we be able to make use of a sensor that we usually find in our mobile phones with ATmega328p microcontroller chip. And what if that there were no libraries written for Arduino so that will make my life easier. And I wonder how these tech companies make use of any sensor they would like to use without any trouble while there is no existing textbook that taught these employees while pursuing a degree in CSE or ECE about how to write code for a particular sensor. Now I know that there are certain protocols like SPI, I2C, UART, etc. But how do they do it, and how do they know about microcontrollers and IC's that were never taught to them in any degree or course? I always scratch my head while looking at the consumer electronics, and the IC's and Chips that they have on their PCB board were never found on google, And by chance, if an IC or microcontroller is found then I barely understand the datasheet or the documentation which was written in Chinese or some other language. I hope someone could help me understand how all this happens.
1 Answer
About the fingerprint sensors from mobile phones: You might find the answers to this question useful. They explain in detail, why it is not really worth the effort to try interfacing such a fingerprint sensor with Arduino.
How to use any module that has no library for arduino?
You need to read the datasheet of the module. It should explain in detail, how the module is used. When you understood, how it works, (and understanding it is really really important) you can start implementing it in code, for example by writing your own library. A library is just a wrapper around the interfacing code for that module. If the module uses common used interfaces or is even a commonly used component, you can often stand on the shoulders of giants by making use of other libraries in your library (for example using the Wire library in a library for a specific I2C sensor). That makes it easier.
But how do they do it, and how do they know about microcontrollers and IC's that were never taught to them in any degree or course?
The engineers don't get taught to use specific controllers or ICs. They get taught the fundamental principles, including common interfaces like I2C, SPI, UART, I2S ... . In the end it all comes down to the datasheet of a component. It should explain all details, that are needed to use the component correctly, or at least reference to further documents. For example most microcontroller datasheets directly explain, how I2C is implemented in these microcontrollers. You can use that to implement I2C communication, even without a preexisting library. Yes, that can be a tedious and complex task, but it is totally possible. Keep in mind, that most Arduino libraries are not written by the manufacturer of the used component, but by third party people (sometimes the community, sometimes resellers like Adafruit, e.g.).
I would say "it is not rocket sience", but yes, it can be rather difficult to dig into the very detail of interfacing a component. Without considering myself an especially smart guy, I'm writing a library for multi-master I2C communication on Attiny's (without having any degree in that field). I could start with code from others, which made the entry easier. But it also involves much time, to dig into it, write the code and test it correctly. It is difficult, but it is possible.
And by chance, if an IC or microcontroller is found then I barely understand the datasheet or the documentation which was written in Chinese or some other language.
Good manufacturers and resellers provide a datasheet in english for their products. That cannot be said for every product, that you can purchase. Writing documentation takes time and thus costs money. Chips directly from China (where most electronics is produced these days) might have less good or no documentation at all, though these chips are often way cheaper. As a hobbyist you should stick to the good documentated components, if you don't want to really dig into it.
the IC's and Chips that they have on their PCB board were never found on google
PCB designs are only found in the internet, if they are published under some open source license (or if they were illegally leaked by someone). If a company doesn't want to publish it's product designs, that is totally ok.
About the components in consumer electronics: I think you refer to that the chips often don't have a googleable product number/marking to find a datasheet. That is because often these chips are custom chips, made maybe only for this company or even this specific product. Why would they want to publish a datasheet for it? They are not meant for public use for all. The design of components is often a good kept secret, that the companies are not willing to share, since it generates their revenue.
Hobbyists and small companies use publicly available, good and publicly documented parts to make their life and investment in the project easier. Big companies can easily hire people to design a custom chip, that will only contain the needed features. (With mass produced products you can save money this way, by not always needing to buy even the unused resources of a standard controller). Another reason to use a custom (maybe even a not programmable) chip is to keep the code in it secret.
All in all keep in mind, that the hobbyist world of Arduino and the world of consumer electronics like smart phones are rather different. Sure, they rely on the same principles, but the way, how things are done and created, is very different.
-
Thank you so much for such a piece of detailed information. So what should I consider to learn so that I could be knowledgeable enough to develop my own custom IC? Are there any books and references for this. Commented Feb 19, 2020 at 11:51
-
To be honest: No I cannot recommend things to learn for this. There are certainly many good books out there, but I don't know enough about this field to recommend anything. Designing your own IC is way over anything here. It is not something, that you can easily learn. And you are on the wrong site here to ask for it, since Arduino is not about custom IC design. Why do you want to design your own IC in the first place? From your question I assumed, that you are not doing this as a job– chrislCommented Feb 19, 2020 at 12:18
-
I just asked to give it a try . I am actually not ready to design any custom IC. And by the way I am very much passionate to create a product and sell it. I have an idea and I wanted my imagination to get real . Since I am new to electronics as I am a CSE student. I always stick to software engineering projects. I have never really thought that I will be so much passionate about electronics as I am today. I wanted to tinker a new product that is making rounds all day in my head. But due to my background in electronics I feel like I am lost. Commented Feb 19, 2020 at 12:26
-
2Electronics of IC internals are like electronics of discrete components, but much more complex. You first need to understand electronics in general, before you can even start with thinking about IC internals. I think this is out of your reach. Instead you can simply use publicly available parts to make your product and sell it. That will be way easier, especially if you want to start selling your product in this century. Take your passion and put it into normal electronics, not in designing ICs. When you have enough experience, you can still look into that topic.– chrislCommented Feb 19, 2020 at 14:40
-
1Reading a datasheet is a bit of an art, and trying to start with something like an SPI sensor that lacks even demo code makes for a very steep learning curve. If you want to learn about interfacing over one of these buses, try getting something like an LM75 temperature sensor, for which there are decent datasheets. Then try to interface without too much googling - and without using a single line of code you don't understand– Chris HCommented Feb 19, 2020 at 15:14