Geçenlerde kendime Raspberry Pi 3 almıştım. Aslında amacım, Raspberry Pi'dan hem web sunucusu hem de evdeki Arduino/ESP8266/NodeMCU/Attiny85 vs.'lerin sensör loglarını atacağı bir sunucu oluşturmaktı. Ancak üzerine hem KODI(LibreElec) hem de Raspbian kurunca, evdeki atıl durumda duran televizyonum yedek bir bilgisayara ve multi-medya istasyonuna dönüştü. Haliyle Raspberry'i bu iş için kullanmaya kıyamadım. Başka bir Raspberry alayım mı diye düşünürken, Orange Pi alternatiflerini araştırmaya başladım. Raspberry'e kıyasla çok daha ucuza bulabileceğimi görünce denemeye karar verdim. Şimdi Raspberry gözüme 'komple' bir bilgisayar gibi gözükmeye başladı.

Aslında Orange Pi Zero da komple bir bilgisayar. Fiyatı, boyutu vs. her şeyiyle tam istediğim bir ürün. Evimdeki IOT sunucusu olarak kullanmak ve bu sunucuyu da dünyaya açmak için istediğim her şeye fazlasıyla sahip. Wifi (güçlü bir anten) veya Ethernet ile İnternete bağladıktan sonra, küçük boyutu sayesinde evin herhangi bir köşesinde sessizce çalıştırıp gerektiğinde telefonumdan ya da bilgisayarımdan bağlanıp istediğim işlemleri gerçekleştireceğim.

Özellik Orange Pi Zero
SOC AllWinner H2+
CPU ARM Cortex-A7 (32-bit) 1.2GHz quad core
GPU Mali-400 MP2
RAM 512
Wifi Var
Ethernet Var
Boyutlar 52 x 46 x 17
Ağırlık 26 gr.

Armbian (Ubuntu Xenial) Kurulumu

Öncelikle Mini SD kartımıza işletim sistemini kuralım. İhtiyacımız olanlar:

Aslında kurulum oldukça basit. İndirdiğiniz image dosyasını program yardımıyla mini SD kartınıza yazıyorsunuz. Ancak eğer harici disk vs. kullanıyorsanız dikkatli olun. SD kart yerine en güzel fotoğraflarınızın ve kıymetli dosylarınızın olduğu diske format atabilirsiniz.

Win32 Disk Imager
Win32 Disk Imager

Genellikle PC'lerde ve hatta notebook'larda mini SD kart okuyucusu olmaz. Bu sebeple aşağıdaki gibi dönüştürücülere ihtiyacınız olabilir.

Kart okuyucular

Kurulumu yaptık ve mini SD kartı Orange Pi'ya yerleştirdik. Ancak bir sorun var. Orange Pi Zero herhangi bir ekran çıkış ünitesini (HDMI vs.) desteklemiyor. Aslında expansion port ile destekliyor ancak bu hem yeni bir ünite satın almak demek hem de zaten Orange Pi Zero, headless bir işletim sistemi dışında kullanmak isteyeceğiniz özelliklere sahip bir donanım değil. Bu tip işler için Orange Pi Plus 2 veya Raspberry Pi alternatifleri zaten var. Peki bu 'kafasız' Orange Pi'ı internete nasıl bağlayacağım? Wifi şifresini nereye gireceğim?

Bunun için iki yöntem var:

  1. Ethernet kartı ile bağlanma
  2. USB üzerinden seri bağlantı

Bu işlemler için kullanacağımız araçlar:

  1. PuTTY
  2. Advanced Port Scanner
1. Ethernet üzerinden bağlantı

Artık ethernet üzerinden kablo ile bağlanan çok az ev kullanıcısı var. Ancak hemen her modem/router'ın ethernet çıkışı da mevcut. Ufak bir bağlantı kablosu yardımıyla Orange Pi Zero'yu modeme bağladıktan sonra halen IP adresini bilmiyoruz. Advanced Port Scanner yardımıyla bağlı olduğumuz ağ üzerindeki istemcileri listeleyelim.

