İçindekiler:

Dropbox ile Raspberry Pi Ev İzleme: 7 Adım
Dropbox ile Raspberry Pi Ev İzleme: 7 Adım

Video: Dropbox ile Raspberry Pi Ev İzleme: 7 Adım

Video: Dropbox ile Raspberry Pi Ev İzleme: 7 Adım
Video: Raspberry PI'a Android 13 (Tramisu) & Google Playstore Kurdum...Kurulum Rehberi 2022 | (@Konstakang) 2024, Kasım
Anonim
Dropbox ile Raspberry Pi Ev İzleme
Dropbox ile Raspberry Pi Ev İzleme

Bu eğitim size bir Raspberry Pi, bir web kamerası, birkaç elektrikli bileşen ve Dropbox hesabınızı kullanarak basit ve genişletilebilir bir ev izleme sisteminin nasıl oluşturulacağını gösterecektir. Tamamlanmış sistem, web kameranızdan görüntüleri uzaktan talep etmenize ve görüntülemenize izin verirken, aynı zamanda evinizin sıcaklığını internet üzerinden izlemek için kullanıma hazır bir dijital sıcaklık sensörü kullanırken, tümü Dropbox'ı kullanarak.

Raspberry Pi 2 model B aldıktan sonra aklıma ilk bu proje geldi. Amacım Python tabanlı, internet üzerinden kontrol edebileceğim ve veri alabileceğim bir izleme sistemi oluşturmaktı. Bunu yapmanın birçok farklı yolu olsa da, birkaç satır kullanarak belirli klasörlerdeki dosyaları yüklemenize, değiştirmenize ve aramanıza izin veren basit bir Python API'sine sahip oldukları için Pi ve internet arasındaki arayüz olarak Dropbox'ı kullanmaya karar verdim. kod.

Ayrıca çözümümün hafif ve basit olmasını ve Pi'mi gereksiz kitaplıklar ve programlarla karıştırmamak için istedim. Bu projenin yazılım bileşeni, tek bir Python betiğinden oluşur, yani izleme sistemi çalışırken bile Pi'nizi normal şekilde kullanmaya devam edebilirsiniz.

Bu proje için ihtiyacınız olacak:

Bir Ahududu Pi. Herhangi bir model çalışmalıdır, hepsi bir arada bir başlangıç kiti kullandım, ancak belki de yalnızca merkezi üniteye ihtiyacınız var

Bir USB web kamerası. İyi çalışan ucuz bir ADVENT AWC72015 satın aldım. Pi ile çalıştığı onaylanan bu web kamerası listesine bakmak iyi bir fikir olabilir. Bazılarının güçlü bir USB hub gerektirdiğini unutmayın (benimki olmadan iyi çalışır)

Bir Dropbox hesabı. Bu proje fazla depolama alanı gerektirmediğinden standart ücretsiz hesabımı kullanıyorum

DS18B20 dijital sıcaklık sensörü ve 4.7k direnç. Sensörü buradan satın alabilirsiniz ve çeşitli dirençlerden oluşan bir paket de almaya değer olabilir

Bazı devre oluşturma aksesuarları. Devre oluşturma sürecini olabildiğince kolaylaştırmak için bir devre tahtası ve bazı atlama kabloları kullanmanızı tavsiye ederim

[Bu ürünlerden herhangi birini satın almaya karar verirseniz, yukarıdaki bağlantıları kullanarak listelere ulaşırsanız çok memnun olurum - bu şekilde, size hiçbir ek ücret ödemeden kardan küçük bir pay alıyorum!]

1. Adım: Donanımı Kurun

Donanımı Kur
Donanımı Kur

İlk adım, Pi'nizin ve ilgili çevre birimlerinin kurulduğundan emin olmaktır.

İlk önce Pi'nizi internete bağlayın. Bu, izleme programının isteklerinizi alabilmesi ve Dropbox'a veri yükleyebilmesi için gereklidir. Güvenilirliği sağlamak için bir ethernet bağlantısı kullanıyorum, ancak bir Wi-Fi bağlantısı da iyi çalışmalı ve aynı zamanda gelişmiş taşınabilirlik avantajına sahip olmalıdır. Wi-Fi'ı seçerseniz, Pi için bu USB dongle'ı öneririm.

Ardından, web kameranızı USB bağlantı noktalarından birine takarak Pi'ye bağlayın. Advent web kameramın talimatları açıkça Linux ile çalışacağını söylemese de, tek yapmam gereken onu prize takıp Pi'yi başlatmaktı. Başka kuruluma gerek yoktu. Diğer web kameraları değişebilir. Aşağıdaki komutu kullanarak web kameranızın Linux tarafından algılanıp algılanmadığını kontrol edebilirsiniz:

lsusb

Yukarıdaki resimde web kameram '0c45:6340 Microdia' olarak listeleniyor.

Son olarak, DS18B20 sıcaklık sensörünüzü Pi'nin GPIO başlığına bağlayabilirsiniz. Breadboard'umu devre oluşturma işlemini kolaylaştırmak için kullanıyorum ve aynısını yapmanızı tavsiye ederim, özellikle DS18B20, üç pininden ikisi arasına 4.7k direnç yerleştirilmesini gerektiriyor. Bu bağlantı, bu sıcaklık sensörüne bağlanmak için bir devre tahtasının nasıl kullanılabileceğini gösteren iyi bir bağlantı şeması sağlar.

Yukarıdaki öğreticinin bir sonraki sayfası ayrıca DS18B20'den veri okumak için gereken adımları da kapsar ve çalışıp çalışmadığını nasıl kontrol edeceğinizi gösterir. Bu proje için DS18B20'yi kullanmadan önce bu kurulum adımlarını gerçekleştirmeniz önemlidir. Ayrıca öğreticiden örnek Python betiğini izleme programımıza entegre edeceğiz, bu nedenle bu kodu hızlıca gözden geçirmek isteyebilirsiniz.

Lütfen DS18B20'nizin benzersiz numarasını da not edin. Kurulum eğitimi sırasında karşılaştığınız '28-' ile başlayan sayıdır. Sıcaklıkta okumasına izin vermek için yaklaşan Python programına girmeniz gerekecek.

2. Adım: Dropbox'ı Kurun

Dropbox'ı Kur
Dropbox'ı Kur

Pi'nizin Dropbox ile arayüz oluşturması için yeni bir Dropbox uygulaması kurmanız gerekir. Bu, Pi'nizin Python kullanarak çevrimiçi dosya yönetimi gerçekleştirmesi için gereken ayrıntıları sağlayacaktır. Bir Dropbox hesabı oluşturduğunuzu ve giriş yaptığınızı varsayarsak, 'Geliştiriciler' menü seçeneğini kullanarak yeni bir uygulama oluşturabilirsiniz. Önemli adımların bir özeti için yukarıdaki resme bakın.

"Geliştiriciler" menüsünde, "Uygulamalarım"ı seçin, ardından "Uygulama oluştur" düğmesine basın. Ortaya çıkan formu doldurmak için ' Dropbox API' yi ve ardından ' Uygulama Klasörü'nü seçin. Son olarak, Dropbox'ta uygulamanız için benzersiz bir ad seçebilirsiniz. 'Uygulama oluştur'u tıklayın.

Ardından, Dropbox'ta uygulamanızın ayarlar sayfasına yönlendirileceksiniz. Burada yapmanız gereken tek bir şey daha var - kendinize bir Erişim Simgesi oluşturun. Bunu yapmak için ' OAuth 2 ' bölümüne gidin ve ' Oluşturulan erişim belirteci ' altında ' Oluştur ' düğmesini tıklayın.

Bu size Python kullanarak Dropbox hesabınıza erişmek için gereken uzun bir karakter dizisi sunacaktır. Daha sonra kodunuzda belirtmeniz gerekeceğinden bu Erişim Simgesini bir yere not edin. Simgeyi kaybederseniz, Dropbox'ın "Geliştiriciler" bölümündeki "Uygulamalarım"ı tıklayarak uygulamanızın ayarlarına geri dönebilir ve yeni bir simge oluşturabilirsiniz.

Diğer ayarları olduğu gibi bırakabilirsiniz. Uygulamanızın Dropbox hesabınızda gerekli klasörleri oluşturduğunu doğrulamak için depolama ana sayfanıza gidin ve ' Uygulamalar ' klasörünü arayın. Bu klasör içinde, yeni uygulamanız için seçtiğiniz ada sahip bir alt klasör olmalıdır. İzleme sisteminiz için tüm dosyaların yerleştirileceği yer burasıdır.

3. Adım: Dropbox Uygulama Klasörünüzü Hazırlama

