Hello to everyone,
I'm a newbie about the OBD-II adapter and I'm trying to get a better idea about it. Even if I'm doing my home-works with the Arduino Starter Kit like a good student, I still feel unsure about the Freematics adapter world.
I have done a lot of googling to have a general overview but the huge list of acronyms used everywhere (AVR, ISP, ICSP, I2C,... and a lot more) has resolved in a big headache for my (limited) mind.
I know, maybe an expert could smile by reading me but for me is the classical situation: "too much information = no information". What I need i a general "big picture" about how the Adapter is connected and how is used to collect info from the OBD connector and display results to the world.
So, I would like to ask your help to confirm me about the following things/facts: (I repeat: I have no idea of what I write below )
1) AVR
It's a kind of micro-controller developed by ATMEL
2) BOOTLOADER
It's a software that usually stay on the microcontroller itself (occupying a little amount of free RAM). It is used to make the re-programming of the microcontroller more easy and less compliacated.
Nevertheless the bootloader function could be also be implemented by a dedicated hardware, so the all the RAM of the microcontroller is completely free for storing Sketches.
3) FIRMWARE
Speaking about Arduino and the OBD2 adapter the term is synonym of "Arduino sketch".
4) ISP
Is a piece of hardware used to store a new program (pardon, firmware or sketch) in a microcontroller when it does not provide the bootloader function internally.
5) OBD2 ADAPTER PROGRAMMING
The adapter contains the same (or similar?) chip of Arduino, so it can be programmed by using Sketches but but but... it needs the help of another device in order to re-program.
So, I think that the OBD2 adapter does not implement the "bootloader" fuctionality by itself.
The particular external device that helps the user to "install" his programs (i.e. firmware/sketches) into the adapter is called "programmer".
6) USBasp AS PROGRAMMER
It's a piece of hardware that works as bootloader, it allows to re-program the OBD2 Adapter. The connectiond are the following:
Your PC --> USB cable --> USBASP device --> ODB2 Adapter
7) Arduino AS PROGRAMMER
In this case you use an Arduino board to program another Arduino board whereas the "target" board is the ODB2 Adapter. The connections are something like this:
Your PC --> USB cable --> Arduino --> ODB2 Adapter
8) PROGRAMMER-TO-ADAPTER PHYSICAL CONNECTION
When the programmer device is compliant with the ICSP standard (In Circuit Serial Programming) it has to use a standardized 5-wires connection. The 5 wires are connected to the rear part of the Adapter.
9) ADAPTER OUTPUT
There is no dedicated output connector to read values from the adapter. Quite surprisingly the connector used to program it is the same used to read results (!).
Arduino (and the ODB2 adapter too) defines as minimum one serial connection (called UART connection also) using a particular protocol&wiring (called SPI Serial peripheral interface).
Basically, with two wires (Tx and Rx) you can read data from the adapter to another device (e.g. an Arduino board). Pins for serial communication are the same used by the "programmer" device.
I have some other questions/doubts too. But for now what above is enough... somebody could confirm that what I wrote is right or correct it?