Arduino Akıllı telefon bluetooth ile sıcaklık ve nem
Robotiğin ilginç bir dalı, mevcut nesneleri daha akıllı hale getirmektir, bu da günlük hayatımıza yardımcı olur. Bu alan adı domotik (özellikle ev için) ve IoT (Nesnelerin İnterneti) olarak bilinir.
İşte evinizin sıcaklığını ölçmekten ve akıllı telefonunuzdaki verileri toplamaktan oluşan küçük bir ev projesi. Bluetooth modülü, çoklu veri ile başa çıkma yolu ile seri iletişim ve App Inventor 2 ile yapılmış bir akıllı telefon Android uygulaması kullandığımız basit bir projedir.
Not: Fritzing'de görüntülenen modül bir HC-05'tir ancak HC-06 ile aynı pin çıkışına sahiptir.
Malzeme
akıllı telefon
Arduino UNO'su
5V Pil
Sıcaklık sensörü LM35
Bluetooth modülü HC-06
kod
Sıcaklık aralığını ve voltaj ile sıcaklık arasındaki dönüştürme kuralını bulmak için LM35 sensörünün veri sayfasını araştırıyoruz . Ölçülen voltajı fiziksel bir değere çevirebilme. Sıcaklık ölçüldüğünde, Bluetooth modülü aracılığıyla akıllı telefona gönderilir. Çoklu verilerle başa çıkmak için veriler, deşifre etmeyi kolaylaştıran bir ayırıcı ile bir String'de birleştirilir.
.
#include<SoftwareSerial.h>SoftwareSerialHC06(2,3);// Constants#defineDELAY1000// Delay between two measurements in ms// ParametersconstintsensorPin=A0;// Pin connected to sensor// Variablesfloatvoltage,temperature;voidsetup(void){Serial.begin(9600);HC06.begin(9600);}voidloop(void){voltage=analogRead(sensorPin)*(5.0/1023.0);// Convert digital value to voltagetemperature=100*voltage;// conversion from V to °CSerial.print("Sensor reading = ");Serial.println(temperature);// the temperature reading// Send voltage and temperature value to appHC06.print(voltage);HC06.print("x");HC06.print(temperature);delay(DELAY);}
Ev Ölçüm Uygulaması
App mucit 2 kullanarak basit bir uygulama oluşturduk.Arduino'dan gelen veriler Android uygulamasına metin olarak gönderiliyor. Sensörden değerleri elde etmek için metnin “x” ayırıcısına göre bölünmesi gerekir. Ortaya çıkan liste öğeleri daha sonra ilgili etiketlerde görüntülenir.
Bluetooth modülü, telefonunuzdaki Bluetooth cihazları listesinde saklanmalıdır. Bluetooth modülü HC-05 veya HC-06, uygulamayı kullanmadan önce bir kez eşleştirilmelidir.
Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.
DS18B20 Dijital Sıcaklık Sensörü ve Arduino ile kullanımı
Arduino projenize sıcaklık algılama eklemenin en kolay ve ucuz yollarından biri DS18B20 1-Wire Sıcaklık Sensörünü kullanmaktır. Bu sensörler oldukça hassastır ve çalışmak için hiçbir harici bileşene ihtiyaç duymaz. Yani, sadece birkaç bağlantı ve bazı Arduino kodlarıyla, anında sıcaklığı algılayacaksınız!
DS18B20 1-Wire Sıcaklık Sensörü
DS18B20, Dallas Semiconductor Corp tarafından üretilen 1-Wire arayüz Sıcaklık sensörüdür . Benzersiz 1-Wire® Arabirimi bir mikrodenetleyici ile iki yönlü iletişim için tek dijital pin gerektirir.
Sensör genellikle iki form faktöründe gelir . TO-92 paketinde gelen, tam olarak sıradan bir transistöre benziyor. Uzakta, su altında veya yer altında bir şeyi ölçmeniz gerektiğinde daha kullanışlı olabilecek su geçirmez prob stilinde diğeri.
DS18B20 sıcaklık sensörü oldukça hassastır ve çalışmak için hiçbir harici bileşene ihtiyaç duymaz. ± 0.5 ° C Doğruluk ile -55 ° C ile + 125 ° C arasındaki sıcaklıkları ölçebilir .
Sıcaklık sensörünün çözünürlüğü kullanıcı tarafından 9, 10, 11 veya 12 bit olarak yapılandırılabilir. Ancak, açılışta varsayılan çözünürlük 12 bittir (yani 0,0625 ° C hassasiyet).
Sensör, 3V ila 5.5V güç kaynağı ile çalıştırılabilir ve aktif sıcaklık dönüşümleri sırasında yalnızca 1mA tüketir.
İşte tam teknik özellikler:
Güç kaynağı
3V ila 5.5V
Anlık tüketim
1mA
Sıcaklık aralığı
-55 ile 125 ° C
Doğruluk
± 0,5 ° C
çözüm
9 ila 12 bit (seçilebilir)
Dönüşüm Zamanı
<750 ms
Tek Veriyolunda Çoklu DS18B20
DS18B20'nin en büyük avantajlarından biri, birden fazla DS18B20'nin aynı 1-Wire veri yolunda bir arada bulunabilmesidir. Her bir DS18B20, fabrikada yazılmış benzersiz bir 64 bit seri koduna sahip olduğundan , bunları birbirinden ayırt etmek daha kolaydır.
Bu özellik, geniş bir alana dağılmış birçok DS18B20'yi kontrol etmek istediğinizde büyük bir avantaj olabilir.
Birden fazla DS18B20 sıcaklık sensöründen sıcaklığı nasıl okuyacağınızı öğrenmek için lütfen bu eğiticiye göz atın.
DS18B20 Sensör Pin Çıkışı
GND bir toprak pimidir.
DQ 1-Wire Data Bus, mikrodenetleyicideki dijital bir pime bağlanmalıdır.
VDD pin, sensör için 3,3 ila 5V arasında olabilen güç sağlar.
DS18B20 Sıcaklık Sensörünün Arduino ya Kablolanması
Teori yeter, Let's Go Practical! DS18B20'yi Arduino'ya bağlayalım.
Bağlantılar oldukça basit. VDD'yi Arduino'daki 5V çıkış pinine ve GND'yi toprağa bağlayarak başlayın.
Sonra kalan dijital sinyal pini DQ'yu arduino'daki dijital pin 2'ye bağlayın. Veri aktarımını sabit tutmak için sinyal ve güç pimi arasına 4,7k çekme direncini de eklemeniz gerekir . (arduino üzerindeki dahili pull-up'lar çalışmıyor)
DS18B20'yi doğru yoldan almak için dikkatli olun. Yanlış bir şekilde koyarsanız, ısınır ve sonra kırılır.
DS18B20'nin su geçirmez versiyonunu kullanıyorsanız, Kırmızı şeridi 5V'ye bağlayın, Siyah toprağa bağlanır ve Sarı Şerit, arduino'daki dijital pin 2'ye giden verilerdir. Verilerden 5V'a bir 4.7K pullup direnci bağlamanız gerekir.
DS18B20 için Kitaplığı Yükleme
Dallas 1-Wire protokolü biraz karmaşıktır ve iletişimi ayrıştırmak için bir sürü kod gerektirir. Bu gereksiz karmaşıklığı gizlemek için DallasTemperature.h kitaplığını yükleyeceğiz, böylece sensörden sıcaklık okumaları almak için basit komutlar verebiliriz.
Kitaplığı kurmak için Sketch> Dahil Et> Kitaplıkları Yönet'e gidin … Kitaplık Yöneticisinin kitaplıklar dizinini indirmesini ve kurulu kitaplıkların listesini güncellemesini bekleyin.
Aramanızı ' ds18b20 ' yazarak filtreleyin . Birkaç giriş olmalı. Miles Burton tarafından yazılan DallasTemperature'ı arayın . Bu girişe tıklayın ve ardından Yükle'yi seçin.
Bu Dallas Temperature kitaplığı, daha düşük seviyeli işlevleri işleyen donanıma özgü bir kitaplıktır. Yalnızca DS18B20 ile değil, herhangi bir tek kablolu cihazla iletişim kurmak için Tek Telli Kitaplık ile eşleştirilmesi gerekir. Bu kitaplığı da kurun.
Arduino Kodu
Aşağıdaki taslak, DS18B20 Sıcaklık Sensöründen sıcaklık okumalarının nasıl okunacağı konusunda tam bir anlayış sağlayacaktır ve daha pratik deneyler ve projeler için temel oluşturabilir.
#include <OneWire.h>
#include <DallasTemperature.h>// Data wire is plugged into digital pin 2 on the Arduino
#define ONE_WIRE_BUS 2
// Setup a oneWire instance to communicate with any OneWire device
OneWire oneWire(ONE_WIRE_BUS);
// Pass oneWire reference to DallasTemperature library
DallasTemperature sensors(&oneWire);
voidsetup(void)
{
sensors.begin(); // Start up the library
Serial.begin(9600);
}
voidloop(void)
{
// Send the command to get temperatures
sensors.requestTemperatures();
//print the temperature in Celsius
Serial.print("Temperature: ");
Serial.print(sensors.getTempCByIndex(0));
Serial.print((char)176);//shows degrees character
Serial.print("C | ");
//print the temperature in Fahrenheit
Serial.print((sensors.getTempCByIndex(0) * 9.0) / 5.0 + 32.0);
Serial.print((char)176);//shows degrees character
Serial.println("F");
delay(500);
}
Seri monitörde çıkışın nasıl göründüğü aşağıda açıklanmıştır.
Kod Açıklaması:
Taslak, OneWire.h ve DallasTemperature.h kitaplıklarını dahil ederek ve sensörün sinyal piminin bağlı olduğu Arduino pinini bildirerek başlar.
Daha sonra sensörün sinyal pinini yapıcısına geçirerek tek telli bir nesne oluşturuyoruz. Bu tek kablolu nesne, sadece DS18B20 ile değil, herhangi bir tek kablolu cihazla iletişim kurmamıza izin veriyor. DS18B20 sensörü ile iletişim kurabilmek için, DallasTemperature kütüphanesinin nesnesini oluşturmamız ve tek telli nesnenin referansını parametre olarak geçirmemiz gerekir.
DallasTemperature nesnesi oluşturulduktan sonra, sensörle etkileşim kurmak için aşağıdaki basit komutları verebiliriz.
begin() fonksiyon, veri yolunda bağlı sensörleri arar ve her biri için bit çözünürlüğü (12 bit) ayarlar.
requestTemperatures() işlevi, bir sıcaklık dönüşümü gerçekleştirmek için veri yolundaki tüm sensörlere komut gönderir.
getTempCByIndex(deviceIndex)işlevi sensörden sıcaklık okumasını okur ve döndürür. deviceIndexsensörün otobüsteki konumundan başka bir şey değildir. Otobüste yalnızca bir DS18B20 kullanıyorsanız, bunu 0'a ayarlayın.
DallasTemperature.h kitaplığındaki diğer yararlı işlevler
DallasTemperature nesnesiyle kullanabileceğiniz birkaç yararlı işlev vardır. Bunlardan birkaçı aşağıda listelenmiştir:
setResolution() işlevi, sırasıyla 0,5 ° C, 0,25 ° C, 0,125 ° C ve 0,0625 ° C artışlara karşılık gelen DS18B20'nin dahili Analogdan Dijitale dönüştürücüsünün çözünürlüğünü 9, 10, 11 veya 12 bit olarak ayarlar.
bool getWaitForConversion()işlevi waitForConversion bayrağının değerini döndürür. Bir sıcaklık dönüşümünün tamamlanıp tamamlanmadığını kontrol etmek istediğinizde faydalı olabilir.
setHighAlarmTemp()& setLowAlarmTemp()işlevi, bir cihaz için dahili yüksek ve düşük sıcaklık alarmlarını Santigrat derece cinsinden ayarlar. Geçerli aralık -55 ila 125 ° C'dir
bool hasAlarm() Sıcaklık yüksek ve düşük alarm sıcaklığı ayarını aştığında cihaz bir alarm durumuna sahipse işlev doğru olur.
Sayfalarımı ziyaret ettiğiniz için teşekkür ederim.Bu sitede mevcut olan içerikler kendi oluşturduğum projeler yazı,resim ve videolardan oluşmaktadır.İçerik oluşturmak çok uzun sürdüğü için bazı projelerde yurtdışı kaynaklardan faydalandım.Buradaki amacım ticari değildir.Kaynağı belli olan ve bizim kaynağına ulaşabildiğimiz materyal (yazı, fotoğraf, resim, video v.b.) için ilgili konularda fotoğraflarda logo varsa v.b. not olarak gösterilecektir.Sitemizde yayınlanan tüm içerik, bizim tarafımızdan ve internet üzerinden youtube, facebook ve blog gibi paylaşıma sunulmuş kaynak sitelerden alındığı için, sitemiz yasal yükümlülüğe tabi tutulamaz. Sitemizde telif haklarının size ait olduğu bir içerik varsa ve bunu kaldırmamızı isterseniz, iletişim sayfamızdan bizimle iletişime geçtiğiniz takdirde içerik yayından kaldırılacaktır.Bu konu ve modüller ile uğraşarak, ileride çok güzel makine ve elektronik aletler yapabilirsiniz.