Dropbox Uygulama Klasörünüzü Hazırlama
Dropbox Uygulama Klasörünüzü Hazırlama

Dropbox uygulamanızı kurduktan sonra, Pi'nizle etkileşim kurmak için Dropbox hesabınızda ortaya çıkan klasörü nasıl kullanacağınızı düşünmenin zamanı geldi. Bu oldukça basit bir şekilde gerçekleştirilir. Pi üzerinde çalışacak Python betiği, uygulama klasörünüzdeki bazı boş, uzantısız dosyaları aramak ve değiştirmek için Dropbox API'sinden bir komut alt kümesini kullanır. Her biri izleme sisteminin davranışının farklı bir yönünü kontrol etmenize izin vereceğinden, bu dosyaları 'parametre dosyaları' olarak adlandıracağız. Yukarıdaki resim, bu proje için Dropbox uygulama klasörünüzde bulunması gereken dört parametre dosyasını göstermektedir. Onları oluşturmak basittir:

Uygulama klasörünüz tamamen boş olarak başlayarak, bilgisayarınızda bir metin düzenleyici programı açın. Bu Pi kullanılarak yapılabilirken, bu kurulum aşaması için Windows dizüstü bilgisayarımı kullanmayı daha kolay buldum. Metin düzenleyici açıldığında (Windows 7'de Not Defteri kullandım), tek yapmanız gereken tamamen boş bir metin dosyasını bilgisayarınızın herhangi bir yerine kaydetmek. İlk örneğimiz olarak başlık görselinde ilk parametreyi oluşturacağız. Dosyayı kaydettiğinizde 'delay=10' olarak adlandırın.

Özetlemek gerekirse, artık bilgisayarınızda 'delay=10' adında boş bir metin dosyanız olmalıdır. Dosya ayrıca görünür veya görünmeyen bir '.txt' uzantısına sahip olacaktır.

Bir sonraki adım, bu dosyayı Dropbox uygulama klasörünüze yüklemektir. Bu, diğer Dropbox yüklemeleri gibidir. Uygulamanızın klasörüne gidin ve 'Yükle'yi tıklayın ve 'delay=10' dosyanızı seçin.

Bu dosya yüklendiğinde, artık dosya adında görünmesi gereken '.txt' uzantısını kaldırmalısınız. Bunu yapmak için, dosyaya sağ tıklayın ve 'Yeniden Adlandır'ı seçin. Dosya adının '.txt' bölümünü kaldırın. Şimdi, başlık görüntüsünde gösterildiği gibi, dosya uzantısı olmayan 'delay=10' adlı bir dosyayla baş başa kalmalısınız.

'Gecikme' parametre dosyası, izleme programı tarafından kullanılacak olan dört dosyadan biridir. Diğerlerini oluşturmak için, 'delay' dosyanızı sağ tıklayarak kopyalayıp yeniden adlandırabilirsiniz. Üç kopya oluşturduktan sonra, uygulama klasörünüzün bu adımın başında gösterilenle aynı olması için bunları başlık görüntüsünde gösterildiği gibi adlandırın.

Adım 4: Kodla Başlarken

Tartışıldığı gibi, izleme sistemimizin çekirdeği, Dropbox ile arayüz oluşturacak tek bir Python betiğinden oluşacaktır. İzleme programının aktif olması için bu betiğin Pi'nizde arka planda çalışması gerekecektir. Sanırım en doğru şekilde bir 'arka plan programı' betiği olarak tanımlanıyor, yani onu çalıştırabilir ve unutabilirsiniz. Komut dosyası bu adıma eklenmiştir, bu nedenle kodu burada tekrarlamanın bir anlamı yoktur. Şimdi onu indirmek ve onunla tanışmak için iyi bir zaman olabilir.

Komut dosyasını çalıştırmadan önce, ilgili Python kitaplıklarının kurulu olduğundan emin olmanız önemlidir. İhtiyacınız olanlar ekteki betiğin en üstünde listelenmiştir. Onlar:

Dropbox'ı içe aktar

pygame.camera içe aktarma işletim sistemini içe aktarma zamanı

Pi'mdeki Python kurulumu zaten pygame, os ve time içeriyordu, bu yüzden yüklemem gereken tek şey Dropbox idi. Bunu, pip ile çok basit kurulum talimatlarını kullanarak yaptım.

Kitaplıklarınız kurulduktan sonra, Dropbox Erişim Simgeniz ve DS18B20 sıcaklık sensörünüzün benzersiz tanımlayıcısıyla eşleşmesi için ekli komut dosyasının ilk iki satırını düzenlemeniz gerekecektir. Bunlar, düzenlenmesi gereken iki satırdır:

APP_ACCESS_TOKEN = '**********'

THERMOMETER_FILE = '/sys/bus/w1/devices/28-**********/w1_slave'

Sadece ****'ları doğru değerlerle değiştirin. Bu noktada, izleme programını kullanmaya başlamaya gerçekten hazırsınız! Sadece konuya girmek yerine, koda genel bir bakış için bir sonraki adıma geçmenizi tavsiye ederim.

ÖNEMLİ: Bu scripti çalıştırdığınızda arka planda çalışmasını istiyorsunuz ki a) Pi'yi kullanmaya devam edebilirsiniz ve b) SSH oturumunuzu kapattığınızda script çalışmaya devam edecektir. Komut dosyasını çalıştırdığımda kullandığım komut bu:

nohup python DropCamTherm.py &

Bu üç şeyi başarır: Komut dosyasını çalıştırır ('python DropCamTherm.py'), kontrolü hemen komut satırına döndürür, böylece Pi'yi ('&') kullanmaya devam edebilirsiniz ve Python çıktılarını gönderir. normalde komut satırında 'nohup.out' adlı bir dosyada görüntülenir. Bu, bir Linux metin düzenleyicisi kullanılarak okunabilir (en sevdiğim nano'dur) ve betiğin çalıştırıldığı dizinde otomatik olarak oluşturulacaktır.

Adım 5: Kodun Daha Derinine İnmek

Komut dosyasını açtığınızda, komut dosyası çalıştırıldığında bu işlevleri uygulayan bir kod bloğu ile birlikte üç işlevden oluştuğunu fark edeceksiniz. İşlevler Dropbox API'sini kullanır ve Dropbox'tan gelen komutları dinlemek ve en son sıcaklık okumasını yüklemek için DS18B20'nin sıcaklık günlük dosyasına erişir. Aşağıda, işlevlerin ne yaptığına ve izleme sisteminin çalışmasını sağlamak için nasıl kullanıldığına ilişkin bir genel bakış yer almaktadır:

- poll_parameter():

Bu fonksiyon 3. adımda oluşturduğumuz Dropbox parametre dosyalarının amacını gösterir. Dropbox uygulama klasöründe 'param=' metnini içeren bir dosya arar. Ardından, '=' işaretinden sonraki metni alır ve onu bir tamsayıya dönüştürmeye çalışır. Bunun, parametre dosyalarının sonuna manuel olarak ilgili sayıları ekleyerek programı kontrol etmemizi sağladığını görebilirsiniz. Bir sonraki adım, programın bir yönünü kontrol etmek için parametre dosyalarının her birini nasıl kullanacağınızı gösteren kısa bir talimat kılavuzunu içerecektir.

- set_parameter():

Bu işlev, programın Python içinden bir parametre dosyasını yeniden adlandırmasını sağlar. Bunu birkaç kez, özellikle dosyaların aşırı manuel olarak yeniden adlandırılması ihtiyacını azaltmak için yapar.

- set_latest_temp():

Bu işlev, en son sıcaklığı 'temperature' parametre dosyasına ekleyerek Dropbox uygulama klasörüne yüklemek için set_parameter() işlevini kullanır. İşlev, DS18B20'nin günlük dosyasından (Linux'ta THERMOMETER_FILE değişkeninin gösterdiği yolda bulunan) en son sıcaklığı okur.

Programın son kısmı, komut dosyası çalıştırıldığında yürütülecek kodu içerir. DS18B20 sensörü için gereken bazı kurulum adımlarından sonra, Erişim Simgenizi kullanarak bir Dropbox oturumu açar ve web kameranızı aramak için pygame kullanır. Bir web kamerası bulunursa, Dropbox'tan bilgi çıkarmak ve buna göre hareket etmek için poll_parameter() işlevini kullandığı bir döngüye girer.

ÖNEMLİ: Aşağıdaki kod satırını göreceksiniz:

cam = pygame.camera. Camera(cam_list[0], (864, 480))

