İstanbul Teknik Üniversitesi Özgür Yazılım Kulübü çatısı altında düzenlemiş olduğunuz internet of things eğitiminin son hafta workshop’ının sonunda, katılımcılarımız arasında bulunan Burakhan Sivri ve Nisan Tuna Aytar’ın geliştirmiş olduğu “Akıllı Otomat” projesi. Projede Intel Galileo Gen2 board ile birlikte Wyliodrin üzerinden programlanarak ThingSpeak Cloud servisi, Twitter API, plivo SMS API ve IFTTT kullanılmıştır.

Proje adı: Akıllı Otomat

Proje ekibi:

Burakhan Sivri – burakhan.sivri1994@gmail.com – Beykent Üniversitesi

Nisan Tuna Aytar – nisan.aytar@gmail.com – İstanbul Teknik Üniversitesi

Projede kullanılan servis ve hizmetler: ThingSpeak Cloud servisi, Twitter API, plivo SMS API ve IFTTT

Proje detayı:

Akıllı Otomat projesi ile ürünlerin sıcaklığı ve kalan ürün miktarını kontrol edip cloud sunucu üzerinde depoluyoruz. Ürün sıcaklığının beklenenin üstüne çıkması veya ürünün azalması durumunda Twitter veya SMS üzerinden uyarı verir ve otomatın kontrolünü kolaylaştırır. Bu proje ürünlerin beklenmedik şekilde bozulması veya tükenmesi ile zarar edilmesinin önüne geçmeyi amaçlamaktadır.

Bu proje Intel Galileo Board ile hazırlanmıştır. ThingSpeak cloud sunucusu üzerinde veri depolanır ve Wyliodrin üzerinden programlanarak TwitterAPI ve IFTTT’yi kullanarak uyarı vermektedir.

Proje yazılımı kaynak kodu:

try:
  from wyliodrin import*
except:
  from wiringpi2 import*
  wiringPiSetup()
  
import urllib2
import time
import tweepy
import os
import math
import ntplib
import time
import datetime


client = ntplib.NTPClient() # Zamani guncellemek icin kullaniliyor. board yeniden baslatinca 1 kere calismasi yeter
response = client.request('pool.ntp.org') 
os.system('date ' + time.strftime('%m%d%H%M%Y.%S',time.localtime(response.tx_time)))

#Twitter app keys
consumer_key =  ''
consumer_secret = ''
access_token =  ''
access_token_secret = ''

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
    
api = tweepy.API(auth)


temp_pin = 0  
ledPin = 2 
buzzerPin = 3
touchPin = 4



def analogTemp(nowreading):
    resistance = (float)(1023-nowreading)*10000/nowreading
    temperature = (int)(1/(math.log(resistance/10000)/3975+1/298.15)-273.15)
    return temperature

last_tweet = 0

while True:
  temp_sensor = analogRead(temp_pin)
  temp_sensor = analogTemp(temp_sensor)
  print temp_sensor
  touch = digitalRead(touchPin)
  cevap = urllib2.urlopen( 'http://api.thingspeak.com/update?key=yourkeyhere'+'&field1='+str(temp_sensor)+'&field2='+str(touch)) # bu kismimda veri cloud sunucusuna yollaniyor
  html = cevap.read()
  if html!='0':
    print 'Data sent to cloud. \n'
   
  if temp_sensor > 25 :
    digitalWrite(ledPin,1)
    digitalWrite(buzzerPin, 1)
    delay(100)
    digitalWrite(buzzerPin, 0)
    delay(50)
    digitalWrite(buzzerPin, 1)
    delay(250)
    digitalWrite(buzzerPin,0)
    today= datetime.datetime.now()
    now_tweet = time.time()
    
    if now_tweet-last_tweet>60:
      api.update_status("Burasi cok isindi urunler bozuluyor... #akilliotomat :" + str(temp_sensor)+" derece, saat: " + str(today.strftime("%H:%M:%S")))
      last_tweet = time.time()
  else :
    digitalWrite(ledPin,0)
  delay(7000)

Proje ile alakalı ekstra bir fikriniz ya da söylemek istedikleriniz varsa, yorumlar kısmından iletebilir ya da proje ekibinin vermiş olduğu iletişim bilgilerinden kendilerine ulaşabilirsiniz.

İTÜ Özgür Yazılım Kulübü Internet of Things eğitimi ile alakalı tüm detayları, kaynakları ve güncellemeleri bu bağlantı üzerinden takip edebilirsiniz. Diğer final projelerine ise bu bağlantı üzerinden ulaşabilirsiniz.