You are on page 1of 18

esp8266 ve Arduno ile

Nesnelerin nterneti
Hasbi Sevin

indekiler
Blm 1: GR

Ne Demektir Bu Nesnelerin nterneti?

Yerel Adan nternet Ana kma

Neler rendik?

Blm 2: ESP8266 ile Wreless Haberlemeye Giri

ESP8266 Nedir?

ESP8266 Modlleri

10

Arduinonun Seri Haberleme Modl Olarak Kullanlmas

11

ESP8266 Baud Rate Ayar

12

ESP8266 Firmware Gncellemesi

13

AT Komutlar

15

Neler rendik?

16

Blm 3: Arduno ile ESP8266

19

SoftwareSerial Ktphanesi

20

ESP8266 ile Arduino Uno mu Mega m Kullanmal?

20

Arduino Mega ile nternet Sitesine Balanma

21

Arduino ile Hava Durumu

25

ThingSpeak.com Nedir?

30

Arduino ile Oda Scakln nternete Ykleme

30

Arduino ile Tweetleme

35

Arduino ile Server Yapm

38

nternet zerinden LED Kontrol

39

nternet zerinden ifreli Lamba Kontrol

44

vii

ESP8266 ve Arduno ile Nesnelerin nterneti - indekiler

Maazaya Giren Kii Saysn nternetten Kontrol Edelim

50

Arduino ile TCP Servera Balanma

55

TCP Server Program

55

Arduino ile Chat Odas

56

nternet zerinden Kontrol Edilebilen Ara Yapm

60

Neler rendik?

67

Blm 4: NODEMCU ile ESP8266

69

Giri

70

LUA Programlamaya Giri

70

Koul Yaplar

71

NODEMCU ile LUA Diline Eklenen Fonksiyonlar

72

ESP8266nin NodeMCU Firmware Gncellemesi

73

FTDI Dntrcs ile Gncelleme

74

Arduinonun Bypass Edilerek ESP8266nn Gncellenmesi

75

NodeMCU-Lua in IDE Seimi

76

ESP8266nn Harici Beslenmesi

77

Yanp Snen LED

78

ESP8266 ile Web Sayfas Oluturma

80

ESP8266 ile oklu Web Sayfas Oluturma

81

nternet zerinden LED Kontrol

82

nternet Kontroll RGB LED ve erit

85

ESP8266 ile RGB erit LED Kullanm

89

ESP8266 ile Tweet Atma

89

DS18b20ile Scaklk lm

92

Buluta Veri Yollama

94

DS18B02 ile Oda Scakln Buluta Ykleme

96

viii

ESP8266 ve Arduno ile Nesnelerin nterneti - indekiler

Mail Bildirimli Hrsz Alarm


Pushingbox.com zerinden Ap Alma
ESP8266 ile Pushingbox Bildirim Yollama

99
99
100

TCP Server zerinden Chat Yapma

102

Neler rendik?

104

Blm 5: ESP-07 Modl

107

ESP-07 Modlne NodeMCU Ykleme

108

NodeMCU ile nternet zerinden Ara Kontrol

108

STATION Modunda Ara Kontrol

110

Access Point Modunda Ara Kontrol

112

Son Sz

115

ndeks

116

2
ESP8266 ile Wreless
Haberlemeye Giri

Bu Blmde
ESP8266 Nedir?
ESP8266 Modlleri
Arduinonun Seri Haberleme Modl
Olarak Kullanlmas
ESP8266 Baud Rate Ayar
ESP8266 Firmware Gncellemesi
AT Komutlar
Neler rendik?

8
10
11
12
13
15
16

Arduinoyu internete balamann en ucuz yolu


ESP8266 Wifi modl kullanmaktr. Bu modl ortamda bulunan kablosuz alara balanabilecei
gibi, kendi internet an yayarak dier cihazlarn
bu aa balanabilmesine de imkan salamaktadr. Blm 2de ESP8266nn teknik detaylarn ve
bu modl kullanmadan nce yapmamz gereken
ayarlamalar greceiz.

Blm 2

ESP8266 ile Wreless Haberlemeye Giri

ESP8266 Nedir
ESP8266, TTL (Seri Haberleme) ile kablosuz internet ana balanabilen bir
modldr. Ucuz ve kolay kullanma sahip olmasndan dolay nesnelerin interneti projelerinde yaygn olarak kullanlmaktadr. ESP8266 modl 3.3 Volt ile
almaktadr. Yani modln almas iin Arduinonun 3.3 Volt k kullanlabilir. Fakat aa balanma ve veri alverii srasnda anlk olarak Arduinonun
salayabilecei akmdan fazla akm ekebilmektedir. Bu yzden ESP8266y
harici bir 3.3 Volt gerilim kaynandan besleyerek kullanmak, modln daha
istikrarl almasn salayacaktr. Unutulmamaldr ki harici 3.3 Volt kaynann
ve Arduinonun toprak hatlar birbirine balanmaldr.
Yapacamz uygulamalarda ESP-01 modl kullanlacaktr. Bu modl ve dier
modller arasndaki fark giri ve k pinlerinin saysdr. Kod ksmnda bir deiiklik olmadan dier ESP modlleri de kullanlabilir. Yeri gelmiken belirtelim,
ESP-01in seilme nedeni dier modllere gre pin balantlarnn daha kolay
olmasdr. Modl zerinde VCC (3.3 Volt Besleme), GND (Toprak), TX, RX, RST (Reset), CH_PD, GPIO0 ve GPIO2 olmak zere 8 adet pin bulunmaktadr.
ESP-01
- PCB Anten
- 3 Giri/k pini: GPOI0/2/16
- Dier pinler; UART (URXD/UTXD)
RESET, CH_PD (G kapatma) ve VCC/GND
- Boyut: 14.3 mm x 24.8 mm
ESP-02
- Extra anten iin U-FL konnektr bulunur
- 2 Giri/k pini: GPOI0/2
- Dier pinler: UART (URXD/UTXD)
RESET, CH_PD (G kapatma) ve VCC/GND
- Boyut: 14.2 mm x 14.2 mm
ESP-03
- Seramik Anten
- 7 Giri/k pini: POI0/2/12/13/14/15/18
- Dier pinler: UART (URXD/UTXD)
RESET, CH_PD (G kapatma) ve VCC/GND
- Boyut: 12.1 mm x 17.3 mm

ESP8266 rm are Gn ellemesi

13

ESP8266nn baud rate hznn 9600e ekilmesi iin aadaki komutu kullannz.
Eer OK mesajn grdyseniz yapmanz gereken ilem baaryla gereklemitir.
AT+CIOBAUD=9600

Bu ilem sonrasnda tekrardan veri yollayabilmek iin artk ekrann sa altndan


baud rate hznz 9600 yapmay unutmaynz.

ESP8266 rm are Gn ellemesi


ESP8266 kablosuz internet modlne, ilk retildii gnden beri bir ok yazlm
gncellemesi geldi. Bu gncellemeler sayesinde modl daha stabil almaya
balad. Bu yzden projelerimizi yapmadan nce modln yazlmn gncellemeliyiz.
Gncelleme iin Arduinoyu daha nce rendiimiz ekilde bypass yapmalyz. Daha sonra modln gncelleme moduna girebilmesi iin GPIO0 pinini topraa balamalyz. Aadaki resimde gncelleme iin kurulmas gereken devre
emas gsterilmitir. (ESP-12 kullanclar, GPIO0 ve GPIO15 pinlerini topraa ve
GPIO1 pinini 3.3 Volta balamalar gerekmektedir.)

3
Arduno ile ESP8266

Bu Blmde
SoftwareSerial Ktphanesi
20
ESP8266 ile Arduino Uno mu Mega m
Kullanmal?
20
Arduino Mega ile nternet Sitesine Balanma 21
Arduino ile Hava Durumu
25
ThingSpeak.com Nedir?
30
Arduino ile Oda Scakln nternete
Ykleme
30
Arduino ile Tweetleme
35
Arduino ile Server Yapm
38
nternet zerinden LED Kontrol
39
nternet zerinden ifreli Lamba Kontrol44
Maazaya Giren Kii Saysn nternetten
Kontrol Edelim
50
Arduino ile TCP Servera Balanma
55
TCP Server Program
55
Arduino ile Chat Odas
56
nternet zerinden Kontrol Edilebilen Ara
Yapm
60
Neler rendik?
67

u ana kadar ESP8266nn nasl altn ve modln Arduino ile nasl haberleeceini rendik.
Bu blmde ESP8266y Arduino ile kullanarak eitli nesnelerin interneti projeleri gelitireceiz. Bu
blmdeki rnekler zerinde deiiklikler yaparak
yeni projeler retebileceinizi unutmayn.

Arduno ile

eet leme

35

\\r\n,10000,true); // wifi balants yaplyor


String durum = ;
durum = ATKomuduYolla(AT+CIFSR\r\n,8000,true);
// balant bilgileri
if(durum.indexOf(FAIL) != -1 ){
// balant baar durumu test ediliyor
return false;
}
return true;
}

Arduno ile

eet leme

