Robotik Kodlama

Robotik Kodlama
Ana Sayfa

İLGİNİZİ ÇEKEBİLECEK LİNKLER :

1 Mayıs 2021 Cumartesi

Esp8266 Kullanarak Arduino'dan Web Sayfasında Veri Alma

 

Esp8266 Kullanarak Arduino'dan Web Sayfasında Veri Alma


Arduino'dan Wi-Fi modülüne bazı veri dizileri göndereceğiz ve bu dizileri bir IP Adresi aracılığıyla Yerel sunucu kullanarak web sayfasına göndereceğiz. Bu sunucu bir web sayfası olacak.Bu eğitim aşağıdaki bölümlerden oluşacaktır:

Esp8266 kullanarak Arduino'dan Web sayfasında veri alma

Esp8266 Wi-Fi'ye Giriş

Wireless Fidelity, her tür 802.11 teknolojisini kullanan ürünler için kullanılan bir terimdir. Wi-Fi ağı, lisanssız 2,4 GHz ve 5 GHz radyo frekansı bandında 11 Mbps veya 54 Mbps veri hızı ile çalışır. Wi-Fi özellikli cihazlar, kablosuz erişime sahip konumlardan kablosuz olarak veri gönderip alabilir. Bir Wi-Fi konumunda bulunan erişim noktaları, Wi-Fi özellikli cihazlar için RF sinyali iletir. Bu Wi-Fi özellikli cihazlar, erişim noktası aralığında bulunmaları halinde sinyali alabilir. Veri aktarımının hızı, erişim noktasına beslenen boru hattının hızına bağlıdır.

Çalışma prensibi

Radyo sinyali, Wi-Fi işleminin temelidir. 

Radyo sinyalleri anten ve yönlendiriciler tarafından iletilir ve bilgisayarlar gibi Wi-Fi alıcıları tarafından alınır.

Gerekli Bileşenler:

  • Arduino UNO Kurulu
  • Wi-Fi modülü ESP8266
  • Kabloların Bağlanması

Wi-Fi modülü:

Wi-Fi modülünün 2 sıra halinde düzenlenmiş 8 pin çıkışı vardır. Entegre tarafın size bakmasını ve iğnelerin ucunuza daha yakın olmasını sağlamak. Soldan sağa doğru alt sıra

  1. Tx - İletim pimi
  2. CH-DO - Kanal Aşağı pimi
  3. RST - Sıfırla
  4. Vcc - 3.3V güç kaynağı

Soldan sağa üst satırda

  1. GND - Güç kaynağı topraklaması
  2. GPIO_2 - Kullanılmıyor
  3. GPIO_0 - Kullanılmıyor
  4. Rx - Alıcı pimi

Arduino ile web sayfasında veri almak için Devre Şeması

ESP8266 Wi-Fi modülünün Arduino ile bağlantıları aşağıdaki gibidir.

  1. ESP8266 Wi-Fi modülü Tx Pin, Arduino'nun D2'si ile
  2. ESP8266 Wi-Fi modülü CH-EN Pin, 3V Arduino ile
  3. ESP8266 Wi-Fi modülü Vcc Pin, 3V Arduino ile
  4. ESP8266 Wi-Fi modülü GND Pin, Arduino'nun GND'si ile
  5. ESP8266 Wi-Fi modülü Voltaj bölücü orta noktalı (seri 1k ve 2k direnç bağlantı noktası) Rx Pin.
  6. 1k direncin ikinci ucu, Arduino'nun D3'ü ile.
  7. Arduino'nun GND'si ile 2k direncin ikinci ucu.

İşlem Açıklaması:

Veri almak için genel prosedür aşağıdaki adımlardan oluşur

  • Ağ bağlantısı için Wi-Fi modülünü Wi-Fi yönlendiriciye bağlayın
  • Yerel sunucuyu yapılandırın
  • Verileri Web sayfasına gönderin
  • Bağlantıyı kapat


Bu, aşağıdaki komutlarla yapılır

AT Wi-Fi Modülünün düzgün çalışıp çalışmadığını test etmek için, bağlantıları iyi olsun ya da olmasın bu komutu Wi-Fi modülüne gönderin. Wi-Fi modülü, bu komuta karşı Tamam yanıtı vermelidir.

AT + CWMODE = mode_id Bu komut, Wi-Fi modülünün çalışma modunu seçmek için kullanılır. Mod kimliği aşağıdaki değerleri taşıyabilir.

Mod kimlikleri

1 = İstasyon modu (istemci)
2 = AP modu (ana bilgisayar)
3 = AP + İstasyon modu

AT + CWQAP Bu komut, Wi-Fi modülünün önceden bağlanmış ağdan bağlantısını kesmek için kullanılır. Wi-Fi modülü, önceki herhangi bir ağa otomatik olarak bağlanacak şekilde yapılandırılmıştır.

AT + RST Bu komut, modülü sıfırlamak için kullanılır. Bu komutun kullanımı isteğe bağlıdır, yani modülü her seferinde sıfırlamamız gerekmez. Ancak bir sorun olduğunu düşünüyorsanız bu komutu kullanabilirsiniz.

AT + CWJAP = ”wifi_username”, ”wifi_password” Bu komut, Wi-Fi modülünü Wi-Fi yönlendiriciye bağlamak için kullanılır. Değiştir wifi_username Wi-Fi router ve adını wifi_password Wi-Fi router şifre ile.

AT + CIFSR Bu komut, Wi-Fi modülünün IP adresini almak için kullanılır. Bu komut modülünün tekrarında IP Adresini döndürür. Bu IP Adresini web sayfası ile iletişim kurmak için kullanacağız, yani bu IP Adresi iletişim için tarayıcının Adres çubuğunda kullanılacaktır.

AT + CIPMUX = 1 Bu komut, çoklama modunu etkinleştirmek için kullanılır. Birden çok bağlantı için 1 kullanılır ve tek bağlantı için 0 kullanılır.

AT + CIPSERVER = 1, port_no Bu komut, modülü sunucu olarak yapılandırmak için kullanılır. Burada '1' sunucuyu oluşturmak için ve '0' sunucuyu silmek için kullanılır. Varsayılan bağlantı noktası numarası 80'dir. Ancak, internet servis sağlayıcınız engellediyse. Ona danışarak ilgili port numaranızı vermeniz gerekir.

AT + CIPSEND = id, veri uzunluğu Bu komut, verileri yerel olarak oluşturulan sunucuya göndermek için kullanılır.

Id = ID no. iletim bağlantısı

Uzunluk = Maksimum veri uzunluğu 2 kb'dir

Serial.println ("Statement") Sunucuya ID ve Length gönderdikten sonra, web sayfası ve seri monitörde görüntülenecek olan bu komutu kullanarak veri göndermemiz gerekiyor. Verileri gönderdikten sonra AT + CIPCLOSE = 0 Bu komut, sondaki bağlantıyı kapatmak için kullanılır. Yerel olarak oluşturulan sunucuya, yani web sayfasına veri gönderdikten sonra bağlantıyı kapatmak gerekir.

Artık veriler yerel sunucuya, yani web sayfasına aktarılmıştır. Web tarayıcısının Adres Çubuğuna IP Adresini yazın ve enter tuşuna basın. Artık iletilen verileri web sayfasında görüntüleyebilirsiniz.

Arduino ile web sayfasına veri gönderme kodu

#include<SoftwareSerial.h>
SoftwareSerial comm(2,3); //setting Tx and Rx pins

String server=""; //variable for sending data to webpage
boolean No_IP=false; //variable to check for ip Address
String IP=""; //variable to store ip Address
char temp1='0';

int a=0;
int b=0;

String str1="<p>I am Arduino</p>"; //String to display on webpage
String str2="<p>Data Received Successfully.....</p>"; //another string to display on webpage

void setup() 
{
Serial.begin(9600);
comm.begin(9600);
wifi_init();
Serial.println("System Ready..");
}

void loop() 
{
b=0;
Serial.println("Refresh Page");
while(b<1000)
{
b++;
while(comm.available())
{
if(comm.find("0,CONNECT"))
{
Serial.println("Starting");
sendToServer();
Serial.println("Finished");
delay(1000);
}
}
delay(1);
}
}


void findIp(int time1) //check for the availability of IP Address
{
int time2=millis();
while(time2+time1>millis())
{
while(comm.available()>0)
{
if(comm.find("IP has been read"))
{
No_IP=true;
}
}
}
}

void showIP()//Display the IP Address 
{
IP="";
char ch=0;
while(1)
{
comm.println("AT+CIFSR");
while(comm.available()>0)
{
if(comm.find("STAIP,"))
{
delay(1000);
Serial.print("IP Address:");
while(comm.available()>0)
{
ch=comm.read();
if(ch=='+')
break;
IP+=ch;
}
}
if(ch=='+')
break;
}
if(ch=='+')
break;
delay(1000);
}
Serial.print(IP);
Serial.print("Port:");
Serial.println(80);
}

void establishConnection(String command, int timeOut) //Define the process for sending AT commands to module
{
int q=0;
while(1)
{
Serial.println(command);
comm.println(command); 
while(comm.available())
{
if(comm.find("OK"))
q=8;
}
delay(timeOut);
if(q>5)
break;
q++;
}
if(q==8)
Serial.println("OK");
else
Serial.println("Error");
}

void wifi_init() //send AT commands to module
{
establishConnection("AT",100);
delay(1000);
establishConnection("AT+CWMODE=3",100);
delay(1000);
establishConnection("AT+CWQAP",100); 
delay(1000); 
establishConnection("AT+RST",5000);
delay(1000);
findIp(5000);
if(!No_IP)
{
Serial.println("Connecting Wifi....");
establishConnection("AT+CWJAP=\"Apna lawao\",\"p4panama\"",7000); //provide your WiFi username and password here
}
else
{
}
Serial.println("Wifi Connected"); 
showIP();
establishConnection("AT+CIPMUX=1",100);
establishConnection("AT+CIPSERVER=1,80",100);
}

void sendData(String server1)//send data to module
{
int p=0;
while(1)
{
unsigned int l=server1.length();
Serial.print("AT+CIPSEND=0,");
comm.print("AT+CIPSEND=0,");
Serial.println(l+2);
comm.println(l+2);
delay(100);
Serial.println(server1);
comm.println(server1);
while(comm.available())
{
//Serial.print(Serial.read());
if(comm.find("OK"))
{
p=11;
break;
}
}
if(p==11)
break;
delay(100);
}
}

void sendToServer()//send data to webpage
{
server = "<h1>Welcome to Data Receiving from Arduino</h1>";
sendData(server);
server=str1;
server+=str2;
sendData(server);
delay(5000);
comm.println("AT+CIPCLOSE=0"); 
}

Kod Açıklaması:

#include <SoftwareSerial.h> Diğer pinleri Tx ve Rx pinleri olarak kullanmamızı sağlayan yazılım seri kitaplığını dahil edin. Bu, programımızı her yüklediğimizde panonun pin0 ve pin1'deki kablolarını çıkarmaktan bizi kurtarır. D0 ve D1'i Tx ve Rx pinleri olarak kullanırsanız, programı Arduino kartına her yüklediğinizde bu pinleri çıkarmanız gerekecektir.

void setup ()  Wi-Fi modülü için seri UART iletişimini başlatır ve ayrıca 9600 baud hızını kullanarak seri monitörü başlatır.

void loop ()  Bu işlev, kullanıcıdan web sayfasını yenilemesini ister. Ayrıca sunucunun bağlantısını da kontrol eder. Veri mevcut olduğunda, void sendToServer () işlevi kullanılarak otomatik olarak web sayfasına gönderilir.

findIp () Bu işlev, IP Adresinin kullanılabilirliğini kontrol etmek için kullanılır. IP Adresini göstermez. IP Adresi mevcutsa, Boole değişkeninin durumunu değiştirir.

showIp ()  Bu işlev, Wi-Fi modülünün IP adresini almak için kullanılır. Bu IP Adresi, web sayfası ile Wi-Fi modülü arasındaki iletişim için kullanılır

wifi_init () İşlem bölümünde detaylandırılan komutları göndererek Wi-Fi bağlantısını başlatır.

installConnection () Bu işlev, Wi-Fi bağlantısına AT komutları gönderme sürecini tanımlar ve ardından Wi-Fi modülünün yanıtını geri okur.

sendData ()  Bu işlev, veri dizelerini sendToServer () işlevine göndermek için kullanılır. Bu veri dizileri daha sonra web sayfasına gönderilecektir.

void sendToServer () Bu işlev, verileri yerel olarak oluşturulan web sunucusuna göndermek için kullanılır, yani bizim durumumuzda bir web sayfasıdır.


ANA SAYFAYA DÖN

Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...


Bu konuları arkadaşlarınız ile paylaşarak onların da bilgiye ulaşmasında yardımcı olursanız çok sevinirim.Daha eklenecek ve çalışılacak o kadar çok bilgi var ki... Sayfalarımı ziyaret ettiğiniz için Size çok teşekkür ederim. Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır. İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir. Ülkemizin çocukları ve gençlerine bu konularda Türkçe kaynak sıkıntısı çekenlere bazı materyaller sunmaktır.Arduino, Modüller ve kodlama konusunu tanıtmaktır, sevdirmektir. Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz.Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır. Varsa; bazı materyallerin üzerine eklediğimiz email ve site adresimiz sadece yayını temsilendir.Dünyada bilgi paylaşıldıkça ilerler ve birlikte öğrenmek için hevesleniriz.Türkiye'mizin gençlerinde ilgi uyandırabildi ve dikkati fen bilimlerine çekebildi isem.Ne mutlu bana.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabiliriz. İlginize teşekkür ederim.

RF Verici ve Alıcı Modülü Arduino

 

RF Verici ve Alıcı Modülü Arduino 


Arduino ile RF Verici ve Alıcı Modül Arayüzü : Bu yazıda RF verici ve alıcı modülünün Arduino ile nasıl arayüzleneceğini ve RF vericiden RF alıcısına nasıl veri gönderileceğini öğreneceksiniz. Gömülü sistem projelerinde birçok uygulamaya sahiptir  Öyleyse bu modüllere girişle başlayalım. Bir radyo frekansı(RF) sinyali, bir iletişim biçimi olarak kullanılan kablosuz bir elektromanyetik sinyali ifade eder. Radyo dalgaları, 3 Hz ile 300 GHz arasında değişen radyo frekanslarına sahip bir elektromanyetik radyasyon biçimidir. Frekans, salınım oranını ifade eder. RF yayılımı ışık hızında gerçekleşir ve seyahat etmek için hava gibi bir ortama ihtiyaç duymaz. RF dalgaları, güneş patlamaları, şimşekler ve yaşlandıkça RF dalgaları yayan uzaydaki yıldızlardan doğal olarak oluşur. İnsanoğlu, seçilen çeşitli frekanslarda salınan yapay olarak oluşturulmuş radyo dalgalarıyla iletişim kurar. RF iletişimi, televizyon yayıncılığı, radar sistemleri, bilgisayar ve mobil platform ağları, uzaktan kumanda, uzaktan ölçüm / izleme ve daha pek çok sektörde kullanılmaktadır.

RF Verici ve Alıcı Modülü Arduino ile Arayüz

RF Verici ve Alıcının Çalışması:

Elinizi uzattığınızı ve geçen kelimeleri, resimleri ve bilgileri yakaladığınızı hayal edin. Bu aşağı yukarı bir antenin yaptığı şeydir. Radyo dalgalarını yakalayan ve bunları radyo, televizyon veya telefon sistemi gibi bir şeye beslenen elektrik sinyallerine dönüştüren metal çubuk veya çanaktır. Bunun gibi antenlere bazen alıcı denir. Verici, alıcıya zıt iş yapan farklı bir tür antendir. Elektrik sinyallerini radyo dalgalarına dönüştürür, böylece bazen Dünya'nın etrafında binlerce kilometre seyahat edebilir, hatta uzaya ve geriye gidebilirler. Antenler ve vericiler, neredeyse tüm modern telekomünikasyon biçimlerinin anahtarıdır.

Radyo sinyallerini almak için bir anten kullanılmalıdır. Bununla birlikte, anten bir seferde binlerce radyo sinyalini alacağından, belirli bir frekansı ayarlamak için bir radyo ayarlayıcısı gereklidir. Bu tipik olarak, bir kapasitör ve bir indüktör ile ayarlanmış bir devre oluşturan bir devre olan bir rezonatör aracılığıyla yapılır. Rezonatör, bant dışındaki diğer frekanslardaki salınımları azaltırken, belirli bir frekans bandı içindeki salınımları güçlendirir. Belirli bir radyo frekansını izole etmenin başka bir yöntemi, yazılım tanımlı radyoda yapıldığı gibi, geniş bir frekans aralığı elde eden ve ilgilenilen frekansları seçen yüksek hızda örneklemedir. Telsiz iletişiminin yararlı olduğu mesafe, verici gücü, alıcı kalitesi, antenin tipi, boyutu ve yüksekliği, iletim modu, gürültü gibi dalga boyu dışındaki şeylere önemli ölçüde bağlıdır. ve karışan sinyaller. Yer dalgaları, troposferik saçılma ve gökyüzü dalgalarının tümü, görüş hattı yayılımından daha büyük menzillere ulaşabilir.

RF verici modülü:

Verici modülü aşağıdaki Pin çıkışlarından oluşur:

  1. ATAD yani DATA alıcıya veri göndermek için kullanılan sinyal pinidir.
  2. Güç kaynağı için Vcc
  3. Güç kaynağı topraklaması için GND

RF Alıcı Modülü:

Aşağıdaki pimlerden oluşur:

  1. Güç kaynağı için Vcc
  2. Vericiden veri almak için VERİ
  3. Vericiden veri almak için VERİ
  4. Güç kaynağı topraklaması için GND

RF Vericinin Bağlantıları:

Arduino ile arayüz oluşturan RF verici

Verici devresinin bağlantıları aşağıdadır

  1. Modülün ATAD'sini Arduino'nun Pin D12'sine sabitleyin
  2. Modülün VCC'sini Arduino'nun 5V pinine pin
  3. Modülün GND'sini Arduino'nun GND'sini Pinine sabitleyin

RF Alıcısının Bağlantıları:

Arduino ile RF alıcı arabirimi

Alıcı devresinin bağlantıları aşağıdadır

  1. Modülün VCC'sini Arduino'nun 5V pinine pin
  2. Modülün VERİLERİNİ Arduino'nun Pin D12'sine pinleyin
  3. Modülün GND'sini Arduino'nun GND'sini Pinine sabitleyin
  4. İkinci veri pini UN'yi bağlı bırakın.

Kod Açıklaması:

Verici kodu

#include <VirtualWire.h>
const int ledPin = 13;
char *data;
void setup() 
{
 pinMode(ledPin,OUTPUT);
 vw_set_ptt_inverted(true);
 vw_set_tx_pin(12);
 vw_setup(2000);
}

void loop()
{
 data="1";
 vw_send((uint8_t *)data, strlen(data));
 vw_wait_tx();
 digitalWrite(ledPin,HIGH);
 delay(2000);
 data="0";
 vw_send((uint8_t *)data, strlen(data));
 vw_wait_tx();
 digitalWrite(ledPin,LOW);
 delay(2000);
}

Alıcı Kodu

#include <VirtualWire.h>
const int ledPin = 13;
const int datain = 10;
void setup()
{
 Serial.begin(9600);
 vw_set_ptt_inverted(true);
 vw_set_rx_pin(datain);
 vw_setup(2000);
 pinMode(ledPin, OUTPUT);
 vw_rx_start();
}
 void loop()
{
 uint8_t buf[VW_MAX_MESSAGE_LEN];
 uint8_t buflen = VW_MAX_MESSAGE_LEN; 
 
 if (vw_get_message(buf, &buflen))
 {
 Serial.print(buf[0]);
 if(buf[0]=='1')
 { 
 digitalWrite(ledPin,HIGH);
 Serial.print(buf[0]);
 } 
 if(buf[0]=='0')
 {
 digitalWrite(ledPin,LOW);
 Serial.print(buf[0]);
 }
 }
}

#include <VirtualWire.h> Sanal kablo kitaplığını koda dahil eder

vw_set_tx_pin Verici Veri Pinini Seçer

vw_set_rx_pin Alıcı Veri Pinini seçer

vw_setup (uint16_t hız); İletim hızını ayarlayın, Tx'in hızı Rx'deki ile aynı olmalıdır. Hız, 0-9600 arasında Saniyedeki Bit Sayısı olacaktır, kısa mesafe için hızlı hızı kullanabilirsiniz, Uzun mesafe için “90m'ye kadar” mümkün olduğunca düşük iletim hızı kullanmanız gerekir.

vw_rx_start ();  Alıcı PLL'yi çalıştırmaya başlayın, herhangi bir mesaj almadan önce bunu yapmanız gerekir.

vw_rx_stop (); Herhangi bir mesaj almadan önce bunu yapmalısınız. Bir mesaj mevcut olduğunda vw_have_message () doğru olarak dönecektir.

vw_wait_tx (); Bloke edin ve verici boşta kalana kadar bekleyin

vw_wait_rx (); Alıcıdan bir mesaj gelene kadar engelleyin ve bekleyin

vw_send (uint8_t * buf, uint8_t len); Verilen uzunlukta bir mesaj gönderin

vw_have_message (); Alıcıdan okunmamış bir mesaj varsa doğru döndürür.


ANA SAYFAYA DÖN

Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn Forever
If you want, let's learn together...
https://roboticcode2020.blogspot.com/
bahadirozgen1975@gmail.com
facebook    robotic.code
instagram    @roboticcode


Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.