Full Otomatik Dijital Saatinizi Kendiniz Yapmaya Ne Dersiniz? // IoT - ESP8266 Digital Clock Project

X-Code

Uzman üye
19 Mar 2019
1,855
335
Localhost
svsurnf.jpg


Merhaba TürkHackTeam Üyeleri.
Bu Konumda Sizlere İnternet Üzerinden Saat Ve Tarih Verisini Çeken Dijital Bir Saatin Nasıl Yapılacağını Göstereceğim.


1.png



Konu İçeriği

Giriş

Malzemeler

Arduino Kodu Ve Bağlantı Şeması

Kurulum

Son Rötuşlar



Giriş

Öncelikle direk anlatıma geçmeden önce birkaç şeye değinmek istiyorum.
Birinci olarak konumun ilerleyen safhalarında da görebileceğiniz üzere konuyu hiç bilmeyen birisi bile yapabilmeli mantığında anlatacağım. Yani elektronik, gömülü sistemler veya IOT(Nesnelerin İnterneti) hakkında en ufak bir bilgi birikimi olmayan bir kişi bile bu saati yapabilecek. Diğer türlü zaten bilgi sahibi birisine sadece arduino kodlarını ve devre şemasını versem kafii olacaktır :) Dediğim gibi ben biraz detaylı anlatacağım.
İkinci olarak değinmek istediğim nokta ise bizim yapacağımız saatin normal bir saatden farklı olacağıdır. Normal bir dijital saat yapmak çokda zor değil sadece bir saat modülü ve displayler kullanılarak bir dijital saat yapılabilir. Bizimkinin farkı ise otonom olmasıdır. Yani otonomdan kastım saat ve tarih verisini otomatik olarak bağladığımız ağ üzerinden çekip displaylere yansıtacak. Böylelikle saatin kartına bir kere kodu attıktan sonra bir daha saat ve tarih ayarlamakla uğraşmayacağız. Saat kapansa dahi her açılışında ağımıza bağlanıp ihtiyacı olan verileri kendi otomatik olarak çekecek.
Şimdi ufaktan bize gerekli malzemeler ile başlayalım :)


5or0x5h.png


jQG9Gn.gif



Malzemeler

Esasında bize lazım olan malzemeler bir adet arduino, bir adet arduino uyumlu wifi kartı, yeterli miktarda display ve bu displayleri yönetecek modüller ve son olarak da bağlantı için gerekli kablolar. Bir de tabiki bu saati yerleştireceğiniz şey, burası size kalmış artık.
Malzemeler gözünüze çok gibi gelmiş olabilir ama merak etmeyin aslında sizin almanız gereken sadece 2 çeşit ürün olacak :) Zira günümüzde bu bahsettiğim gereçler kullananların işi daha kolay olsun diye birleştirilip "modül" adı altında her yerde satılıyor. Mesela az önce bize lazım olan malzemelerde arduino ve wifi modülü dedim. Piyasada bu böyle satılmıyor artık, ESP8266 Wifi kartı ile arduino nano kartını birleştirip tek kart üzerinden "ESP8266 NodeMCU Wifi Modülü" diye satılıyor. Aynı şekilde displayler de sürücü kartlarıyla beraber (hatta yanında bağlantı kablolarıyla da beraber) satılıyor. Dediğim gibi bizim almamız gereken 2 çeşit ürün var..



ESP8266 NodeMcu Wifi Modülü


Bu modülün görüntüsü aşağıda verdiğim şekildedir. Az öncede bahsettiğim üzere bu modül aslında arduino nano kartının üzerine ESP8266 wifi kartının entegre edilmesiyle oluşturulmuş, bizde bu ürünü kullanacağız. Ürünün günümüz fiyatları 30-45 TL arası değişmekte. Aşağıya ürünü satın alabileceğiniz "örnek" bir link bırakıyorum. Bu üründen 1 adet alıyoruz.

Buradan Satın Alabilirsiniz

rh6em3p.jpg



MAX7219 Dot 8x8 Led Matrix Modülü


Bu modülün içeriğinde ise 8x8 led matrix display, MAX7219 entegreye sahip sürücü kartı bulunmakta. Ayrıca paket içeriğinden yeteri kadar dişi-dişi jumper kablolar da çıkmakta. Bu üründen 4 tane almanız gerekecek. Zira ben kodu ve devre şemasını 4 matrix displaye göre ayarladım. Zaten genelde 4 tane kullanılır ve gayet de yeterli oluyor. Ürünün günümüz tane fiyatı 10-30 TL arası değişmekte. Bazı yerlerde 4 tane birden satılıyor, araştırmanızı tavsiye ederim maddi olarak daha hesaplıya geliyor olabilir. Aynı şekilde bu ürün içinde satın alabileceğiniz "örnek" bir link bırakıyorum.

Buradan Satın Alabilirsiniz

nisjhn9.jpg
2lnvw9q.jpg



Almamız gerekenler bu kadar. Konuyu açtığım tarihle bu ürünlerin toplam maliyeti ortalama 100-120 TL arası tutuyor. Ürünleri tedarik ettiyseniz diğer aşamaya geçelim..


c03p4au.jpg


jQG9Gn.gif



Arduino Kodu Ve Bağlantı Şeması

Kodları ve Fritzing şemasını aşağıya ekliyorum. Bunları bir sonraki bölümde kullanacağız.


Arduino Kodu


C:
/*
  ESP-01 pinout from top:
 
  GND    GP2 GP0 RX/GP3
  TX/GP1 CH  RST VCC

  MAX7219
  ESP-1 from rear
  Re Br Or Ye
  Gr -- -- --

  USB to Serial programming
  ESP-1 from rear, FF to GND, RR to GND before upload
  Gr FF -- Bl
  Wh -- RR Vi

  GPIO 2 - DataIn
  GPIO 1 - LOAD/CS
  GPIO 0 - CLK

  ------------------------
  NodeMCU 1.0 pinout:

  D8 - DataIn
  D7 - LOAD/CS
  D6 - CLK
 
*/


#include "Arduino.h"
#include <ESP8266WiFi.h>


WiFiClient client;

String date;

#define NUM_MAX 7

// for ESP-01 module
//#define DIN_PIN 2 // D4
//#define CS_PIN  3 // D9/RX
//#define CLK_PIN 0 // D3

// for NodeMCU 1.0
#define DIN_PIN 15  // D8
#define CS_PIN  13  // D7
#define CLK_PIN 12  // D6

#include "max7219.h"
#include "fonts.h"

// =======================================================================
// CHANGE YOUR CONFIG HERE:
// =======================================================================
const char* ssid     = " ";     // SSID of local network
const char* password = " ";   // Password on network

// =======================================================================

void setup()
{
  Serial.begin(115200);
  initMAX7219();
  sendCmdAll(CMD_SHUTDOWN,1);
  sendCmdAll(CMD_INTENSITY,0);
  Serial.print("Connecting WiFi ");
  WiFi.begin(ssid, password);
  printStringWithShift("Conect        ",25);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected: "); Serial.println(WiFi.localIP());
}
// =======================================================================
#define MAX_DIGITS 16
byte dig[MAX_DIGITS]={0};
byte digold[MAX_DIGITS]={0};
byte digtrans[MAX_DIGITS]={0};
int updCnt = 0;
int dots = 0;
long dotTime = 0;
long clkTime = 0;
int dx=0;
int dy=0;
byte del=0;
int h,m,s;
// =======================================================================
void loop()
{
  if(updCnt<=0) { // every 10 scrolls, ~450s=7.5m
    updCnt = 10;
    Serial.println("Getting data ...");
    printStringWithShift("X-Code        ",25);
  
    getTime();
    Serial.println("Data loaded");
    clkTime = millis();
  }
 
  if(millis()-clkTime > 40000 && !del && dots) { // clock for 15s, then scrolls for about 30s
    printStringWithShift(date.c_str(),40);
   delay(5000);
    updCnt--;
    clkTime = millis();
  }
  if(millis()-dotTime > 500) {
    dotTime = millis();
    dots = !dots;
  }
  updateTime();
  showAnimClock();
}

// =======================================================================

void showSimpleClock()
{
  dx=dy=0;
  clr();
  showDigit(h/10,  0, dig4x8);
  showDigit(h%10,  5, dig4x8);
  showDigit(m/10, 12, dig4x8);
  showDigit(m%10, 17, dig4x8);
  showDigit(s/10, 23, dig4x8);
  showDigit(s%10, 28, dig4x8);
  setCol(10,dots ? B00100100 : 0);
  setCol(22,dots ? B00100100 : 0);
  refreshAll();
}

// =======================================================================

void showAnimClock()
{
  byte digPos[6]={0,5,12,17,23,28};
  int digHt = 12;
  int num = 6;
  int i;
  if(del==0) {
    del = digHt;
    for(i=0; i<num; i++) digold[i] = dig[i];
    dig[0] = h/10 ? h/10 : 10;
    dig[1] = h%10;
    dig[2] = m/10;
    dig[3] = m%10;
    dig[4] = s/10;
    dig[5] = s%10;
    for(i=0; i<num; i++)  digtrans[i] = (dig[i]==digold[i]) ? 0 : digHt;
  } else
    del--;
 
  clr();
  for(i=0; i<num; i++) {
    if(digtrans[i]==0) {
      dy=0;
      showDigit(dig[i], digPos[i], dig4x8);
    } else {
      dy = digHt-digtrans[i];
      showDigit(digold[i], digPos[i], dig4x8);
      dy = -digtrans[i];
      showDigit(dig[i], digPos[i], dig4x8);
      digtrans[i]--;
    }
  }
  dy=0;
  setCol(10,dots ? B00100100 : 0);
  setCol(22,dots ? B00100100 : 0);
  refreshAll();
  delay(30);
}

// =======================================================================

void showDigit(char ch, int col, const uint8_t *data)
{
  if(dy<-8 | dy>8) return;
  int len = pgm_read_byte(data);
  int w = pgm_read_byte(data + 1 + ch * len);
  col += dx;
  for (int i = 0; i < w; i++)
    if(col+i>=0 && col+i<8*NUM_MAX) {
      byte v = pgm_read_byte(data + 1 + ch * len + 1 + i);
      if(!dy) scr[col + i] = v; else scr[col + i] |= dy>0 ? v>>dy : v<<-dy;
    }
}

// =======================================================================

void setCol(int col, byte v)
{
  if(dy<-8 | dy>8) return;
  col += dx;
  if(col>=0 && col<8*NUM_MAX)
    if(!dy) scr[col] = v; else scr[col] |= dy>0 ? v>>dy : v<<-dy;
}

// =======================================================================

int showChar(char ch, const uint8_t *data)
{
  int len = pgm_read_byte(data);
  int i,w = pgm_read_byte(data + 1 + ch * len);
  for (i = 0; i < w; i++)
    scr[NUM_MAX*8 + i] = pgm_read_byte(data + 1 + ch * len + 1 + i);
  scr[NUM_MAX*8 + i] = 0;
  return w;
}

// =======================================================================

void printCharWithShift(unsigned char c, int shiftDelay) {
 
  if (c < ' ' || c > '~'+25) return;
  c -= 32;
  int w = showChar(c, font);
  for (int i=0; i<w+1; i++) {
    delay(shiftDelay);
    scrollLeft();
    refreshAll();
  }
}

// =======================================================================

void printStringWithShift(const char* s, int shiftDelay){
  while (*s) {
    printCharWithShift(*s, shiftDelay);
    s++;
  }
}

// =======================================================================

float utcOffset = +3;
long localEpoc = 0;
long localMillisAtUpdate = 0;

void getTime()
{
  WiFiClient client;
  if (!client.connect("www.google.com", 80)) {
    Serial.println("connection to google failed");
    return;
  }

  client.print(String("GET / HTTP/1.1\r\n") +
               String("Host: www.google.com\r\n") +
               String("Connection: close\r\n\r\n"));
  int repeatCounter = 0;
  while (!client.available() && repeatCounter < 10) {
    delay(500);
    //Serial.println(".");
    repeatCounter++;
    
  }

  String line;
  client.setNoDelay(false);
  while(client.connected() && client.available()) {
    line = client.readStringUntil('\n');
    line.toUpperCase();
    if (line.startsWith("DATE: ")) {
      date = "     "+line.substring(0, 28);
      h = line.substring(23, 25).toInt();
      m = line.substring(26, 28).toInt();
      s = line.substring(29, 31).toInt();
      localMillisAtUpdate = millis();
      localEpoc = (h * 60 * 60 + m * 60 + s);
      
    }
  }
  client.stop();
}

// =======================================================================

void updateTime()
{
  long curEpoch = localEpoc + ((millis() - localMillisAtUpdate) / 1000);
  long epoch = round(curEpoch + 3600 * utcOffset + 86400L) % 86400L;
  h = ((epoch  % 86400L) / 3600) % 24;
  m = (epoch % 3600) / 60;
  s = epoch % 60;
}

// =======================================================================

Kod bana ait değil lakin üzerinde oynama yapıp bu hale getirdim. Kodu sıfırdan ben yazmadım yani.


Bağlantı Şeması


42pj8dz.jpg


Şemada 8 tane matrix led kullanılmış lakin biz 4 tane kullanacağız. Siz 4 taneymiş gibi farzedebilirsiniz. Zaten bağlantı şekli hepsinin aynı.


jQG9Gn.gif



Kurulum

Nihayet kuruluma geçebiliriz :)
Öncelikle devremizi kuralım akabinde kod kısmına geçeriz. Yapmamız gereken ilk şey led matrixlerin modüllerini yan yana birbirine yapıştırmak. Bunun için matrix modüllerinin yanlarına yapıştırıcı(404 veya sıcak silikon olabilir) sürerek birbirlerine yanlarından 4 modülü yapıştırıyoruz. Bunun sebebi bizim saatimizin tıpkı bir dikdörtgen ekranmış gibi gözükmesini sağlamaktır.
Yapıştırdıktan sonra elimizde bulunan input-input jumper kablolar ile matrixlerin kendi aralarında ve NodeMcu ile olan bağlantısı yapmak gerek. Bu bağlantıyı yukarıdaki şemaya göre yapabilirsiniz lakin ben şema okumayı bilmeyenler için tek tek hangi bağlantı nereye yapılacak anlatayım.

İlk olarak led matrix modülümüzden çıkan portları tanıyalım.

VCC : Bu çıkışımız güç çıkışıdır. Güç kaynağımızdan gelen anot (+) fazımız buraya girer. Böylelikle modüle güç gitmiş olur.

GND : Bu çıkış ise elektrikte topraklama olarak geçer. Elektronikte genelde katot (-) fazını temsil eder. Keza aynı şekilde güç kaynağımızdan gelen - hattı buraya gireriz.

DIN : Açılımı Digital In yani dijital giriştir. Arduinomuzdan gelen dijital sinyaller bu porta giriş yapacak. Başka bir deyişle modül arduinodan gelen dijital sinyali bu porttan okuyacak.

DOUT : Bu ise Digital Out yani dijital çıkışdır. DIN'in tam tersidir.

CS : Load pini diye de geçer. Aynı DIN gibi data aktarımında kullanılır.

CLK : Açılımı Clock'dur. Saat verisinin okunması için kullanılan pindir.

Yukarıda verdiğim şemayı okuduğumuzda şema bize hangi pinlerin hangi pinlere bağlanacağını söylüyor. Açıklamak gerekirse led matrix modüller arası bağlantıda 1. modülün VCC'sinden çıkan kablo 2. modülün VCC'sine, GND'den çıkan kablo GND'ye, DOUT'dan çıkan kablo DIN'e, CS'den çıkan kablo CS'ye ve son olarak CLK'dan çıkan kablo da CLK'a girecektir. Bu 4 modül arasında sıralı bir şekilde yapılıp tüm modüller birbirine bağlı olacaktır.
En baştaki modülümüz ise nodeMcu'ya bağlanacak. Onun bağlantısıda; modülden çıkan VCC nodeMcu'nun 5v girişine, modülden çıkan GND nodeMcu'nun GND girişine, modülden çıkan DIN nodeMcu'nun D8 girişine, modülden çıkan CS nodeMcu'nun D7 girişine ve son olarak da modülden çıkan CLK nodeMcu'nun D6 girişine bağlanacak. Yazı üzerinden bunları anlatmak zor anlaşılması da eminim zordur lakin yapması kolay işlemler bunlar. Sadece kabloların bir ucunu bir yere diğer ucunu diğer yere bağlayacaksınız. Oldukça basit zaten. Bu aşamada elde ettiğiniz son görüntü aşağıdaki resimler gibi olmalıdır.

96tku7i.jpg


ei7zb19.jpg


ptzw6rm.jpg



Bağlantı işlemi bu kadardı. Şimdi sıra geldi NodeMcu modülümüze kod enjekte etmeye. Bu aşamada kartın üzerinde bir mini usb girişi göreceksiniz. Bu girişe kartı aldığınız yerde kablo verdilerse o kabloyu takın vermedilerse bir android (mini usb) şarj aletinin kablosunu kullanabilirsiniz. Lakin her şarj kablosu olmayacaktır. Zira kabloyu üreten firmalar daha ucuz olsun diye kabloda bulunması gereken data kablolarını eklemeyebiliyorlar böylelikle şarj kablosunun içerisinden sadece güç kabloları oluyor tabi bu şarj işlemini etkilemiyor. Ama bize data kabloları bulunan bir şarj kablosu lazım. Bunu bir şekilde temin ediniz.
Kablomuzun bir ucunu NodeMcu kartımıza diğer ucunu ise bilgisayarımıza taktık. Sonrasında yapmamız gereken Arduino IDE'yi indirmek. IDE'yi bu bağlantıdan indiriyoruz. Akabinde bize birkaç kütüphane lazım. Bunları da ben siz tek tek aramayın diye tek bir yere upload ettim. Buradan indirebilirsiniz. (VirusTotal)

Arduinomuzu kurduktan sonra bilgisayarımızın Documents klasöründe Arduino diye bir dosya oluşması gerek. Şayet oluşmamışsa siz Arduino isimli boş bir klasör oluşturun. Bu klasöre girin ve eğer yoksa libraries isimli bir klasör oluşturun. Bu klasör arduinonun kütüphanelerini sakladığı bölümdür. Buraya daha yeni indirdiğiniz kütüphane klasörlerini atın.

epqtubx.jpeg


Kütüphaneleri ekledikten sonra arduino uygulamamızı açabiliriz. Uygulamamızı açalım ve bizi aşağıdaki gibi bir ekran karşılayacak.

3clk0rk.jpeg


Buradaki tüm kodları silin ve yukarıda paylaştığım kodu kopyalayıp buraya yapıştırın. Akabinde biraz düzenleme yapacağız. Bizim saatimiz internet üzerinden veri çekeceği için öncelikle bir internete bağlı olması gerekiyor :) Saati bulunduğunuz ortamdaki sabit modeme bağlayabilirsiniz. Bağlama işlemi çok basit. Koddaki ssid ve password kısımlarının karşısındaki boşluğa (iki tırnak arasına ' ') WiFi bilgilerimizi gireceğiz. SSID kısmına WiFi'ınızın ismini tam ve doğru bir şekilde girin. Password kısmına ise WiFi'ınızın şifresini girin. Bu bilgileri doğru girmeye özen gösteriniz. Diğer değiştirmeniz gereken yer ise printStringWithShift("X-Code ",25); bu kısım. Buradaki X-Code yazısı yerine istediğinizi yazabilirsiniz. İsterseniz değiştirmeye de bilirsiniz. Bu yazının ne zaman çıkacağını saat çalışınca göreceksiniz.

Koddaki düzenlemeleri de yaptığımıza göre artık kodumuzu derleyip daha önceden bilgisayarımıza bağladığımız nodeMcu kartımıza kodu atabiliriz. Ondan önce IDE'mize kartımızı tanıtalım. IDE'mizin üstünde bulunan Araçlar kısmına giriyoruz ve oradan Kart kısmına girip Arduino Nano seçeneğini seçiyoruz. Akabinde altındaki İşlemci kısmından Atmega328P (Old Bootloader) seçeneğini seçiyoruz. Piyasadaki pekçok arduino nanoda ve dolayısıyla bizim aldığımız modülde CH340 klon çip kullanılıyor. Bundan dolayı Old Bootloader seçeneğini seçtik. Bunuda seçtikten sonra Port kısmına tıklayıp NodeMcu'muzu bağladığımız usb portunu seçiyoruz.
Şimdi kodumuzu derleyip karta yükleyebiliriz. IDE'nin sol üstündeki sağ ok tuşuyla simgelenmiş Yükle butonuna tıklıyoruz. Ve kodumuz önce derlenip akabinde kartımıza yükleniyor. Zaten karta yüklenirken kartın üzerindeki TX ve RX ışıkları yanacaktır.

4czu4dy.jpeg


Ve artık kodumuzun da aktarım işlemi başarıyla bitti. Saati çalıştırmak için yapmanız gereken 5v luk ve amperi çok yüksek olmayan bir şarj adaptörü bulmak. Bu adaptörün usb girişine daha yeni bilgisayara taktığımız usb girişini takın ve saati çalışırın. Şimdi son rötuşlara geçelim..


jQG9Gn.gif




Son Rötuşlar

Konuma son olarak böyle bir bölüm eklemek istedim ama bu bölüm tamamen sizin için ayrılmış bir bölüm. Yani bundan sonrası sizin yaratıcılığınıza kalmış. Saati yaptık çalıştırdık, şimdi yapmamız gereken süslemek. Saatin kabını nasıl yapacağınız size kalmış ben o an elimde olan bir küçük kutuyu kullanıp sadece matrix ledler gözükecek şekilde malzemeleri o kutunun içerisine koyarak yapmıştım. Bu şekilde bir dış görünüş kazandırdım. Siz bunu farklı şekilde yapabilirsiniz.
Konu hakkında bilgili olan üyelerimiz bu projeyi geliştirmek için aşağıdan önerilerde bulunabilir. Bu sayede bu projeyi yapan üyeler saati geliştirebilirler. :) Onun dışında proje hakkında görüşlerinizi, sorularınızı konu altından yazabilirsiniz.