…bu, pygame'in algıladığı ilk web kamerasından kullanılabilir bir kamera arayüzü oluşturmaya çalışır. Çözünürlüğün web kameranıza uyması için değiştirilmesi gerekebilir. En iyi sonucu bulmak için bir dizi değerle denemeler yapın.

Adım 6: Dropbox Parametre Dosyalarını Kullanma

Şimdi, 4. adımdaki talimatları kullanarak çalıştırdığınızda, Pi'nizin girdileriniz için uygulama klasörünü izlemeye başlamasına izin verecek çalışan bir komut dosyanız olmalıdır. İlk çalıştırmanızda, uygulama klasörü aşağıdaki parametre dosyalarını içermelidir:

gecikme = 10

çıkışprogramı=0 imagerequest=0 sıcaklık=0

Programla etkileşim, parametre dosyalarının Dropbox aracılığıyla manuel olarak yeniden adlandırılmasıyla sağlanır. Bunu yapmak için, dosyalardan birine sağ tıklayın ve 'yeniden adlandır' seçeneğini seçin. Her parametre dosyasının farklı bir işlevi vardır:

- gecikme:

Bu dosya, izleme programına, izleme döngüsünün her yinelemesi arasında kaç saniye bekleneceğini söyler. Programla fazla etkileşime girmeyeceğimi bildiğimde 60 veya 120'ye ayarlıyorum. Pi'den sık sık veri istemek istediğimi bildiğimde 10'a ayarlıyorum.

- çıkış programı:

Bu, 1 veya 0 olarak ayarlanmalıdır. Program, 1'e ayarlandığını algılarsa, betiği sonlandıracaktır. 1'e ayarlarsanız ve komut dosyası çıkarsa, yeniden başlatmak için Pi'de tekrar oturum açmanız gerekir. Bu parametre, izleme programını artık çalışmasına ihtiyacınız olmadığında (örneğin, eve döndüyseniz ve artık web kamerasını uzaktan izlemek istemiyorsanız) zarif bir şekilde sonlandırabilmeniz için mevcuttur.

- görüntü talebi:

Bu belki de en önemli parametredir. Bu, 1 veya 0 olarak ayarlanmalıdır. Program, 1'e ayarlandığını tespit ederse, web kamerasından bir görüntü isteyecek ve onu uygulama klasörüne ('image.jpg' başlığı ile) yükleyecektir. Başka bir 'image.jpg' varsa, üzerine yazacaktır.

- sıcaklık:

Bu, set_latest_temp() işlevi tarafından ayarlanan DS18B20 sıcaklık okumasıdır. Bu parametre dosyasını asla düzenlemeniz gerekmez - program tarafından otomatik olarak ayarlanır.

'exitprogram' veya 'imagerequest'i 1 olarak ayarlarsanız, programın ilgili kodu çalıştırmadan önce bunları otomatik olarak 0'a döndüreceğini unutmayın. Bu kolaylık içindir. Ayrıca, kodun birçok kritik işlevi çevreleyen çok sayıda 'dene' ve 'hariç' blok içerdiğini fark edebilirsiniz. Bu, bir şeyler ters giderse (Dropbox erişimini engelleyen bir internet bağlantısı sorunu gibi) betiğin istisnalar atmamasını (ve dolayısıyla çalışmayı durdurmamasını) sağlamak içindir.

7. Adım: Sonuç

Bu proje, Python ve Dropbox kullanarak bir Raspberry Pi'yi kontrol etmenin bir yolunu sundu. Bu projede kullanılan donanım bir sıcaklık sensörü ve bir USB web kamerası olsa da, bu Pi'yi kontrol etme yöntemi için başka birçok uygulama var. Aslında, GPIO aracılığıyla erişilebilen herhangi bir donanım bileşeni, benzer bir program yapısı kullanılarak kontrol edilebilir ve bu da sistemin genişletilmesini çok kolaylaştırır.

Bir sonraki adım olarak, Dropbox API'si ile birlikte Tkinter gibi bir GUI kitaplığını da kullanarak, parametre dosyalarını Dropbox'ta oturum açmanıza gerek kalmadan değiştirmenize olanak tanıyan bir istemci programı oluşturabilirsiniz.

Umarım bu eğitim anlaşılır olmuştur ve herhangi bir sorunuz varsa veya herhangi bir şeyi açıklamamı istiyorsanız, lütfen bir yorum gönderin!

Önerilen: