İçindekiler:

UCL - IIOT Serası: 11 Adım
UCL - IIOT Serası: 11 Adım

Video: UCL - IIOT Serası: 11 Adım

Video: UCL - IIOT Serası: 11 Adım
Video: Kraliçe 11. Bölüm (FİNAL) 2024, Temmuz
Anonim
UCL - IIOT Sera
UCL - IIOT Sera

Bu proje, Sera ile olan önceki projemizin bir uzantısıdır (https://www.instructables.com/id/EAL-EMBEDDED-GREE…).

Bu projede, tüm verilerimizi günlüğe kaydettiğimiz ve daha geniş bir genel bakış için düğüm kırmızısı ile görselleştirdiğimiz bir veritabanı ekledik.

Veritabanımıza girdiğimiz içerik, farklı diyagramlarda gösterilen toprağın Nem, Sıcaklık ve Nemi'dir.

Veri girişinin yanı sıra Sera'da hangi profilin aktif olduğunu kontrol edebiliyor ve uzaktan kontrol edebiliyoruz.

Ardından pompa ve fanı manuel olarak da kontrol edebiliyoruz.

Adım 1: Kurulum Kılavuzu

Yükleme Rehberi
Yükleme Rehberi

İlk adım, tüm farklı bileşenleri kurmaktır.

Köşeli parantez () içinde, bileşenin nereye bağlandığını listeledik. Örneğin Arduino, bir USB kablosu ile Raspberry Pi'ye bağlanır.

Kullanılan donanım:

  • Arduino (Ahududu Pi)
  • Ahududu Pi 3 B+
  • Toprak higrometresi (Arduino)
  • DHT11 sensörü (Arduino)
  • HG-320 Dalgıç Su Pompası (Röle)
  • 5V röle (Arduino)
  • Bir bilgisayar fanı (Röle)
  • 230V güç kaynağı (Pompa)

Kullanılan yazılım:

  • Raspbian (Raspberry Pi için İşletim Sistemi)
  • Arduino IDE'si
  • Python (Ahududu Pi)- PySerial- MySQLclient
  • Node-Red (Raspberry Pi)- Pythonshell- Summariser- MySQL- Dashboard
  • MySQL sunucusu (freemysqlhosting.net)

İlk önce donanım bileşenlerini bağlamanız gerekecek, bu nedenle serayı oluşturmak için bu kılavuzu izleyin: Kurulum Kılavuzu.

Ardından Raspberry Pi'nize Raspbian OS kurmanız gerekecek. Bundan sonra Python'u kurmanız ve ardından python kitaplıklarını kurmanız gerekecek.

Sonraki adım, Raspberry Pi'ye Node-Red'i kurmak ve ardından palet yöneticisine gitmek ve daha önce belirtilen modülleri kurmaktır.

Ardından bu siteye gidin Ücretsiz MySQL Sunucusu ve ücretsiz bir MySQL sunucusu oluşturun.

Tüm bunlar bittiğinde, python betiğini Raspberry Pi'nize aktarmaya, Node-Red betiğini içe aktarmaya ve Arduino için kodu yüklemeye hazırsınız.

2. Adım: Kontrol Vitrini

Image
Image

Adım 3: Projede Kullanılan Parçaların/yazılımların Listesi

Sera yapmak için aşağıdaki teknolojiyi kullandık

  • Arduino
  • Ahududu Pi
  • Düğüm-Kırmızı
  • piton
  • PHPMyAdmin

Adım 4: I/0 Listesi

Bağlantı şeması
Bağlantı şeması

Adım 5: Bağlantı Şeması

Adım 6: Arduino Kodu

Arduino kodu, sensörler tarafından ölçülen verileri Raspberry Pi tarafından okunduğu ve veri tabanına aktarıldığı seri bağlantıya yazdırarak çalışır.

Arduino ayrıca, Arduino'nun okuduğu Raspberry Pi'ye bağlı bazı dijital giriş pinlerine sahiptir ve üçünden biri YÜKSEK olursa, bir IF ifadesi nedeniyle profil değişecektir.

Ayrıca kodu, eski gecikme ile bir aralık yerine, dipnotların ve kodun geri kalanının her zaman okunmasını sağlayan gecikme yerine Millis kullanacak şekilde yükselttik.

7. Adım: Raspberry Pi 3 B+

Ahududu Pi 3 B+
Ahududu Pi 3 B+

Arduino'muzu internete ve MySQL veritabanına bağlamak için bir Raspberry Pi 3 B+ kullandık. Bu, sensörlerimizden gelen verileri depolamamızı ve son kullanıcı için görsel bir arayüz oluşturmamızı mümkün kıldı. Kullanıcı arayüzü için Dashboard paleti ile Node-Red kullandık.

Ancak sensör verilerimizi Node-Red'de göstermeden önce, verileri MySQL veritabanına yüklemek için bir yola ihtiyacımız vardı ve bunun için Raspberry Pi'mizde çalışacak bir Python betiği yaptık.

Adım 8: Python

piton
piton

Python betiği, Arduino'dan gelen seri iletişimden veri almak için kullanılır. Komut dosyası daha sonra verileri bir MySQL veritabanına gönderir.

Pyserial ve mysqlclient olmak üzere iki kütüphane kullandık.

Yani ilk adım şu iki kütüphaneyi indirmek olacaktır:

  1. PySerial
  2. MySQL istemcisi

PySerial, seri iletişim yoluyla Arduino'dan veri toplamak için kullanılır.

cihaz = '/dev/ttyUSB0'

arduino = serial. Serial(cihaz, 9600)

İlk satır COM-portumuzu tanımlamak için kullanılıyor. Raspberry Pi'de Arduino için kullandığımız /dev/ttyUSB0'dır. İkinci satır, seri portu Arduino'ya açmak içindir. Biz sadece bağlantının hangi COM portunda ve hangi hızda çalıştığını tanımlıyoruz.

Kodun geri kalanı bir süre döngüsünde çalışıyor.

Sonra birden fazla Try ve Hariç blok kullanıyoruz. İlk olarak kod Try bloğunun içinde çalışmaya çalışıyor, eğer bu başarısız olursa, o zaman Hariç bloğunu çalıştırıyor. Ancak Try bloğu düzgün çalışıyorsa, Hariç bloğunu çalıştırmaz, sadece kodun geri kalanını çalıştırır.

Yani Try bloklarının içinde seri iletişimi okuyacak ve ardından MySQL veritabanımıza gönderecek kodumuz var.

higrolist = arduino.readlines(1)

templist = arduino.readlines(2)humidlist = arduino.readlines(3)

Yani yukarıdaki kod seri iletişimdeki satırları okumak içindir. Kodun sonundaki sayı, seride okunan satırı tanımlar. Yani bu çizgiler farklı değişkenlerde kategorize ediliyor.

Arduino'dan veri alındığında MySQL Sunucumuza veri göndermek için mysqlclient modülünü kullandık.

db = _mysql.connect(host="sql7.freemysqlhosting.net", user="sql7256552", passwd="3ebtbP8FQ2", db="sql7256552")

Bu satır MySQL veritabanımıza bağlanmak içindir. Sunucu, kullanıcı adı, şifre ve sunucu içinde hangi veritabanına bağlanması gerektiğini belirtir. Burada MySQL DB'nize olan bağlantıyı belirtmelisiniz.

db.query("INSERTINTO `TempNem`(`temp`, `nem`, `hygro`) DEĞERLER (%s, %s, %s)" % (sıcaklık, nemli, higro))

İşte burada DB bağlantımızı alıp bir SQL sorgusu yapıyoruz. Sorgu, değerlerin "TempHumid" tablosuna ve ardından "temp", "nem" ve "hygro" sütunlarına eklenmesi gerektiğini söylüyor. Son kısım olan “(%s, %s, %s)” string formatlamadır ve veritabanına okuyabileceği formatı vermek için kullanılır.

Ve tüm bu eylem bir süre döngüsüne konur, böylece MySQL sunucusuna gönderilen verileri almaya devam ederiz.

Tüm kodu görmek istiyorsanız, python betiğini indirin (TempHumid.py).

9. Adım: MySQL

MySQL
MySQL
MySQL
MySQL

MySQL sunucusu için www.freemysqlhosting.net üzerinde ücretsiz bir servis kullandık. Raspberry Pi'de yerel olarak bir sunucu yapabilirdik, ancak buluta/internete tam olarak bağlı hale getirmek için ücretsiz hizmetle gittik.

MySQL'inize erişmek için phpmyadmin.co'ya gitmeli ve freemysqlhosting hesabınızdaki kimlik bilgileriyle giriş yapmalısınız.

İçerideyken "TempNem" adında bir tablo oluşturmalısınız, bu tablonun içinde "ID", "temp", "nemli" ve "hygro" adında 4 sütun oluşturmalısınız. İlk sütunda (ID) A_I (Otomatik Artış) kutusunu işaretlemeniz gerekir. Bu, kimlik sütununun her veri kümesine bir kimlik vermesi içindir. Aşağıdaki tüm sütunlar bir INT (tamsayı) olarak ayarlanmalı ve standart değeri NULL olarak ayarlanmalıdır.

Adım 10: Düğüm-Kırmızı

Düğüm-Kırmızı
Düğüm-Kırmızı
Düğüm-Kırmızı
Düğüm-Kırmızı
Düğüm-Kırmızı
Düğüm-Kırmızı

Projemizde grafiksel bir arayüz oluşturmak için Node-Red kullandık. Node-Red, Raspberry Pi üzerinde çalışıyor ve MySQL veritabanımızdan veri topluyor ve son kullanıcının verileri izleyebilmesi için bu verileri halka şeklindeki göstergeler ve grafik grafiklerle gösteriyor. Node-Red ile ilgili akıllı olan şey, herhangi bir cihazda görüntülenebilir olmasıdır; bu, sitenin içeriği görüntüleyen belirli cihaz için yeniden boyutlandırılacağı anlamına gelir.

Node-Red programlamamızı kurmak için Adım 1'e bakın ve "Node-Red.docx" adlı belgeyi indirin. Ardından metni sağ üst köşedeki içe aktarma işlevi aracılığıyla Düğüm-Kırmızı'ya kopyalayıp yapıştırın.

Bundan sonra MySQL DB'nizin DB ayarlarını değiştirin.

Önerilen: