<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Erol İşçioğlu &#8211; Robolink Akademi</title>
	<atom:link href="https://akademi.robolinkmarket.com/author/erol-iscioglu/feed/" rel="self" type="application/rss+xml" />
	<link>https://akademi.robolinkmarket.com</link>
	<description>projebaşlasın</description>
	<lastBuildDate>Tue, 02 Sep 2025 14:47:42 +0000</lastBuildDate>
	<language>tr</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.2</generator>

<image>
	<url>https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2018/10/RLT1_Logo-309x90_1.png?fit=32%2C32&#038;ssl=1</url>
	<title>Erol İşçioğlu &#8211; Robolink Akademi</title>
	<link>https://akademi.robolinkmarket.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">186053538</site>	<item>
		<title>PureBasic nedir ?</title>
		<link>https://akademi.robolinkmarket.com/purebasic-nedir/</link>
					<comments>https://akademi.robolinkmarket.com/purebasic-nedir/#respond</comments>
		
		<dc:creator><![CDATA[Erol İşçioğlu]]></dc:creator>
		<pubDate>Fri, 23 Aug 2024 12:48:46 +0000</pubDate>
				<category><![CDATA[Nedir?]]></category>
		<category><![CDATA[Arduino Projeleri]]></category>
		<category><![CDATA[Genel]]></category>
		<category><![CDATA[İnceleme]]></category>
		<category><![CDATA[potansiyometre]]></category>
		<guid isPermaLink="false">https://akademi.robolinkmarket.com/?p=19096</guid>

					<description><![CDATA[<p>Merhaba arkadaşlar, PureBasic kısaca PB, 1600+ komuta sahip modern ve kullanımı kolay bir programlama dilidir. PB ile konsol, form uygulamaları veya 2D/3D oyun geliştirebilirsiniz. Windows için 82 MB boyutu olan 64-bit kurulum dosyasını indirebilirsiniz. Kurulum, diskte 300 MB civarında bir yer kaplıyor. Kurulumu yaptıktan sonra, hemen kod yazmaya başlayabilirsiniz. İndirme sayfasını açınca göreceksiniz, Linux, Mac [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://akademi.robolinkmarket.com/purebasic-nedir/">PureBasic nedir ?</a> appeared first on <a rel="nofollow" href="https://akademi.robolinkmarket.com">Robolink Akademi</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Merhaba arkadaşlar, <span style="color: #ff6600"><a style="color: #ff6600" href="https://www.purebasic.com/" target="_blank" rel="noopener nofollow">PureBasic</a></span> kısaca PB, 1600+ komuta sahip modern ve kullanımı kolay bir programlama dilidir. PB ile konsol, form uygulamaları veya 2D/3D oyun geliştirebilirsiniz. Windows için 82 MB boyutu olan 64-bit <a href="https://www.purebasic.com/download.php" target="_blank" rel="noopener nofollow"><span style="color: #ff6600">kurulum dosyasını</span></a> indirebilirsiniz. Kurulum, diskte 300 MB civarında bir yer kaplıyor. Kurulumu yaptıktan sonra, hemen kod yazmaya başlayabilirsiniz. İndirme sayfasını açınca göreceksiniz, Linux, Mac OS ve Raspberry Pi sürümleri de vardır. Yani isterseniz, yazdığınız kod, hem Windows da hem de Linux de çalışabilecektir. Kurulum dosyası size PB IDE yi kuracaktır. IDE, programı yazmak, derlemek (compile) veya hata ayıklamak (debug) için kullanılan editör veya yazılım geliştirme ortamıdır.</p>
<h3><span style="color: #ff6600">Neden bir dil öğreneyim ki ?</span></h3>
<p>Hem profesyoneller, hem de elektronik veya yazılım meraklıları, bir bilgisayar dilinin, etiket yazıcı, arduino, plc gibi çevredeki cihazlarla haberleşebilme olanaklarını incelerler. Bu bağlamda, PB, ethernet (TCP/IP, UDP), seri port komutlarını içinde barındırmaktadır. Bunların yanı sıra PB, e-posta gönderme, http isteği (request) yollama, rest api kullanımı, web soket kullanımı gibi özel işlevleri de destekler. Hele ki, benim gibi endüstriyel otomasyon işlerinde çalışıyor veya bu alanda çalışmayı hedef olarak belirlemişseniz, bir programlama dili öğrenmek sizi birkaç adım öne taşıyacaktır.</p>
<p>İşiniz gereği, bir tartı ile, bir plc ile, bir HMI ile veya bir SQL sunucu ile haberleşme gereksinimi duyulan projelere dahil olmuş olabilirsiniz. Bu noktada gidip bilgisayar yazılımını sizin adınıza geliştirecek birilerini bulmanız gerekir. Kimseye muhtaç olmadan programlama ile ilgili kendi işini kendisi görmek isteyenlere bu dili tavsiye ederim, öğrenmesi kolay, pratik ve iş bitirici..</p>
<p>Dil öğrenmek, tabii ki ilgi, merak ve keyif alma meselesidir aynı zamanda. Yani bir konudan hem keyif alıyorsunuz hem de o konu işinizle ilgiliyse, öğrenmek daha çekici hale geliyor haliyle.</p>

<h3 class="wp-block-heading"><span style="color: #ff6600">Neden PureBasic ?</span></h3>



<p>Özellikle programlamaya yeni başlayanlar için çok uygun bir seçim olduğunu söyleyebilirim. Profesyonel bir yazılımcı değilim ama programlama merakım, çocukluğumda bana alınan, oyun bilgisayarı Commodore 64 ile başlamıştı. Zaman içinde C#, Python, Java, Delphi, B4X gibi dilleri incelemiştim. PB&#8217;i görünce ilk görüşte aşk derler ya, öyle birşey oldu. PB IDE&#8217;de Basic dilinin komutları kullanıldığından öğrenmesi çok kolay. Arduino ile yazılım yapan arkadaşlar zaten temel komutlara aşina olduklarından hiç zorluk çekmeyecekler. Kolay olmasının yanısıra çok kapsamlı bir dil. İlk satırda bahsettiğim 1600+ komut bulunmasının nedeni, işimizi kolaylaştırmak. Temel komutları kavradıktan sonra örneğin bir veritabanı projesi yapmak için veritabanı ile ilgili komutları ve örnekleri incelemek gerekiyor. Diğer dillerde olduğu gibi şu kütüphaneyi buradan, bu kütüphaneyi şuradan indirme durumları yok yani. İhtiyacınız olan herşey PB&#8217;nin içinde zaten mevcut durumda.</p>



<p>Diyelim ki bir arkadaşınız, sizden bana şöyle bir program yapar mısın diye istekte bulundu. Programı yazdıktan ve test ettikten sonra, Compiler &gt; Create Executable.. menüsünü seçin. Bir tane exe dosya oluşacaktır. İşlem tamam.. Bu minik dosyayı usb hafızada arkadaşınıza verdiniz. Arkadaşınız, exe dosyayı çift tıklayarak çalıştırdı, kurulum filan olmayacak, program direk çalışacak. PB, harici hiçbir kütüphaneye bağımlı olmadığından, exe dosyanın arkadaşınızın bilgisayarında direk çalışması gayet doğal bir olaydır.</p>



<p>PB geliştirme ortamı da taşınabilir (portable) durumdadır. Diskte, Program Files altında bulunan PureBasic dizinini, usb hafızaya kopyalayın. Ve istediğiniz bilgisayara takıp, program geliştirmeye usb hafıza ile devam edin. Örneğin, <span style="color: #ff6600"><a style="color: #ff6600" href="https://www.purebasic.fr/english/" target="_blank" rel="noopener nofollow">PB forum sitesinden</a></span> birinin yazdığı kaynak kodu kopyalayın. IDE de New butonuna basın, boş sayfa açılsın. Ardından kodu yapıştırın ve Run butonuna basın. Program otomatik olarak derlenip, çalışacaktır.</p>



<p>PB, prosedürel bir dildir. Başka bir deyişle Java gibi nesne yönelimli (OOP) değildir. Bu özellik de programlamaya yeni başlayanlar için büyük bir avantajdır. Java öğrenirken, bu nesne olaylarını kavramakta gerçekten zorlandığımı hatırlıyorum. Neyse ki, PB öyle değil. Hangi satırın ne zaman çalışacağını tahmin etmeniz çok kolay şöyle ki yazdığınız program, yukarıdan aşağıya doğru sırayla satır satır çalışır. Tabii ki yazdığınız prosedür (alt program) tanımlandığı anda değil çağırıldığı anda çalışır.</p>



<h3 class="wp-block-heading"><span style="color: #ff6600">Basit bir form örneği</span></h3>



<pre class="wp-block-code"><code>;Bu komutla her değişkenin tanımlanmasını zorunlu tutuyoruz
EnableExplicit

;Değer almayan ve geriye değer döndürmeyen bir prosedür
;Butona tıklayınca çağırılır
Procedure MesajGoster()
  MessageRequester("Bilgi", "Butona tıkladınız!", #PB_MessageRequester_Ok)
EndProcedure

;#PB ile başlayan sabitler PB içinde bulunan önceden tanımlanmış sabitlerdir
;Bunları Tools &gt; Structure Viewer &gt; Constants sekmesinde görebilirsiniz
#FLAGS = #PB_Window_SystemMenu | #PB_Window_ScreenCentered 

;Debug ile hata ayıklarken, değişkenleri Debug penceresine yazdırabiliriz
Debug "FLAGS : " + #FLAGS

;Define ile değişkenleri tanımlıyoruz
;Örneğin Define.s değişkenin string olduğunu tanımlar
;Define dan sonra . koymazsak değişken integer olur
;Define.i diye tanımlarsak da integer olur 
Define WindowWidth = 400, WindowHeight = 200, Event

;Pencere açılıyor
OpenWindow(0, 0, 0, WindowWidth, WindowHeight, "Merhaba Dünya", #FLAGS)

;ilk sayı Gadget numarası yani kimliği
ButtonGadget(1, 150, 80, 100, 30, "Tıkla") 

;Repeat Until arasındaki kodlar tekrarlanır
;Until yanındaki koşul oluşana kadar
Repeat
  Event = WaitWindowEvent()
  If Event = #PB_Event_Gadget
    Select EventGadget()      ;Hangi Gadget'a tıklandı
      Case 1                     ;Gadget numarası 1 olan butona tıklandı 
        MesajGoster()
    EndSelect
  EndIf
Until Event = #PB_Event_CloseWindow ;Pencere kapata tıklanırsa</code></pre>



<p>Yukarıdaki kodu kopyalayıp, IDE&#8217;de New ile açacağınız boş sayfaya yapıştırın ve Run butonuna basın.. Ctrl tuşu ile farenin tekerini kullanarak, veya Ctrl basılıyken + ve &#8211; ile yazdığınız kodları büyütüp küçültebilirsiniz. Ctrl + 0 ile ilk haline döner. Ctrl + A ile tüm kod seçilir ardından Ctrl + I ile format girintileri otomatik olarak düzenlenir. If &#8211; EndIf arasındaki satırların içeri girmesi gibi. Böylece kodlar daha okunaklı hale gelir.</p>



<figure class="wp-block-image size-full is-resized"><img data-recalc-dims="1" fetchpriority="high" decoding="async" width="696" height="387" class="wp-image-19125" style="width: 982px;height: auto" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2024/08/i2.png?resize=696%2C387&#038;ssl=1" alt="i2" title="PureBasic nedir ? 2" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2024/08/i2.png?w=947&amp;ssl=1 947w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2024/08/i2.png?resize=300%2C167&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2024/08/i2.png?resize=768%2C427&amp;ssl=1 768w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2024/08/i2.png?resize=755%2C420&amp;ssl=1 755w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2024/08/i2.png?resize=150%2C83&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2024/08/i2.png?resize=696%2C387&amp;ssl=1 696w" sizes="(max-width: 696px) 100vw, 696px" /></figure>



<p>&nbsp;</p>



<h3 class="wp-block-heading"><span style="color: #ff6600">Arduino ile Modbus RTU projesi</span></h3>



<p>Modbus protokolü fabrikalarda, otomasyon işlerinde kullanılmaktadır. Proje için bir tane <span style="color: #ff6600"><a style="color: #ff6600" href="https://www.robolinkmarket.com/10k-potansiyometre" target="_blank" rel="noopener">potansiyometre</a>,</span> bir <span style="color: #ff6600"><a style="color: #ff6600" href="https://www.robolinkmarket.com/arduino-uno-r3-smd-klon" target="_blank" rel="noopener">Arduino Uno</a></span> ve usb kablosuna ihtiyacımız var. Arduino&#8217;ya bağlı usb kablo, bilgisayarda seri port olarak tanınmaktadır. Pot&#8217;u çevirdiğimizde analog pin&#8217;den 0-1023 arasında değerler okunacaktır. Bu bilgi bilgisayarda çalışan PB kodu ile Arduino&#8217;dan modbus protokolü ile okunacaktır. PB&#8217;de birçok komut olmasına rağmen modbus ile ilgili komutlar yok malesef. C# da modbus kütüphanesi vardı, neyse ki PB&#8217;de kütüphanenin işini biz programlamayla yapabiliyoruz. Bunun için hemen forumda bir araştırma yapıyoruz. Google Chrome&#8217;da adres satırına &#8220;modbus site:https://www.purebasic.fr/english/&#8221; yazdığınızda forumda modbus geçen konular çıkacaktır. Forum 20 yıllık mesajları içeriyor. Yılların tecrübesinden faydalanıyoruz. Tabii kodları kendi ihtiyacımıza göre adapte etmek gerekiyor. Bunun için de dile biraz hakim olmanız gerekiyor. Hakim olmanız için de biraz çalışmanız gerekiyor. Burada infratec takma adıyla tecrübeli bir kullanıcı <span style="color: #ff6600"><a style="color: #ff6600" href="https://www.purebasic.fr/english/viewtopic.php?t=85050" target="_blank" rel="noopener nofollow">birşeyler</a></span> karalamıştı sağolsun. Bu arada foruma üye olup, birşey sorarsanız, selamımı söylemeyi unutmayın lütfen.  </p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" decoding="async" width="600" height="366" class="wp-image-19138" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2024/08/Arduino-mini-min.png?resize=600%2C366&#038;ssl=1" alt="Arduino mini min" title="PureBasic nedir ? 3" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2024/08/Arduino-mini-min.png?w=600&amp;ssl=1 600w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2024/08/Arduino-mini-min.png?resize=300%2C183&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2024/08/Arduino-mini-min.png?resize=150%2C92&amp;ssl=1 150w" sizes="(max-width: 600px) 100vw, 600px" /></figure>



<p>&nbsp;</p>



<p>Arduino&#8217;yu modbus slave (sunucu) olarak çalıştırıyoruz. Arduino kütüphanesini <span style="color: #ff6600"><a style="color: #ff6600" href="https://www.arduino.cc/reference/en/libraries/modbusrtuslave/" target="_blank" rel="noopener nofollow">buradan</a></span> indirebilirsiniz. Arduino bekliyor, PB sorgulama yaptığında, Arduino cevap veriyor. </p>



<pre class="wp-block-code"><code>#include &lt;ModbusRTUSlave.h&gt;

ModbusRTUSlave modbus(Serial);

uint16_t holdingRegisters[20] = {0};
uint16_t pot;

void setup() {  
  modbus.configureHoldingRegisters(holdingRegisters, 2);
  modbus.begin(1, 9600, SERIAL_8N1); // slaveID = 1
}

void loop() {
  pot = analogRead(A5);
  holdingRegisters[0] = pot;
  holdingRegisters[1] = pot * 10;
  modbus.poll();
}</code></pre>



<p>Arduino kodunda iki tane holdingRegister tanımlanıyor. İlkine pot değeri (0-1023), ikinciye bu değerin 10 katı yazılıyor. Herbiri modbus protokolünde word değeridir, yani 16-bit değerlerdir. Aşağıdaki PB kodunu çalıştırınca &#8220;Use Compiler Option ThreadSafe!&#8221; hatasını alacaksınız. Compiler &gt; Compiler Options &gt; Create threadsafe executable seçeneğini tıklayın. Programı tekrar çalıştırın, çalışacaktır. Program 2 saniyede bir Arduino&#8217;dan değerleri okuyup konsol ekranında gösterecektir. Bu esnada potu çevirince değerlerin değiştiğini görebilirsiniz.</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" decoding="async" width="696" height="497" class="wp-image-19142" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2024/08/i3.png?resize=696%2C497&#038;ssl=1" alt="i3" title="PureBasic nedir ? 4" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2024/08/i3.png?w=862&amp;ssl=1 862w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2024/08/i3.png?resize=300%2C214&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2024/08/i3.png?resize=768%2C549&amp;ssl=1 768w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2024/08/i3.png?resize=588%2C420&amp;ssl=1 588w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2024/08/i3.png?resize=150%2C107&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2024/08/i3.png?resize=696%2C497&amp;ssl=1 696w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2024/08/i3.png?resize=100%2C70&amp;ssl=1 100w" sizes="(max-width: 696px) 100vw, 696px" /></figure>



<p>&nbsp;</p>



<p>Burada form ile değil konsol ile çalıştım. Formda pencere zamanlayıcısı (window timer) adında bir komut var. Ama konsol uygulamasında böyle bir komut yok. 2 saniyede bir okuma yaptırmak için thread komutlarından yararlandık. Burada da forumdan mk-soft sağolsun, varolsun. Ana program birşey yaparken, thread&#8217;e başka birşey yaptırabilirsiniz. Thread olayını diğer dillerde kullanmak çok zor diye bildiğimden o işlere hiç girmemiştim. PB&#8217;de ise çok daha kolay. Bu arada dosyayı diske kaydetmek için Belgelerim dizininde yeni bir dizin oluşturun. Programı kaydederken dosyaya .pb uzantısını vermeyi unutmayın.</p>



<pre class="wp-block-code"><code>; modbus RTU code from infratec
; https://www.purebasic.fr/english/viewtopic.php?t=85050 
; console timer (thread) from mk-soft
; https://www.purebasic.fr/english/viewtopic.php?t=73927
EnableExplicit

CompilerIf Not #PB_Compiler_Thread
  CompilerError "Use Compiler Option ThreadSafe!"
CompilerEndIf

Structure udtThread
  ThreadID.i
  Signal.i
  Ready.i
EndStructure

Enumeration
  #ModBus_FunctionCode_ReadCoils = $01
  #ModBus_FunctionCode_ReadDiscreteInputs ; 2
  #ModBus_FunctionCode_ReadHoldingRegisters ; 3
  #ModBus_FunctionCode_ReadInputRegisters   ; 4
  #ModBus_FunctionCode_WriteSingleCoil      ; 5
  #ModBus_FunctionCode_WriteSingleRegister  ; 6
  #ModBus_FunctionCode_WriteMultipleCoils = $0F
  #ModBus_FunctionCode_WriteMultipleRegisters
EndEnumeration

Global ModBus_RTU_Echo.i, Work.udtThread
Work\Signal = CreateSemaphore()

Procedure.u ModBus_CalcCRC(*Ptr, Len.i)
  Protected CRC_Value.u
  Protected i.i
  CRC_Value.u = $FFFF
  Len - 1 ; means Len = Len - 1
  For i = 0 To Len
    CRC_Value = (CRC_Value &gt;&gt; 8) ! PeekU(?ModBus_CRCTable + (PeekA(*Ptr + i) ! (CRC_Value &amp; $FF)) &lt;&lt; 1)
  Next i
  ProcedureReturn CRC_Value
EndProcedure


Procedure.i ModBus_CheckCRC(*Ptr, Len.i)
  Protected Result.i, CalcCRC.u
  Len - 2
  CalcCRC = ModBus_CalcCRC(*Ptr, Len)
  If CalcCRC = PeekU(*Ptr + Len)
    Result = #True
  EndIf
  ProcedureReturn Result
EndProcedure


Procedure.u ModBus_BigEndian16(Value.u)
  ProcedureReturn PeekA(@Value) &lt;&lt; 8 | PeekA(@Value + 1)
EndProcedure


Procedure.i ModBus_RTU_ReadHoldingRegisters(Port.i, Address.i, StartRegister.i, RegCount.i, Array Registers.u(1))
  Protected Result.i, *Buffer, i.i, Timeout.i, Size.i
  Result = -1
  *Buffer = AllocateMemory(128)
  If *Buffer
    PokeA(*Buffer, Address)
    PokeA(*Buffer + 1, #ModBus_FunctionCode_ReadHoldingRegisters)
    PokeU(*Buffer + 2, ModBus_BigEndian16(StartRegister))
    PokeU(*Buffer + 4, ModBus_BigEndian16(RegCount))
    PokeU(*Buffer + 6, ModBus_CalcCRC(*Buffer, 1 + 1 + 2 + 2))
    PrintN("") : Print ("Request  : ")
    For i = 0 To 7
      Print ( Hex(PeekA(*Buffer + i)) + "-" )
    Next
    ;ShowMemoryViewer(*Buffer, 100) ; to see this memory in ram
    ;CallDebugger ; to stop program here
    WriteSerialPortData(Port, *Buffer, 1 + 1 + 2 + 2 + 2)
    If ModBus_RTU_Echo
      ReadSerialPortData(Port, *Buffer, 1 + 1 + 2 + 2 + 2)
    EndIf
    i = 0
    Timeout = 500
    PrintN("")
    Print ("Response : ")
    Repeat
      If AvailableSerialPortInput(Port)
        ReadSerialPortData(Port, *Buffer + i, 1)
        Print ( Hex(PeekA(*Buffer + i)) + "-" )
        
        i + 1 
        ; in case of an incorrect request from master, slave response has a different func.code than $03
        If i = 5 And PeekA(*Buffer + 1) &lt;&gt; #ModBus_FunctionCode_ReadHoldingRegisters 
          Result = PeekA(*Buffer + 2) ; Result may be 1, 2, 3
          Break
        EndIf
        Size = 1 + 1 + 1 + PeekA(*Buffer + 2) + 2
        If i = Size : PrintN ( " " )
          If ModBus_CheckCRC(*Buffer, Size)
            RegCount - 1
            ReDim Registers(RegCount)
            For i = 0 To RegCount
              Registers(i) = ModBus_BigEndian16(PeekU(*Buffer + 3 + 2 * i))    
            Next i
            Result = 0 ; in case of successful response from slave
          Else
            Result = -2 ; in case of incorrect CRC from slave
          EndIf
          Break
        EndIf
      Else
        Delay(1)
        Timeout - 1
      EndIf
    Until Timeout = 0
    If Timeout = 0
      Result = -10 ; in case of timeout or no response from slave
    EndIf
    FreeMemory(*Buffer)
  EndIf
  ProcedureReturn Result
EndProcedure

OpenConsole("Modbus RTU Test with PureBasic")
EnableGraphicalConsole(1)

Procedure thWork(*Data.udtThread) ; *Data is a pointer, it points an address
  Protected KeyPressed$
  
  Repeat
    KeyPressed$ = Inkey()
    Delay(2000)
    SignalSemaphore(*Data\Signal)
  Until UCase(KeyPressed$) = "X" ; Wait until X is pressed
  
  *Data\Ready = #True
  SignalSemaphore(*Data\Signal)
EndProcedure

; set your COM port name as a second parameter of OpenSerialPort
If OpenSerialPort(0, "COM3", 9600, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1, 1)
  PrintN ("Port is opened, wait a moment..") 
  Delay(3000) ; if I remove this, arduino send no response to request after restarting pc
Else
  PrintN ("Failed : can not open port!")
  Delay(3000)
  End
EndIf


Dim Words.u(0)
Define i, Result, Quantity
; change Quantity to 0 to see a result of an incorrect request
Quantity = 2; holding registers quantity

Work\ThreadID = CreateThread(@thWork(), Work) ; @ means the address of procedure thWork()

Repeat
  ; change slaveID address 1 to 5 below to see timeout and no response from slave
  Result = ModBus_RTU_ReadHoldingRegisters(0, 1, 0, Quantity, Words()) 
  ; we call the procedure and pass the values to the procedure 
  ; Words() array passes by reference (address) to the procedure
  ; that's why it's name is not important for the procedure
  
  PrintN ("")
  PrintN ("Registers read from arduino with modbus RTU : ")
  For i = 0 To ArraySize(Words())
    PrintN ("Words(" + i + ") : " + Words(i))
  Next
  PrintN ("")
  PrintN ("Result : " + Result ) : PrintN ("")
  PrintN ("Press X to eXit")
  WaitSemaphore(Work\Signal) ; program waits here until the signal comes back by SignalSemaphore
  ClearConsole()
Until Work\Ready

End

; ModBus CRC16 data
DataSection
  ModBus_CRCTable:
  Data.u $0000, $C0C1, $C181, $0140, $C301, $03C0, $0280, $C241
  Data.u $C601, $06C0, $0780, $C741, $0500, $C5C1, $C481, $0440     
  Data.u $CC01, $0CC0, $0D80, $CD41, $0F00, $CFC1, $CE81, $0E40     
  Data.u $0A00, $CAC1, $CB81, $0B40, $C901, $09C0, $0880, $C841     
  Data.u $D801, $18C0, $1980, $D941, $1B00, $DBC1, $DA81, $1A40     
  Data.u $1E00, $DEC1, $DF81, $1F40, $DD01, $1DC0, $1C80, $DC41     
  Data.u $1400, $D4C1, $D581, $1540, $D701, $17C0, $1680, $D641     
  Data.u $D201, $12C0, $1380, $D341, $1100, $D1C1, $D081, $1040     
  Data.u $F001, $30C0, $3180, $F141, $3300, $F3C1, $F281, $3240     
  Data.u $3600, $F6C1, $F781, $3740, $F501, $35C0, $3480, $F441     
  Data.u $3C00, $FCC1, $FD81, $3D40, $FF01, $3FC0, $3E80, $FE41    
  Data.u $FA01, $3AC0, $3B80, $FB41, $3900, $F9C1, $F881, $3840
  Data.u $2800, $E8C1, $E981, $2940, $EB01, $2BC0, $2A80, $EA41
  Data.u $EE01, $2EC0, $2F80, $EF41, $2D00, $EDC1, $EC81, $2C40     
  Data.u $E401, $24C0, $2580, $E541, $2700, $E7C1, $E681, $2640
  Data.u $2200, $E2C1, $E381, $2340, $E101, $21C0, $2080, $E041
  Data.u $A001, $60C0, $6180, $A141, $6300, $A3C1, $A281, $6240
  Data.u $6600, $A6C1, $A781, $6740, $A501, $65C0, $6480, $A441
  Data.u $6C00, $ACC1, $AD81, $6D40, $AF01, $6FC0, $6E80, $AE41
  Data.u $AA01, $6AC0, $6B80, $AB41, $6900, $A9C1, $A881, $6840
  Data.u $7800, $B8C1, $B981, $7940, $BB01, $7BC0, $7A80, $BA41
  Data.u $BE01, $7EC0, $7F80, $BF41, $7D00, $BDC1, $BC81, $7C40
  Data.u $B401, $74C0, $7580, $B541, $7700, $B7C1, $B681, $7640
  Data.u $7200, $B2C1, $B381, $7340, $B101, $71C0, $7080, $B041
  Data.u $5000, $90C1, $9181, $5140, $9301, $53C0, $5280, $9241
  Data.u $9601, $56C0, $5780, $9741, $5500, $95C1, $9481, $5440
  Data.u $9C01, $5CC0, $5D80, $9D41, $5F00, $9FC1, $9E81, $5E40
  Data.u $5A00, $9AC1, $9B81, $5B40, $9901, $59C0, $5880, $9841
  Data.u $8801, $48C0, $4980, $8941, $4B00, $8BC1, $8A81, $4A40
  Data.u $4E00, $8EC1, $8F81, $4F40, $8D01, $4DC0, $4C80, $8C41
  Data.u $4400, $84C1, $8581, $4540, $8701, $47C0, $4680, $8641
  Data.u $8201, $42C0, $4380, $8341, $4100, $81C1, $8081, $4040
EndDataSection</code></pre>



<p>Bu program 200 satır civarında oldu. Demo PB, 800 satıra kadar size herhangi bir kısıtlama yapmıyor. PB&#8217;yi tanımak ve öğrenmek için gayet yeterli bu satır sayısı sınırı bence. PB&#8217;i beğenirseniz, 79€ gibi bir ücreti var. Satın alırsanız ömür boyu, programı güncelleme hakkınız bulunuyor. PB, sürekli geliştirildiğinden yeni versiyonların çıktığını sıklıkla görebilirsiniz. Şuan V6.11 diye biliyorum.</p>
<p>Çok eski versiyonlarla yazılmış bazı programları çalıştırdığınızda bazı komutlar için &#8220;Deprecated&#8221; yani kullanımdan kaldırılmıştır hata mesajı alabilirsiniz. Bu komutları silerseniz, kod çalışabilecektir.</p>
<p>F5 tuşuna veya Run butonuna bastınız, ve karşınıza &#8220;Cannot execute the file with the internal <span class="posthilit">debugger</span>. Please try the <span class="posthilit">standalone</span> one.&#8221; gibi bir hata mesajı çıktı. Windows Defender, derlenen PB dosyasının Exe olmasını engelleyebilir. PB dosyanızı Belgelerim altında bir dizine kaydedip, o dizini Defender’ın kontrol etmemesini sağlayabilirsiniz.</p>
<p>

</p>
<p>Modbus programı iş başındayken konulu kısa filmi <span style="color: #ff6600"><a style="color: #ff6600" href="https://youtu.be/GpbcHUkGTSk" target="_blank" rel="noopener nofollow">Youtube&#8217;dan</a></span> izleyebilirsiniz..</p>
<p>

</p>
<p>&nbsp;</p>
<p>

</p>
<h3 class="wp-block-heading"><span style="color: #ff6600">PureBasic bilgi kaynakları</span></h3>
<p>

</p>
<p>İnternette birçok bilgi bulabilirsiniz. Ama hepsi ingilizce veya başka dillerde malesef. <a href="https://erolcum.blogspot.com/" target="_blank" rel="noopener nofollow"><span style="color: #ff6600">Blog</span> <span style="color: #ff6600">sayfamda</span></a> PB ile ilgili birkaç yazı yazmıştım. 6 Haziran 2024 tarihinde başlayan yazılarıma bakabilirsiniz. Sadece PB projelerimi paylaşacağım yeni blog sayfam <span style="color: #ff6600"><a href="https://erolcum.github.io" target="_blank" rel="noreferrer noopener nofollow"><span style="color: #ff6600">GitHub.IO</span></a></span> ‘da, Arduino ve PB&#8217;i bir protokol olmadan normal seri port ile haberleştireceğiz, takipte kalınız..</p>
<p>&nbsp;</p>
<p>İngilizce bir web sitesinin tamamını Türkçe’ye çevirmek için <span style="color: #ff6600"><a style="color: #ff6600" href="https://translate.google.com/?hl=tr&amp;sl=tr&amp;tl=en&amp;op=websites" target="_blank" rel="noopener nofollow">Google</a></span> translate, bunun yanısıra paragrafları çevirmek için <span style="color: #ff6600"><a style="color: #ff6600" href="https://www.deepl.com/tr/translator" target="_blank" rel="noopener nofollow">DeepL </a></span>veya <span style="color: #ff6600"><a style="color: #ff6600" href="https://chatgpt.com/" target="_blank" rel="noopener nofollow">chatGPT </a></span>kullanabilirsiniz.</p>
<p>

</p>
<p>En önemli kaynağınız PB&#8217;in yardım dosyalarıdır.. Editör veya IDE&#8217;de bir komuta tıkladıktan sonra F1 tuşuna basarsanız yardım sayfası açılacaktır. Burada örnek kodlar da olabilir. Yardım sayfasının aynısı <span style="color: #ff6600"><a style="color: #ff6600" href="https://www.purebasic.com/documentation/index.html" target="_blank" rel="noopener nofollow">internette</a></span> de online olarak mevcut durumdadır.</p>
<p>

</p>
<p>Yine PB ile kurulan C:\Program Files\PureBasic\Examples dizinindeki örnek dosyalara bakabilirsiniz. PB Forumundan bahsetmiştim. Buraya üye olup birşey sorarsanız, cevap veriyorlar. Tanıştığınız kişilere direk mesaj da (PM) yollayabilirsiniz. Bana da PM yollayabilirsiniz. Vaktim oldukça yanıtlarım. Ayrıca forumda nasıl bir konuyu arayabileceğinizden bahsetmiştim.</p>
<p><strong>Not :</strong> Forumda özellikle eski paylaşımlarda görebilirsiniz, sonunda alt çizgi olan tüm prosedürler veya komutlar <span style="color: #ff6600"><a style="color: #ff6600" href="https://learn.microsoft.com/en-us/windows/win32/api/" target="_blank" rel="noopener nofollow">Microsoft Win32 API</a></span> fonksiyonlarıdır. PB yardım dosyasında bunları göremezsiniz.</p>
<p>

</p>
<p><a href="https://www.google.com/search?q=purebasic+site%3Agithub.com" target="_blank" rel="noopener nofollow"><span style="color: #ff6600">GitHub</span></a> da birçok kod örneği mevcut&#8230;</p>
<p>

</p>
<p>2006 Tarihinde yazılmış <a href="http://nomad.uk.net/downloads/PureBasic%20-%20A%20Beginners%20Guide.pdf" target="_blank" rel="noopener nofollow"><span style="color: #ff6600">bir kitap</span></a> var ücretsiz indirebilirsiniz. Kullanımdan kalkan komutları silin kodlar çalışacaktır. Forum üyelerinden, Kale takma adlı kullanıcı yazmış zamanında..</p>
<p>

</p>
<p>chatGPT ye PB ile istediğiniz bir programı yazdırabilirsiniz. &#8220;purebasic ile bir buton ve text box içeren program yazarmısın&#8221; dediğimde hemen yazdı. Ama dikkatli olun. Komut uydurabiliyor veya kullanımdan kalkmış komutları yazabiliyor. TextBoxGadget() diye bir komut uydurdu, öyle birşey yok PB&#8217;de. TextGadget() ve StringGadget() var.. Microsoft .NET&#8217;de form yaparken geçen controls, PB&#8217;de gadget olarak geçiyorlar.</p>
<p>

</p>
<p>Yine chatGPT gibi size kod yazabilen <span style="color: #ff6600"><a style="color: #ff6600" href="https://chat.deepseek.com/" target="_blank" rel="noopener nofollow">DeepSeek</a></span> var. Ama sanki bu daha çok sallıyor komutları..</p>
<p>

</p>
<p>Bazı forum kullanıcılarının web siteleri veya forumda imzalarında kullandıkları linkler var.. Github sayfamda birkaçını paylaştım. </p>
<p>Diskte Program Files altında PureBasic\Examples\3D\Demos içinde bulunan Character.pb dosyasını çalıştırmayı unutmayın. 3D bir arkadaş çıkıyor ekrana, yön tuşları, boşluk tuşu ve fare ile yönlendirebilirsiniz.. Bol PureBasic&#8217;li günler dilerim.. <img decoding="async" class="emoji td-animation-stack-type0-2" role="img" src="https://s.w.org/images/core/emoji/13.1.0/svg/1f680.svg" alt="&#x1f680;" title="PureBasic nedir ? 5"></p>
<p>

</p>
<p>&nbsp;</p>
<p></p><p>The post <a rel="nofollow" href="https://akademi.robolinkmarket.com/purebasic-nedir/">PureBasic nedir ?</a> appeared first on <a rel="nofollow" href="https://akademi.robolinkmarket.com">Robolink Akademi</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://akademi.robolinkmarket.com/purebasic-nedir/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">19096</post-id>	</item>
		<item>
		<title>Node-RED nedir ?</title>
		<link>https://akademi.robolinkmarket.com/node-red-nedir/</link>
					<comments>https://akademi.robolinkmarket.com/node-red-nedir/#respond</comments>
		
		<dc:creator><![CDATA[Erol İşçioğlu]]></dc:creator>
		<pubDate>Fri, 16 Sep 2022 14:22:22 +0000</pubDate>
				<category><![CDATA[Nedir?]]></category>
		<category><![CDATA[Arduino Projeleri]]></category>
		<category><![CDATA[Genel]]></category>
		<category><![CDATA[IoT Başlangıç Seti Eğitim Serisi]]></category>
		<guid isPermaLink="false">https://akademi.robolinkmarket.com/?p=18287</guid>

					<description><![CDATA[<p>Merhaba arkadaşlar, Node RED kısaca NR, yazılımcı olmadan, kodlama yapmadan veya çok az kodlama ile IoT uygulaması veya lokal uygulamalar geliştirebileceğiniz açık kaynaklı harika bir otomasyon yazılımıdır. Bu yazıda, NR kullanımına bir örnek olması için Arduino kodlaması yani C++ bilmeseniz bile bir Arduino projesini nasıl oluşturabileceğimizi anlatacağım. İhtiyacımız olan ana malzemeler bir Arduino Uno ve [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://akademi.robolinkmarket.com/node-red-nedir/">Node-RED nedir ?</a> appeared first on <a rel="nofollow" href="https://akademi.robolinkmarket.com">Robolink Akademi</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Merhaba arkadaşlar, Node <mark style="background-color:#ffffff" class="has-inline-color has-vivid-red-color">RED</mark> kısaca NR, yazılımcı olmadan, kodlama yapmadan veya çok az kodlama ile IoT uygulaması veya lokal uygulamalar geliştirebileceğiniz açık kaynaklı harika bir otomasyon yazılımıdır. Bu yazıda, NR kullanımına bir örnek olması için Arduino kodlaması yani C++ bilmeseniz bile bir Arduino projesini nasıl oluşturabileceğimizi anlatacağım. İhtiyacımız olan ana malzemeler bir <a href="https://www.robolinkmarket.com/arduino-uno-r3-smd-klon" target="_blank" rel="noreferrer noopener">Arduino Uno</a> ve Windows 10 yüklü bir bilgisayar sadece.. Raspberry Pi de GPIO diye adlandırılan giriş, çıkış (I/O) olarak kullanılabilecek pinler var fakat normal bir PC&#8217;de böyle bir port yok malesef. Bu projede, PC için Arduino&#8217;yu I/O kartı gibi kullanacağız..</p>



<p><a href="https://erolcum.blogspot.com/2022/09/node-red-minimal-server-kurulumu.html" target="_blank" rel="noreferrer noopener nofollow">Blog sayfamdaki yazıda</a> NR&#8217;in bir PC&#8217;ye nasıl kurulduğunu anlatmıştım. NR kurulumunu, daha sonra rahat bir şekilde PC&#8217;den silebilmek, kaldırabilmek, yedeklemek veya farklı işletim sistemlerini deneyimleyebilmek adına VirtualBox içinde yapabilirsiniz. Windows 10 ile çalışan PC&#8217;de VirtualBox sanallaştırma yazılımını kuruyoruz, VirtualBox içinde de bir linux dağıtımı olan Debian&#8217;ı kuruyoruz. VirtualBox içinde Debian yerine Windows da kurabilirsiniz fakat ben çok daha az kaynağa (ram, disk) ihtiyaç duyduğundan ve daha kararlı çalıştığından Debian&#8217;ı tercih ettim. Debian kurulumundaki tüm işlemleri blog sayfamdaki aynı yazıda anlattım..</p>



<p>Elinizde NR kurulmuş bir Raspberry Pi varsa, onunla da aşağıda anlattığım işlemleri yapabilirsiniz. Yani Arduino&#8217;yu USB kablosu ile Raspberry Pi&#8217;ye bağlayabilirsiniz. </p>



<p><code>node-red</code> komutu ile NR&#8217;i çalıştırdığınızı ve Windows PC&#8217;de Google Chrome web tarayıcıyı açarak adres satırına <code>localhost:1880</code> yazıp enter tuşuna bastığınızı farzediyorum. Karşınıza aşağıdaki gibi boş bir NR sayfası gelecektir. Sol taraftaki renkli dikdörtgen kutuların her birine node deniyor. Onları sürükle bırak yöntemiyle ortadaki boş sayfaya çekiyoruz. Node üzerine çift tık yaptığımızda, node&#8217;un ayarlarına giriyoruz. Ayar penceresinde en üstte node&#8217;un ismi yazar. Node&#8217;u Ctrl+C ile kopyalayıp, Ctrl+V ile yapıştırabiliriz. Mouse ile dikdörtgen şeklinde seçim yapıp birden fazla node&#8217;u delete tuşu ile silebilir veya mouse ile sürükleyerek taşıyabiliriz.</p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="696" height="284" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i3.png?resize=696%2C284&#038;ssl=1" alt="node i3" class="wp-image-18295" title="Node-RED nedir ? 6" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i3.png?resize=1024%2C418&amp;ssl=1 1024w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i3.png?resize=300%2C122&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i3.png?resize=768%2C313&amp;ssl=1 768w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i3.png?resize=1536%2C627&amp;ssl=1 1536w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i3.png?resize=150%2C61&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i3.png?resize=696%2C284&amp;ssl=1 696w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i3.png?resize=1068%2C436&amp;ssl=1 1068w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i3.png?resize=1030%2C420&amp;ssl=1 1030w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i3.png?w=1917&amp;ssl=1 1917w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i3.png?w=1392&amp;ssl=1 1392w" sizes="auto, (max-width: 696px) 100vw, 696px" /><figcaption class="wp-element-caption">Node-RED arayüzü</figcaption></figure>



<p>Kütüphaneleri kurmak için resimde sağ üst köşede gözüken menü tuşuna basarak Manage palette seçeneğini seçiyoruz. Install sekmesine gelip aşağıdaki node kütüphanelerini kuruyoruz yani install ediyoruz.</p>



<ul class="wp-block-list">
<li>node-red-dashboard</li>



<li>node-red-node-arduino</li>
</ul>



<p>Dashboard&#8217;u, bir cep telefonu web tarayıcısından veya PC&#8217;deki bir tarayıcıdan, Arduino&#8217;yu kontrol etmemizi sağlayacak kullanıcı arayüzünü oluşturmak için kullanacağız. Bunun için HTML, CSS gibi konuları bilmemize ihtiyaç yok. node-arduino (Arduino Firmata) ise Arduino ile iletişim kurmamızı sağlayacak. Bu node&#8217;u kuramazsanız blog sayfamdaki &#8220;Node.js ve Node-RED kurulumu&#8221; başlığını tekrar okumanızı öneririm. Proje sonunda cep telefonu tarayısından NR ip adresini girdiğimizde (192.168.1.xx:1880/ui) aşağıdaki görüntüyü elde etmiş olacağız. Yani NR çalışırken, aynı zamanda web sunucu olarak da çalışıyor..</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="421" height="548" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i4-2.png?resize=421%2C548&#038;ssl=1" alt="node i4 2" class="wp-image-18301" title="Node-RED nedir ? 7" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i4-2.png?w=421&amp;ssl=1 421w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i4-2.png?resize=230%2C300&amp;ssl=1 230w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i4-2.png?resize=150%2C195&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i4-2.png?resize=300%2C390&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i4-2.png?resize=323%2C420&amp;ssl=1 323w" sizes="auto, (max-width: 421px) 100vw, 421px" /><figcaption class="wp-element-caption">Cep telefonu tarayıcısı</figcaption></figure>



<h1 class="wp-block-heading"><mark style="background-color:#ffffff" class="has-inline-color has-luminous-vivid-orange-color">Arduino ayarları</mark> <mark style="background-color:#ffffff" class="has-inline-color has-luminous-vivid-orange-color">ve bağlantı şeması</mark></h1>



<p>Arduino&#8217;yu USB kablo ile bilgisayara bağlayalım. Önceden kurmadıysanız Arduino için Windows&#8217;a <a href="https://akademi.robolinkmarket.com/ch340-driver-kurulumu/" target="_blank" rel="noreferrer noopener">USB sürücüsü kurulması</a> gerekiyor. Bu sayede, Arduino, Windows Aygıt Yöneticinde seri port olarak gözükecektir. Arduino IDE&#8217;nin çalışabilmesi için gereken Java&#8217;yı <a href="https://www.java.com/tr/download/" target="_blank" rel="noreferrer noopener nofollow">buradan</a>, Arduino IDE&#8217;yi <a href="https://downloads.arduino.cc/arduino-1.6.5-r5-windows.zip?_gl=1*erphd7*_ga*MjQxNzc5OTE1LjE2NTQxNzcyMzQ.*_ga_NEXN8H46L5*MTY1NDE3NzIzMy4xLjAuMTY1NDE3NzIzMy42MA.." target="_blank" rel="noreferrer noopener nofollow">buradan</a> indirin ve bilgisayarınıza kurun. Windows komut isteminde (cmd) <code>java -version</code> yazarak java&#8217;nın bilgisayarınıza daha eskiden kurulup kurulmadığını anlayabilirsiniz. Arduino IDE&#8217;de Araçlar altında Kart ve Port ayarlarının doğru olduğunu kontrol ettikten sonra Dosya-&gt;Örnekler-&gt;Firmata-&gt;StandardFirmata menüsünü takip edin ve Yükle butonuna tıklayın. Firmata yazılımı Arduino&#8217;ya yüklenecektir. USB kabloyu çıkarıp, aşağıdaki şemayı breadboard ile oluşturun.</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="696" height="721" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i2.png?resize=696%2C721&#038;ssl=1" alt="node i2" class="wp-image-18306" title="Node-RED nedir ? 8" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i2.png?w=741&amp;ssl=1 741w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i2.png?resize=289%2C300&amp;ssl=1 289w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i2.png?resize=150%2C155&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i2.png?resize=300%2C311&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i2.png?resize=696%2C721&amp;ssl=1 696w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i2.png?resize=405%2C420&amp;ssl=1 405w" sizes="auto, (max-width: 696px) 100vw, 696px" /></figure>



<p>Led&#8217;lere 330ohm, butonlara 10K direnç bağlayabilirsiniz.</p>



<h1 class="wp-block-heading"><mark style="background-color:#ffffff" class="has-inline-color has-luminous-vivid-orange-color">Node-RED flow oluşturalım</mark></h1>



<p>NR arayüzünde test amaçlı, aşağıdaki akış (flow) şemasını oluşturalım. Bu  arada + sembolüne tıklayarak birden fazla boş flow sayfası açabilirsiniz. Örneğin Flow 2 başlığına çift tık yaparak açılan pencerede en altta Enabled yazısına tıklayarak Disabled yani o flow&#8217;u pasif veya çalışmasın durumuna getirebilirsiniz. </p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="696" height="111" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i5.png?resize=696%2C111&#038;ssl=1" alt="node i5" class="wp-image-18309" title="Node-RED nedir ? 9" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i5.png?resize=1024%2C164&amp;ssl=1 1024w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i5.png?resize=300%2C48&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i5.png?resize=768%2C123&amp;ssl=1 768w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i5.png?resize=1536%2C246&amp;ssl=1 1536w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i5.png?resize=150%2C24&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i5.png?resize=696%2C111&amp;ssl=1 696w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i5.png?resize=1068%2C171&amp;ssl=1 1068w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i5.png?w=1917&amp;ssl=1 1917w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i5.png?w=1392&amp;ssl=1 1392w" sizes="auto, (max-width: 696px) 100vw, 696px" /></figure>



<p>Bilgiler soldan sağa akacaktır. Soldaki inject node&#8217;un solundaki mavi kutucuğa tıklayınca sağda debug mesajı çıkacaktır. Bunu görebilmeniz için sağ üstte böcek sembollü tuşa basmış olmanız gerekir. Böceğin altındaki çöp kutusu tuşuna basınca da mesajlar silinecektir. Mesaja baktığımızda msg payload yani inject node&#8217;undan debug node&#8217;a gelen mesajın içeriği gözükmektedir, tipi number yani sayıdır. Milisaniye olarak sürekli artan bir sayıdır. Debug node, gelen bilginin içeriğini görmek için kullanılır. Debug node&#8217;un sağ tarafındaki kutucuğa tıklanırsa, pasif olacaktır, yani gelen mesajı göstermeyecektir. Şimdi arduino in, arduino out ve inject node&#8217;lardan oluşan aşağıdaki şemayı oluşturalım.</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="696" height="508" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i6.png?resize=696%2C508&#038;ssl=1" alt="node i6" class="wp-image-18311" title="Node-RED nedir ? 10" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i6.png?w=942&amp;ssl=1 942w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i6.png?resize=300%2C219&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i6.png?resize=768%2C561&amp;ssl=1 768w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i6.png?resize=150%2C110&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i6.png?resize=696%2C508&amp;ssl=1 696w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i6.png?resize=575%2C420&amp;ssl=1 575w" sizes="auto, (max-width: 696px) 100vw, 696px" /></figure>



<p>Soldaki arduino in node&#8217;ları butonlardan gelen bilgiyi algılayacaktır. Sağdaki arduino out node&#8217;ları led&#8217;leri yakıp söndürecektir. inject node&#8217;larda çift tık ile ayarlarına girdiğinizde msg.payload tipini boolean yapmanız, ardından Done butonuna tıklamanız gerekir. Arduino node&#8217;larda çift tık ile ayarlarına girdiğinizde Type kutusunda Digital seçin, Pin kutusunda pin numarasını yazın. En üstte Arduino yazan kutunun sağındaki kalem sembolüne tıklayarak port kutusuna sizdeki portu yazın. Bende /dev/ttyS1 olarak gözüküyor. Bu konuyla ilgili olarak <a href="https://erolcum.blogspot.com/2022/09/node-red-minimal-server-kurulumu.html" target="_blank" rel="noreferrer noopener nofollow">blog sayfamdaki</a> &#8220;VirtualBox&#8217;da Debian 11 ve Node-RED kurulumu&#8221; başlığını inceleyiniz. Arduino node&#8217;ların altında resimdeki gibi connected (bağlı) yazmalıdır. Bunları daha kolay yapmanın bir yöntemi de kopyala yapıştır yöntemi <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Bunun için aşağıdaki json kodunu, menü tuşu ardından Import&#8217;a tıklayınca açılan pencereye yapıştırın ve Import butonuna tıklayın..</p>



<pre class="wp-block-code"><code>&#91;{"id":"8bd444b8c2c88a1d","type":"tab","label":"Flow 1","disabled":false,"info":"","env":&#91;]},{"id":"797ba27464a0a45e","type":"debug","z":"8bd444b8c2c88a1d","name":"debug 1","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":460,"y":60,"wires":&#91;]},{"id":"7957581b07b3a04c","type":"arduino out","z":"8bd444b8c2c88a1d","name":"LED 1","pin":"5","state":"OUTPUT","arduino":"c602eb6ed5689a22","x":470,"y":260,"wires":&#91;]},{"id":"04b05b9467602db3","type":"inject","z":"8bd444b8c2c88a1d","name":"","props":&#91;{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"true","payloadType":"bool","x":170,"y":260,"wires":&#91;&#91;"7957581b07b3a04c"]]},{"id":"341ecac0162e2fb8","type":"inject","z":"8bd444b8c2c88a1d","name":"","props":&#91;{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"false","payloadType":"bool","x":170,"y":300,"wires":&#91;&#91;"7957581b07b3a04c"]]},{"id":"e0c19514e3a64c4c","type":"debug","z":"8bd444b8c2c88a1d","name":"debug 2","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":460,"y":140,"wires":&#91;]},{"id":"ddd170f15709f854","type":"arduino in","z":"8bd444b8c2c88a1d","name":"Buton 2","pin":"3","state":"INPUT","arduino":"c602eb6ed5689a22","x":150,"y":140,"wires":&#91;&#91;"e0c19514e3a64c4c"]]},{"id":"c4c0d95b55b14b22","type":"arduino out","z":"8bd444b8c2c88a1d","name":"LED 2","pin":"6","state":"OUTPUT","arduino":"c602eb6ed5689a22","x":470,"y":380,"wires":&#91;]},{"id":"6071b83431e655e6","type":"inject","z":"8bd444b8c2c88a1d","name":"","props":&#91;{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"true","payloadType":"bool","x":170,"y":380,"wires":&#91;&#91;"c4c0d95b55b14b22"]]},{"id":"607536a47fb3a41d","type":"inject","z":"8bd444b8c2c88a1d","name":"","props":&#91;{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"false","payloadType":"bool","x":170,"y":420,"wires":&#91;&#91;"c4c0d95b55b14b22"]]},{"id":"072c7055d6888ac6","type":"arduino in","z":"8bd444b8c2c88a1d","name":"Buton 1","pin":"2","state":"INPUT","arduino":"c602eb6ed5689a22","x":150,"y":60,"wires":&#91;&#91;"797ba27464a0a45e"]]},{"id":"c602eb6ed5689a22","type":"arduino-board","device":"/dev/ttyS1"}]</code></pre>



<p>Json da xml gibi bir bilgi paylaşma formatıdır. Bir flow oluşturduysanız, bunu dışarı aktarmak için de Export&#8217;u kullanabilirsiniz. Artık sağ üstte bulunan Deploy butonuna basarak uygulamayı çalıştırabiliriz. Yaptığınız her değişiklikten sonra Deploy&#8217;a tıklamak gerekiyor. Breadboard üzerindeki butona basınca debug penceresinde mesaj olarak 1, parmağı çekince 0 yazacaktır. Inject true butona basınca breadboard üzerindeki led yanacak, false a basınca sönecektir.</p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="696" height="275" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i7.png?resize=696%2C275&#038;ssl=1" alt="node i7" class="wp-image-18315" title="Node-RED nedir ? 11" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i7.png?resize=1024%2C405&amp;ssl=1 1024w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i7.png?resize=300%2C119&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i7.png?resize=768%2C304&amp;ssl=1 768w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i7.png?resize=1536%2C607&amp;ssl=1 1536w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i7.png?resize=150%2C59&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i7.png?resize=696%2C275&amp;ssl=1 696w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i7.png?resize=1068%2C422&amp;ssl=1 1068w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i7.png?resize=1062%2C420&amp;ssl=1 1062w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i7.png?w=1654&amp;ssl=1 1654w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i7.png?w=1392&amp;ssl=1 1392w" sizes="auto, (max-width: 696px) 100vw, 696px" /></figure>



<p>Bu flow&#8217;u flow başlığına çift tık yapıp en altta enabled’a tıklayarak, disabled yani pasif hale getirelim. Cep tlelefonu tarayısından görebileceğimiz User Interface (kullanıcı arayüzü) i oluşturmak için aşağıdaki kodu import yapalım.. Burada Arduino node&#8217;ların dışında dashboard&#8217;dan text ve switch node&#8217;ları kullanıldı. Arduino in node&#8217;dan gelen bilgiyi değiştirmek için de change node&#8217;u kullanıldı.. </p>



<pre class="wp-block-code"><code>&#91;{"id":"2b4935223656c83d","type":"tab","label":"Flow 2","disabled":false,"info":"","env":&#91;]},{"id":"041adfd037beb04f","type":"arduino in","z":"2b4935223656c83d","name":"Buton 1","pin":"2","state":"INPUT","arduino":"c602eb6ed5689a22","x":172,"y":138,"wires":&#91;&#91;"1aa124a89df70f0d"]]},{"id":"446d2fee598b3d3f","type":"arduino in","z":"2b4935223656c83d","name":"Buton 2","pin":"3","state":"INPUT","arduino":"c602eb6ed5689a22","x":170,"y":200,"wires":&#91;&#91;"468ab9340c1c4746"]]},{"id":"d6beaa8a08af8f4d","type":"ui_text","z":"2b4935223656c83d","group":"13b08099b22db9ce","order":1,"width":0,"height":0,"name":"","label":"Buton 1","format":"&lt;font color={{msg.renk}}&gt;{{msg.payload}}","layout":"row-spread","className":"","x":580,"y":140,"wires":&#91;]},{"id":"1aa124a89df70f0d","type":"change","z":"2b4935223656c83d","name":"","rules":&#91;{"t":"set","p":"renk","pt":"msg","to":"(msg.payload=1)?\"green\":\"red\"","tot":"jsonata"},{"t":"set","p":"payload","pt":"msg","to":"(msg.payload=1)?\"TRUE\":\"FALSE\"","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":380,"y":140,"wires":&#91;&#91;"d6beaa8a08af8f4d"]]},{"id":"ab1ec14e49bb3f73","type":"ui_text","z":"2b4935223656c83d","group":"13b08099b22db9ce","order":1,"width":0,"height":0,"name":"","label":"Buton 2","format":"&lt;font color={{msg.renk}}&gt;{{msg.payload}}","layout":"row-spread","className":"","x":580,"y":200,"wires":&#91;]},{"id":"468ab9340c1c4746","type":"change","z":"2b4935223656c83d","name":"","rules":&#91;{"t":"set","p":"renk","pt":"msg","to":"(msg.payload=1)?\"green\":\"red\"","tot":"jsonata"},{"t":"set","p":"payload","pt":"msg","to":"(msg.payload=1)?\"TRUE\":\"FALSE\"","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":380,"y":200,"wires":&#91;&#91;"ab1ec14e49bb3f73"]]},{"id":"795af1c015bad908","type":"ui_switch","z":"2b4935223656c83d","name":"","label":"LED 1","tooltip":"","group":"13b08099b22db9ce","order":2,"width":0,"height":0,"passthru":true,"decouple":"false","topic":"topic","topicType":"msg","style":"","onvalue":"true","onvalueType":"bool","onicon":"","oncolor":"","offvalue":"false","offvalueType":"bool","officon":"","offcolor":"","animate":false,"className":"","x":170,"y":300,"wires":&#91;&#91;"29378cfa2bb2451e"]]},{"id":"29378cfa2bb2451e","type":"arduino out","z":"2b4935223656c83d","name":"LED 1","pin":"5","state":"OUTPUT","arduino":"c602eb6ed5689a22","x":570,"y":300,"wires":&#91;]},{"id":"9d9d5e3b21cabe81","type":"ui_switch","z":"2b4935223656c83d","name":"","label":"LED 2","tooltip":"","group":"13b08099b22db9ce","order":2,"width":0,"height":0,"passthru":true,"decouple":"false","topic":"topic","topicType":"msg","style":"","onvalue":"true","onvalueType":"bool","onicon":"","oncolor":"","offvalue":"false","offvalueType":"bool","officon":"","offcolor":"","animate":false,"className":"","x":170,"y":360,"wires":&#91;&#91;"ad1dbb708ae72db2"]]},{"id":"ad1dbb708ae72db2","type":"arduino out","z":"2b4935223656c83d","name":"LED 2","pin":"6","state":"OUTPUT","arduino":"c602eb6ed5689a22","x":570,"y":360,"wires":&#91;]},{"id":"c602eb6ed5689a22","type":"arduino-board","device":"/dev/ttyS1"},{"id":"13b08099b22db9ce","type":"ui_group","name":"Arduino","tab":"8074c8e957004d77","order":1,"disp":true,"width":"6","collapse":false,"className":""},{"id":"8074c8e957004d77","type":"ui_tab","name":"Home","icon":"dashboard","disabled":false,"hidden":false}]</code></pre>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="696" height="505" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i8.png?resize=696%2C505&#038;ssl=1" alt="node i8" class="wp-image-18317" title="Node-RED nedir ? 12" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i8.png?resize=1024%2C743&amp;ssl=1 1024w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i8.png?resize=300%2C218&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i8.png?resize=768%2C557&amp;ssl=1 768w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i8.png?resize=150%2C109&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i8.png?resize=696%2C505&amp;ssl=1 696w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i8.png?resize=1068%2C775&amp;ssl=1 1068w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i8.png?resize=579%2C420&amp;ssl=1 579w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i8.png?resize=324%2C235&amp;ssl=1 324w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/09/node_i8.png?w=1096&amp;ssl=1 1096w" sizes="auto, (max-width: 696px) 100vw, 696px" /></figure>



<p>Deploy&#8217;a tıkladıktan sonra yeni bir Google Chrome sayfası açıp adrese http://localhost:1880/ui girin ve enter a basın. Cep telefonu tarayıcısında bilgisayarın ip adresini aynı şekilde ip_adresi:1880/ui olarak yazın. Windows&#8217;da bilgisayarın ip adresini görmek için komut isteminde <code>ipconfig</code>yazabilirsiniz. Karşınıza çıkan kullanıcı arayüzü ile led&#8217;leri yakıp söndürebilir, telefon ekranında, breadboard üzerindeki butona basıldığında <mark style="background-color:#ffffff" class="has-inline-color has-vivid-green-cyan-color">TRUE</mark>, basılmadığında <mark style="background-color:#ffffff" class="has-inline-color has-vivid-red-color">FALSE</mark> görürsünüz. NR her ortamda kurulabiliyor, Linux, Windows, MacOS veya Android.. İşinize yarayabilecek binlerde node&#8217;dan oluşan kütüphanesi var. Mesela, bir web sitesine http request yollayabilir, dönen cevabın içindeki bir bilgiyi sql veritabanına yazabilirsiniz. MQTT node&#8217;ları ile <a href="https://www.robolinkmarket.com/arduino-tabanli-gelistirme-kartlari" target="_blank" rel="noreferrer noopener">ESP8266/32</a> modüllerle haberleşerek ev otomasyon sistemi yapabilirsiniz. Öğrenmek isteyenler için internette çok kaynak var, örneğin ilk aşamada bu <a href="https://www.youtube.com/watch?v=Q2dstA55cZs&amp;list=PLim9MY6JkyUtuA1skLJE76S6n1UXINovs" target="_blank" rel="noreferrer noopener nofollow">youtube kanalını</a> tavsiye ederim. Daha profesyonel kullanımlar için <a href="https://www.youtube.com/watch?v=3AR432bguOY&amp;list=PLKYvTRORAnx6a9tETvF95o35mykuysuOw" target="_blank" rel="noreferrer noopener nofollow">bu kanalı</a> öneririm.. Node Red&#8217;i red etmeyin deneyin, pişman olmazsınız derim <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <mark style="background-color:#ffffff" class="has-inline-color has-luminous-vivid-orange-color">#projebaşlasın</mark></p>



<p><strong>Not</strong>: Blog sayfama Node-RED ve Tasmota ile ilgili <a href="https://erolcum.blogspot.com/2022/09/tasmota-esp-node-red.html" target="_blank" rel="noreferrer noopener nofollow">bir yazı</a> daha ekledim..</p>
<p>The post <a rel="nofollow" href="https://akademi.robolinkmarket.com/node-red-nedir/">Node-RED nedir ?</a> appeared first on <a rel="nofollow" href="https://akademi.robolinkmarket.com">Robolink Akademi</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://akademi.robolinkmarket.com/node-red-nedir/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">18287</post-id>	</item>
		<item>
		<title>Home Assistant PC Kurulumu</title>
		<link>https://akademi.robolinkmarket.com/home-assistant-pc-kurulumu/</link>
					<comments>https://akademi.robolinkmarket.com/home-assistant-pc-kurulumu/#comments</comments>
		
		<dc:creator><![CDATA[Erol İşçioğlu]]></dc:creator>
		<pubDate>Fri, 12 Aug 2022 09:53:05 +0000</pubDate>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[Nedir?]]></category>
		<guid isPermaLink="false">https://akademi.robolinkmarket.com/?p=18093</guid>

					<description><![CDATA[<p>Herkese merhaba, bu yazımızda Home Assistant PC Kurulumu nasıl yapılır, home assistan bilgisayara nasıl kurulur bunlardan bahsedeceğiz. HA (Home Assistant), ücretsiz, açık kaynaklı ve buluta bağlanmadan lokal ağda çalışabilen bir ev otomasyonu yazılımıdır. Sistemin lokal ağda çalışması, güvenlik nedeniyle önemlidir. Örneğin buluta veya internete bağlı bir kameramız varsa, gereken tedbirleri almadıysak, kamera görüntüsünü yabancıların da [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://akademi.robolinkmarket.com/home-assistant-pc-kurulumu/">Home Assistant PC Kurulumu</a> appeared first on <a rel="nofollow" href="https://akademi.robolinkmarket.com">Robolink Akademi</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Herkese merhaba, bu yazımızda Home Assistant PC Kurulumu nasıl yapılır, home assistan bilgisayara nasıl kurulur bunlardan bahsedeceğiz.</p>



<p>HA (<a href="https://www.home-assistant.io/" target="_blank" rel="noreferrer noopener nofollow">Home Assistant</a>), ücretsiz, açık kaynaklı ve buluta bağlanmadan lokal ağda çalışabilen bir ev otomasyonu yazılımıdır. Sistemin lokal ağda çalışması, güvenlik nedeniyle önemlidir. Örneğin buluta veya internete bağlı bir kameramız varsa, gereken tedbirleri almadıysak, kamera görüntüsünü yabancıların da izleme ihtimali vardır. HA lokal ağda çalışmasına rağmen, örneğin kapı açıldığında, güvenli bir sistem üzerinden cep telefonunuza bildirim yollayabilmektedir. Linux tabanlı HA işletim sistemi, kullanıcı dostu bir arayüze sahiptir, bu arayüze, ağdaki başka bir PC&#8217;nin web tarayıcısından veya akıllı telefondaki aplikasyondan erişilebilmektedir.  Farklı iletişim protokollerini ve çeşitli cihazları desteklemektedir. HA eklenti mağazası sayesinde farklı cihazların, yazılımcı olmaya gerek kalmadan kolay bir şekilde sisteme entegrasyonu sağlanabilmektedir. Mağazada öyle bir eklenti var ki, ona sadece eklenti demek doğru olmaz, çünkü o, normalde HA a ihtiyaç olmadan da tek başına PC ye kurulabiliyor ve otomasyon işlerini yapabiliyor, ismi Node-RED. Yeni başlayanlar için kullanımı HA a göre biraz daha zordur. Sadece Node-RED&#8217;i incelemek için bile, anlatacağım HA kurulumunu yapmak isteyebilirsiniz. HA ın detaylı anlatımı ve Raspberry Pi ye kurulumu ile ilgili Robolink Youtube kanalındaki <a href="https://www.youtube.com/watch?v=oyAIFM3nU0U" target="_blank" rel="noreferrer noopener nofollow">bu video&#8217;ya</a>, arayüz ve NodeMCU kullanımı ile ilgili <a href="https://www.youtube.com/watch?v=pJygbSXEZxY" target="_blank" rel="noreferrer noopener nofollow">bu video&#8217;ya</a> bakabilirsiniz.. Genelde Raspberry Pi 4 4GB a kurulan HA, PC ye de kurulabiliyor. Bunun için eski bir laptop veya bir mini PC kullanılabilir. Seçtiğiniz PC, 64-biti destekleyen bir işlemciye ve en az 4GB RAM e sahip olmalıdır. Ekranı kırılmış, eski bir laptop&#8217;a harici monitör bağlayarak kurulumu yaptım. Zaten bu sisteme, dediğim gibi başka PC&#8217;nin web tarayıcısından giriş yapıldığından kurulumdan sonra PC, ekrana gerek kalmadan headless (başsız) bir sunucu olarak bir köşede kendi halinde çalışabiliyor.. Başsız tabiri, &#8220;monitör ve klavye olmadan&#8221; anlamında kullanılıyor.</p>



<p>HA, akıllı ev konusunda marka olmuş ticari ürünlerin yanı sıra NodeMCU gibi bu konuda marka olmayan uygun fiyatlı ürünlerle de konuşabiliyor..</p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="696" height="366" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/08/haos-1.png?resize=696%2C366&#038;ssl=1" alt="haos 1" class="wp-image-18103" title="Home Assistant PC Kurulumu 13" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/08/haos-1.png?resize=1024%2C538&amp;ssl=1 1024w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/08/haos-1.png?resize=300%2C158&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/08/haos-1.png?resize=768%2C404&amp;ssl=1 768w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/08/haos-1.png?resize=1536%2C807&amp;ssl=1 1536w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/08/haos-1.png?resize=150%2C79&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/08/haos-1.png?resize=696%2C366&amp;ssl=1 696w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/08/haos-1.png?resize=1068%2C561&amp;ssl=1 1068w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/08/haos-1.png?resize=799%2C420&amp;ssl=1 799w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/08/haos-1.png?w=1539&amp;ssl=1 1539w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/08/haos-1.png?w=1392&amp;ssl=1 1392w" sizes="auto, (max-width: 696px) 100vw, 696px" /><figcaption class="wp-element-caption">HA arayüzü Ayarlar ekranı</figcaption></figure>



<p>Yazılım sürekli güncellendiğinden, internette veya youtube&#8217;da, arayüz menüsünü farklı şekillerde görebilirsiniz..</p>



<h3 class="wp-block-heading"><mark style="background-color:#ffffff" class="has-inline-color has-luminous-vivid-orange-color">Home Assistant PC Kurulumu için Gerekli cihazlar ve malzemeler</mark></h3>



<ul class="wp-block-list">
<li>HA a adayacağımız 64-biti destekleyen bir PC</li>



<li>Bir Windows PC, şart değil tabi Linux de olabilir <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> ama ben Windows&#8217;unuz varmış gibi anlatacağım.</li>



<li><a href="https://www.robolinkmarket.com/nodemcu-lolin-esp8266-gelistirme-karti" target="_blank" rel="noreferrer noopener">NodeMCU</a> ve mikro usb kablo, telefon adaptöründen NodeMCU ya güç vermek için kullanacağız. NodeMCU yu, HA kurulumunu test amaçlı kullanıyoruz, edinmemiz şart değil..</li>



<li>2 adet USB bellek, 8GB veya üstü kapasitede olabilirler, birine Pardus imajı yazacağız, diğerine de 2 dosya (Etcher for Linux ve HA imajı) koyacağız. Pardus yüklü USB bellek ile HA kuracağımız PC yi başlattığımızda, Pardus sadece RAM de çalışıyor olacak, hard diske Pardus&#8217;u değil HA işletim sistemini yazacağız. Bu şekilde çalışan Pardus&#8217;a, <strong>Pardus Çalışan (Live Linux)</strong> deniyor. Pardus Çalışan, hard diske birşey yazmadan, bize Pardus&#8217;u deneme imkanı veriyor. Pardus&#8217;u ilk kez duyanlar, sitesinden tarihçesine bakabilir. </li>
</ul>



<p><strong>Not :</strong> Aslında tek USB bellek ile de bu işi yapabilirsiniz. Pardus ta network bağlantıları simgesi sağ altta bulunuyor, buradan internet bağlantısını gerçekleştirip, Firefox tarayıcı ile 2 dosyayı internetten indirebilirsiniz. Bende Windows PC nin internet hattı daha hızlı olduğundan, bu dosyaları Windows ile indirdim.</p>



<h3 class="wp-block-heading"><mark style="background-color:#ffffff" class="has-inline-color has-luminous-vivid-orange-color">Kurulumdan önce indirmemiz gereken yazılımlar</mark></h3>



<ul class="wp-block-list">
<li>Pardus 21.3 XFCE    : Türkçe Linux imajı  (iso dosyası)</li>



<li><a href="https://www.balena.io/etcher/" target="_blank" rel="noreferrer noopener nofollow">Etcher for Windows</a>  : Linux imajını USB belleğe yazarak, Pardus USB belleğini oluşturacağız. Flash from file seçeneğine tıklayarak, Pardus imajını seçiyoruz. Ardından Select target ile USB belleği seçiyoruz ve Flash butonuna tıklıyoruz.</li>



<li><a href="https://www.balena.io/etcher/" target="_blank" rel="noreferrer noopener nofollow">Etcher for Linux x64</a> : Pardus Çalışan, içindeyken PC hard diskine HA imajını yazmak için kullanacağız</li>



<li><a href="https://github.com/home-assistant/operating-system/releases/download/8.4/haos_generic-x86-64-8.4.img.xz" target="_blank" rel="noreferrer noopener nofollow">haos_generic-x86-64-8.4.img.xz</a> : HA imaj dosyası. Güncellemelerden dolayı dosyayı linkten indiremezseniz, <a href="https://www.home-assistant.io/installation/generic-x86-64" target="_blank" rel="noreferrer noopener nofollow">bu saydafaki</a> github linkinden güncel halini indirebilirsiniz..</li>
</ul>



<h3 class="wp-block-heading"><mark style="background-color:#ffffff" class="has-inline-color has-luminous-vivid-orange-color">HA PC BIOS ayarları</mark></h3>



<p>PC yi kapatın ve açın, açılırken ilgili tuşa bir kaç kez basarak bios setup a girin. İlgili tuş bendeki HP laptop ta F10, sizde farklı olabilir, PC marka, modeline göre değişmektedir. Bios da <strong>Secure Boot</strong> seçeneği varsa <strong>disabled</strong> yani iptal edin. <strong>Boot from USB</strong> (USB den boot etme) varsa <strong>enabled</strong> yani aktif hale getirin. <strong>Boot order</strong> ayarlarında USB Hard disk veya USB stick seçeneklerini en üst sıraya taşıyın. <strong>UEFI Boot mode</strong> u <strong>enabled</strong> hale getirin. PC epey eski ve bios da UEFI yi göremiyorsanız, HA kurulumunu bu PC ye yapamazsınız. Bir de her PC de olmayan bir özellik var, mümkünse ayarlanması gereken.. Elektrik kesintisi durumunda, elektrik geri geldiğinde PC nin kendi kendine açılması için. Örneğin, Dell Wyse 5060 thin client PC de, Power loss recovery option olarak geçiyor, always on olarak ayarlanıyor.</p>



<h3 class="wp-block-heading"><mark style="background-color:#ffffff" class="has-inline-color has-luminous-vivid-orange-color">HA PC kurulumu için hard diski hazırlama</mark></h3>



<p>Etcher for Windows ile hazırlanan USB belleği PC ye takıp, güç düğmesine basarak PC yi açıyoruz. USB den açılmazsa Select Boot Device (boot yapılacak cihaz) menüsü için PC yi bende F9 a basarak açıyoruz, Boot device tuşunu, cihazı açarken Esc ye bastığınızda da görebilirsiniz. Açılan menüden USB olanı seçiyoruz, enter a basıyoruz. Pardus açılırken, ekrana gelen menüde dil, Türkçe iken enter a basıyoruz. Yükleyici menüsünde <strong>Pardus Çalışan</strong> seçiliyken enter a basıyoruz. Yaklaşık 1 dakika sonra Pardus ekranı karşınıza gelecektir. Ben harici ekran taktığımdan, karşıma ekranın yarısı geldi. Bu sorunu, Fn+F4 (sinyali 2. monitöre yönlendirme) tuşuna basıp, açılan menüden yalnızca harici ekranı seçerek aştım. Bu konuda Pardus ekibini yürekten kutluyorum. Windows a çok benzer bir masaüstü beni karşıladı. Konuyla ilgisi yok ama sol alttaki Pardus menü tuşuna basıp, MS Office programlarına karşılık gelen, LibreOffice paketlerini görebilirsiniz. Pardus menü tuşuna basınca en altta çıkan arama kutusuna gparted yazıp, enter a basın. Disk üzerindeki bölümlerle ilgili işlemler yapan GParted programı açılacaktır. Sağ üstteki seçenek menüsünde /dev/sda seçili olmalıdır, sda PC nin hard diskidir. Aşağıda çıkan bütün bölümleri tek tek seçip Delete tuşuna basın, ya da sağ klik Sil diyebilirsiniz. Silme işlemini gerçekleştirmek için yukarıdaki yeşil tik butonuna (Uygula) tıklayın. Tertemiz bir hard diskiniz oldu. Ayrılmamış disk bölümü seçiliyken yukarıda Aygıt menüsünden Bölümlendirme tablosu oluştur u seçin. Tür msdos seçiliyken Uygula butonuna basın. Ardından yine üst menüden Bölüm altından Yeni ye tıklayarak, dosya sistemini Fat32 olarak seçip, onaylayın. Yine, Uygula butonuna basın. </p>



<h2 class="wp-block-heading"><mark style="background-color:#ffffff" class="has-inline-color has-luminous-vivid-orange-color">HA kurulumu</mark></h2>



<p>Pardus Çalışan USB belleğini çıkarmayın, diğer USB belleğe, Windows PC de indirdiğiniz Etcher for Linux .zip ve HA imaj .xz dosyalarını kopyalayın. Belleği Pardus Çalışan a taktığınızda masaüstünde bellek için kısayol oluşacaktır. Bu dosyaları alın ve masaüstünde Ev olarak belirtilen klasör içinde İndirilenler klasörüne kopyalayın. .xz ve .zip dosyalarına sağ klik yapıp Buraya aç ı seçin. Açtıktan sonra .xz ve .zip dosyalarını silebilirsiniz.</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="644" height="520" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/08/haos-2.png?resize=644%2C520&#038;ssl=1" alt="haos 2" class="wp-image-18146" title="Home Assistant PC Kurulumu 14" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/08/haos-2.png?w=644&amp;ssl=1 644w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/08/haos-2.png?resize=300%2C242&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/08/haos-2.png?resize=150%2C121&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/08/haos-2.png?resize=520%2C420&amp;ssl=1 520w" sizes="auto, (max-width: 644px) 100vw, 644px" /><figcaption class="wp-element-caption">Pardus İndirilenler klasörü</figcaption></figure>



<p>.AppImage dosyası na sağ klik yapıp Özellikler e tıklayın. İzinler sekmesinde <strong>Bu dosyanın program olarak çalışmasına izin ver</strong> seçeneğini işaretleyin. BalenaEtcher a çift tık yapıp açın, Flash from file ile HA imaj dosyasını (.img) seçin, Select target a tıklayın. Açılan pencerede Show 1 hidden a tıklayarak, PC nin hard diskini seçin (/dev/sda). Select ardından Flash a tıklayın. Yeni pencere açılacaktır, ne yaptığının farkında mısın anlamında, burada <strong>Yes, I&#8217;m sure</strong> (eminim) e tıklayın. Hard diske HA işletim sistemi yazılacaktır. İşlem tamamlandıktan sonra sağ alttaki simgelerden biri olan Çıkış yap&#8230; ile Pardus u kapatın. USB belleği çıkarın. PC yi tekrar açın.. </p>



<h3 class="wp-block-heading"><mark style="background-color:#ffffff" class="has-inline-color has-luminous-vivid-orange-color">Non-Sytem disk or disk error</mark></h3>



<p>O da ne PC açılmıyor !!! Siyah ekranda sadece başlıktaki hatayı yazıyor. HA ın açılabilmesi için efi dosyasını nereden okuyabileceğini sisteme göstermemiz gerekiyor. PC yi yine Pardus USB belleğini kullanarak açacağız ama bu kez Pardus&#8217;un EFI dosyasını seçerek.. PC yi F9 tuşu ile açtım, Select Boot Device menüsünde <strong>Boot From EFI File</strong> ı seçtim. Burada <strong>Removable Media </strong>seçiliyken enter yaptım. Ardından EFI ve boot sırasıyla enter yapıp bootx64.efi dosyasını seçtim. Pardus Çalışan ı başlattım. Ctrl+Alt+T tuşlarına aynı anda basarak Uçbirim (Terminal) programını açtım. İnternet bağlantımı gerçekleştirip, ardından bu komutları yazdım :</p>



<pre class="wp-block-code"><code>sudo apt install efibootmgr
sudo efibootmgr --create --disk=/dev/sda --part=1 --label="HAOS" --loader='EFI\BOOT\bootx64.efi'
</code></pre>



<p>İlk komut eftbootmgr yi kuracaktır, çıkan soruya E olarak yanıt verin. İkinci komut ise efi dosyasının hard diskte ilk bölümdeki yolunu sisteme tanıtacaktır. Terminalde, efibootmgr yazıp enter yaptığınızda BootOrder sıralamasında HAOS ilk sırada olmalıdır. Artık PC yi her kapatıp açtığımızda, HAOS yani HA işletim sistemi ile açılacaktır. </p>



<h3 class="wp-block-heading"><mark style="background-color:#ffffff" class="has-inline-color has-luminous-vivid-orange-color">HA network veya ağ bağlantısı</mark></h3>



<p>HA tarafından tavsiye edildiği gibi PC ye internete bağlı bir network kablosu (direk modeme bağlı) bağlayarak, PC yi açtıysanız, açılış ekranında IPv4 adresi gözükecektir. İnternete bağlı mı diye test etmek için <mark style="background-color:#ffffff" class="has-inline-color has-vivid-green-cyan-color">ha &gt;</mark> nın yanında cursor yanıp sönecektir. <code>login</code> yazıp enter a basın. Ardından <code>ping 8.8.8.8</code> (. ç ile çıkıyor) yazın, live! cevabı geldiyse internet bağlı demektir. Benim gibi kablo kullanmadan wifi ile bağlanmak isterseniz, <code>nmcli radio</code>komutuna cevap enabled olarak gelmelidir, böyle değilse PC de wifi yoktur, veya aktif değildir. <code>nmcli device wifi</code>komutu ile wifi SSID isimleri ve sinyal güçleri listelenecektir. Wifi ağına bağlanmanız için, <code>nmcli device wifi connect "wifi ismi" password "wifi parolası"</code>komutunu verin. <code>nmcli con show</code> ile PC nin bağlantılarını görebilirsiniz. Yeşilse aktif demektir. Satır başındaki NAME altında yazan bölüm bağlantı ismidir. Bir nedenle bağlantıyı silip tekrar başka bağlantı oluşturmak için, bağlantı silme komutu <code>nmcli connection delete "bağlantı ismi"</code> şeklindedir. Bu aşamada <code>reboot</code> komutu ile sistemi yeniden başlatmak iyi olacaktır. <code>exit </code>yazarak <code>login</code> ile girdiğimiz shell den çıkabiliriz. Shell içinde <code>ls</code> gibi Linux komutlarını çalıştırabiliriz. Shell den çıktıktan sonra <code>network info</code> ile de ip bilgisini görebilirsiniz. <code>host shutdown</code> ile HA PC yi kapatabilirsiniz. Normalde böyle kapatmayacağız, başka PC de tarayacıdan girilebilen HA arayüzünden de kapatabiliyoruz. Ip adresiniz gözüktüyse artık arayüze girmek için, Windows PC de Google Chrome u açın ve adres satırına <strong>http://192.168.1.XX:8123</strong> (ip bölümüne sizdeki HA ın ip adresi yazılacak) yazın.. Ve karşınızda HA arayüzü.. Arayüzde, sistemi yeniden başlatmak veya kapatmak için, Ayarlar -&gt; Sistem -&gt; Donanım a tıklayınca sağ üstte üç nokta simgesini göreceksiniz, ona tıklayın..</p>



<h3 class="wp-block-heading"><mark style="background-color:#ffffff" class="has-inline-color has-luminous-vivid-orange-color">NodeMCU testi</mark></h3>



<p>Burada çok detay yazmayacağım. En başta verdiğim youtube linklerini inceleyin lütfen. Eklentilerden ESPHome u kurmanız ve ayarlamanız gerekiyor. Sol taraftan ESPHome u seçtiğinizde New Device a tıklayarak yeni cihaz oluşturmanız gerekiyor. Cihazın yaml dosyasını açıp sonuna bu satırları ekleyin :</p>



<pre class="wp-block-code"><code>switch:
  - platform: gpio
    pin: D4
    inverted: True
    name: "NodeMCU dahili LED"
    id: dahili_led</code></pre>



<p>Pin numarası olarak, GPIO numarası yazmaya gerek kalmıyor, kartın üzerinde gözüken şekilde D4 gibi yazabilirsiniz. Dashboard (Durumlar) a aşağıdaki gibi NodeMCU dahili LED adında bir anahtar gelmesi lazım. Bu arada NodeMCU ya ilk defa yazılım atarken ESPHome Flasher a ihtiyaç kalmıyor, cihazı HA PC ye USB kabloyla bağlayınca HA, cihazı tanıyor.. (Plug into the computer running ESPHome dashboard seçeneği ile install yapın) İlk yazılımı attıktan sonra cihazı çıkarıp, telefon adaptöründen enerji vererek çalıştırabilirsiniz. Artık wirelessly yani kablosuz olarak yazılımı değiştirip yükleyebilirsiniz. Normalde anahtar kapalıyken led yanıyordu, yaml dosyasına inverted (tersleme) satırını ekleyince anahtar açılınca yandı. NodeMCU ile 220V bir lambayı <a href="https://www.robolinkmarket.com/5v-2-kanal-role-modul" target="_blank" rel="noreferrer noopener">bu röle kartı</a> ile yakabilirsiniz, 3.3V veya 5V ile çalışabilmektedir. </p>



<p><strong>Not : </strong>Modeminizin arayüzünden NodeMCU nun ip adresini MAC adresi ile sabitliyebilirsiniz. ESPHome da bulunan NodeMCU cihaz ekranında LOGS butonuna tıklayınca Local MAC adresi gözüküyor.</p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="696" height="377" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/08/haos-3.png?resize=696%2C377&#038;ssl=1" alt="haos 3" class="wp-image-18166" title="Home Assistant PC Kurulumu 15" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/08/haos-3.png?resize=1024%2C554&amp;ssl=1 1024w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/08/haos-3.png?resize=300%2C162&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/08/haos-3.png?resize=768%2C415&amp;ssl=1 768w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/08/haos-3.png?resize=150%2C81&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/08/haos-3.png?resize=696%2C376&amp;ssl=1 696w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/08/haos-3.png?resize=1068%2C578&amp;ssl=1 1068w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/08/haos-3.png?resize=777%2C420&amp;ssl=1 777w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/08/haos-3.png?w=1492&amp;ssl=1 1492w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/08/haos-3.png?w=1392&amp;ssl=1 1392w" sizes="auto, (max-width: 696px) 100vw, 696px" /></figure>



<p>Son olarak, anahtar açıldığında cep telefonuna bildirim yollamasını istersek. App Store veya Google Play den Home Assistant uygulamasını indirin ve kurarken istediği izinleri verin. Telefonu, HA PC ile aynı ağa bağlayın. Uygulamayı açıp, HA kullanıcı adı ve parolanızı yazın. Windows PC de, yeni bir otomasyon oluşturun. Tetikleyiciler bölümünde tetikleyici tipi olarak cihaz, cihaz olarak NodeMCU, tetikleme olarak NodeMCU dahili LED açıldı yı seçin. Aksiyonlarda, aksiyon türü olarak Servisi Çağır, hizmet olarak Bildirimler: Send a notification via mobile app erols iphone (buraya kendi telefonunuz gelecek, HA otomatik olarak tanıyor) Message kutusuna LED yandı.. yazın, title kutusuna Uyarı! yazın ve KAYDET butonuna basın. Artık telefonu isterseniz wifi ağdan ayırabilirsiniz. LED yandığında telefona bildirim gelecektir.. LED nasıl yanacak ? derseniz yazıyı baştan okuyun <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> derim..</p>



<p><strong>Not :</strong> Pardus yazdığınız USB belleği Windows a taktığınızda kapasitesinin ilginç bir şekilde düştüğünü göreceksiniz. Nedeni, Windows&#8217;un Linux dosya sistemini tanımamasıdır. USB belleği <a href="https://www.sdcard.org/downloads/formatter/" target="_blank" rel="noreferrer noopener nofollow">bu program</a> ile formatlarsanız eski haline dönecektir..</p>
<p>The post <a rel="nofollow" href="https://akademi.robolinkmarket.com/home-assistant-pc-kurulumu/">Home Assistant PC Kurulumu</a> appeared first on <a rel="nofollow" href="https://akademi.robolinkmarket.com">Robolink Akademi</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://akademi.robolinkmarket.com/home-assistant-pc-kurulumu/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">18093</post-id>	</item>
		<item>
		<title>Raspberry Pi ile PLC Öğrenelim</title>
		<link>https://akademi.robolinkmarket.com/raspberry-pi-ile-plc-ogrenelim/</link>
					<comments>https://akademi.robolinkmarket.com/raspberry-pi-ile-plc-ogrenelim/#comments</comments>
		
		<dc:creator><![CDATA[Erol İşçioğlu]]></dc:creator>
		<pubDate>Thu, 28 Jul 2022 06:30:55 +0000</pubDate>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[Raspberry Pi Projeleri]]></category>
		<guid isPermaLink="false">https://akademi.robolinkmarket.com/?p=17917</guid>

					<description><![CDATA[<p>PLC ler, endüstriyel otomasyon için fabrikalarda kullanılan programlanabilir kontrol cihazlarıdır. Örneğin, optik bir sensörün, konveyör üzerinde ilerleyen koliyi görmesi ile harekete geçmesini istediğimiz pnömatik bir silindir var, bu durumda silindiri ve sensörü bir PLC ye bağlarız ve PLC yi ladder dilinde programlayarak sistemi istediğimiz gibi kontrol edebiliriz. Ladder (merdiven) dili, en yaygın ve en kolay [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://akademi.robolinkmarket.com/raspberry-pi-ile-plc-ogrenelim/">Raspberry Pi ile PLC Öğrenelim</a> appeared first on <a rel="nofollow" href="https://akademi.robolinkmarket.com">Robolink Akademi</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>PLC ler, endüstriyel otomasyon için fabrikalarda kullanılan programlanabilir kontrol cihazlarıdır. Örneğin, optik bir sensörün, konveyör üzerinde ilerleyen koliyi görmesi ile harekete geçmesini istediğimiz pnömatik bir silindir var, bu durumda silindiri ve sensörü bir PLC ye bağlarız ve PLC yi ladder dilinde programlayarak sistemi istediğimiz gibi kontrol edebiliriz. Ladder (merdiven) dili, en yaygın ve en kolay plc programlama dilidir, teknisyenlerin kolayca kullanabilmesi için dilden çok bir elektrik şemasına benzemektedir. <span style="text-decoration: underline"><strong>Raspberry Pi</strong>,<strong> </strong>(bundan sonra<strong> RPi </strong>olarak belirteceğim)</span> gerçek zamanlı uygulamalar için pek uygun bir seçim değildir, ama milisaniyelerle işimiz yoksa veya eğitim amaçlı olarak PLC yerine kullanabiliriz. Bu yazıda, yerli PLC üreticisi Fultek firmasının kendi üretimi olan PLC modellerinde programlama amaçlı kullanılan ücretsiz Windows programı olan <mark style="background-color:#ffffff" class="has-inline-color has-vivid-cyan-blue-color"><a href="https://www.fultek.com.tr/Download/SpeedPlc.zip" target="_blank" rel="noreferrer noopener nofollow">Speed PLC</a></mark> programının, RPi yi PLC olarak kullanabilmesi için gereken RPi ayarlarından bahsedeceğim. RPi yi PLC yaptıktan sonra, yani bu yazıdaki tüm işlemleri sırasıyla yaparsanız, RPi nin içine hiçbir ladder program koymadan bile Modbus TCP Server olarak kullanabileceksiniz.. Modbus konusunu <a href="https://erolcum.blogspot.com/2022/06/nodemcu-lolin-ile-modbus-tcp.html" target="_blank" rel="noreferrer noopener nofollow">blog sayfamda</a> biraz anlatmıştım. Speed PLC de bulunan dahili PLC Simulator sayesinde hiçbir donanıma (RPi veya PLC) ihtiyaç olmadan da ladder programınızı bilgisayar ekranında görsel olarak çalıştırabilirsiniz.</p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="696" height="331" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_1.png?resize=696%2C331&#038;ssl=1" alt="Speed PLC de Simulator çalışırken" class="wp-image-17954" title="Raspberry Pi ile PLC Öğrenelim 16" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_1.png?resize=1024%2C487&amp;ssl=1 1024w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_1.png?resize=300%2C143&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_1.png?resize=768%2C366&amp;ssl=1 768w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_1.png?resize=150%2C71&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_1.png?resize=696%2C331&amp;ssl=1 696w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_1.png?resize=1068%2C508&amp;ssl=1 1068w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_1.png?resize=882%2C420&amp;ssl=1 882w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_1.png?w=1267&amp;ssl=1 1267w" sizes="auto, (max-width: 696px) 100vw, 696px" /><figcaption class="wp-element-caption">Speed PLC de Simulator çalışırken</figcaption></figure>



<p>Speed PLC programının çalışabilmesi için pc de Java kurulu olması gerekiyor. Kontrol etmek için komut istemine (cmd) girip <code>java -version</code> yazın ve enter a basın, komut tanınmıyorsa Java yı Windows yüklü pc ye bu <a href="https://www.java.com/tr/download/" target="_blank" rel="noreferrer noopener nofollow">linkten</a> kurabilirsiniz.</p>



<h3 class="wp-block-heading"><mark style="background-color:#ffffff" class="has-inline-color has-luminous-vivid-orange-color">Firmware</mark></h3>



<p>RPi yi PLC gibi kullanabilmek için RPi ye bazı programlar yüklememiz gerekiyor, RPi ye yüklenecek yazılımın tamamına <strong>firmware</strong> diyebiliriz. Firmware yükledikten sonra RPi ve pc arasına ethernet kablosu  bağlayıp, RPi yi PLC gibi programlayabiliyor olacağız. Benzer şekilde çalışan RPi ye yüklenebilen <a href="https://store.codesys.com/en/codesys-control-for-raspberry-pi-sl.html" target="_blank" rel="noreferrer noopener nofollow">CODESYS</a> firmware de var, ücretsiz olarak kullanmak isterseniz 2 saatte bir RPi yi kapatıp açmanız gerekiyor. Burada anlatacağım firmware ise tamamen ücretsizdir..</p>



<p>Speed PLC deki PLC hafıza yapısı, Siemens PLC lerdeki yapı ile benzeşmektedir. Fultek sitesinde RPi 3 için kurulumdan bahsedilmiş fakat bende Raspberry Pi nin ilk modellerinden olan RPi 1 Model B Rev.2 olduğundan yazılımı çalıştırmak biraz uğraştırdı.. RPi ye yüklenecek firmware, Java ile çalışıyor.. Raspbian ı full olarak indirip RPi ye kurarsanız Java 11 kurulu geliyor fakat malesef Java 11, RPi 1 veya RPi Zero W tarafından desteklenmiyor. Bunun nedeni işlemci mimarilerinin ARMv6 olması, RPi 2 ARMv7, RPi 3 ve 4 ARMv8.. Bizim RPi ye kuracağımız <strong>Java 8</strong> ise hepsi tarafından desteklenmektedir.. Diğer bir yöntemde ARMv6 olan RPi ye özel bir Java 11 sürümü (<a href="https://webtechie.be/post/2020-08-27-azul-zulu-java-11-and-gluon-javafx-11-on-armv6-raspberry-pi/" target="_blank" rel="noreferrer noopener nofollow">Zulu</a>) kurmak ama ben Java 8 kurmayı tercih ettim. (Zulu Java kurarsanız pi4j versiyonunu da 1.4 yapmanız gerekiyor) Ayrıca bu iş için RPi de masaüstüne de ihtiyaç olmadığından, 8GB lık sd kartıma kurmak üzere <mark style="background-color:#ffffff" class="has-inline-color has-vivid-cyan-blue-color"><a href="https://www.raspberrypi.com/software/operating-systems/#raspberry-pi-os-32-bit" target="_blank" rel="noreferrer noopener nofollow">Raspbian sayfasından</a></mark> <strong>Raspberry Pi OS Lite 32-bit </strong>(4.4.2022 bullseye) sürümünü indirmekle işe başladım.. Burada anlatacağım işlemleri Pico hariç diğer RPi modellerine de uygulayabilirsiniz. Speed PLC programı ile neler yapılabildiğini veya nasıl kullanıldığını görmek için youtube da &#8220;speedplc&#8221; veya &#8220;plc zero&#8221; olarak arama yapabilirsiniz. Ayrıca Fultek sitesindeki youtube linklerine ve <mark style="background-color:#ffffff" class="has-inline-color has-vivid-cyan-blue-color"><a href="https://www.youtube.com/watch?v=QkBHgXcOpT0&amp;list=PL5P7EATIA7v6lMC2MTWGjJmtHYQvqaSXu" target="_blank" rel="noreferrer noopener nofollow">buradaki</a></mark> videolara bakabilirsiniz.. </p>



<p><strong>Not:</strong> Linkte bahsedilen Fultek PLC Zero, RPi değildir fakat anlatılan Speed PLC programı RPi ile de kullanılabilecektir. PLC Zero, STM32F407VGT6 mikrodenetleyici içeren giriş çıkışları RPi gibi 3.3V olan bir geliştirme kartıdır. Aynı çip <a href="https://www.st.com/en/evaluation-tools/stm32f4discovery.html" target="_blank" rel="noreferrer noopener nofollow">STM32F4DISCOVERY</a> geliştirme kartında da kullanılmaktadır. Her ne kadar linkte ”15 dolara PLC edinelim” diyorsa da bu bilgi malesef çip krizi nedeniyle geçmişte kalmıştır. Firma yetkilisi, maliyetlerin artması ve PLC Zero yu satın alan elektronik mühendislerinin kartın çıkışlarına akım çeken malzemeleri direk bağlayıp kartı yaktıktan sonra şikayette bulunmaları nedeniyle bir süre sonra bu kartın satışını durduracaklarını söyledi.. Ben elektrik mühendisi olduğumdan pek üstüme alınmadım <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Neyse ki PLC firmware ini RPi ye kurup çalışmalara devam edebiliriz.. </p>



<h3 class="wp-block-heading"><mark style="background-color:#ffffff" class="has-inline-color has-luminous-vivid-orange-color">Raspberry Pi İmaj Yöneticisi</mark></h3>



<p>SD karta imajı yazmak için kullanılan ve bize birtakım kolaylıklar sağlayan İmaj Yöneticisini (<strong>Raspberry Pi Imager</strong>) Raspberry Pi resmi sitesinde bulunan <a href="https://www.raspberrypi.com/software/" target="_blank" rel="noreferrer noopener nofollow">linkten</a> indirebilirsiniz. </p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="677" height="441" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_2.png?resize=677%2C441&#038;ssl=1" alt="SpeedPlc 2" class="wp-image-17961" title="Raspberry Pi ile PLC Öğrenelim 17" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_2.png?w=677&amp;ssl=1 677w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_2.png?resize=300%2C195&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_2.png?resize=150%2C98&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_2.png?resize=645%2C420&amp;ssl=1 645w" sizes="auto, (max-width: 677px) 100vw, 677px" /></figure>



<p>İşletim sistemi olarak &#8220;Özel imaj kullan&#8221; a tıklayıp önceden indirdiğimiz RPi OS Lite dosyasını seçmeliyiz. Sağ alt köşede bulunan ayarlar a tıklayınca aşağıdaki gibi ayarları yapabiliriz. Kullanıcı adı pi, parola da pi olacak, RPi nizde wifi varsa wifi ayarlarını da buraya girebiliriz. RPi de wifi yoksa pc ile aynı ve internet bağlantısı olan network e ethernet kablosu ile bağlamanız gerekir. RPi ye yazılımları internetten yükleyeceğimizden internete bağlı olması gerekiyor. Yazılımları monitör klavye bağlayarak veya burada anlatacağım gibi headless (monitör klavye olmadan) yükleyebiliriz.</p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="696" height="474" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_3.png?resize=696%2C474&#038;ssl=1" alt="Raspberry pi ile plc İmaj Yöneticisi ayarları" class="wp-image-17965" title="Raspberry Pi ile PLC Öğrenelim 18" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_3.png?resize=1024%2C698&amp;ssl=1 1024w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_3.png?resize=300%2C205&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_3.png?resize=768%2C524&amp;ssl=1 768w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_3.png?resize=150%2C102&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_3.png?resize=218%2C150&amp;ssl=1 218w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_3.png?resize=696%2C475&amp;ssl=1 696w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_3.png?resize=1068%2C728&amp;ssl=1 1068w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_3.png?resize=616%2C420&amp;ssl=1 616w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_3.png?w=1496&amp;ssl=1 1496w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_3.png?w=1392&amp;ssl=1 1392w" sizes="auto, (max-width: 696px) 100vw, 696px" /><figcaption class="wp-element-caption">İmaj Yöneticisi ayarları</figcaption></figure>



<p>Ayarları yapıp, SD kartı da seçip YAZ butonuna tıklayınca karta yazma işi başlar. İş bitince programı kapatıyoruz ama SD kartı pc den çıkarmıyoruz. SSH ile bağlanabilmek için SD karta SSH isimli boş bir metin belgesi ekleyip .txt uzantısını siliyoruz. Ayrıca <a href="https://akademi.robolinkmarket.com/wp-content/uploads/2022/07/pi4j.zip" target="_blank" rel="noreferrer noopener">pi4j</a> dosyasını da resimdeki gibi zip ten çıkarıp aynı yere koyuyoruz. </p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="696" height="387" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_4.png?resize=696%2C387&#038;ssl=1" alt="SpeedPlc 4" class="wp-image-17967" title="Raspberry Pi ile PLC Öğrenelim 19" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_4.png?w=1008&amp;ssl=1 1008w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_4.png?resize=300%2C167&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_4.png?resize=768%2C427&amp;ssl=1 768w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_4.png?resize=150%2C83&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_4.png?resize=696%2C387&amp;ssl=1 696w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_4.png?resize=756%2C420&amp;ssl=1 756w" sizes="auto, (max-width: 696px) 100vw, 696px" /></figure>



<h3 class="wp-block-heading"><mark style="background-color:#ffffff" class="has-inline-color has-luminous-vivid-orange-color">PuTTY ile SSH bağlantısı</mark></h3>



<p>SD kartı RPi ye takıp enerji verdikten sonra pc de komut istemine <code>ping raspberrypi.local</code> yazıp enter a basın bir süre sonra RPi den cevap gelmeye başlayacaktır. SSH ile RPi ye bağlanmak için Speed PLC programını açın, üstteki ayarlar butonuna basıp <strong>Raspberry Firmware</strong> e tıklayın. Açılan pencerede <strong>PuTTY Terminal</strong> e tıklayın.</p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="696" height="640" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_7.png?resize=696%2C640&#038;ssl=1" alt="SpeedPlc 7" class="wp-image-17998" title="Raspberry Pi ile PLC Öğrenelim 20" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_7.png?resize=1024%2C941&amp;ssl=1 1024w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_7.png?resize=300%2C276&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_7.png?resize=768%2C706&amp;ssl=1 768w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_7.png?resize=150%2C138&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_7.png?resize=696%2C640&amp;ssl=1 696w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_7.png?resize=457%2C420&amp;ssl=1 457w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_7.png?w=1039&amp;ssl=1 1039w" sizes="auto, (max-width: 696px) 100vw, 696px" /><figcaption class="wp-element-caption">PuTTY Terminal</figcaption></figure>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="596" height="536" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_5.png?resize=596%2C536&#038;ssl=1" alt="SpeedPlc 5" class="wp-image-17979" title="Raspberry Pi ile PLC Öğrenelim 21" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_5.png?w=596&amp;ssl=1 596w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_5.png?resize=300%2C270&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_5.png?resize=150%2C135&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_5.png?resize=467%2C420&amp;ssl=1 467w" sizes="auto, (max-width: 596px) 100vw, 596px" /></figure>



<p>Host Name kutusuna raspberrypi.local yazın ve Open a tıklayın. Çıkan soruyu Evet olarak yanıtlayın. Açılan pencerede kullanıcı adı ve parola için pi girip enter a basın. SSH bağlantısı kurulmuş oldu. Bu ekranda <code>cat /proc/cpuinfo</code> komutunu verdiğinizde ARM versiyonu ve RPi model ismi gözükecektir.</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="696" height="367" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_6.png?resize=696%2C367&#038;ssl=1" alt="SpeedPlc 6" class="wp-image-17981" title="Raspberry Pi ile PLC Öğrenelim 22" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_6.png?w=824&amp;ssl=1 824w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_6.png?resize=300%2C158&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_6.png?resize=768%2C405&amp;ssl=1 768w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_6.png?resize=150%2C79&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_6.png?resize=696%2C367&amp;ssl=1 696w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_6.png?resize=797%2C420&amp;ssl=1 797w" sizes="auto, (max-width: 696px) 100vw, 696px" /></figure>



<h3 class="wp-block-heading"><mark style="background-color:#ffffff" class="has-inline-color has-luminous-vivid-orange-color">Raspi-config</mark></h3>



<p><code>sudo raspi-config</code> ile RPi ayarlarına girelim. Burada yön tuşları, TAB ve enter tuşları ile bazı ayarlar yapacağız. Interface Options içinde SSH server ı enabled yapalım, yani aktifleştirelim. Grafik hafızayı (masaüstü) düşürmek için Performance Options ta GPU Memory i 16 yapalım, Java ram ı sever.. Finish e tıklayalım, gelen ekranda reboot (yeniden başlatma yapılsın mı?) sorusunu yes olarak yanıtlayın. RPi kapanıp açılacaktır. Aklınızda olsun RPi bir bilgisayar olduğundan direk fişini çekip kapatmak doğru olmaz bunun için önce <code>sudo poweroff</code> komutunu vermek lazım. Biraz bekledikten sonra fişini çekebilirsiniz.</p>



<h3 class="wp-block-heading"><mark style="background-color:#ffffff" class="has-inline-color has-luminous-vivid-orange-color">Firmware için gereken paketleri kuralım</mark></h3>



<p>RPi nin internet bağlantısını kontrol etmek RPi ye PuTTY ile bağlanıp <code>ping www.google.com</code> komutunu verelim. Ping ten çıkmak için Ctrl+C yapabilirsiniz. Daha önce SD karta koyduğumuz pi4j dosyasını kurmak için <code>cd /boot</code> ardından <code>sudo dpkg -i pi4j-1.3.deb</code> komutlarını verelim. Ardından bu komutları sırayla verelim, çıkan sorulara Y (evet) cevabını verelim :</p>



<pre class="wp-block-code"><code>sudo apt-get update<br>sudo apt-get install git-core<br>cd ~<br>git clone https://github.com/WiringPi/WiringPi --branch master --single-branch wiringpi<br>cd ~/wiringpi<br>sudo ./build</code></pre>



<p>Bu işlemler 5-10dk. sürecektir. Şimdi de biraz daha uzun sürecek olan Java kurulumu için <code>sudo apt-get install openjdk-8-jdk</code> komutunu verelim.. Java kuruldu mu diye kontrol etmek için <code>java -version</code> komutunu verelim..</p>



<h3 class="wp-block-heading"><mark style="background-color:#ffffff" class="has-inline-color has-luminous-vivid-orange-color">RPi nin ve PC nin ethernet portuna sabit IP verelim</mark></h3>



<p>PC de çalışan Speed PLC programı ile RPi arasında network bağlantısı olması gerekiyor ki ladder programı RPi ye atabilelim. Bunu kolaylaştırmak için ethernet portuna sabit ip vermek gerekiyor. RPi Zero W sahibi iseniz de ethernet portu olmadığından wifi portuna sabit ip verebilirsiniz. Öncelikle Windows pc nin ethernet portuna sabit ip vermemiz gerekiyor.. Ben pc ye 192.168.0.182 verdim.</p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="696" height="490" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_8.png?resize=696%2C490&#038;ssl=1" alt="SpeedPlc 8" class="wp-image-18010" title="Raspberry Pi ile PLC Öğrenelim 23" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_8.png?resize=1024%2C721&amp;ssl=1 1024w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_8.png?resize=300%2C211&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_8.png?resize=768%2C541&amp;ssl=1 768w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_8.png?resize=150%2C106&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_8.png?resize=696%2C490&amp;ssl=1 696w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_8.png?resize=1068%2C752&amp;ssl=1 1068w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_8.png?resize=596%2C420&amp;ssl=1 596w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_8.png?resize=100%2C70&amp;ssl=1 100w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_8.png?w=1164&amp;ssl=1 1164w" sizes="auto, (max-width: 696px) 100vw, 696px" /></figure>



<p>RPi ye PuTTY den <code>ifconfig</code> komutunu verdiğimizde mevcut ip adresleri gözükecektir. Burada <strong>eth0</strong> ethernet portu, <strong>wlan0</strong> ise wifi portudur.  <code>sudo nano /etc/dhcpcd.conf</code> komutunu verelim. eth0 a sabit ip vermek için resimdeki gibi comment (#) leri kaldıralım..</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="696" height="439" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_9.png?resize=696%2C439&#038;ssl=1" alt="SpeedPlc 9" class="wp-image-18012" title="Raspberry Pi ile PLC Öğrenelim 24" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_9.png?w=822&amp;ssl=1 822w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_9.png?resize=300%2C189&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_9.png?resize=768%2C485&amp;ssl=1 768w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_9.png?resize=150%2C95&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_9.png?resize=696%2C439&amp;ssl=1 696w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_9.png?resize=665%2C420&amp;ssl=1 665w" sizes="auto, (max-width: 696px) 100vw, 696px" /></figure>



<p>RPi ye 192.168.0.10 adresini vermiş olduk. Ctrl+X e basıp Y tuşuna ardından enter a basalım. Şimdi <code>sudo reboot</code> komutu ile RPi yi yeniden başlatalım.. Ethernet kablosunu takmadan ifconfig ile ip adresini göremezsiniz. RPi Zero W sahibi iseniz wifi ye sabit ip vermek için interface eth0 yerine aşağıdaki gibi interface wlan0 yazmanız gerekiyor..</p>



<pre class="wp-block-code"><code>interface wlan0<br>static ip_address=192.168.0.10 / 24<br>static routers=192.168.0.1<br>static domain_name_servers=192.168.0.1</code></pre>



<p>PC den komut isteminden (cmd) <code>ping 192.168.0.10</code> komutu ile bağlantıyı test edebiliriz. Artık PuTTY de Host Name kutusuna 192.168.0.10 yazarak da RPi ye bağlanabiliriz..</p>



<h3 class="wp-block-heading"><mark style="background-color:#ffffff" class="has-inline-color has-luminous-vivid-orange-color">RPi ye SpeedPlc firmware yükleme</mark> </h3>



<p>PC de PuTTY açıksa kapatalım.. &#8220;PuTTY ile SSH bağlantısı&#8221; başlığı altındaki resimde olan pencereye gelelim ve resimdeki bilgileri girelim. Bu kez PuTTY Terminal butonuna değil <strong>Load</strong> butonuna tıklayalım. Aşağıdaki bilgi mesajı gelecektir..</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="513" height="662" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_10.png?resize=513%2C662&#038;ssl=1" alt="SpeedPlc 10" class="wp-image-18019" title="Raspberry Pi ile PLC Öğrenelim 25" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_10.png?w=513&amp;ssl=1 513w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_10.png?resize=232%2C300&amp;ssl=1 232w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_10.png?resize=150%2C194&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_10.png?resize=300%2C387&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_10.png?resize=325%2C420&amp;ssl=1 325w" sizes="auto, (max-width: 513px) 100vw, 513px" /></figure>



<p>Yeni PLC niz hayırlı olsun.. </p>



<h3 class="wp-block-heading"><mark style="background-color:#ffffff" class="has-inline-color has-luminous-vivid-orange-color">Raspberry Pi ile PLC Devremizi Hazırlayalım</mark></h3>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="696" height="504" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_12.png?resize=696%2C504&#038;ssl=1" alt="SpeedPlc 12" class="wp-image-18022" title="Raspberry Pi ile PLC Öğrenelim 26" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_12.png?resize=1024%2C742&amp;ssl=1 1024w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_12.png?resize=300%2C217&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_12.png?resize=768%2C556&amp;ssl=1 768w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_12.png?resize=150%2C109&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_12.png?resize=696%2C504&amp;ssl=1 696w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_12.png?resize=1068%2C774&amp;ssl=1 1068w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_12.png?resize=580%2C420&amp;ssl=1 580w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_12.png?resize=324%2C235&amp;ssl=1 324w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_12.png?w=1107&amp;ssl=1 1107w" sizes="auto, (max-width: 696px) 100vw, 696px" /></figure>



<p>Bendeki RPi eski olduğundan 26 pin ona göre devreyi kurdum. Sizdeki konektör, Speed PLC programında birazdan göreceğimiz RPi 3 şemasına göre 40 pin olabilir. Devreye 2 buton ve 2 led bağladım. Butonların bir uçlarına 3.3V veriyoruz, diğer uçlarını GPIO17 ve GPIO27 ye bağladım. Ledlerin katodlarını 330ohm ile GND ye bağladım. Ledlerin anodlarını ise GPIO4 ve GPIO22 ye bağladım.</p>



<h3 class="wp-block-heading"><mark style="background-color:#ffffff" class="has-inline-color has-luminous-vivid-orange-color">Speed PLC de GPIO adresleme</mark></h3>



<p>PC de Speed PLC programını açalım, sol üst köşedeki New butonu ile yeni proje açalım ve gelen pencerede Raspberry Pi yi seçip OK e tıklayalım. Şuan muhtemelen Program sekmesindesin, Hardware (donanım) sekmesine tıklayalım. Kırmızı PLC resmini üzerine çift tık yapalım ve aşağıdaki gibi adreslemeleri yapalım. 2 input, 2 output oluşturuyoruz. Butonlar input, ledler output oluyor PLC için..</p>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="696" height="401" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_11.png?resize=696%2C401&#038;ssl=1" alt="SpeedPlc 11" class="wp-image-18024" title="Raspberry Pi ile PLC Öğrenelim 27" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_11.png?resize=1024%2C590&amp;ssl=1 1024w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_11.png?resize=300%2C173&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_11.png?resize=768%2C442&amp;ssl=1 768w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_11.png?resize=150%2C86&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_11.png?resize=696%2C401&amp;ssl=1 696w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_11.png?resize=1068%2C615&amp;ssl=1 1068w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_11.png?resize=729%2C420&amp;ssl=1 729w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_11.png?w=1481&amp;ssl=1 1481w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_11.png?w=1392&amp;ssl=1 1392w" sizes="auto, (max-width: 696px) 100vw, 696px" /></figure>



<p>Burada gösterilen pinler RPi 3 içindir, sizdeki RPi modeline göre devrede doğru bağlantıları yaptığınızdan emin olun..</p>



<h3 class="wp-block-heading"><mark style="background-color:#ffffff" class="has-inline-color has-luminous-vivid-orange-color">Bağlantıyı test edelim ve ilk programı yükleyelim</mark></h3>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="696" height="480" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_13.png?resize=696%2C480&#038;ssl=1" alt="SpeedPlc 13" class="wp-image-18025" title="Raspberry Pi ile PLC Öğrenelim 28" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_13.png?w=920&amp;ssl=1 920w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_13.png?resize=300%2C207&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_13.png?resize=768%2C530&amp;ssl=1 768w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_13.png?resize=150%2C104&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_13.png?resize=218%2C150&amp;ssl=1 218w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_13.png?resize=696%2C480&amp;ssl=1 696w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_13.png?resize=609%2C420&amp;ssl=1 609w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_13.png?resize=100%2C70&amp;ssl=1 100w" sizes="auto, (max-width: 696px) 100vw, 696px" /></figure>



<p>Program tab ında solda Bit Logic altında NO ya çift tık yapın, network tarafında normalde açık kontak oluşacaktır. Sonra yana geçip Q ya çift tık yapın. Ladder programına eklediğiniz elemanları seçip delete tuşu ile silebilir, Ctrl+C ile kopyalayabilir, Ctrl+V ile yapıştırabilirsiniz.. Tanımlarını da resimdeki gibi yapın. D0.X0.6 ve Q0.0 olarak.. D0 dahili data bloktur, sol tarafta Programs -&gt; Data Block yanındaki + ya basarak DB0 a çift tık yaparsanız bu bitleri ve anlamlarını görebilirsiniz. D0.X0.6 1Hz ile sinyal üreten bir bittir. PC ve PLC bağlantısını kontrol etmek için sol üstte soldan 5. butona (Settings veya ayarlar) basıp Plc Connection Settings e tıklayalım, ekrana aşağıdaki pencere çıkacaktır. Ayarlarınız resimdeki gibi ise Connection Test e tıklayın, &#8220;Connected to Plc&#8221; mesajı geldiyse bağlantı tamam demektir..</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="280" height="502" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_17.png?resize=280%2C502&#038;ssl=1" alt="SpeedPlc 17" class="wp-image-18032" title="Raspberry Pi ile PLC Öğrenelim 29" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_17.png?w=280&amp;ssl=1 280w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_17.png?resize=167%2C300&amp;ssl=1 167w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_17.png?resize=150%2C269&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_17.png?resize=234%2C420&amp;ssl=1 234w" sizes="auto, (max-width: 280px) 100vw, 280px" /></figure>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="696" height="485" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_14.png?resize=696%2C485&#038;ssl=1" alt="SpeedPlc 14" class="wp-image-18026" title="Raspberry Pi ile PLC Öğrenelim 30" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_14.png?w=723&amp;ssl=1 723w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_14.png?resize=300%2C209&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_14.png?resize=150%2C105&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_14.png?resize=696%2C485&amp;ssl=1 696w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_14.png?resize=603%2C420&amp;ssl=1 603w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_14.png?resize=100%2C70&amp;ssl=1 100w" sizes="auto, (max-width: 696px) 100vw, 696px" /></figure>



<p>Şimdi Sağ üstte bulunan butonlardan soldan 4. butona a veya F9 a basın resimdeki pencere çıkacaktır. All Blocks ve Plc Configuration tiklerini yapıp Load a tıklayın, çıkan pencerelerde Evet e tıklayın. Led yanıp sönmeye başlayacaktır.</p>



<h3 class="wp-block-heading"><mark style="background-color:#ffffff" class="has-inline-color has-luminous-vivid-orange-color">Start Stop devresi</mark></h3>



<p>PLC işlerinin merhaba dünyası olan devreyi yapalım.. Giriş çıkışlara açıklama yapmak için Symbol sekmesini kullanabilirsiniz. Start butonuna basınca led yanacak ve elinizi çekseniz de yanık kalacak, Stop butonuna basınca led sönecektir. Yeni proje açtıysanız, Hardware sekmesindeki ayarları unutmayın..</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="696" height="334" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_15.png?resize=696%2C334&#038;ssl=1" alt="SpeedPlc 15" class="wp-image-18028" title="Raspberry Pi ile PLC Öğrenelim 31" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_15.png?w=704&amp;ssl=1 704w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_15.png?resize=300%2C144&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_15.png?resize=150%2C72&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_15.png?resize=696%2C334&amp;ssl=1 696w" sizes="auto, (max-width: 696px) 100vw, 696px" /></figure>



<h3 class="wp-block-heading"><mark style="background-color:#ffffff" class="has-inline-color has-luminous-vivid-orange-color">Tek buton ile ON/OFF devresi</mark></h3>



<p>Butona basınca led yanar, aynı butona tekrar basınca led söner. Programı PLC ye yükledikten sonra sağ üstte bulunan soldan ilk buton ile (F7) plc ye <strong>canlı bağlantı</strong> kurarak devreyi izleyebilirsiniz. Siemens te M0.0 olarak gösterilen dahili hafıza biti burada F0.0 gibi gösteriliyor. I0.0, Q0.0 gösterimleri Siemens ile aynı zaten.. P_TRIG sayesinde plc, butona basıldığı an (yükselen kenar) 1 çevrim pals almış olur. N_TRIG ise butondan parmak çekildiği anı yakalamak için kullanılır. </p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="696" height="318" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_16.png?resize=696%2C318&#038;ssl=1" alt="SpeedPlc 16" class="wp-image-18030" title="Raspberry Pi ile PLC Öğrenelim 32" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_16.png?w=913&amp;ssl=1 913w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_16.png?resize=300%2C137&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_16.png?resize=768%2C351&amp;ssl=1 768w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_16.png?resize=150%2C69&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_16.png?resize=696%2C318&amp;ssl=1 696w" sizes="auto, (max-width: 696px) 100vw, 696px" /></figure>



<h3 class="wp-block-heading"><mark style="background-color:#ffffff" class="has-inline-color has-luminous-vivid-orange-color">Timer devresi</mark></h3>



<figure class="wp-block-image size-large"><img data-recalc-dims="1" loading="lazy" decoding="async" width="696" height="348" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_18.png?resize=696%2C348&#038;ssl=1" alt="SpeedPlc 18" class="wp-image-18034" title="Raspberry Pi ile PLC Öğrenelim 33" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_18.png?resize=1024%2C512&amp;ssl=1 1024w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_18.png?resize=300%2C150&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_18.png?resize=768%2C384&amp;ssl=1 768w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_18.png?resize=150%2C75&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_18.png?resize=696%2C348&amp;ssl=1 696w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_18.png?resize=1068%2C534&amp;ssl=1 1068w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_18.png?resize=840%2C420&amp;ssl=1 840w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_18.png?w=1072&amp;ssl=1 1072w" sizes="auto, (max-width: 696px) 100vw, 696px" /></figure>



<p>Butona basınca led1 500ms yanıp sönecek, ardından led2 1500ms yanıp sönecek. İlk networkte led1 ve led2 normalde kapalı kontak girişlerini koyduk ki ledler yanarken tekrar butona basılamasın.. F1.5 bir nolu byte ın 5. biti demektir. FW10 word hafıza gösterimi olduğundan (10. ve 11. byte lar) ve bir word iki byte tan oluştuğundan 2 nolu timer da FW12 kullanılabilir. FW10 programda kullanıldığından başka bir network te FB10 (tek byte) kullanılamaz, çakışma olur. FD10 ise double word yani dört byte tan (10-13 byte lar) oluşmaktadır. Siemens PLC de de aynı gösterim vardır, F yerine M gelir sadece.. Programda bir eleman seçiliyken F1 tuşuna basarsanız help penceresi çıkar. Bu arada ayarlar butonundan dili Türkçe yapabilirsiniz, yardım dökümanı da Türkçe olur böylece.. F7 ile canlı bağlantı yapmanızı tavsiye ederim, bu şekilde timer değerlerini canlı canlı görebilirsiniz.</p>



<h3 class="wp-block-heading"><mark style="background-color:#ffffff" class="has-inline-color has-luminous-vivid-orange-color">Butonsuz timer</mark> </h3>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="696" height="293" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_19.png?resize=696%2C293&#038;ssl=1" alt="SpeedPlc 19" class="wp-image-18061" title="Raspberry Pi ile PLC Öğrenelim 34" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_19.png?w=876&amp;ssl=1 876w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_19.png?resize=300%2C126&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_19.png?resize=768%2C324&amp;ssl=1 768w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_19.png?resize=150%2C63&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/SpeedPlc_19.png?resize=696%2C293&amp;ssl=1 696w" sizes="auto, (max-width: 696px) 100vw, 696px" /></figure>



<p>Led1 1 saniye yanar, ardından led2 1 saniye yanar, sonra ikiside 1 saniye söner. İlk satırda timer2 aktif olmadığından timer0 tetiklenir ve sıralı işlem başlar ama bitmez döngü halinde devam eder.</p>



<p>RPi yi kapatıp açsanız bile plc nin çalışmaya devam ettiğini görebilirsiniz. Şimdilik bu kadar olsun.. Sizden gelecek talep ve sorulara göre bu konu kapsamında başka yazılar da yazabilirim.. Hoşçakalın..</p>
<p>The post <a rel="nofollow" href="https://akademi.robolinkmarket.com/raspberry-pi-ile-plc-ogrenelim/">Raspberry Pi ile PLC Öğrenelim</a> appeared first on <a rel="nofollow" href="https://akademi.robolinkmarket.com">Robolink Akademi</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://akademi.robolinkmarket.com/raspberry-pi-ile-plc-ogrenelim/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">17917</post-id>	</item>
		<item>
		<title>ENKODER VE TAKOMETRE NEDİR ?</title>
		<link>https://akademi.robolinkmarket.com/enkoder-ve-takometre-nedir/</link>
					<comments>https://akademi.robolinkmarket.com/enkoder-ve-takometre-nedir/#respond</comments>
		
		<dc:creator><![CDATA[Erol İşçioğlu]]></dc:creator>
		<pubDate>Tue, 05 Jul 2022 07:40:04 +0000</pubDate>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[Arduino Projeleri]]></category>
		<category><![CDATA[Nedir?]]></category>
		<guid isPermaLink="false">https://akademi.robolinkmarket.com/?p=17816</guid>

					<description><![CDATA[<p>Enkoder, bağlı olduğu motor milinin veya tekerleğin hareketlerine karşılık sinyal üreten elektromekanik bir cihazdır. Farklı sistemlerle çalışan tipleri olmakla birlikte optik çalışanlarda genel olarak enkoder ışık kesintisine bağlı olarak bir geri bildirim sağlamaktadır. Mutlak enkoder, güç verildiği andan itibaren dönen mile göre dijital bit dizileri şeklinde birbirine benzemeyen çıkış vererek milin konumunu belirlemektedir. Bu nedenle [&#8230;]</p>
<p>The post <a rel="nofollow" href="https://akademi.robolinkmarket.com/enkoder-ve-takometre-nedir/">ENKODER VE TAKOMETRE NEDİR ?</a> appeared first on <a rel="nofollow" href="https://akademi.robolinkmarket.com">Robolink Akademi</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Enkoder, bağlı olduğu motor milinin veya tekerleğin hareketlerine karşılık sinyal üreten elektromekanik bir cihazdır. Farklı sistemlerle çalışan tipleri olmakla birlikte optik çalışanlarda genel olarak enkoder ışık kesintisine bağlı olarak bir geri bildirim sağlamaktadır.</p>



<p>Mutlak enkoder, güç verildiği andan itibaren dönen mile göre dijital bit dizileri şeklinde birbirine benzemeyen çıkış vererek milin konumunu belirlemektedir. Bu nedenle açı tespitinde kullanılır. Artımsal enkoder ise, bağlı olduğu mil dönerken, pals olarak adlandırılan kare sinyal üreterek bulunduğu konumu bilgilendirmede ve de belli bir süre pals sayma işlemi yapılarak dönme hızı tespitinde kullanılır.</p>


<div class="wp-block-image">
<figure class="aligncenter"><img data-recalc-dims="1" loading="lazy" decoding="async" width="214" height="300" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/otomatik-etiketleme-aplikatoru.jpg?resize=214%2C300&#038;ssl=1" alt="otomatik etiketleme aplikatoru" class="wp-image-17819" title="ENKODER VE TAKOMETRE NEDİR ? 36" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/otomatik-etiketleme-aplikatoru.jpg?resize=214%2C300&amp;ssl=1 214w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/otomatik-etiketleme-aplikatoru.jpg?resize=150%2C211&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/otomatik-etiketleme-aplikatoru.jpg?resize=300%2C421&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/otomatik-etiketleme-aplikatoru.jpg?resize=299%2C420&amp;ssl=1 299w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/otomatik-etiketleme-aplikatoru.jpg?w=331&amp;ssl=1 331w" sizes="auto, (max-width: 214px) 100vw, 214px" /></figure></div>


<p>Otomatik etiketleme aplikatörü, fabrikada konveyör bant üzerinde ilerleyen kolilere etiket yapıştırmak için kullanılır. Aplikatörün, konveyör hızına uygun hızda etiketi koliye yapıştırabilmesi için cihaza artımsal enkoder bağlanmaktadır. 64mm çapında bir tekerlek 500 pals/tur bir enkoder a bağlanır. Tekerlek, konveyör banta temas edecek şekilde montajlanır, böylece aplikatör bant hızından haberdar olmuş olur. Aynı zamanda bantın kaç mm ilerlediği bilgisi de aplikatöre gelmiş olur, örneğin 50 pals geldiyse, tekerlek bir tur attığında bant yaklaşık 200mm (64mm x pi) ilerlediğinden, 50 pals, 20mm bantta ilerleme demektir.</p>


<div class="wp-block-image">
<figure class="aligncenter"><img data-recalc-dims="1" loading="lazy" decoding="async" width="133" height="300" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/takometre.jpg?resize=133%2C300&#038;ssl=1" alt="takometre" class="wp-image-17821" title="ENKODER VE TAKOMETRE NEDİR ? 37" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/takometre.jpg?resize=133%2C300&amp;ssl=1 133w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/takometre.jpg?resize=150%2C337&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/takometre.jpg?resize=300%2C675&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/takometre.jpg?resize=187%2C420&amp;ssl=1 187w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/takometre.jpg?w=333&amp;ssl=1 333w" sizes="auto, (max-width: 133px) 100vw, 133px" /></figure></div>


<p>Takometre, motor miline veya konveyör banta temas sağlanarak kullanılır, bize rpm (dakikadaki devir sayısı) veya metre/dakika birimleriyle hız bilgisi gösterir.</p>



<p>Burada yapacağımız basit bir arduino projesi, aynen artımsal enkoder gibi motor dönerken pals üretecektir. Tipik bir enkoder bir turda 500 pals verirken bizimki bir turda bir pals verecek. Motorun dönüş hızını yani rpm ölçeceğimizden bu projeye, takometre de diyebiliriz. Projede kullanacağımız&nbsp;modül&nbsp;10mm çatal aralığı olan bir sensördür, bir tarafında infrared led diğer tarafında npn bir transistör bulunmaktır.</p>



<h2 class="wp-block-heading"><span style="color: #ff6600;"><strong>LM393 Motor Hız Sensör Modülü</strong></span></h2>


<div class="wp-block-image">
<figure class="aligncenter"><img data-recalc-dims="1" loading="lazy" decoding="async" width="300" height="283" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/lm393.jpg?resize=300%2C283&#038;ssl=1" alt="lm393" class="wp-image-17820" title="ENKODER VE TAKOMETRE NEDİR ? 38" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/lm393.jpg?resize=300%2C283&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/lm393.jpg?resize=150%2C141&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/lm393.jpg?w=420&amp;ssl=1 420w" sizes="auto, (max-width: 300px) 100vw, 300px" /></figure></div>


<p>Araya bir nesne girip girmeme durumuna göre transistör iletimde veya yalıtımda olacak buna göre modül çıkış sinyali arada bir engel varsa HIGH (1), yoksa LOW (0) olacaktır. Proje düzeneği için, <a href="https://www.robolinkmarket.com/dc-cift-eksenli-tt-disli-motor">motor</a> miline bir dil çubuğu parçasını sıcak silikon ile tutturdum. İki HIGH sinyali arasında geçen süreyi ölçerek rpm bilgisini hesapladım. Motoru farklı hızlarda sürmek için Arduino uno nun PWM çıkışını (pin 3), <a href="https://www.robolinkmarket.com/dc-cift-eksenli-tt-disli-motor">L298 motor sürücü</a> modülünde ENA pinine girdim. L298 i 12V güç kaynağı ile besledim. Bu sayede Arduino IDE de, PWM çıkışına farklı değerler vererek, seri port ekranından hız bilgisini okuyor olacağız.</p>


<div class="wp-block-image">
<figure class="aligncenter"><img data-recalc-dims="1" loading="lazy" decoding="async" width="274" height="300" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/lm393-arduino.jpg?resize=274%2C300&#038;ssl=1" alt="lm393 arduino" class="wp-image-17822" title="ENKODER VE TAKOMETRE NEDİR ? 39" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/lm393-arduino.jpg?resize=274%2C300&amp;ssl=1 274w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/lm393-arduino.jpg?resize=150%2C164&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/lm393-arduino.jpg?resize=300%2C328&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/lm393-arduino.jpg?resize=384%2C420&amp;ssl=1 384w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/lm393-arduino.jpg?w=457&amp;ssl=1 457w" sizes="auto, (max-width: 274px) 100vw, 274px" /></figure></div>

<div class="wp-block-image">
<figure class="aligncenter"><img data-recalc-dims="1" loading="lazy" decoding="async" width="300" height="203" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/l298n-arduino.jpg?resize=300%2C203&#038;ssl=1" alt="l298n arduino" class="wp-image-17823" title="ENKODER VE TAKOMETRE NEDİR ? 40" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/l298n-arduino.jpg?resize=300%2C203&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/l298n-arduino.jpg?resize=150%2C101&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/l298n-arduino.jpg?w=513&amp;ssl=1 513w" sizes="auto, (max-width: 300px) 100vw, 300px" /></figure></div>


<p>Bağlantılar bu şekilde.. L298 kullanımı için Robolink Akademi’de bulunan <a href="https://akademi.robolinkmarket.com/arduino-ile-dc-motor-kontrolu/">bu yazıya</a> da bakabilirsiniz. GND leri ortak yapmayı unutmayın.</p>



<h2 class="wp-block-heading"><span style="color: #ff6600;">LM393 Arduino Kodu</span></h2>



<pre class="wp-block-code"><code>#define enA 3
#define in1 6
#define in2 7
#define sensor 2
unsigned long start_time = 0;
unsigned long end_time = 0;
int steps=0; // işlemlerin sırayla yapılabilmesi için tanımlandı
float temp=0;
float rpm=0; //dakikadaki devir sayısı

void setup() {
  Serial.begin(9600);
  pinMode(enA, OUTPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(sensor, INPUT);
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
  analogWrite(enA, 30); // PWM Hız komutu
}

void loop() {

  if(digitalRead(sensor) &amp;&amp; steps==0)
  {
    start_time=millis();
    steps=1;
    delay(200);
  }

 if(digitalRead(sensor) &amp;&amp; steps==1)
  {
    end_time=millis();
    steps=0;
    temp=int(end_time - start_time); //İki HIGH arası geçen milisaniye
    rpm=60/(temp/1000.0); 
    Serial.println(rpm);
    delay(200);
  }
}
</code></pre>


<p>PWM değeri 30 un altındaysa motor dönmüyor.. Elde ettiğim veriler bu şekilde oluştu.. Gördüğünüz gibi rpm değeri motor voltajı ile orantılı olarak artmakta fakat pwm 125 ten sonra hız pek değişmemektedir. Projenin doğru ölçüm yaptığını takometre ile de doğruladım.</p>
<p><img data-recalc-dims="1" loading="lazy" decoding="async" class=" wp-image-17824 aligncenter" src="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/pwm-degerleri.jpg?resize=448%2C191&#038;ssl=1" alt="pwm degerleri" width="448" height="191" title="ENKODER VE TAKOMETRE NEDİR ? 41" srcset="https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/pwm-degerleri.jpg?resize=300%2C128&amp;ssl=1 300w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/pwm-degerleri.jpg?resize=150%2C64&amp;ssl=1 150w, https://i0.wp.com/akademi.robolinkmarket.com/wp-content/uploads/2022/07/pwm-degerleri.jpg?w=651&amp;ssl=1 651w" sizes="auto, (max-width: 448px) 100vw, 448px" /></p>


<p></p>
<p>The post <a rel="nofollow" href="https://akademi.robolinkmarket.com/enkoder-ve-takometre-nedir/">ENKODER VE TAKOMETRE NEDİR ?</a> appeared first on <a rel="nofollow" href="https://akademi.robolinkmarket.com">Robolink Akademi</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://akademi.robolinkmarket.com/enkoder-ve-takometre-nedir/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">17816</post-id>	</item>
	</channel>
</rss>
