Nesnelerin interneti uygulamaları - 4: İnternet üzerinden Midep GPIO pinlerinin kontrolü

Seviye: resimresimresimresim

Öncelikli uygulamalarda gerçekleştirdiğimiz üzere MİDEP kartına bağlı sensörlerden alınan verilerin internet ortamında izlenebileceği gibi, internetten de MİDEPkartına veri göndermek ve gpio pinlerine erişerek çevresel birimleri (LED, Motor vb.) kontrol etmek mümkündür.

Bu uygulamada popüler bir bulut platformu olan adafruit.io uygulamasında oluşturulan bir buton ile MİDEP kartının gpio pinlerini kontrol edeceğiz.

Gerekli malzemeler

  • MİDEP

  • LED (1 adet)

  • 220 Ohm direnç (1 adet)

Devre kurulumu

resim

Adafruit IO

Adafruit IO, internet üzerinden verileri görüntülemek, yanıtlamak ve etkileşim kurmak için tasarlanmış bir bulut platformudur.

Platformu kullanmak için öncelikle https://io.adafruit.com/ adresine giderek üye olun. İstenilen bilgileri doldurup üyeliğinizi tamamladıktan sonra hesabınıza giriş yapın.

resim

Hesabınıza giriş yaptıktan sonra IO sekmesine tıklayın.

resim

Midep kartının Adafruit ile iletişim kurabilmesi ve veri gönderebilmesi için üç önemli parametre vardır.

  1. Username

  2. AIO Key (Active Key)

  3. Feed key

İlk iki parametreye “Dashboards (Pano sayfası)” kısmında “My Key” sekmesinden erişebilirsiniz.

resim

Açılan pencerede “username” ve “AIO key (Active Key)” değerlerinizi görebilirsiniz. Python programını yazarken bu değerleri gireceksiniz.

resim

“Username” ve “Active Key” MİDEP kartınızın adafruit IO hesabına bağlanması ile ilgilidir ve python programında ilgili yere yazılması gerekir.

MİDEP kartından adafruit platformuna veri göndermek ya da almak için ise “feed” oluşturmalısınız. Bunun için “dashboards” sayfasından “Feeds” sekmesine tıklayın.

resim

Açılan sayfada oluşturduğunuz feed’leri görebilirsiniz. Yeni feed oluşturmak ya da mevcut feed’leri kontrol etmek için “view all” düğmesine tıklayın.

resim

Açılan sayfada, Yeni feed oluşturmak için “New Feed” düğmesine tıklayın.

resim

Açılan pencerede feed adını yazın. İsterseniz Feed için kısa bir açıklamayı “description” bölümüne ekleyebilirsiniz. Ardından “create” düğmesine tıklayarak feed’i oluşturun.

resim

Oluşturduğunuz “digital” adlı feed, Feeds listenizde görülecektir. MİDEP kartınıza veri göndermek için bu feed’i kullanacaksınız. Bunun için “Feed Key” bilmeniz gerekir. Genellikle “Feed Key” feed’e verdiniz adın küçük harflerden oluşmuş versiyonudur. Yani feed adı “DIGITAL” ya da “digital” ise feed key “digital”’dir. Feed Key’i görmek için, “digital” adlı feed’in üstüne tıklayın.

resim

Açılan sayfada feed info’ya tıklayarak Feed key’i öğrenebilirsiniz. Feed key’i python programında ilgili yere yazmanız gerekmektedir.

resim

resim

Adafruit IO platformunda görsel bir buton öğesi oluşturmak ve “digital” adı feed’i bu butona bağlamak için sırasıyla Dasboards > view all > New Dashboard tıklayın.

resim

resim

resim

Açılan pencereden Dashboard’a bir isim verin ve “Create” düğmesine tıklayın.

resim

Dashboard sayfanızda oluşturduğunuz dashboard görünecektir. Dashboard’u ayarlamak için üzerine tıklayın.

resim

Açılan sayda, Buton oluşturmak için ayarlar kısmında “create new block” tıklayın.

resim

Açılan pencerede verilerinizi görselleştirmek için oluşturabileceğiniz blok listesi çıkacaktır. Buton oluşturmak için “toggle” görseli üzerine tıklayın.

resim

Ardından oluşturduğunuz bloğu feed ile ilişkilendirmek için listeden “digital” adlı feed’i seçin ve “next step” düğmesine basın.

resim

Burada blok ismi ve butonun ON ve OFF durumlarında midep kartına göndereceği parametreleri belirleyin. ON durumu için “1”, OFF durumu için ise “0” yazın. Ardından “create block” düğmesine tıklayın.

Midep kartınızda terminal penceresini açın ve aşağıdaki komutu girerek adafruit IO kütüphanesini yükleyin.

pip3 install adafruit-io

Yeni bir python dosyası açın ve aşağıdaki program kodunu yazın.

Program kodunda “username”, “AIO Key” ve “feed” kısımlarına yukarıda açıklandığı şekliye parametrelerinizi yazmayı unutmayın!

import time
import digitalio # import Adafruit Blinka
import board
# import Adafruit IO REST client.
from Adafruit_IO import Client, Feed, RequestError

# Adafruit IO key'i yazin.
ADAFRUIT_IO_KEY = '...'

# Adafruit IO username'i yazin.
ADAFRUIT_IO_USERNAME = 'YOUR_AIO_USERNAME'

# REST istemcisinin bir örnegini olusturun.
aio = Client(ADAFRUIT_IO_USERNAME, ADAFRUIT_IO_KEY)

try: # 'digital' adında bir feed varsa
    digital = aio.feeds('digital')
except RequestError: # yoksa 'digital' adında feed olustur.
    feed = Feed(name="digital")
    digital = aio.create_feed(feed)

# led set up
led = digitalio.DigitalInOut(board.D5)
led.direction = digitalio.Direction.OUTPUT

while True:
    data = aio.receive(digital.key)
    if int(data.value) == 1:
        print('received <- ON\n')
    elif int(data.value) == 0:
        print('received <- OFF\n')

    # LED'i feed degerine ayarla
    led.value = int(data.value)
    time.sleep(0.5)

Dosyayı kaydederek F5 tuşuna ya da terminal penceresinden python3 <dosya adı.py> komutunu çalıştırarak programı başlatın.
Adafruit sayfasında dashboard’unuzda bulunan butonun konumunu değiştirdiğinizde MİDEP kartına bağlı LED’in açılıp kapandığını ve ekranda LED durumunun bildirildiğini göreceksiniz.