Ağımızda bağlı bulunan istemciler

Eğer birden fazla istemci listelenirse bağlantı noktası 22(SSH) olan Orange Pi Zero olacaktır. Eğer bundan da birden fazla varsa artık deneme yanılma yöntemiyle şansınızı deneyin :)

PuTTY ile Host name üzerinden bağlantı

Bulduğumuz adresi PuTTY'de IP Adres kısmına yapıştıralım. Orange Pi Zero yerel IP üzerinden bağlatıya hazır.

2. COM portu üzerinden bağlantı

Eğer herhangi bir sebeple ethernet üzerinden bağlantı sağlayamıyorsanız Orange Pi'ın OTG girişini(usb güç girişi) direk bilgisayarınızın USB girişine bağlayın. Orange üzerindeki USB to Serial dönüştürücü aygıt yöneticinizin herhangi bir portunda (COM3, COM5 vs.) gözükecektir.

Pi USB to Serial
Pi USB to Serial

Şimdi PuTTY'i açalım ve "Connection Type" olarak "Serial" seçelim. "Serial Line" kısmına bulduğumuz bağlantı noktasını, Speed kısmına da 115200'ü ekleyelim.

PuTTY ile seri bağlantı
PuTTY ile seri bağlantı

Orange Pi Zero, COM portu üzerinden bağlantıya hazır. Yalnız USB'yi bilgisayarınıza taktığınızda Pi'ın bağlanması zaman alacaktır. Çünkü içindeki işletim sistemi boot edilmektedir.

Orange Pi Zero'ya ilk bağlantı

PuTTY ile IP adresi üzerinden veya COM portu üzerinden giriş yaptıktan sonra, kullanıcı:şifre için root:1234 ön tanımlı değerlerini girip şifremiz değiştirelim.

Orange Pi Zero Karşılama Ekranı
Orange Pi Zero Karşılama Ekranı

Artık kablosuz ağ ayarlarını yapabiliriz. Bunun için de oldukça kolay bir araç var: NMTUI.

Konsola sudo nmtui komutunu vererek uygulamayı çalıştırabiliriz. "Activate a new connection" komutunu seçtikten sonra civarımızdaki görünür ağlar listeleniyor. Buraya şifre girip kaydettikten sonra Orange Pi Zero evin herhangi bir yerinden dünyaya hizmete hazır.

npmtui - Wifi bağlantısını aktif etme
npmtui - Wifi bağlantısını aktif etme

NO-IP ve sunucu ayarları

Orange Pi Zero dünyaya hizmete hazır ancak dünya buna hazır mı? Henüz değil. Router üzerinde port açmamız ve bu portu Orange Pi'a yönlendirmemiz lazım. Ne yazık ki bu işlemler servis sağlayıcınıza ve kullandığınız cihaza göre farklılıklar göstermekte ancak anahtar kelimeler hepsi için aynı ve menü isimleri benzer.

Öncelikle Routerın adresini bulmak gerekli. Bu genelde 192.168.1.1 oluyor ancak bende 192.168.1.254, sizde daha farklı olabilir. Kullanıcı adı şifre ise genelde admin:admin.

Anahtar kelimelerimiz NAT ve Port Mapping. Kendi internet sağlayıcı ve modemime göre ayarlarım aşağıdaki gibi gerçekleşti.

NAT - Port Mapping
NAT - Port Mapping

  • Protocol: TCP/UDP
  • External start port: 3390
  • External end port: 3390
  • Internal host: 192.168.1.68
  • Internal port: 80
  • Mapping Name: OrangePiDirectHTTP

Port 3390 tamamen rastgele herhangi bir anlamı yok benim için. Kendinize uygun bir port seçebilirsiniz ancak internal port 80 olmalı. Çünkü 80 HTTP istekleri için default port. Bunu da değiştirebiliriz ancak bunun için NGINX tarafında extra ayarlar yapmak gerekiyor. Elbette mapping ismi de tamamen kişisel seçim.

Aslında şu an portumuz yönlendirildi ve Orange Pi dünyanın herhangi bir yerinden ulaşılabilir durumda ancak bu istekleri karşılayacak sunucuya sahip değil.

sudo apt-get install nginx sudo systemctl enable nginx sudo systemctl start nginx

komutlarıyla NGINX'i kurup çalışır duruma getirelim. https://www.whatismyip.com/ adresinden bulduğunuz adrese (diyelim 122.62.xx.xxx) http://122.62.xx.xxx:3390 üzerinden ulaşabiliriz. Ancak bunu test etmek için başka bir ağda olmanız gerekir. Telefonunuzun wifi özelliğini geçici olarak kapatıp 4g üzerinden bağlanırsanız adresin çalıştığını görebilirsiniz.

Ancak, özellikle static IP almadıysanız eğer bu adres bir kaç günde bir değişecektir. Bu durumun önüne geçmek için bedava olan NOIP servisini kullanacağız. NOIP dinamik DNS servisi veren bir şirket. Arayüzü oldukça basit. Hostnames kısmından kendimize uygun bir hostname ve domain buluyoruz ve IP adresimizi buraya ekliyoruz. Şimdi http://seçtiğimbiradres.ddns.net:3390 gibi bir adres üzerinden bağlanabiliriz. Ancak evdeki router, IP adresi değiştirmeye devam edecektir. Her adres değiştiğinde bu değişiklikten NOIP'yi haberdar etmemiz gerekecektir.

Bu işlem de evinizdeki router'a göre değişmekte. Anahtar kelimemiz DDNS. Günümüzde pek çok router artık DDNS özelliğini ve servis sağlayıcı olarak da NOIP'yi desteklemekte. Benim için ayarlar aşağıdaki gibi gerçekleşti.

DDNS ayarları
DDNS Ayarları

Artık sabit adresimi istediğim gibi kullanabilirim. GoDaddy ya da Namecheap vs. üzerinden aldığım adresi CNAME record olarak kullanıp evimdeki bu ucuz sunucuya yönlendirebilirim.

Eğer Router'ınız NOIP'yi desteklemiyorsa desteklediği servisi(örneğin dyndns) tercih edebilirsiniz. NOIP ile ilgili çok önemli bir nokta var. Eğer bedava üye iseniz, üyeliğinizi her 30 günde bir aktifleştirmeniz gerekmektedir. NOIP her 30 günde bir email gönderiyor ve bu emaildeki aktifleştir butonuna tıklamanız gerekiyor. O yüzden NOIP üzerinden gelen e-postaları gözardı etmeyin.

Eğer modeminiz DDNS özelliğini desteklemiyorsa ve hemen her gün açtığınız bir bilgisayarınız varsa, NOIP DUC programını kullanabilirsiniz. DUC servis olarak kurulduktan sonra her 5 dakikada bir IP adresinizi kontrol ediyor ve eğer değiştiyse NOIP üzerindeki adresinizi de otomatik olarak güncelliyor. Elbette, IP değişikliği bilgisayarınız kapalı iken gerçekleşirse, Orange Pi Zero'nuz bu süreç içinde erişilmez oluyor.

Tüm bu işlemlerimiz gerçekleştikten sonra Orange Pi Zero Web Sunucusuna aşağıdaki gibi erişebiliriz:

Nginx
NginX karşılama sayfası

NGINX yerine Apache vs. de kurabilirsiniz ancak NGINX hızı ve boyutları oldukça ideal. Artık NodeJS vs. ile yazacağımız web uygulamalarını NGINX ve Orange Pi Zero üzerinde host etmeye hazırız.