Bir nceki uygulamamzda nasl thingSpeak.com adresine yollamak istediimiz verileri POST metodu ile yolladysak, ayn ekilde tweetlerimizi de Twitter.
com adresine kendi kullanc admz ile yollayabiliriz. Twittern mesajlarmz kabul etmesi iin ncelikle Token denilen biletlere sahip olmamz gerekir. Bu biletleri salayan ve mesaj yollamamz kabul eden Twitter uygulamalar mevcut.
Bu uygulamalara rnek olarak:
http://arduino-tweet.appspot.com/oauth/twitter/login
ncelikle linke tklaynz ve link yardmyla Twittera giri yapnz. Buradan giri
yaptnzda uygulamaya izin vermenizi isteyecektir. Uygulamaya izin verdikten
sonra sayfada size ait Token yani bilet numaranz grnecektir. Bu bileti birazdan
Arduino kodumuza yazacaz. Bu bileti bir yere kaydetmeyi unutmaynz.
Twitter, ok sk ve benzer mesajlar attnzda sizin mesajlarnz filtrelemektedir. Bu yzden bir sonraki tweetinizi atmadan nce bir sre beklemeyi ve bir
nceki tweetinizden farkl bir tweet atmay unutmayn.
Kullanlacak Malzemeler
1 x Arduino
1 x ESP8266 (ESP-01)
Arduino Kodu
#include <SoftwareSerial.h>
SoftwareSerial wifiBaglantisi(10, 11);
const String wifiAdi = WIFI_ADI ;

36

Blm 3

Arduno ile ESP8266

const String wifiSifresi = WIFI_SIFRE ;


const String TOKEN = TOKEN_BURAYA ;
void setup()
{
Serial.begin(9600);
wifiBaglantisi.begin(9600);
delay(500);
delay(1000);
if(!interneteBaglan()){
Serial.println(internete baglanilamadi);
}
else {
Serial.println(Modul internete baglandi);
}
}

void loop()
{
String mesaj = ESP ile deneme mesaji;
tweetle(mesaj);
Serial.println(Tweet islemi tamamlandi);
while(1);
}
void tweetle(String tweet){
String mesaj = token=+TOKEN+&status=+tweet;
String istek;
istek = POST http://arduino-tweet.appspot.com/update HTTP/1.0\r\nHost:
arduino-tweet.appspot.com \r\nContent-Length: +String(mesaj.length())+
\r\n\r\n;
wifiBaglantisi.print(AT+CIPSTART=\TCP\,\arduino-tweet.appspot.com\,80\r\n);
wifiBaglantisi.find(OK);
Serial.println(Baglanti istegi yollandi);

40

Blm 3

Arduno ile ESP8266

Arduino Kodu
#include <SoftwareSerial.h>
SoftwareSerial wifiBaglantisi(10, 11);
/* Arduinonun 10. pini ESPnin Tx, 11. pini ESPnin Rx pinine baland */
const String wifiAdi = WIFI_ADI ;
const String wifiSifresi = WIFI_SIFRE ;
#define DEBUG true
const int LED1 = 13, LED2 = 12; // LED pinleri
void setup()
{
Serial.begin(9600); // Seri haberleme balants kuruldu
wifiBaglantisi.begin(9600); // ESP balants kuruldu
delay(500);
pinMode(LED1,OUTPUT); // LED pinleri k olarak tanmland
pinMode(LED2,OUTPUT);

44

Blm 3

Arduno ile ESP8266

return cevap;
}
boolean interneteBaglan(){
ATKomuduYolla(AT+CWMODE=1,1000,true);
// internete balanacamz iin 1. moda alyoruz
ATKomuduYolla(AT+CWJAP=\ + wifiAdi + \,\+ wifiSifresi + \,10000,true);
// wifi balants yaplyor
String durum = ;
durum = ATKomuduYolla(AT+CIFSR,8000,true); // balant bilgileri
if(durum.indexOf(FAIL) != -1 ){
// balant baar durumu test ediliyor
return false;
}
return true;
}

Yukardaki kodu Arduinoya ykledikten sonra Serial Monitr aalm. Burada


ncelikle ESP8266nn internete balandn syleyen mesaj grmeliyiz. Eer
balant baar ile gerekletirildi ise Arduino Server oluturacaktr. Server
oluturulduktan sonra ESP8266nn a ierisinde ald yerel IP adresi ve kodda
belirtilen port numaras ile Servera balanabiliriz. rnein: 192.168.2.224:80
Buradaki nemli notlardan birisi Server kullancya balantnn ykleme sonrasnda kapatldn belirten Connection: close\r\n komutunu yollamasdr.
ESP8266nn balant sonlandrma kodu bulunmaktadr. Fakat bu kod zaman
zaman yeni balantlar engellemektedir.
Yukardaki kodlar zerinde deiiklikler yaparak siz de kendinize ait bir Server
oluturabilir ve evinizdeki elektronik eyalar bu Server zerinden kontrol edebilirsiniz.

nternet zerinden i reli amba ontrol


Bir nceki rnekte ESP8266 ve Arduino yardmyla basit bir Servern nasl kurulacan rendik. rnekte sadece LEDler kontrol edilmitir. Bu uygulamada
farkl olarak rle kontrol yaplacaktr. Bu rleye balanan lamba, LEDler gibi
internet zerinden kontrol edilebilecektir. rnekte rleye lamba balanmtr.
Siz de evdeki dier elektronik eyalarnz lamba yerine balayarak internet zerinden kontrol edebilirsiniz.

56

Blm 3

Arduno ile ESP8266

Arduno ile C at Odas


TCP Server Arduino ile internete bal dier cihaz arasnda hzl haberlemeyi
salamak iin kurulmaktadr. Byle bir balant kurulduunda ilk yapmamz
gereken gnderilen mesajlarn kar tarafa dzgn ulap ulamadn test etmektir. TCP haberleme mantnn kavranmas ve sistemin alp almadn test etmek iin Bilgisayar program ve Arduinonun katld bir chat (sohbet)
odas kuracaz.
Bu uygulamada bilgisayar program olarak bir nceki konuda tanttmz program kullanacaz. Program ald gibi TCP Server kurulmaktadr. Kurulan TCP
Servern IP ve port numaralar programn altnda yazmaktadr. Bu saylar Arduino kodumuzda gncellememiz gerektiini unutmayalm.
Kullanlacak Malzemeler
1 x Arduino
1 x ESP8266 (ESP-01)

Devre emas aadaki resimde gsterilmitir. Bu devrede ESP8266 daha nceki


devre emalarnda olduu gibi balanmtr.

4
NODEMCU ile
ESP8266
Bu Blmde
Giri
70
LUA Programlamaya Giri
70
NODEMCU ile LUA Diline Eklenen
Fonksiyonlar
72
ESP8266nin NodeMCU Firmware
Gncellemesi
73
NodeMCU-LUA in IDE Seimi
76
ESP8266nn Harici Beslenmesi
77
Yanp Snen LED
78
ESP8266 ile Web Sayfas Oluturma
80
ESP8266 ile oklu Web Sayfas Oluturma 81
nternet zerinden LED Kontrol
82
nternet Kontroll RGB LED ve erit
85
ESP8266 ile Tweet Atma
89
DS18b20ile Scaklk lm
92
Buluta Veri Yollama
94
DS18B02 ile Oda Scakln Buluta Ykleme 96
Mail Bildirimli Hrsz Alarm
99
TCP Server zerinden Chat Yapma
102
Neler rendik?
104

Bu Blmde
ESP8266y AT komutlar ve Arduino IDEsi ile kullanabileceimiz gibi, hi Arduino olmadan sadece
ESP8266ya kod atarak da altrabiliriz. Bylece
Arduinoya ihtiya duymadan yapmak istediimiz
istediklerimizi ESP8266y bir mikrokontrolc olarak
gerekletirebiliriz.

70

Blm 4

NODEMCU ile ESP8266

Giri
ESP8266nn Arduinoya ihtiya duymadan LUA programlama dilinde almas iin NodeMCU platformu gelitirilmitir. Bu platform cretsiz olarak internet
zerinde paylalmtr. Bu platformun almas iin ncelikle ESP8266ya bu
platform yklenmelidir. Platform sayesinde, ESP8266 zerinde bulunan pinler
giri ve k olarak kullanlabilir. Bu platform pinlerin sadece I/O olarak kullanlmasndan daha fazlasn, ADC, PWM, UART gibi zellikler ile de kullanlmasn
salamaktadr. Platform Lua programlama dilinde alt iin ncelikle bu programlama dilini renmemiz gerekir. Dil renilmesi en kolay dillerden birisidir.
Bu dile NodeMCU platformu ile ESP8266 iin zelletirilmi yeni fonksiyonlar da
eklenmektedir.
NodeMCUnun resmi web sayfas:
www.nodemcu.com/index_en.html

ua Pro ramlamaya Giri


ESP8266 yeni programlarmzda Lua programlama dilinde programlayacaz.
Bu dil ile ilk defa tananlar iin kod yaps biraz farkl gelse de aslnda dil Arduino dili kadar kolaydr.
Yorum Blou
Dier programlama dillerinden farkl olarak Luada yazlan koda aklama eklemek iin -- ifadesini kullanlr. Bu ift tire iaretinden sonra yazlan ifadeler
ESP8266 tarafndan ileme alnmayacaktr.
Deiken Tanmlama
Lua dilinde kullanacamz deikenin trn belirtmeye gerek yoktur. String
formatnda bir deiken tanmlamak iin a = mesaj, tam say formatnda bir
deiken tanmlamak iin i = 5 eklinde tanmlamalar yaplabilir
Ekrana Yazdrma
Bulduumuz sonular ve mesajlarmz ekrana yazdrmak iin print() fonksiyonu kullanlr.
Kod
= 10
print(i degikeninin degeri)
print(i)

80

Blm 4

NODEMCU ile ESP8266

ESP8266 ile Web Say as Oluturma


Bu uygulamada ESP8266 bir web sayfas (server) olarak grev yapacaktr. Web
sayfasn ziyaret edenlere HTML komutlar ile istenilen veriler aktarlabilir. rnein uygulamamzda Servern alma sresi kullancya gsterilecektir.
Kod yapsna baklacak olursa, ncelikle ESP8266nn internet ana katlmas salanmtr. Daha sonra kullanacamz Server kurulmutur. Server ziyaret edenleri
tespit etmek iin Server portu dinlenmeye balamtr. Eer siteyi ziyaret eden
kii var ise oluturulan HTML kodlar kullancnn internet taraycsna aktarlmtr.
Devre emas aadaki resimde gsterilmitir.

Kod
wifi.setmode(wifi.STATION) -- aga baglanti iin ayarlandi
wifi.sta.config ( WIFI_ADI , WIFI_SIFRE )

-- internet agina katil

print(wifi.sta.getip()) -- Aga baglanti kurulduysa IP bilgilerini yazdir


srv=net.createServer(net.TCP) -- server yaratildi
srv:listen(80,function(baglanti)
baglanti:on(receive,function(baglanti,bilgi)
print(bilgi)
baglanti:send(<h1> Merhaba Dunya</h1>)
baglanti:send(<p>Bu server )
baglanti:send(tmr.now()/1000000)

86

Blm 4

NODEMCU ile ESP8266

ESP8266 (ESP-07)
GND
GPIO0
GPIO2
GPIO14
GPIO15
VCC
CH_PD
Tx
Rx

Devre
GND (LED) ve GND (FTDI)
Krmz (LED)
Mavi (LED)
Yeil (LED)
GND
3.3 Volt (reglatr)
3.3 Volt (reglatr)
Tx (FTDI)
Rx (FTDI)

Kod
led1 = 3
led2 = 4
led3 = 5
function baglan()
wifi.setmode(wifi.STATION) -- aga baglanti iin ayarlandi
wifi.sta.config ( WIFI_ADI , WIFI_SIFRE ) -- internet agina katil
print(wifi.sta.getip()) -- Aga baglanti kurulduysa IP bilgilerini yazdir
end
gpio.mode(led1,gpio.OUTPUT)
gpio.mode(led2,gpio.OUTPUT)
gpio.mode(led3,gpio.OUTPUT)
pwm.setup(led1,500,1023)
pwm.setup(led2,500,1023)

92

Blm 4

NODEMCU ile ESP8266

DS18b20ile S aklk lm
Daha nceki uygulamalarmzda LM35 scaklk sensrnn kndaki analog
veriyi okuyarak scaklk bilgisini almtk. ESP8266nn baz modllerinde (rnein: ESP-01) analog pini bulunmad iin bu uygulamamzda LM35 yerine
DS18b20 scaklk sensrn kullanacaz. Bu sensr tek kablo zerinden dijital
olarak haberleme yapmaktadr.
NodeMCUnun bize salad kolaylklardan birisi de ow nesnesidir. Bu nesne
DS18b20 gibi tek kablo zerinden haberleen cihazlarn kontroln salamaktadr. ncelikle ow.setup(pin) metodu ile sensrn bal olduu pini belirtmeliyiz. Daha sonra sensrn adresini taramalyz. Sensrn adresi bulunduktan
sonra scaklk verisi llmeye balanabilir. Uygulamada t1 deikeni scakln
tam say ksmn, t2 deikeni ise scakln virglden sonraki ksmn tutmaktadr.
Devre balants aadaki resimde gsterilmitir. Sensr devreden uzaklatnda hatta kayplar meydana gelmektedir. Bu yzden 4.7 K ohm deerindeki
diren pull-up olarak devreye balanmtr.

You might also like