{"id":2052,"date":"2021-03-19T14:16:48","date_gmt":"2021-03-19T11:16:48","guid":{"rendered":"https:\/\/www.mikrobotik.com\/wp2\/?p=2052"},"modified":"2021-04-01T13:00:36","modified_gmt":"2021-04-01T10:00:36","slug":"stm32-ile-program-yapmaya-baslamak","status":"publish","type":"post","link":"https:\/\/www.mikrobotik.com\/wp2\/2021\/03\/19\/stm32-ile-program-yapmaya-baslamak\/","title":{"rendered":"STM32 ile Program yapmaya ba\u015flamak."},"content":{"rendered":"<p>STM32 bug\u00fcne kadar elime almad\u0131\u011f\u0131m, ilgilenmedi\u011fim bir i\u015flemcidir. Hatta C dilini de hi\u00e7 bilmem. Sadece Arduino kullan\u0131m\u0131ndan gelen bir a\u015final\u0131\u011f\u0131m var. Bundan dolay\u0131 ba\u015flarken bir\u00e7ok ki\u015finin tavsiyesine ba\u015fvurdum. Bunun yan\u0131 s\u0131ra adapte olmak i\u00e7in uzun saatler ara\u015ft\u0131rma yapmak zorunda kald\u0131m. Sizler de ba\u015flarken bu kadar yo\u011fun \u00e7aba sarf etmeyesiniz diye, tecr\u00fcbelerimi payla\u015fmak istedim. <span style=\"color: #ff6600;\">Bu yaz\u0131y\u0131 STM32 konusunda yeni ba\u015flayan birisinin yazd\u0131\u011f\u0131n\u0131 unutmay\u0131n.<\/span><br \/>\n\u0130lk yapaca\u011f\u0131n\u0131z ara\u015ft\u0131rmalar\u0131, en aza indirmek ve ba\u015flang\u0131c\u0131n\u0131zda size yol g\u00f6stermek i\u00e7in yazd\u0131m.<\/p>\n<p>\u00d6ncelikle videoda anlatt\u0131m ama burada da anlatmak istedi\u011fim stm32 kartlar\u0131d\u0131r. Bir\u00e7ok stm32 i\u015flemcisi olmas\u0131na ra\u011fmen stm8 i\u015flemcilerde piyasa da mevcut. Fakat \u00f6rnekler genelde stm32 \u00fczerine verildi\u011finden <span style=\"color: #ff6600;\">STM8<\/span> alman\u0131z\u0131 <span style=\"color: #ff6600;\">TAVS\u0130YE ETM\u0130YORUM<\/span>. Zaten ald\u0131\u011f\u0131m STM32 demo board da \u00e7ok pahal\u0131 de\u011fil.<\/p>\n<p><span style=\"color: #ff6600;\">LINK\/V2(CN) LINK STLINK STM8 STM32 Programlay\u0131c\u0131 (benim ald\u0131\u011f\u0131m yerde kalmam\u0131\u015f)<\/span><a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/STM32F030F4_mikrobotik_ornek\/unnamed.jpg?raw=true\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter lazyload\" data-src=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/STM32F030F4_mikrobotik_ornek\/unnamed.jpg?raw=true\" alt=\"\" width=\"198\" height=\"198\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 198px; --smush-placeholder-aspect-ratio: 198\/198;\" \/><\/a><br \/>\n<a href=\"https:\/\/urun.n11.com\/arduino-urunleri-ve-setleri\/linkv2cn-link-stlink-stm8-stm32-programlayici-P419267249\">https:\/\/urun.n11.com\/arduino-urunleri-ve-setleri\/linkv2cn-link-stlink-stm8-stm32-programlayici-P419267249<\/a><\/p>\n<p><span style=\"color: #ff6600;\">STM32F030F4P6 Geli\u015ftirme Kart\u0131\u00a0<\/span>STM32 yi ald\u0131\u011f\u0131m yer buras\u0131. <span style=\"color: #ff6600;\">Daha ucuz yerlerde var.<\/span><\/p>\n<p><a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/STM32F030F4_mikrobotik_ornek\/stm32f030f4p6-gelistirme-karti-1.jpg?raw=true\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter lazyload\" data-src=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/STM32F030F4_mikrobotik_ornek\/stm32f030f4p6-gelistirme-karti-1.jpg?raw=true\" alt=\"\" width=\"182\" height=\"182\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 182px; --smush-placeholder-aspect-ratio: 182\/182;\" \/><\/a><br \/>\n<strong><a href=\"https:\/\/urun.n11.com\/arduino-urunleri-ve-setleri\/stm32f030f4p6-gelistirme-karti-P476833661\">https:\/\/urun.n11.com\/arduino-urunleri-ve-setleri\/stm32f030f4p6-gelistirme-karti-P476833661<\/a><\/strong><\/p>\n<p>Kar\u015f\u0131la\u015ft\u0131rma yaparsak en ucuz PIC16F1827 smd tip entegre almak isteseniz 12-13 TL. Bunun yerine STM32 demo board alsan\u0131z 14TL den ba\u015flayan fiyatlar var.<\/p>\n<p>Arduino nano bile alsan\u0131z 20 TL den ba\u015fl\u0131yor. <span style=\"color: #ff6600;\">Bence piyasa fiyatlamas\u0131 olarak STM32 rekabet\u00e7i fiyatlar\u0131yla kullan\u0131lmaya de\u011fer bir i\u015flemci.<\/span><\/p>\n<p>Ba\u015flarken <span style=\"color: #ff6600;\">IDE<\/span> sorunu vard\u0131. \u00d6ncelikle <span style=\"color: #ff6600;\">C derleyiciler<\/span> devreye giriyor. Fakat Arduino IDE gibi kolay bir IDE ba\u015flamam\u0131 kolayla\u015ft\u0131racakt\u0131. Ayr\u0131ca PIC i\u015flemcilerde ve Arduinoda olmad\u0131\u011f\u0131 bir \u015fekilde \u00f6n haz\u0131rl\u0131k gerekiyordu. PIC i\u015flemcilerde de pimlerde birka\u00e7 g\u00f6rev olmas\u0131na ra\u011fmen kolayl\u0131kla hakim olabildi\u011fim bir kullan\u0131m vard\u0131. <span style=\"color: #ff6600;\">Belki de datasheet okumak bunu kolayla\u015ft\u0131r\u0131yordu.<\/span><br \/>\n<strong>STM32 de hi\u00e7 entegre datasheetine bakmadan hi\u00e7bir \u015fey bilmeyen biri gibi ba\u015flad\u0131m.<\/strong> \u00d6nce program nas\u0131l yap\u0131l\u0131r diye bakt\u0131m. Kart ve programlay\u0131c\u0131y\u0131 buldum, bilgi edindim. Ama IDE konusunda \u00e7e\u015fitli tavsiyeler vard\u0131. Bunlar\u0131 teker teker indirdim y\u00fckledim.<br \/>\n<span style=\"color: #ff6600;\">Fakat hi\u00e7 biri daha \u00f6nce \u00f6\u011frendi\u011fim metotlara benzemiyordu.<\/span><br \/>\nBenzemiyordu fakat \u00f6\u011frenince ne kadar <span style=\"color: #ff6600;\">kolayla\u015ft\u0131rd\u0131\u011f\u0131n\u0131<\/span> da g\u00f6rm\u00fc\u015f oldum. PIC programlarken her birinin sigorta ayarlar\u0131na kadar kendim bulup yazmak zorunda kal\u0131yordum.<br \/>\nBu kadar program\u0131 denerken birileri CUBE IDE program\u0131n\u0131 kullan ba\u015fka bir \u015feye ihtiyac\u0131n yok dedi. <strong>Dedi\u011fi do\u011fruydu.<\/strong> <span style=\"color: #ff6600;\">CUBE IDE<\/span> \u00f6nce grafik ortamda entegre resmi \u00fczerinde bize istedi\u011fimiz bacaklar\u0131 ayarlamaya izin veriyor, Saat frekans\u0131n\u0131 ve di\u011fer ayarlar\u0131 kolayl\u0131kla yapmam\u0131z\u0131 sa\u011fl\u0131yordu.<br \/>\nBunlar\u0131 yapt\u0131ktan sonra <span style=\"color: #ff6600;\">SAVE ALL<\/span> dedi\u011fimizde bizim i\u00e7in t\u00fcm ayarlad\u0131klar\u0131m\u0131z\u0131 bir program haline getirip bize sunuyor.<\/p>\n<p>Art\u0131k bundan sonra istedi\u011fimiz alanlara kendi program\u0131m\u0131z\u0131 yazmak kal\u0131yordu.<br \/>\n<span style=\"color: #ff6600;\">Buraya kadar her \u015fey kolay gibi. C programlama dilini biliyorsan\u0131z, bundan sonras\u0131 da sizin i\u00e7in kolay olacakt\u0131r.<\/span> Fakat benim C bilgim yoktu.<\/p>\n<p>Bir yandan i\u015flemciyi tan\u0131m\u0131yorum bir yandan da C bilgim yok. Ne kadar zorland\u0131\u011f\u0131m\u0131 tahmin edersiniz. <span style=\"color: #ff6600;\">Fakat t\u00fcm d\u00fcnya, internet sayesinde, \u00f6\u011fretici dok\u00fcmanlarla dolu. Ayr\u0131ca bol miktarda \u00f6rnek var. Bunlar\u0131n yan\u0131 s\u0131ra yard\u0131mc\u0131 olan bir\u00e7ok ki\u015fi var.<\/span> Bunlarla ba\u015flad\u0131\u011f\u0131m zaman yap\u0131lmayacak bir \u015fey yok dedim.<\/p>\n<p>Programlama ge\u00e7mi\u015fim oldu\u011fundan algoritma sorunum yok. Ne istedi\u011fimi biliyorum. Ayr\u0131ca bir\u00e7ok programlama dili, benzer ihtiya\u00e7lar\u0131 kar\u015f\u0131l\u0131yor. Yani hepsinde <span style=\"color: #ff6600;\">if else , for next<\/span> gibi tan\u0131d\u0131k komutlar var. Sadece C diline \u00f6zg\u00fc yazma stilleri var. ARDUINO programlama yapt\u0131ysan\u0131z bu yaz\u0131l\u0131m \u015fekillerine de al\u0131\u015fk\u0131n oluyorsunuz. Geriye kalan, birka\u00e7 k\u00fct\u00fcphanedir.<br \/>\nBende de b\u00f6yle oldu. Her yeni \u00f6\u011frenen gibi, bir adet LED yakmak, yan\u0131nda 1 BUTON kullanmak, sonras\u0131nda bir de UART dedi\u011fimiz RS232 haberle\u015fmesi yapmak ba\u015flang\u0131\u00e7 i\u00e7in yeterdi.<\/p>\n<p><span style=\"color: #ff0000;\">Benim bu i\u015flemciye ilgim ise<\/span>, bug\u00fcne kadar \u00f6rnek dahi yapmam\u0131\u015f olmamdan kaynaklan\u0131yor. <span style=\"color: #ff0000;\">Kendi tasarlad\u0131\u011f\u0131m mod\u00fcl olan EASYLCD mod\u00fcl,<\/span> RS232 haberle\u015fme ile karakter LCD lerin kullan\u0131lmas\u0131n\u0131 kolayla\u015ft\u0131ran mod\u00fcld\u00fcr. Bu mod\u00fcl i\u00e7in Raspberry pi (python) ile bile \u00f6rnek yapm\u0131\u015fken, STM32 ile nas\u0131l yapamam dedim. EASYLCD mod\u00fcl\u00fc detayl\u0131 olarak tan\u0131mak isterseniz <a href=\"https:\/\/www.mikrobotik.com\/wp2\/2018\/06\/27\/easylcd-hd44780-uyumlu-karakter-lcd-seri-modul\/\"><strong>buraya bakabilirsiniz.<\/strong><\/a><\/p>\n<p><span style=\"color: #ff6600;\">Bu \u015fekilde STM32 yolculu\u011fu ba\u015flad\u0131.<\/span><a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/STM32F030F4_mikrobotik_ornek\/stm32_4.JPG?raw=true&quot;\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" class=\"aligncenter lazyload\" data-src=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/STM32F030F4_mikrobotik_ornek\/stm32_4.JPG?raw=true\" alt=\"\" width=\"305\" height=\"226\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 305px; --smush-placeholder-aspect-ratio: 305\/226;\" \/><\/a><br \/>\nLED kullanmak, Buton kullanmak \u00e7ok kolay oldu. <span style=\"color: #ff6600;\">Fakat UART kullanmak beni \u00e7\u0131ld\u0131rtt\u0131 diyebilirim.<\/span> Tabii ki bunu bir <span style=\"color: #ff6600;\">\u00f6nyarg\u0131ya ba\u011fl\u0131yorum<\/span>. Bug\u00fcne kadar \u00f6rnek yapt\u0131\u011f\u0131m programlarda ve dillerde sorunsuz UART (RS232) kullan\u0131m\u0131 var. STM32 de ise transmit dedi\u011fimiz, bilgi g\u00f6ndermek \u00e7ok kolay. Fakat RS232 \u00fczerinden bilgi almak olduk\u00e7a zordu.<br \/>\nBunun zor olmas\u0131. \u0130nterrupt (kesme) ile kulland\u0131\u011f\u0131mda gelecek olan karakter say\u0131s\u0131n\u0131n belli olma \u015fart\u0131 ve bu <span style=\"color: #ff0000;\">beni \u015fa\u015f\u0131rtt\u0131.<\/span> \u00a0Ne gelece\u011fini bilip ona g\u00f6re \u015fu kadar karakter al diyorsunuz. Bu durum, baz\u0131 zamanlarda gelecek olan karakter say\u0131s\u0131n\u0131n de\u011fi\u015fmesi, programda de\u011fi\u015fiklik ya da \u00f6nceden ayarlama yap\u0131lmas\u0131 gerektiriyordu.<br \/>\nBen programda 5 karakter bilgi alaca\u011f\u0131m i\u00e7in zorluk ya\u015famad\u0131m.<br \/>\nFakat \u015f\u00f6yle d\u00fc\u015f\u00fcn\u00fcn. Bir s\u0131cakl\u0131k de\u011feri alacaks\u0131n\u0131z. Bu de\u011fer 9 ise sorun olmuyorsa 10 oldu\u011funda karakter say\u0131s\u0131 fazla oldu\u011fu i\u00e7in 9 karakterini 09 \u015feklinde alman\u0131z gerekecek. Dedi\u011fim gibi bu da \u00f6nceden baz\u0131 ayarlamalar yapman\u0131z\u0131 gerektiriyor.<br \/>\nAyr\u0131ca, di\u011fer kulland\u0131\u011f\u0131m i\u015flemcilerde, gelen bilgilerinin tutuldu\u011fu buffer dedi\u011fimiz tampon bellek bir kere bilgiyi ba\u015fka de\u011fi\u015fkene ald\u0131\u011f\u0131n\u0131zda, bo\u015falmas\u0131 gerekir. Fakat bu i\u015flemci de b\u00f6yle olmuyor.<br \/>\nMesela <strong>REC_DATA<\/strong> gelen bilgileri alan de\u011fi\u015fken olsun. 5 karakter ald\u0131n\u0131z. Ve bu 5 karakteri ba\u015fka bir de\u011fi\u015fkene aktar\u0131p kulland\u0131n\u0131z. Fakat REC_DATA de\u011fi\u015fkeni s\u0131f\u0131rlanmad\u0131\u011f\u0131 i\u00e7in hala sanki ayn\u0131 bilgi devaml\u0131 geliyormu\u015f gibi oluyor.<br \/>\n<span style=\"color: #ff0000;\">Bu da bir bayrak kullan\u0131m\u0131yla \u00e7\u00f6z\u00fcmleniyor.<\/span> Bayrak durumuna g\u00f6re ayr\u0131m yap\u0131larak programda kullan\u0131l\u0131yor. Bilgi ilk geldi\u011finde bayrak 1 kez HIGH de\u011ferini al\u0131r. Sonras\u0131nda bilgiyi aktard\u0131ktan sonra LOW durumuna ayarlars\u0131n\u0131z. Yeni bilgi gelmeden HIGH durumuna ge\u00e7mez. REC_DATA ayn\u0131 bile kalm\u0131\u015f olsa art\u0131k sorun yaratmayacakt\u0131r. ( Bu konu i\u00e7in programda intflag de\u011fi\u015fkenine bak\u0131n )<\/p>\n<p>\u015eunu da unutmayal\u0131m ki. <span style=\"color: #ff6600;\">Ben bu i\u015fi daha yeni \u00f6\u011freniyorum.<\/span> Bundan dolay\u0131 karakter say\u0131s\u0131n\u0131 ve devaml\u0131 ayn\u0131 bilginin gelmi\u015f gibi g\u00f6r\u00fcnmesini, ustalar kendi programlar\u0131nda nas\u0131l \u00e7\u00f6zeceklerini biliyorlard\u0131r.<br \/>\nDaha sonraki ara\u015ft\u0131rmalar\u0131mda ise interrupt (kesme) olmadan 1 karakter al\u0131p devaml\u0131 bir dizi i\u00e7erisinde bu karakterleri toplayarak 20 karakterlik bilgi okuyabildim. (kesme olmadan. \u00d6rnek program intsiz dir.)<\/p>\n<p>Demek ki ke\u015ffedilecek bir\u00e7ok algoritma var. UART ta g\u00f6rd\u00fcklerim gibi farkl\u0131l\u0131klar di\u011fer haberle\u015fme sistemlerinde de kar\u015f\u0131n\u0131za \u00e7\u0131kabilecektir.<br \/>\n<span style=\"color: #ff6600;\">Art\u0131k 2 \u00e7e\u015fit RS232 haberle\u015fmesini kolayl\u0131kla yapabiliyorum<\/span>. Bunlar i\u00e7in yapt\u0131\u011f\u0131m \u00f6rnek dosyalar\u0131 <a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/tree\/main\/STM32F030F4_mikrobotik_ornek\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>T\u00dcM DOSYALAR<\/strong><\/a> k\u0131sm\u0131ndan alabilirsiniz.<\/p>\n<p><strong>3 adet program mevcut<\/strong>.<br \/>\nBunlardan biri LED+BUTON+RS232 haberle\u015fme program\u0131.<br \/>\nDi\u011feri \u0130nterrupt ile RS232 haberle\u015fmesi ve EASYLCD mod\u00fcl\u00fcn kontrol\u00fc.<br \/>\n3. Program ise interrupt olmadan RS232 haberle\u015fme ve EASYLCD mod\u00fcl\u00fcn kontrol\u00fcd\u00fcr. (20 karakter al\u0131m yap\u0131labiliyor.)<\/p>\n<p><span style=\"color: #ff6600;\">STM32 kart\u0131n\u0131z\u0131 ve programlama cihaz\u0131n\u0131z\u0131 ald\u0131ktan sonra<\/span> videoda dikkat \u00e7ekti\u011fim gibi kart \u00fczerindeki jumper&#8217;\u0131n yerini kontrol etmelisiniz. Resimde g\u00f6r\u00fcld\u00fc\u011f\u00fc gibi olacak. Belki de geldi\u011finde b\u00f6yledir hi\u00e7 de\u011fi\u015ftirmeyin. \u00c7\u00fcnk\u00fc <span style=\"color: #ff6600;\">ikilemde kald\u0131\u011f\u0131m konulardan biri de buydu.<\/span> Acaba programlama yaparken hangi tarafta olmal\u0131 d\u00fc\u015f\u00fcncesi. Videolarda g\u00f6rd\u00fc\u011f\u00fcm kadar\u0131yla, resimde ve videoda g\u00f6r\u00fcld\u00fc\u011f\u00fc \u015fekilde do\u011frudur. Tabii ki kart, ayn\u0131 kart ise bu \u015fekildedir. <span style=\"color: #ff6600;\">De\u011filse enerji vermeden kart\u0131n\u0131z\u0131 tan\u0131y\u0131n derim.<\/span><\/p>\n<p>Bu kart ve san\u0131r\u0131m t\u00fcm stm32 kartlar\u0131 3.3V ile \u00e7al\u0131\u015f\u0131yor. Bundan dolay\u0131 \u00e7evre elemanlar\u0131 ba\u011flayacaksan\u0131z bunlar\u0131 3.3V uyumlu se\u00e7meniz yerinde olur. Ya da araya 5V &#8211; \u00a03,3V seviye d\u00f6n\u00fc\u015f\u00fcm\u00fc yapman\u0131z gerekecektir. Ben RS232 ile PC ye ba\u011flamak i\u00e7in FT232RL USB seri \u00e7evirici kullan\u0131yorum. <span style=\"color: #ff6600;\"><strong>Bu kart\u0131n \u00fczerinde 5V ve 3,3V jumper ayar\u0131 var. Bunu 3,3V k\u0131sm\u0131na getirmeniz gerekiyor. Yoksa kart\u0131n\u0131z bozulabilir.<\/strong><\/span><\/p>\n<figure style=\"width: 324px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/STM32F030F4_mikrobotik_ornek\/levelshifter.png?raw=true\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" data-src=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/STM32F030F4_mikrobotik_ornek\/levelshifter.png?raw=true\" alt=\"\" width=\"324\" height=\"156\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 324px; --smush-placeholder-aspect-ratio: 324\/156;\" \/><\/a><figcaption class=\"wp-caption-text\"><strong><span style=\"color: #ff0000;\">Seviye d\u00f6n\u00fc\u015f\u00fcm devre resmi.<\/span><\/strong><\/figcaption><\/figure>\n<figure style=\"width: 204px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/STM32F030F4_mikrobotik_ornek\/stvlink_connector.png?raw=true\" target=\"_blank\" rel=\"lightbox noopener noreferrer\"><img decoding=\"async\" data-src=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/blob\/main\/STM32F030F4_mikrobotik_ornek\/stvlink_connector.png?raw=true\" alt=\"\" width=\"204\" height=\"190\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" style=\"--smush-placeholder-width: 204px; --smush-placeholder-aspect-ratio: 204\/190;\" \/><\/a><figcaption class=\"wp-caption-text\"><span style=\"color: #ff0000;\">Sa\u011f k\u0131s\u0131m STM32 sol k\u0131s\u0131m ise STM8 i\u00e7in kullan\u0131lmaktad\u0131r.<\/span><\/figcaption><\/figure>\n<p>Ayr\u0131ca LINK\/V2(CN) LINK STLINK STM8 STM32 Programlay\u0131c\u0131y\u0131 kullan\u0131rken <span style=\"color: #ff6600;\">dikkat etmeniz<\/span> gereken noktalar var.<\/p>\n<p>Bu programlay\u0131c\u0131 da pim isimleri, metal k\u0131l\u0131f\u0131n \u00fczerinde g\u00f6r\u00fcl\u00fcyor. Fakat metal k\u0131s\u0131m <span style=\"color: #ff6600;\">ters<\/span> tak\u0131labilen bir k\u0131l\u0131fm\u0131\u015f. <span style=\"color: #ff6600;\">Bundan dolay\u0131 uyar\u0131yorlar<\/span>. <strong><span style=\"color: #ff6600;\">Soketin kertik noktas\u0131 ile metal k\u0131l\u0131ftaki resim birbirine uymal\u0131<\/span><\/strong>. Programlay\u0131c\u0131 USB ye tak\u0131ld\u0131\u011f\u0131nda \u00fcst tarafta bir Led yanm\u0131\u015f olmal\u0131. <span style=\"color: #ff6600;\">Bunlara dikkat etmeniz gerekiyor.<\/span><\/p>\n<p>Programlay\u0131c\u0131 \u00fcst\u00fcnde ise hem stm8 hem de stm32 i\u00e7in pimler var.\u00a0 Bundan dolay\u0131 kart\u0131n\u0131za uygun olan k\u0131sm\u0131 kullanacaks\u0131n\u0131z. Kart \u00fczerinde ayn\u0131 pim isimlerine rastlayacaks\u0131n\u0131z. Bunlar\u0131 e\u015fle\u015ftirirsiniz.<\/p>\n<p>Bununla birlikte, bu <span style=\"color: #ff6600;\">programlay\u0131c\u0131 STM32 kart\u0131n\u0131n besleme gerilimini de sa\u011fl\u0131yor.<\/span> Bundan dolay\u0131 denemelerinizde bu programlay\u0131c\u0131dan gelen gerilim ile motor gibi ak\u0131m \u00e7eken bir \u015feyler \u00e7al\u0131\u015ft\u0131racaksan\u0131z hem kart ar\u0131zalanabilir hem de programlay\u0131c\u0131 ar\u0131zalanabilir. Bunu engellemek i\u00e7in OUT k\u0131sm\u0131nda ya da INPUT k\u0131sm\u0131nda y\u00fcksek ak\u0131m \u00e7eken devreler i\u00e7in optokupl\u00f6r ya da transist\u00f6r kullanabilirsiniz.<\/p>\n<p>Mesela videoda g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi EASYLCD kontrol\u00fc yaparken LCD nin ak\u0131m\u0131n\u0131 programlay\u0131c\u0131 kar\u015f\u0131layamaz diye d\u00fc\u015f\u00fcnd\u00fc\u011f\u00fcmden, EASYLCD mod\u00fcl\u00fcn\u00fc powerbank ile besledim. Bu \u015fekilde besleme yap\u0131ld\u0131\u011f\u0131nda ise <span style=\"color: #ff6600;\">GND leri birle\u015ftirmeniz<\/span> gerekiyor. Ben birle\u015ftirdi\u011fimde PC ile powerbank aras\u0131nda GND den dolay\u0131 <span style=\"color: #ff6600;\">etkilenme<\/span> ya\u015fand\u0131\u011f\u0131ndan araya 1 adet diyot ba\u011flad\u0131m sorun kalmad\u0131. Sizlerde de bu \u015fekilde <span style=\"color: #ff6600;\">GND birle\u015ftirildi\u011finde etkileme problemi olursa<\/span> 1 adet diyot ile sorunu \u00e7\u00f6zebilirsiniz.<\/p>\n<p>Benim ilk etapta anlatabileceklerim bunlar. <span style=\"color: #ff6600;\">Unutmay\u0131n bu yaz\u0131y\u0131<\/span>, <span style=\"color: #ff6600;\">profesyonel stm32 programc\u0131s\u0131 olarak de\u011fil,<\/span> ilk ba\u015flayacak olanlara, yeni ba\u015flayan birinden tavsiye olsun diye yazd\u0131m. Size ba\u015flang\u0131c\u0131n\u0131zda yol g\u00f6stermesini umuyorum.<\/p>\n<p><span style=\"color: #ff6600;\">Son bir tavsiye<\/span> 1. Videoyu seyrettikten sonra yaz\u0131y\u0131 bir kez daha okuyun. \u00c7\u00fcnk\u00fc baz\u0131 \u015feyleri videoda g\u00f6rd\u00fck\u00e7e, yaz\u0131y\u0131 daha iyi anlars\u0131n\u0131z.<\/p>\n<p><strong>CUBE IDE<\/strong> size ayarlar\u0131n\u0131z\u0131n i\u00e7inde bulundu\u011fu bir program olu\u015fturacakt\u0131r. Bu programda sizin de\u011fi\u015ftirece\u011finiz yerler belirtilmi\u015ftir.<br \/>\n<span style=\"color: #ff6600;\"><em>\/* USER CODE BEGIN xxx *\/<\/em><\/span><\/p>\n<p><span style=\"color: #ff6600;\"><em>\/* USER CODE END xxx *\/<\/em><\/span><\/p>\n<p>Yukar\u0131daki gibi program i\u00e7erisinde bir\u00e7ok yer ayr\u0131lm\u0131\u015ft\u0131r. Mesela xxx yerinde include kelimesi g\u00f6r\u00fcrseniz, eklemek istedi\u011finiz k\u00fct\u00fcphaneleri buraya ekleyin demektir.<br \/>\n<span style=\"color: #ff6600;\">Bunun nedeni ise,<\/span> program\u0131n\u0131z\u0131 herhangi bir yere yazmaya ba\u015flad\u0131ktan sonra, entegre \u00fczerinde bir \u015feyi de\u011fi\u015ftirdiniz ve yeniden program olu\u015ftur dediniz,<span style=\"color: #ff6600;\"> sonradan ekledi\u011finiz sat\u0131rlar silinecektir.<\/span><br \/>\nYazd\u0131\u011f\u0131n\u0131z program\u0131, yeniden kod olu\u015fturuldu\u011funda <span style=\"color: #ff6600;\">silinmesin diye<\/span> USER begin ve USER end sat\u0131rlar\u0131 aras\u0131na yazman\u0131z gerekiyor. Bu \u015fekilde yazd\u0131\u011f\u0131n\u0131zda, CUBE IDE bu kodlar\u0131n sizin yazd\u0131\u011f\u0131n\u0131z kod oldu\u011funu anlar ve yeniden kod olu\u015fturdu\u011funda bu kodlar\u0131n\u0131z\u0131 ayn\u0131 \u015fekilde korur.<br \/>\n( 1. Videoda bunun denemesini g\u00f6sterdim. )<\/p>\n<p><span style=\"color: #ff6600;\">A\u015fa\u011f\u0131daki linkte CUBE IDE resimli kullan\u0131m\u0131 var.<\/span> Burada b\u00f6l\u00fcmler belirtilmi\u015ftir.<br \/>\nCubeide kullan\u0131m\u0131 <strong><a href=\"http:\/\/www.emcu.eu\/first-embedded-program-for-stm32-mcu-using-stm32cubeide\/\">http:\/\/www.emcu.eu\/first-embedded-program-for-stm32-mcu-using-stm32cubeide\/<\/a><\/strong><\/p>\n<p>CUBE IDE, HAL k\u00fct\u00fcphanesi \u00fczerine kurulmu\u015f g\u00f6r\u00fcn\u00fcyor. Tabii ki siz isterseniz ba\u015fka k\u00fct\u00fcphaneler de kullanabilirsiniz. Ben kolayl\u0131k olsun diye HAL k\u00fct\u00fcphanesi kulland\u0131m.<br \/>\nProgram kodunuzu yazarken <strong><span style=\"color: #ff6600;\">HAL_ <\/span>yazd\u0131ktan sonra<span style=\"color: #ff6600;\"> CTRL+SPACE <\/span>tu\u015flar\u0131na bast\u0131\u011f\u0131n\u0131zda<\/strong> size HAL k\u00fct\u00fcphanesinin komutlar\u0131n\u0131 bir pencerede g\u00f6steriyor, istedi\u011finizi se\u00e7ebiliyorsunuz.<\/p>\n<p><span style=\"color: #ff0000;\"><strong>Arduino program\u0131n\u0131 yazanlar bilirler. Programda 3 b\u00f6l\u00fcm vard\u0131r.<\/strong><\/span><br \/>\n<strong>1. b\u00f6l\u00fcm<\/strong> k\u00fct\u00fcphaneleri ve de\u011fi\u015fkenleri belirtti\u011fimiz <span style=\"color: #ff6600;\">void Setup()<\/span> tan \u00f6nceki b\u00f6l\u00fcmd\u00fcr. Bu b\u00f6l\u00fcm STM32 de ilk sat\u0131rdan, <span style=\"color: #ff6600;\">int MAIN void<\/span> sat\u0131r\u0131na kadard\u0131r.<br \/>\n<strong>2. B\u00f6l\u00fcm<\/strong> <span style=\"color: #ff6600;\">void setup()<\/span> b\u00f6l\u00fcm\u00fcd\u00fcr burada seri port ya da di\u011fer ba\u015flang\u0131\u00e7 sat\u0131rlar\u0131 vard\u0131r. Parametrelerin ba\u015flang\u0131\u00e7 de\u011ferleri yaz\u0131l\u0131r.<br \/>\nBu b\u00f6l\u00fcm CUBE IDE program\u0131nda <span style=\"color: #ff6600;\">int MAIN void<\/span> k\u0131sm\u0131ndan ba\u015flar ve WHILE loop d\u00f6ng\u00fcs\u00fcne kadar gider.<br \/>\n<strong>3. B\u00f6l\u00fcm<\/strong> ise arduinodaki void loop() k\u0131sm\u0131d\u0131r. CUBE IDE ise bu sonsuz d\u00f6ng\u00fcy\u00fc, <span style=\"color: #ff6600;\">WHILE<\/span> komutuyla sa\u011flam\u0131\u015f.<br \/>\nProgram\u0131n\u0131z i\u00e7erisinde<br \/>\n<span style=\"color: #ff0000;\">\/* USER CODE BEGIN 3 *\/<\/span><\/p>\n<p><span style=\"color: #ff0000;\">\/* USER CODE END 3 *\/<\/span><br \/>\nsat\u0131rlar\u0131n\u0131n aras\u0131na kodlar\u0131n\u0131z\u0131 yazabilirsiniz. Devaml\u0131 tekrar eder.<\/p>\n<p><strong><span style=\"color: #ff6600;\">Birinci Videoda bu konuda anlatt\u0131klar\u0131m\u0131 g\u00f6rd\u00fc\u011f\u00fcn\u00fczde, daha iyi alg\u0131lars\u0131n\u0131z.<\/span><\/strong><\/p>\n<p>Ayr\u0131ca <span style=\"color: #ff6600;\">CUBE IDE<\/span> program\u0131, sizin program\u0131n\u0131z\u0131 direkt olarak kart\u0131n\u0131za y\u00fckleyip \u00e7al\u0131\u015ft\u0131rman\u0131z\u0131 sa\u011flaman\u0131n yan\u0131nda, DEBUG denilen HATA AYIKLAMA modunu da sunar. Bu mod da iken, incelemek i\u00e7in program\u0131n herhangi bir yerde ge\u00e7ici durmas\u0131n\u0131 isteyebilirsiniz. Bunu yapmak i\u00e7in istedi\u011finiz sat\u0131r\u0131 se\u00e7in ve sol taraf\u0131ndaki mavi bant \u00fczerinde \u00e7ift t\u0131klay\u0131n. Bu <strong>toggle breakpoint<\/strong> ad\u0131nda bir nokta belirtecektir. DEBUG moda \u00e7al\u0131\u015f\u0131rken program bu sat\u0131ra geldi\u011finde durduracak ve de\u011fi\u015fken de\u011ferlerini inceleyebileceksiniz. Bunun yan\u0131 s\u0131ra <span style=\"color: #ff6600;\">STEP<\/span> (ad\u0131m ad\u0131m ) \u00e7al\u0131\u015ft\u0131rma butonuyla sat\u0131rlar\u0131 tek tek \u00e7al\u0131\u015ft\u0131rabileceksiniz. Ya da <span style=\"color: #ff6600;\">RESUME<\/span> komutuyla program\u0131n \u00e7al\u0131\u015fmas\u0131na devam edeceksiniz. Unutmay\u0131n program \u00e7al\u0131\u015fsa bile <span style=\"color: #ff6600;\">toggle breakpoint<\/span> silinmedi\u011fi s\u00fcrece devaml\u0131 o sat\u0131rda duracakt\u0131r.<br \/>\n<span style=\"color: #ff6600;\">Faydal\u0131 bir \u00f6zellik.<\/span> Di\u011fer kulland\u0131\u011f\u0131m kartlarda ya da entegrelerde hata ay\u0131klama i\u00e7in seri port kullan\u0131p, de\u011fi\u015fken de\u011ferlerini seri porttan inceleyerek buluyordum. STM32 de ve CUBE IDE \u00fczerinde bu i\u015flemler \u00e7ok kolay. Bu kolayl\u0131\u011f\u0131 proteus \u00fczerinde \u00e7al\u0131\u015f\u0131rken kullan\u0131yordum. \u00c7ok faydal\u0131 oluyordu. Burada da \u00e7ok faydas\u0131n\u0131 g\u00f6rd\u00fcm.<\/p>\n<p>Birazda kulland\u0131\u011f\u0131m <strong>string.h<\/strong> k\u00fct\u00fcphanesinden s\u00f6z edeyim. \u00d6ncelikle seri port \u00fczerinde bilgileri ASCII olarak g\u00f6ndermeniz gerekiyor. Bu bilgileri g\u00f6nderirken tek bir de\u011fi\u015fkende toplamak ya da hex say\u0131, string ve decimal say\u0131lar\u0131 tek bir de\u011fi\u015fkende toplaman\u0131z gerekebiliyor.<br \/>\n<span style=\"color: #ff6600;\"><strong>sprintf<\/strong> <\/span>bu a\u00e7\u0131dan faydal\u0131 bir komut. <span style=\"color: #ff6600;\">\u00d6rnek program i\u00e7erisinde g\u00f6receksiniz.<\/span><br \/>\nAyr\u0131ca a\u015fa\u011f\u0131daki linkten kullan\u0131m\u0131n\u0131 \u00f6\u011frenebilirsiniz.<\/p>\n<p><span style=\"color: #ff6600;\">Sprintf fonksiyonunun kullan\u0131m\u0131.<\/span> Bu size birka\u00e7 diziyi ya da veriyi tek bir dizi i\u00e7erisinde birle\u015ftirmenizi sa\u011flar. Bu \u015fekilde tek bir komutla, birle\u015fik diziyi rs232 ile g\u00f6ndermenizi sa\u011flar. Kullan\u0131lan parametreleri de burada bulabilirsiniz.<br \/>\n<strong><a href=\"https:\/\/www.tutorialspoint.com\/c_standard_library\/c_function_sprintf.htm\">https:\/\/www.tutorialspoint.com\/c_standard_library\/c_function_sprintf.htm<\/a><\/strong><\/p>\n<p>Bunun yan\u0131 s\u0131ra seri port \u00fczerinden gelen bilgiyi do\u011fru mu diye kontrol etmem gerekti\u011finde<br \/>\n<strong>if<\/strong> (<strong>strcmp<\/strong>((uint8_t *)rec_data, &#8220;LCD R&#8221;) == 0) gibi bir komut ile veya <strong>strcat<\/strong> gibi bir komut ile kar\u015f\u0131la\u015ft\u0131rma yapabiliyoruz.<\/p>\n<p>Bunun yan\u0131 s\u0131ra arduinoda indexOf() komutu ya da basic komutlarda instring diye ge\u00e7er. Bir dizi i\u00e7erisinde bir karakter ya da bir string aran\u0131r. Bulunursa p de\u011feri\u00a0 bulunulan karakterin ka\u00e7\u0131nc\u0131 karakter oldu\u011funu g\u00f6sterir. Burada ise bu komut,<br \/>\n<span style=\"color: #ff6600;\">p= <u>strstr<\/u> (rec_data,&#8221;LCD-R&#8221;);<\/span> gibi kullan\u0131l\u0131r. Bu da bizim RS232 den gelen bilgiyi kar\u015f\u0131la\u015ft\u0131rmam\u0131z\u0131 sa\u011flar.<\/p>\n<p>Bunun gibi <span style=\"color: #ff6600;\">string.h<\/span> k\u00fct\u00fcphanesine ait di\u011fer komutlar\u0131 ise bu web sayfas\u0131ndan g\u00f6rebilirsiniz. Kulland\u0131\u011f\u0131m <span style=\"color: #ff6600;\">string.h<\/span> K\u00fct\u00fcphanesinin a\u00e7\u0131klamalar\u0131 bu linktedir. RS232 de g\u00f6nderece\u011fimiz bilgiler i\u00e7in bu k\u00fct\u00fcphane i\u015finizi kolayla\u015ft\u0131racakt\u0131r.<br \/>\n<strong><a href=\"https:\/\/www.bilgigunlugum.net\/prog\/cprog\/c_stdkut\/string\">https:\/\/www.bilgigunlugum.net\/prog\/cprog\/c_stdkut\/string<\/a><\/strong><\/p>\n<p>Benim kulland\u0131\u011f\u0131m CUBE IDE versiyonu 1.5.0.\u00a0 A\u015fa\u011f\u0131daki siteden alabilirsiniz. \u0130\u015fletim sisteminize g\u00f6re se\u00e7ip y\u00fckle dedi\u011finizde ise, sizden e-mail istiyor. E-mail ile download linkini g\u00f6nderiyor. <strong>\u00dccretsiz olarak indirebiliyorsunuz.<\/strong><br \/>\n<strong><a href=\"https:\/\/www.st.com\/en\/development-tools\/stm32cubeide.html\">https:\/\/www.st.com\/en\/development-tools\/stm32cubeide.html<\/a><\/strong><\/p>\n<p>BU VERD\u0130\u011e\u0130M KOMUT \u00d6RNEKLER\u0130 \u00d6RNEK PROGRAMDA KULLANILANLARDAN BAZILARIDIR. <span style=\"color: #ff6600;\">OLMASI GEREKEN C D\u0130L\u0130N\u0130N \u00d6\u011eREN\u0130LMES\u0130D\u0130R.<\/span><\/p>\n<p><a href=\"https:\/\/github.com\/safaka123\/Mikrobotik_yazilarim\/tree\/main\/STM32F030F4_mikrobotik_ornek\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>Programlar\u0131 T\u00dcM DOSYALAR<\/strong><\/a> k\u0131sm\u0131ndan alabilirsiniz.<\/p>\n<p><strong><span style=\"color: #ff0000;\">\u015eayet STM32 \u00fczerinde \u00e7al\u0131\u015fm\u0131\u015f ustalar, programlar\u0131 geli\u015ftirmek ad\u0131na bilgi vermek isterse L\u00fctfen yorum k\u0131sm\u0131na yazs\u0131nlar ki, bizler de tecr\u00fcbelerinden faydalanal\u0131m.\u00a0<\/span><\/strong><\/p>\n<p><span style=\"color: #ff0000;\"><strong>1-) video : CUBE IDE kullan\u0131lmas\u0131 ve yeni program olu\u015fturma.<\/strong>\u00a0<\/span><br \/>\n<iframe data-src=\"https:\/\/www.youtube.com\/embed\/_TrHQWED5V4\" width=\"900\" height=\"506\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" data-load-mode=\"1\"><\/iframe><br \/>\n<strong><span style=\"color: #ff0000;\">2-) video : \u0130nterrupt (kesme) kullan\u0131larak ve kullan\u0131lmadan Proteus \u00fczerinde EASYLCD haberle\u015fmesi<\/span>\u00a0<\/strong><br \/>\n<iframe data-src=\"https:\/\/www.youtube.com\/embed\/GKppX2xjq_I\" width=\"900\" height=\"506\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" data-load-mode=\"1\"><\/iframe><br \/>\n<strong><span style=\"color: #ff0000;\">3-) video : Ger\u00e7ek EASYLCD \u00fczerinde \u00f6rnek programlar\u0131n kullan\u0131lmas\u0131.\u00a0<\/span><\/strong><br \/>\n<iframe data-src=\"https:\/\/www.youtube.com\/embed\/6nTMjBV0-c0\" width=\"900\" height=\"506\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" data-load-mode=\"1\"><\/iframe><br \/>\n<span style=\"color: #ff0000;\"><strong>4. video : STM32 ve EASYLCD ile LCD ye ne kadar h\u0131zl\u0131 yazabilirsiniz.\u00a0<\/strong><\/span><br \/>\n<iframe title=\"YouTube video player\" data-src=\"https:\/\/www.youtube.com\/embed\/fC6NsQLC4qQ\" width=\"900\" height=\"506\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" data-load-mode=\"1\"><\/iframe><br \/>\n&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>STM32 bug\u00fcne kadar elime almad\u0131\u011f\u0131m, ilgilenmedi\u011fim bir i\u015flemcidir. Hatta C dilini de hi\u00e7 bilmem. Sadece Arduino kullan\u0131m\u0131ndan gelen bir a\u015final\u0131\u011f\u0131m var. Bundan dolay\u0131 ba\u015flarken bir\u00e7ok ki\u015finin tavsiyesine ba\u015fvurdum. Bunun yan\u0131&#8230; <\/p>\n","protected":false},"author":1,"featured_media":2058,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14,36],"tags":[],"class_list":["post-2052","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-easylcd","category-stm32"],"_links":{"self":[{"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/posts\/2052","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/comments?post=2052"}],"version-history":[{"count":8,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/posts\/2052\/revisions"}],"predecessor-version":[{"id":2072,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/posts\/2052\/revisions\/2072"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/media\/2058"}],"wp:attachment":[{"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/media?parent=2052"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/categories?post=2052"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mikrobotik.com\/wp2\/wp-json\/wp\/v2\/tags?post=2052"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}