İçindekiler:
- Gereçler
- Adım 1: Donanım
- 2. Adım: Raspberry Pi OS Yazılım Kurulumu
- 3. Adım: Uzaktan Erişime İzin Vermek için Dataplicity'yi Ayarlayın
- Adım 4: Sensörleri Kontrol Edin
- Adım 5: UFW Güvenlik Duvarı
- Adım 6: Sıcaklık Verilerini JSON Olarak Gönderme
- 7. Adım: Her İki Sensörden Veri Gönderin
- Adım 8: Otomatik Başlatma
- 9. Adım: Verileri Freeboard.io'da Görüntüleyin (1)
- Adım 10: Verileri Freeboard.io'da Görüntüleyin (2)
- Adım 11: Projeyi Bir Kutuya İnşa Edin
- Adım 12: Tamamlandı
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-23 15:13
Bu, bir Eğitilebilir Yazı yazma konusundaki ilk girişimim ve bu yüzden lütfen bana kolay gelsin! Bunun çok da kötü olmadığını düşünüyorsanız, lütfen İlk Kez Yazar Yarışmasında bana oy verin.
Bu, bir serada biri zemin seviyesinde ve diğeri çatının hemen altında olmak üzere 2 sıcaklığı uzaktan izlemek için benim Kilitleme projem. Raspberry Pi'yi (RPi) daha önce kullanmış olmama rağmen, bu proje kullanmadığım birkaç unsuru içeriyordu ve bu arada, güncel olmayan veya tamamen yanlış olan birkaç öğretici buldum. Bu, yol boyunca edindiğim bir Pi Zero ve 2 DS18B20+ Tek Telli Dijital Sıcaklık Sensöründen çalışan bir çift uzaktan sıcaklık monitörü yapmak için edindiğim bilgi birikimim.
Hakkında öğrendiğim şeyler:
- Nesnelerin İnterneti'nin (IoT) bir parçası olarak bir cihazdan veri kullanılabilir hale getirme
- 2 cihazlı 1 telli arayüz
- Veri açıklığı
- JSON verileri
- UFW güvenlik duvarını kurma
- Verileri görüntülemek için Freeboard.io'yu kullanma
- Programı otomatik olarak çalıştırmak için RPi'yi yapılandırma
Tüm bu konularda basit bir arama ile bulunabilecek çok büyük miktarda veri var, ancak o kadar net olmayan şey, tüm bu ayrı öğelerin nasıl birleştirileceğidir.
Gereçler
- Bir Raspberry Pi'ye ihtiyacınız olacak (bitmiş projeyi çalıştırırken değil, kurulum için bir monitör, fare ve klavye ile)
- Çalışan bir internet bağlantısı.
- Mikro USB konektörlü bir PSU
- 2 adet DS18B20+ Tek Telli Dijital Sıcaklık Sensörü. Amazon'un en ucuzu buldum
- 4K7 ohm direnç veya 2 adet 10K ohm direnç kullandım.
- Tezgahta test etmek için küçük devre tahtası ve birkaç erkek/dişi kablo
- Son montaj için küçük şerit levha parçası
- Lehimleme ve tel soyma için basit araçlar.
- Bitmiş tasarımı barındırmak için küçük plastik kutu
Adım 1: Donanım
Zaten bir Raspberry Pi Zero W'm vardı (kablosuz) ama bu basit projenin herhangi bir RPI'da iyi çalışacağından eminim. Atölyemdeki tuhaf elektronik bitlerin kutusunda diğer her şey (breadboard, tel, PSU vb.) vardı ve bu yüzden satın almam gereken tek şey Amazon'dan iki adet 2 x DS18B20 sensördü. Bunlar, su geçirmez bir muhafazaya ve 3m kabloya kolayca monte edilmiş normal DS18B20 yongalarıdır. Kablodan 3 tel var:
- Kırmızı – güç – 3.3v pin 1'e bağlayın
- Siyah – dönüş – topraklama pimine 6 bağlayın
- Sarı – veri – GPIO4 pin 7'ye bağlanın
Sensörler 1-Wire arayüzünü kullanır ve bağlanması ve veri alması çok kolaydı. Web'de 1 cihazın bağlantısına ilişkin ayrıntıların yer aldığı ancak 2 (veya daha fazlasının) bağlanmasıyla ilgili çok az ayrıntı içeren birkaç sayfa vardır.
Tezgahta test etmek için devre bir breadboard kullanılarak monte edildi. Bulduğum öğreticiler, veri hattını yönlendirmek için bir 4K7 direnç kullandığını belirtti, ancak bir tane bulamadım ve paralel olarak 2 * 10K kullandım ve gayet iyi çalıştı. Web'de RPi devrelerini birleştirmek için bir devre tahtası kullanmak için birçok kaynak var ve bu yüzden onları burada tekrar etmeyeceğim.
Devre Şeması kullanılarak oluşturulan diyagram
2. Adım: Raspberry Pi OS Yazılım Kurulumu
Bu RPi'yi daha önce kullandığım için, işletim sisteminin temiz kurulumuyla başlamaya karar verdim, SD kartı yeniden biçimlendirdim ve temiz bir NOOBS sürümü yükledim. Daha sonra Raspian'ın tam masaüstü sürümünü (en iyi seçenek) kurdum çünkü bu, lite sürümünde olmayan PIP & GIT'i de kuracaktır. Proje için Grafik Kullanıcı Arayüzüne (GUI) ihtiyacım olmamasına rağmen, tüm seçenekleri kurmanın kolay bir yolu ve 16GB SD kart ile yer sıkıntısı yoktu.
WI-FI erişimini kurdum, ardından tam kurulumu çalıştırdım ve ardından güncellemeler ve yükseltmeler vb. içeren sihirbazı çalıştırdım. GUI'yi kullanarak RPI'yi gerektiği gibi kurarım çünkü GUI'yi kullanmak Komut Satırı Arabiriminden (CLI) daha basittir. Menüden yapılandırma penceresine gittim ve ardından:
- Sistem sekmesinde parolayı değiştirdim, CLI'ye önyükleme yapacak şekilde ayarladım ve Otomatik Oturum Açma'nın işaretini kaldırdım
- Arayüzler sekmesinde 1 kablolu etkinleştirdim
- Tamam tıklandı ve yeniden başlatıldı
Herhangi bir zamanda GUI'ye geri dönmeniz gerekirse, CLI'ye startx yazmanız yeterlidir.
startx
3. Adım: Uzaktan Erişime İzin Vermek için Dataplicity'yi Ayarlayın
blog.dataplicity.com/how-to-build-a-raspb… adresindeki Dataplicity sitesinde gerçekten yararlı bir blog girişi buldum ve bunun birkaç bölümünü kullandım. Blogun 3. Bölümü, RPi'ye uzaktan erişim için Dataplicity'nin ayarlanmasını açıklar. Dataplicity'yi daha önce hiç kullanmadım, ancak şunu söylemeliyim ki, çok basit bir uzaktan erişim aracı olarak kesinlikle tavsiye ediyorum. Ekran görüntüleri (yukarıdaki blogda) biraz güncel olmasa da, prensip gayet iyi.
PC'nizde Dataplicity.com'a gidin ve bir hesap oluşturun (tarayıcıyı GUI'de kullanabilirsiniz, ancak RPi Zero'da oldukça yavaş). Ardından “yeni cihaz ekle” düğmesine tıklayın ve açılır pencerede bir kod satırı görüntülenir. Ardından RPi'deki CLI'ye gidin ve metin satırını yazın. Her şey yolundaysa, Dataplicity logosu görüntülenecek ve yükleme programı çalışacaktır.
Bilgisayarınıza döndüğünüzde, yeni cihaz şimdi Dataplicity web sitesinde görünmelidir. Cihaza tıklayın ve RPi'niz için bir terminal ekranı görmelisiniz.
Burada dikkat edilmesi gereken birkaç nokta var:
- Oturum açmak için "su pi" yazın (süper kullanıcı erişimi için) ve sizden parola istenir (daha önce ayarlandığı gibi)
- Wormhole'u etkinleştirmeniz gerekiyor (daha sonra kullanılmak üzere)
- Verileri daha sonra görüntülemek için Solucan deliği adresine ihtiyacınız olacak (gerektiğinde kopyalamak için sağ tıklayın)
Bu uzaktan erişimi aşağıdaki tüm adımlar için kullanabilirsiniz ve verileri, programları vb. kopyalamak için doğrudan RPi'ye göre çok daha kolaydır.
Adım 4: Sensörleri Kontrol Edin
Artık sonraki tüm bölümler için Dataplicity'nin RPI'ye uzaktan erişimini kullanabilirsiniz.
Şimdi her şey tamamsa, DS18B20'lerden döndürülen sıcaklıkları görebilmeniz gerekir. Pi Hut öğreticisi üzerinde çalıştım ama bunun çoğu gerekli değildi. Tüm detayları isterseniz burada bulabilirsiniz:
Önemli bitler, cihazlar dizinine gitmek ve 2 farklı sensörün gösterildiğinden emin olmaktır.
cd /sys/bus/w1/cihazlar/
Bu, 28- ile başlayan 2 cihazı ve bus master'ı göstermelidir. Benimkiler:
28-011453ebfdaa 28-0114543d5daa w1_bus_master1
Bu 2 kimlik numarası önemlidir ve daha sonra gerekli olacaktır! Ardından sensör dizinlerinden birine geçin:
cd 28-011453ebfdaa
(örneğin) ve ardından değeri sensörden okumak için
kedi w1_slave
Gösterilen 2 satır metin olmalıdır:
53 01 4b 46 7f ff 0c 10 2d: crc=2d EVET
53 01 4b 46 7f ff 0c 10 2d t=21187
EVET, sensörün doğru okuduğunu gösterir ve 21187, 21.187 Santigrat cinsinden sıcaklığı gösterir (1000'e bölün) İkinci sensörü kontrol etmek için bunu tekrarlayın. Her ikisi de tamamsa, verileri Python3 ile okumaya devam edebiliriz.
Web'de bulduğum aşağıdaki kodu kopyalayıp uyarladım ama nereden olduğunu hatırlayamıyorum. Bu sizin kodunuz gibi görünüyorsa, hiçbir intihal amaçlanmadığı için özür dilerim; lütfen bana bildirin ve çalışmanızı onaylayacağım.
Projeler adında bir dizin oluşturun ve bu dizine geçin.
mkdir ~/projeler
cd ~/projeler
Bu dizinde, termo-test.py adlı bir dosya oluşturmak ve düzenlemek için metin düzenleyiciyi (nano) kullanın.
sudo nano termo-test.py
Bunun düzenleyiciyi açması gerekirdi ve Dataplicity'yi kullanırken aşağıdaki kodu (thermo-test.py) kopyalayıp düzenleyiciye yapıştırabilirsiniz. 2 cihaz adını (28-… ile başlayan) yukarıda belirtilenlerle değiştirmeniz gerekecektir. Her şey doğru göründüğünde, bitirmek için ctrl+X'e, kaydetmek için Y'ye basın ve mevcut adı kullanmak için geri dönün. GUI kullanmayı tercih ederseniz, Thonny de aynısını yapacaktır.
Test programını çalıştırmak için:
sudo python3 termo-test.py
Her şey yolundayken, bu dosyayı python 3 kullanarak çalıştırmalı ve her 10 saniyede bir ekrana 2 sıcaklığı yazdırmalıdır. 1 sensörü buzlu suya yerleştirerek veya saç kurutma makinesiyle hafifçe ısıtarak her şeyin yolunda olduğunu test edebilirsiniz. Her şey yolunda görünüyorsa, devam edebiliriz!
Adım 5: UFW Güvenlik Duvarı
Bu RPi internete kalıcı olarak bağlı olacağından, bir Güvenlik Duvarının iyi bir fikir olacağına karar verdim ve kullanımı basit olanın Karmaşık Olmayan Güvenlik Duvarı (ufw) olduğuna karar verdim. Burada çok basit bir eğitim var
Bu Eğitilebilir Yazının amacı bu olmadığı için çok derine inmeyeceğim, ancak kısaca:
Güvenlik duvarını şununla yükleyin:
sudo apt-get kurulum ufw
Varsayılan kuralları ayarlayın:
sudo ufw varsayılanı gidene izin veriyor
sudo ufw varsayılan gelenleri reddet
Dataplicity için 80 numaralı bağlantı noktasını açın
sudo ufw 80'e izin veriyor
Güvenlik duvarını etkinleştir
sudo ufw etkinleştir
Durumu kontrol edin ve her şeyin çalıştığından emin olun
sudo ufw durumu
Adım 6: Sıcaklık Verilerini JSON Olarak Gönderme
Tim Fernando'nun bloguna ve 5. bölüme geri dönün.
Belirtilen adımları izleyin (biz zaten proje dizinini oluşturduk hariç) ve her şey yolunda gitmelidir. GIT'i kullanarak Tim'in uygulama dosyalarını indireceksiniz ve PIP, gerekli tüm programların RPi'nize yüklendiğinden emin olacaktır. Daha sonra paketlerin doğru şekilde kurulduğundan emin olmak için yeniden başlatmam gerektiğini öğrendim.
Ardından Tim'in programını çalıştırın ve RPi'niz ilk sensör için JSON verilerini sağlıyor olmalıdır.
cd ana sayfa/pi/projeler/ sıcaklık-serve-pi
sudo gunicorn sıcaklığı:app -b 0.0.0.0:80
Sensörlerden 1'i için verilerin sağlandığını göreceğiniz bölüm 6'ya blog üzerinden devam edebilirsiniz.
Verileri görmek için JSON Viewer'ı da kullanabilirsiniz https://codebeautify.org/jsonviewer "URL yükle" düğmesini tıklayın ve daha önce belirtilen Solucan Deliği adresini yapıştırın. Sol bölmede, biri Celsius ve diğeri Fahrenheit için olmak üzere iki giriş görmelisiniz.
7. Adım: Her İki Sensörden Veri Gönderin
Sıcaklıklar.py ve termo-test.py içindeki koda dayanarak, /projects/temperature-serve-pi dizininde daha önce olduğu gibi 2temps.py Düzenlendi, kodu yapıştırdım ve kaydettim. sonra koştum
sudo gunicorn 2temps:app -b 0.0.0.0:80
Şimdi JSON Viewer'ı yeniden çalıştırdığımda temp1 & temp2 için değerler aldım
Başarı:)
Adım 8: Otomatik Başlatma
Seranın gücü ara sıra kesildiğinden, RPi'nin programı otomatik olarak yüklemesini ve verileri kanıtlamaya başlamasını istedim. En basit yol, rc.local dosyasını düzenlemek ve gerekli kodu çıkış 0 satırının hemen üstüne eklemek gibi görünüyor.
cd vb.
sudo nan rc.yerel
sonra eklenti
uyku 10
cd ana sayfa/pi/projeler/sıcaklık-serve-pi sudo gunicorn temp04:app -b 0.0.0.0:80 &
- Sondaki &, bilgisayara komut dosyasını bir alt kabukta çalıştırmasını söyler, böylece bilgisayarınızın işlevin bitmesini beklemez ve önyüklemeye devam eder.
- Uyku 10 [saniye], hizmete başlamadan önce önceki tüm işlemlerin tamamlandığından emin olur.
Çıkın ve daha önce olduğu gibi kaydedin. Ardından, her şeyin yolunda olup olmadığını kontrol etmek için JSON Viewer'ı yeniden başlatın ve yeniden çalıştırın.
Otomatik çalışan programlar hakkında daha fazla bilgi istiyorsanız, burada harika bir öğretici var
9. Adım: Verileri Freeboard.io'da Görüntüleyin (1)
Özetle, Tim'in blogundaki adımlar iyi çalışıyor; www.freeboard.io adresinde bir hesap oluşturun ve ardından yeni bir Freeboard oluşturun, benim SHEDTEMPERATURES adını verdim.
İlk olarak, bir veri kaynağı ekleyin, sağ üstteki EKLE'ye tıklayın ve açılır pencereden tür olarak JSON'u seçin, veri kaynağına bir İSİM verin, daha önceki solucan deliği adresini URL olarak ekleyin ve THINGPROXY DENEYİN için HAYIR'a tıklayın. Sıcaklıklar yalnızca çok yavaş değişir ve bu nedenle HER 15 SANİYEDE YENİLEYİN. KAYDET'i tıklayın.
Adım 10: Verileri Freeboard.io'da Görüntüleyin (2)
BÖLÜM EKLE'yi ve ardından ilk widget'ı eklemek için +'yı tıklayın. Çeşitli TÜRLERİ seçip oynayabilirsiniz ama Gauge'un gayet iyi olduğunu gördüm. Uygulamanıza uygun bir BAŞLIK, BİRİMLER (C), MİNİMUM ve MAKSİMUM verin. DATASOURCE için + işaretini tıklayın, yukarıda oluşturulan kaynak görünecektir.
Açılır menü şimdi daha önce oluşturulmuş 2 JSON veri kaynağını (temp2 ve temp2) göstermelidir. Uygun kaynağı seçin ve kaydet'i tıklayın.
Bunu ikinci gösterge için tekrarlayın ve hepimiz hazırız.
Veriler şimdi 2 göstergede görüntülenmelidir ve hala bir monitöre bağlı PRi varsa, geldikçe Freeboard.io'dan gelen istekleri görmelisiniz.
Adım 11: Projeyi Bir Kutuya İnşa Edin
Bu noktaya kadar, RPI ve diğer bileşenlerin tümü bir devre tahtası kullanılarak tezgah üzerine monte edilmişti. Daha sonra breadboard'u değiştirmek için küçük bir stripboard parçası kullanıldı ve kabloların tümü yerine lehimlendi.
Bol miktarda alana sahip ve RPI'nin fazla ısınmayacağı parlak pembe küçük bir Lego saklama kutusu bulundu. kutunun kenarlarına delikler açılmış ve RPi ve stripboard'u yerinde tutmak için 3 mm naylon montaj direkleri kullanılmıştır.
GPIO, 3.3v, GND ve verilerden yalnızca 3 bağlantı gereklidir.
- 3.3vdc pin 1
- GND pimi 6
- Veri (GPIO4) pim 7
USB gücü ve sıcaklık sensörlerine giden kablolar için kutuya delikler de eklendi. Her şey yerine monte edildikten sonra, örümceklerin kışı geçirmek için güzel ve sıcak bir yer olduğunu düşünmemelerini sağlamak için az miktarda silikon dolgu macunu eklendi!
Adım 12: Tamamlandı
Kutu seraya yerleştirildi ve bir USB şarj cihazından güç aldı. Fidelerin gece ne kadar soğuduğunu kontrol etmek için iki sensör biri seranın tepesine, diğeri bir saksıya yerleştirildi.
Bu benim ilk Eğitilebilirliğim ve umarım bunun iyi olduğunu düşünürsünüz. Herhangi bir hata bulursanız lütfen bana bildirin ve gerektiğinde düzelteceğim. Bir sonraki adım, her (diyelim) 60 saniyede bir verileri günlüğe kaydetmek olabilir, ancak bu daha sonra gelecektir.
Önerilen:
Arduino UNO ve SD-Kart ile Nem ve Sıcaklık Gerçek Zamanlı Veri Kaydedici Nasıl Yapılır - Proteus'ta DHT11 Veri Kaydedici Simülasyonu: 5 Adım
Arduino UNO ve SD-Kart ile Nem ve Sıcaklık Gerçek Zamanlı Veri Kaydedici Nasıl Yapılır | Proteus'ta DHT11 Veri Kaydedici Simülasyonu: Giriş: merhaba, ben Liono Maker, işte YouTube bağlantısı. Arduino ile yaratıcı projeler yapıyoruz ve gömülü sistemler üzerinde çalışıyoruz
ESP8266 ve Visuino: DHT11 Sıcaklık ve Nem Web Sunucusu: 12 Adım
ESP8266 ve Visuino: DHT11 Sıcaklık ve Nem Web Sunucusu: ESP8266 modülleri, dahili Wi-Fi'ye sahip, harika, düşük maliyetli, bağımsız kontrolörlerdir ve zaten onlar hakkında bir dizi Talimat hazırladım. DTH11/DTH21/DTH22 ve AM2301, çok popüler birleşik Sıcaklıklardır. ve Nem Arduino sensörleri ve bir numara yaptım
DT11 Sıcaklık Sensörlü Web Sunucusu için ESP8266 NodeMCU Erişim Noktası (AP) ve Tarayıcıda Yazdırma Sıcaklığı ve Nemi: 5 Adım
DT11 Sıcaklık Sensörlü Web Sunucusu için ESP8266 NodeMCU Erişim Noktası (AP) ve Tarayıcıda Yazdırma Sıcaklığı ve Nemi: Merhaba arkadaşlar, projelerin çoğunda ESP8266 kullanıyoruz ve çoğu projede verilere erişilebilmesi için ESP8266'yı web sunucusu olarak kullanıyoruz. ESP8266 tarafından barındırılan Web sunucusuna erişerek wifi üzerinden herhangi bir cihaz, ancak tek sorun şu ki, çalışan bir yönlendiriciye ihtiyacımız var
MotoStudent Elektrikli Yarış Bisikleti için Veri Toplama ve Veri Görselleştirme Sistemi: 23 Adım
MotoStudent Elektrikli Yarış Bisikleti için Veri Toplama ve Veri Görselleştirme Sistemi: Veri toplama sistemi, harici sensörlerden veri toplamak, depolamak ve daha sonra işlemek için birlikte çalışan bir donanım ve yazılım topluluğudur, böylece grafiksel olarak görselleştirilip analiz edilebilir, mühendislerin yapmasına izin vermek
Sıcaklık, PH ve Çözünmüş Oksijen için Veri Kaydedici Nasıl Yapılır: 11 Adım (Resimlerle)
Sıcaklık, PH ve Çözünmüş Oksijen için Veri Kaydedici Nasıl Yapılır: Amaçlar: ≤ 500 $ için bir veri kaydedici yapın. Sıcaklık, pH ve DO için verileri bir zaman damgasıyla ve I2C iletişimini kullanarak depolar. Neden I2C (Entegre Devre)? Her birinin sahip olduğu göz önüne alındığında, aynı hatta birçok sensör toplanabilir