Şimdi şu saatin nasıl çalıştığını izleyelim biraz :)




l2j096u.png


Okuduğunuz İçin Teşekkür Ederim.
Esenlikle Kalın...

Saygılarımla

 
Son düzenleme:

Toolbrowser

Uzman üye
10 Tem 2021
1,064
648
42
Ellerine sağlık Üstadım. Eğitici Bir Tarzda Konu Açmışsınız. Tebriklerimi Sunarım. Selamlar
 

giz3mli

Yeni üye
9 Eki 2012
38
6
yapmasi beni korkutu :D niye diye sorma okadar guzel ve ozene anlatmisin ki ben yapamasam kendimi intihar ederim ellerine salik
 

X-Code

Uzman üye
19 Mar 2019
1,855
335
Localhost
Heh, şöyle konular görelim ve üretelim, gözümüzün pası attı sağolasın emeğine sağlık :)
Eyvallah, IoT serisi ilgi görürse devamı gelecek farklı projelerle

Ellerine sağlık Üstadım. Eğitici Bir Tarzda Konu Açmışsınız. Tebriklerimi Sunarım. Selamlar
Sağ ol dostum, teşekkür ederim

yapmasi beni korkutu :D niye diye sorma okadar guzel ve ozene anlatmisin ki ben yapamasam kendimi intihar ederim ellerine salik
😅 Elektronik dünyası bu sonuçta bir şeyi ilk yapışında düzgün çalışmayacaktır muhtemelen. Teşekkür ederim.

Keyifli Okumalar..
 

kiss4u

Üye
9 Şub 2019
240
10
Gerçekten emek harcanmış bir konu elinize sağlık. Bu tür konuların daha çok ilgi çekeceğine eminim.
 

X-Code

Uzman üye
19 Mar 2019
1,855
335
Localhost
Hay maşallah sonu gelmeyecek sandım bir ara eline emeğine sağlık
😅 Değerli yorumunuz ve sabit için teşekkür ederim hocam.

Ellerine sağlık
Sağ olasın.

Eline emeğine sağlık. Emek kokuyor
Teşekkür ederim sağ olun.

Eline Sağlık Emek Kokuyor döktürmüşsün :)
Sağ olun hocam, teşekkürler.

Gerçekten emek harcanmış bir konu elinize sağlık. Bu tür konuların daha çok ilgi çekeceğine eminim.
Teşekkür ederim. Forumun bu tür farklı içeriklere ihtiyacı var diye düşünüyorum.
 

BoostersX

Üye
17 Eki 2014
183
22
Özgün konulara boynum kıldan incedir.
Emeğine sağlık üstad.
Arduino öğrenilmesi gereken bir program lakin sanki o program Türkiye için fazla gibi be üstad.
Programı modüllere göre yazmak, modülleri de satın almak, içime pek sinmiyor.
Çinde misal, modülleri de kendileri yapıyorlardır eminim
Kafadaki fikirleri modüllere göre değil de, Modülleri kafadaki projeye göre uygulayabileceğimiz nice günlere...
Hayırlı forumlar
 

X-Code

Uzman üye
19 Mar 2019
1,855
335
Localhost
Özgün konulara boynum kıldan incedir.
Emeğine sağlık üstad.
Arduino öğrenilmesi gereken bir program lakin sanki o program Türkiye için fazla gibi be üstad.
Programı modüllere göre yazmak, modülleri de satın almak, içime pek sinmiyor.
Çinde misal, modülleri de kendileri yapıyorlardır eminim
Kafadaki fikirleri modüllere göre değil de, Modülleri kafadaki projeye göre uygulayabileceğimiz nice günlere...
Hayırlı forumlar

Güzel yorumunuz için teşekkür ederim. Çok haklısınız, bahsettiğiniz şekilde esasinda bir kart sadece spesifik olarak yapacağı işe göre tasarlanmalı ama işte günümüz şartlarında böyle bir düşünceyi pratiğe dökmek çokta mantıklı gelmiyor maddi açıdan çok verimsiz oluyor. Hadi arduino vs neyse de diğer gömülü sistem kartlarının mesela Raspberry nin vs fiyatları heves meves bırakmıyor insanda.
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.