JavaScript gerçek anlamda "fullstack" bir dil. Kolaylıkla hem önyüz hem de arkayüz programları yazabiliyoruz. Peki JavaScript kullanarak çip programlamayı düşündünüz mü? Espruino buna imkan veren bir platform.

https://www.espruino.com/

Espruino ücretsiz bir firmware ve ESP8266 ve ESP32'nin yanında pek çok çipi de destekliyor. Aslında bu firmware'i (aygıt yazılımı) oluşturanların resmi olarak destekledikleri kendi donanımları da var. Ancak bunlar biraz daha pahalı. Biz fiyatı 2-5 dolar civarı olan ESP8266 ve ESP32 çiplerini kullanacağız.

Çip içerisinde JavaScript dilini kullanabilmek için öncelikle çipe bu dili tanıtmamız gerekiyor. Yani firmware kurmamız gerekiyor. Firmware (aygıt yazılımı), bir nevi çipin işletim sistemi. Tüm bu işlemleri yapmak için de sistemimizde NodeJS ve NPM'in kurulu olması gerekiyor. Eğer kurulu değilse aşağıdaki adresten son sürümünü indirip kurabilirsiniz

https://nodejs.org

Tüm kurulumu terminal üzerinden gerçekleştireceğiz. Kurulumu tamamladıktan sonra hem node hem de npm kurulumunun sorunsuz geçtiğini anlamak için aşağıdaki komutları kullanalım. npm, Nodejs'in resmi paket yöneticisi olduğu için node ile birlikte sisteme yüklenecektir.

node -v
npm -v

Şimdi ise Espruino'nun resmi sayfasına giderek seçtiğimiz çipe firmware'i yükleyebiliriz.

https://www.espruino.com/Download

Ancak bu işlemler oldukça karmaşık. Ben bu karmaşayı azaltmak amacıyla aşağıdaki paketi oluşturdum.

https://www.npmjs.com/package/espruino-create-project

npm install -g espruino-create-project

Bu paket global olarak (-g parametresi ile) sisteme yükledim.

Daha sonra bu paketi kullanarak yeni bir proje oluşturalım:

espruino-create-project init my-esp8266-project --chip esp8266 --baud 115200 --port PORT1 --author 'Cuneyt Aliustaoglu'

Buradaki bazı parametreler sisteminize ve isteğinize göre değişebilir. chip parametresini çipinizi seçin. Şimdilik sadece esp8266 veya esp32 desteklenmekte. Port, Windows üzerinde genellike PORT1, PORT2 vs. şeklindedir. Ben mac kullandığım için portun adı cu.SLAB_USBtoUART şeklinde oldu.

Bu işlem biraz zaman almakta. Aygıt yazılımı indiriliyor ve klasör oluşturuluyor. Klasör oluşturulduktan sonra `cd my-esp8266-project` komutu ile klasörün içine girelim. Şimdi aygıt yazlımı kuruluma hazır.

Öncelikle çip içindeki aygıt yazılımını silelim.

npm run erase

Şimdi de Espruino'yu yükleyelim:

npm run flash

Bu işlemler sırasında hata alırsanız büyük ihtimal yanlış port numarası kullanıyorsunuz. Portu değiştirmek için aşağıdaki komutu kullanabilirsiniz:

espruino-create-project update --port PORT2

Artık programımızı yazmaya hazırız. Arduino IDE'ye ihtiyacımız olmayacak. vscode, atom hatta notepad veya sevdiğiniz bir editörü kullanabilirsiniz.

JavaScript ile ESP8266 için yanıp sönen LED uygulaması

Şimdi src klasörü içerisindeki main.js dosyasını aşağıdaki gibi düzenleyin:

E.on('init', function () {
  var led = 0
  setInterval(function () {
    digitalWrite(2, led)
    led = !led
  }, 1000)
})

Ve bu dosyayı ESP8266 üzerinde yükleyelim:

npm run upload

Espruino'da Arduino'daki gibi setup() ve main() fonksiyonları bulunmuyor. Çipe yalnızca tek bir dosya gönderiyoruz. Ancak geliştirme aşamasında çok sayıda dosya kullanabiliriz. npm run upload dediğimiz zaman, tüm dosyalar tek bir dosya içerisine sıkıştırılıyor ve tek bir dosya olarak gönderiliyor. JavaScript olaya dayalı (event-driven) bir dil. Dolayısıyla Arduino'daki loop görevini eventler ya da zamanlayıcılar ile yapmamız gerekiyor.

Yukarıdaki çok basit bir program. Bu yazıda sadece Espruino aygıt yazılımını nasıl kuracağımızı ve JavaScript'i ESP8266 ile nasıl kullanacağımızı anlatmak istedim. Gelecek yazılarda JavaScript ve ESP8266 veya ESP32 ile sensörden nasıl veri okunur, OLED ekranlara nasıl yazı yazılır gibi örnekleri vermeyi düşünüyorum.