Анотация:Ўрнатилган тизимлар икки қисмга дастурий таъминот (Software) ва техник таъминотга (Hardware) ажралади. Қачонки тизим тўлиқ ишлаши учун албатта бу иккала таъминотини яратиш технологияси талаб қилади. Ушбу мақолада ўрнатилган тизимларда кўп қўлланиладиган, оммабоп Ардуино дастурлаш воситаси ва контроллерлар тавсифлари келтирилган.
Аннотация: Встроенные системы делятся на две части программное и техническое обеспечение. Для полной работы этих систем обязательно нужно разработать технологию упомянутых обеспечений. В этой статье приведены описания контроллеров широко распространённого и часто используемого программного средства Ардуино.
Annotation: Embedded systems are divided into two parts software and hardware. For full operation of these systems is necessary to develop the technology of the above-mentioned software and hardware. This article provides descriptions of the controllers of software tools Arduino, which are widespread and commonly used.
Калит сўзлар: Ўрнатилган тизимлар,дастурий таъминот, техник таъминот, Ардуино дастурлаш.
Ключевые слова: Встроенные системы, программное обеспечение, техническое обеспечение, Arduino программирования.
Keywords: Embedded systems, software, hardware, Arduino programming.
Ўрнатилган тизимлар кўплаб сохаларни автоматлаштиришга мўлжалланган, масалан энергетика, металлургия, иссиқлиқ таъминоти ва хакозолар. Бундан ташқари маиший техника, телекоммуникация, транспорт ва аерокосмик тизимларда, саноатни автоматлаштиришда кенг кўлланилади Кўплаб бошқарилувчи тизимлар асосидаги реле-контакт схемалари, аналогли техника ва механик агрегатлар ўз ўринларини дастур ёрдамида бошқарилувчи тизимларга фаол равишда бўшатиб бермоқдалар. Бошқарилувчи тизимларни функциялари ва ишончлилиги ортиши уларни қўллаш сохаларини кенгайтирмоқда. Ўрнатилган тизимларда лойихалашда энг кўп қўлланиладиган дастурий ва техник таъминот бу Arduino хисобланади. Хўш Arduino ўзи нима? Биринчи микроконтроллерларни пайдо бўлиши микропроцессор техникасини ривожланишини янги даври билан белгиланади. Олдинлари бирор бир микроконтроллер асосидаги қурилмани йиғиш учун схематехника асосини, процессор, қурилмаларни ассемблер тилида дастурлашни билиш талаб этилади. Бундан ташқари программатор, отладка қилиш ва бошқа кўшимча қурилмаларни талаб қилади.
Бундай холатда кўплаб фойдаланувчилар ўз лойиҳаларида микроконтроллерлардан кўп вақт фойдаланмаганлар. Хозирда хаммаси ўзгарган, яъни қурилмаларни ривожланиши микроконтроллерлар билан ишлашда мухим материаллар базаси ва кўплаб фанларни билиш каби мезонларсиз ишлаш имкониятларини беради. Мисол учун бундай қурилма италиялик ишлаб чикарувчилар томонидан ишлаб чиқилган Arduino лойиҳа хисобланади. Arduino ва унинг клонлари ўзида дастурий таъминот ва тайёр электрон блоклар тўпламини жамлаган. Электрон блок бу ерда микроконтроллер ўрнатилаган печат платаси ва уни ишлаши учун зарур бўлган минимум элементлар. Аниқроғи Ардуино электрон блок замонавий компьютерларни аналогли она платаси хисобланади. Унда ташқи қурилмаларни улаш учун разъёмлар, хамда микроконтроллерда дастурлашни амалга оширишда компьютер билан уланувчи разъёмлар мавжуд. Хусусан Atmel фирмасининг Atmega микроконтроллерлари махсус программаторлар учун мос бўлмаган дастурларни ишлаб чиқишда фойдаланилади. Қисқа қилиб айтганда янги электрон курилмани яратишда керак бўладиган нарсалар: Ардуино плата, алоқа учун кабел ва компьютер.
Arduino лойихасининг иккинчи қисми бу бошқарувчи дастурни яратиш учун дастурий таъминотдан иборат. У ўзида микроконтроллерлар учун С/С++ ни қамраб олган дастурлаш тили ва оддий лойихалаш воситаларини бирлаштиради. Унга аппарат қисмини ўрганмасдан туриб дастур яратишда фойдаланиладиган элементлар қўшилган. Шундай қилиб Arduino да ишлашда амалий жихатдан фақат С/С++ дастурлаш тили асосларини билиш етарли. Ардуино учун лойиха кўплаб кутубхоналар код таркиби ва турли қурилмалар билан ишлашда иборат [1].
Arduino дастурлаш учун ташқи программатор талаб қилмайди, чунки у микроконтроллер юкловчи билан таъминланган (boot loader). Бундан ташқари платада USB-UART кўприги бўлиб бунинг ёрдамида, оддий USB интерфейс орқали скетчни(Arduino да ёзилган код) юклаб олишда фойдаланади. Ардуино учун дастур кодини С++ тили синтаксисида мавжуд Processing/Wiring бажаради. Ёзилган код таркиби ва уни контроллерга юклаш учун очиқ манба Arduino IDE дан фойдаланади. Arduino дастурлашда Wiring да ёзилган кодни дастур С/С++ тилида ўқиб олади, кейин AVR-GCC компиляторга компиляция жарёни бажарилади. Аслида ихтисослаштирилган AVR вариантдаги микроконтроллерлар учун C/C++ ишлатилади.
Arduino учун дастурнинг базавий структураси камида иккита мажбурий қисмдан таркиб топади: setup() ваloop() функциялари. setup() функцияси- да олдин кутубхоналарни кўшиш, ўзгарувчиларни эълон қилинади.setup() функцияси хар сафар Arduino платаси кайта юклаганда ва манбани улаганда ишлайди. У ишчи портларни режимини ўрнатиш, ўзгарувчиларни инициализациялаш учун ва қолган дастурнинг асосий цикли харакатига тайёргарлик учун фойдаланилади. У албатта хеч қандай харакатни бажармаса хам дастурга қўшилган бўлиши шарт. loop() функцияси такрорланувчи цикл булиб унинг асосига ёзилган буйруқларни кетма-кет бажаради. Бу фунция циклик булиб у асосий ишни бажаради.
Энди микроконтроллерга тавсифига тўхталиб ўтсак. Микроконтроллер схематехника нуқтаи-назаридан ўзида бир кристал жамловчи, таркибига процессор, опреатив хотира қурилмаси(ОХҚ), дойимий хотира қурилмаси(ДХҚ) ва ташқи қурилмалар интерфейси кирувчи компьютердир. Кўплаб микроконтроллерни турлари мавжуд бўлиб улар процессор типи, хотирани типи ва хажми бўйича, ташқи интерфейслар таркиби ва хаколар билан фарқланади. Энг кенг тарқалган микроконтроллер периферия интерфейслари куйидагилар:
- Аналог ва рақамли киритиш/чиқариш портлари (GPIO);
- Киритиш-чиқариш интерфейслари-UART, I²C, SPI, CAN, USB, IEEE 1394, Ethernet;
- Кенг-импульсли модулятор (PWM);
- Ўрнатилган flash-хотира массиви.
- Кенг тарқалаган микроконтроллерлар оилалари ARM, AVR ва PIC бўлиб, улар саноат тизимларини бошқаришда, замонавий маъиший техникаларни ва турли гаджетларда қўлланилади [2].
Хозир ўрнатилган тизимларни ишлаб чиқишдаги 3 та платформани қўриб чикамиз: Arduino Uno, BeagleBone, RaspberryPi, уларни таққослаб лойиха ишлаб чиқувчиларга ўз тавсияларимизни берамиз (1-расм).Умумий ҳолатда профессионаллар учун 3та хамма платформаларни тавсия қилиш мумкин.
1-расм. Чапдан ўнга караб: ArduinoUno, BeagleBone, RaspberryPi.
Arduino Uno, BeagleBone, RaspberryPi платаларни тақосслаш характеристикалари.
Платформа |
Arduino Uno |
Raspberry Pi |
BeagleBone |
Модел |
R3 |
Model B |
Rev A5 |
Ўртача бахоси |
29.95$ |
35$ |
89$ |
Габарит ўлчами |
7.5 × 5.3 см |
8.5 × 5.4 см |
8.6 × 5.3 см |
Микроконтроллер |
ATmega328 |
ARM11 |
ARM Cortex-A8 |
Такт частотатаси |
16 МГц |
700 МГц |
700 МГц |
Оператив хотира қурилмаси |
2 Кбайт |
256 Мбайт |
256 Мбайт |
Flash-хотираси |
32 Кбайт |
SD карта |
4 Гбайт (SD карта) |
EEPROMхотираси |
1 Кбайт |
- |
- |
Манба кучланиши |
7 – 12 В |
5 В |
5 В |
Энг кам энергия сарфи |
42 мА (0.3 Вт) |
700 мА (3.5 Вт) |
170 мА (0.85 Вт) |
Рақамли киртиш/чиқариш |
14 |
8 |
66 |
Аналоголи кириш |
6 |
- |
7 |
КИМ(кенг интерфейсли модулятор) канали |
6 |
- |
8 |
TWI/I2C интерфейси |
2 |
1 |
2 |
SPI интерфейси |
1 |
1 |
1 |
UART интерфейси |
1 |
1 |
5 |
Қайта ишлаш инструменти |
Arduino IDE |
IDLE, Scratch, |
Phyton, Scratch, |
Ethernet порти |
- |
10/100 |
10/100 |
USB Master интерфейси |
- |
2 USB 2.0 |
USB 2.0 |
Видео чиқиш |
- |
HDMI, композитли |
- |
Аудио чиқиш |
- |
HDMI, аналогли |
Аналогли |
Arduino – бу етарлича функционал ва ўзгарувчан платформа бўлиб ўрнатилган тизимларни ишлаб чиқишда ташқи курилмалар билан ўзаро боғланишда катта имкониятларни беради. У микроконтроллерларни ўрганиш учун жуда яхши мос келади ва кичик лойиҳаларни яратишга хизмат қилади.
Raspberry Pi – тизимлар учун оптимал танлов бўлиб, интернетга уланиши, график фойдаланувчили интерфейси ва мавжуд дисплейни зарурлиги билан ажрлаиб туради.
BeagleBone – бу платформа Arduino ўзгаришларига мослаштирилган, Rapberry Pi процессори платаси унумдорлигида ва Linux операцион тизимдадир(Raspberry Pi га қараганда унумдорлиги юқорироқ). Етарлича сондаги киритиш/чиқариш мавжуд булиб, BeagleBone оддий тармоққа уланиши ва web-сервер сифатида фойдаланишни таъминлайди [4].
Афзалликлари:
- Arduino IDE асоси(негизи) AVRGCC дир. Arduino ни ўрганиш сизга С++ ни ўрганишга ёрдам беради. Агарда сизага Arduino учун кайсидир аниқ юқорисатхли буйруқ ёки кутубхона қаноатлантирмаса, сиз уни аналогик С++ тилига алмаштиришингиз мумкин.
- Сиз биргина USB кабел орқали (айрим клонлари учун FTDI) Arduino да қувват билан таъминлаш, дастурлаш ва хабар алмашишингиз мумкин.
- Сиз бир неча дақиқада стандарт кутубхоналардан фойдаланиб оддий лойиҳа яратишингиз мумкин. Двигателларни бошқариш, СҚД(LCD) лар ёки етти сегментли индикаторларда маълумот чиақариш ва тугмачалардан сигналларни ўқиб олиш учун стандарт кутубхонлар мавжуд.
-Кетма-кет ва SPI интерфейслар алоқаси қойилмақом ўрнатилган.
Камчиликлари:
- Arduino IDE. Бу notepad.exe дан кейинги турувчи ноқулай мухаррир хисобланади.
- Юкловчи. лойихани тугатиб Arduino га қўлашда хар бир янги ATmega микроконтроллерида юкловчини қўлда ишлатилиши. У 2Кб хотирани эгаллайди.
- Хар хил вариантлари: Расмий моделда 30(32) Кб и 254(256)КБли хотира вариантлари бор, хамда Arduino лойиҳа, Arduino UNO да 466 байтни, Arduino Mega2560 да 666 байт жойни эгаллайди.
- Такт частотани ўзгартиришни оддий усули йуқлиги. 3,3В/8МГц даги модел бемалол 12 МГц частотада ишлай олади.
- digitalWrite() 56 циклни бажариш учун фойдаланилади. Arduino вақтга боғлиқ иловалар учун ноқулайдир.
- Сиз кетма-кет аппарат қисмлари учун стандарт кутубхоналарни осонлик билан ажратиб қўйишингиз мумкин.
- Хамда Arduino микроконтроллер архитектурасидаги регистрлар, узилишлар ва таймерлар каби мухим аспектларни яширади [3].
Хулоса қилиб шуни айтиш керакки, Arduino ёрдамида тизимни лойиҳалаштиришда лойиха мақсади, кутилаётган натижани тўғри белгилаш, тизимни дастурий ва техник воситаларини тўғри танлаш, лойихалаш мезонларини олдиндан ишлаб чиқишга, эътиборни қаратиш мақсадга мувофиқдир.
Адабиётлар:
- В. Петин Проекты с использованием контроллера Arduino. С.Петербург “БХВ-Петербург” 2014
- http://www.poprobot.ru/ideologia/kontroller
- http://cxem.net/arduino/arduino49.php
- http://www.rlocman.ru/review/article.html?di=148907