Преди всичко Ардуино е хардуерна платформа, т.е. е има физическа платка, като в предходната въвеждаща статия споменахме, че има отделно брандове и семейства платки. 

Говорейки конкретно за бранда Ардуино, това са част от тяхното семейство платки:

Повечето платки и на други производители имат сходни характеристики и форми. Разбира се, един от най-важните елементи на тези платки е непосредствено микроконтролерът. В табличката по-долу са представени основни параметри, които ще са важни за теб по-късно. В таблицата са указани наименованията на самите микроконтролери в платките. Всяка подобна платка в описанието си има и названието на този микроконтролер. 

ПараметърATtiny85ATmega328ATmega32u4ATmega2560
кол-пинове83244100
достъпни пинове5232486
flash памет8 Kb32 Kb32 Kb256 Kb
EEPROM памет512 bytes1 Kb1 Kb4 Kb
SRAM памет512 Bytes2 Kb2.5 kB8 Kb
канали на АCP3 (4 rst)6 (8 в SMD )1216
канали PWM36715
таймери2 x 8bit2х 8bit2х 8bit2х 8bit
1х 16bit2х 16bit4х 16bit
Serial интефейсинех1х1х4
I2C интерфейсинедадаДа
прекъсвания1 (6 PCINT)2 (23 PCINT)5 (44 PCINT)8 (32 PCINT)
наименования на
платки
Trinket – Mini
Digispark, LilyTiny
Uno, Nano, Pro Mini, Lilypad, StrongLeonardo, Micro, Pro Micro, BS MicroMega, Mega Pro

След като сме определи какви функционалности ни предоставя всяка платка, е време да се потопим по-подробно в начините, по които тази платка може да комуникира с външния свят.

Тъй като платформата е предназначена за бърза и лесна разработка на електронни устройства с различна степен на завършеност, реално ограничения почти няма. Платформата ти дава свобода да разработиш и направиш от електронен часовник до сравнително сложен ходещ робот и даже устройства, които да взаимодействат с персоналния компютър.

Да се върнем на комуникацията с външния свят. Платката с микроконтролер може да се разглежда като команден център или мозък на вашето устройство. Този команден център трябва по някакъв начин да събира информация от външния свят и да реагира на тази информация.

Прекрасния пример тук са например очите ни. При ярка светкавица нашите очи възприемат светлинния поток. Преобразуват светлинния поток в електрохимичен сигнал и този сигнал изпращат до мозъка ни. Мозъкът получава този сигнал и на базата на получената информация изпраща команда по друг нервен канал. Тази команда кара нашите клепачи да се затворят, за да предпазят очите ни.

Дигитален сигнал 

По подобен начин работи и платката с микроконтролер. Нека да започнем с дигиталните сигнали, чрез които електрониката комуникира. Още този тип сигнал се нарича логически сигнал, като той използва две най-прости състояния. Нула и единица или истина и лъжа.

Ти, драги читателю, ще си зададеш въпроса как така нулите и единиците могат да кодират сложни сигнали и въобще как комуникираме с нула и единица. Аналогията тук също е очевидна – ние, хората, имаме азбука от букви. От тези букви ние съставяме думи, а оттам – изречения. По този начин с комбинации от 30 букви кодираме информация, която предаваме един на друг. Т.е. фактически няма значение какво използваме за символи при кодирането на информация, важното е как комбинираме тези символи.

Аналогия пак с нашата реч: една и съща азбука може да се използва от различни езици. И хората, които знаят само един от тези езици, ще чуват познати звуци, но нищо няма да разбират.

Именно по този начин работи и дигиталната комуникация при електрониката. В крайна сметка това винаги са единички и нулички, но това как ние ги комбинираме, определя и с кого и как може да комуникира микроконтролерът.

Ето пример как с едни и същи нули и единици можем да имаме все едно че три различни езици. Тези езици на комуникация се наричат протоколи. Както може да се досетиш, за да могат две устройства да комуникират, е необходимо да използват един и същ протокол за комуникация, т.е. да говорят на един и същ език.

Тук е важно да споменем как се формират нулите и единиците. Микроконтролерът работи благодарение на електричеството – съответно електрическия сигнал е носителя на информация. Ти, скъпи читателю, знаеш, че електричеството се представя под формата на положителен и отрицателен заряд.

Обикновенно микроконтролерите работят с 3.3 или 5 волта напрежение. По този начин при подадени 5 или 3.3 волта микроконтролерът го разглежда като единичка, т.е. има напрежение. А когато не подаваме напрежение, микроконтролерът го разглежда като нула, т.е. няма напрежение. Това е базово обяснение само за визуализация, разбира се. Детайлите са една идея по-сложни, но това е за по-напреднали и засега няма нужда да се разглежда.

Формирането на този сигнал се осъществява от транзисторни схеми, транзисторите са миниатюрни шалтерчета, които много бързо включват и изключват напрежението.

Сега плавно преминаваме към Протоколите за комуникация, наричани в хардуерния свят още интерфейси.

Ардуино и Ардуино-подобните платки имат хардуерна поддръжка на следните протоколи за комуникация:

UART  – Това е интерфейсът, благодарение на който ние комуникираме с платката след като е програмирана. Този интерфейс е доста разпространен и благодарение на него много от комуникационните стандарти обменят данни: например Bluetooth/GSM/GPS комуникират чрез UART при размяната на текстови съобщения. Този протокол има съществен минус: при комуникация чрез UART е възможно да се комуникира само с едно устройство. Казано другояче, чрез UART едновременно могат да комуникират само две устройства. 

I2C – Безумно популярен стандарт, който се използва от около 90% модули и сензори за Ардуино и Ардуино-подобните платки. За разлика от UART този стандарт на комуникация има два огромни плюса. Той е достатъчно бърз и едновременно по един канал могат да комуникират 127 устройства. И за всичко това се използват само две кабелчета. Т.е. на две кабелчета можеш да накачиш 127 устройства и те ще могат едновременно да комуникират. Разбира се, има особености, всяко от тези устройства трябва да има уникален идентификатор или уникално име. Така в една беседа вече може да участват не само двама, а прилична тълпа. 

SPI – Също много популярен и много бърз протокол, т.е. може да изпраща много данни. Благодарение на този протокол например можеш да вържеш към своята прекрасна Ардуино платка SD карта, за да пазиш на нея данни . Също така дисплеите, които искат данни, за всеки от пикселите си обикновено комуникират с микроконтролера чрез SPI. И тук вече скоростта на данните ще бъде ограничена с мощността на микроконтролера в твоята платка. Също така един от начините да се зарежда код в платката е чрез SPI програматор. 

Освен гореизброените протоколи Ардуино и Ардуино-подобните платки поддържат и други протоколи (CAN 1-wire и т.н.). Всеки един от тези протоколи има своите плюсове, минуси и предназначение.

В началото сме споменали че тези протоколи се поддържат хардуерно но. Всъщност ти драги читателю можеш да емулираш произволен протокол дори и азбуката на морзе чрез програма и правила които сам ще си измислиш.

Аналогов сигнал

Аналоговият сигнал е малко по-архаичният тип сигнал, но той също има своите предимства. Както казахме по-горе, дигиталният има само две състояния – има ток, няма ток, нула или единица, истина или лъжа.

Аналоговият сигнал е малко по-интересен, реално Ардуино и Ардуино-подобните платки умеят само да четат такъв сигнал. Но и това е достатъчно, тъй като много от сензорите издават именно такъв. Много грубо казано, аналоговият сигнал не предоставя две състояния, а безкрайно много спрямо точността, която целим и можем да измерим. За визуализация ето сравнение между аналогов и дигитален сигнал:

От картинката става ясно, че дигиталният има точно две състояния, докато аналоговият плавно се прелива от едното в другото. И тази плавност може да е безкрайно точна. А ако кажем още по-грубо, то при дигиталния сигнал ние имаме само 0 волта и 5 волта  като сигнал а при аналоговия това би изглеждало като 0.1 0.2 0.3 0.3 0.5 …..1 1.1 1.2 …….5