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.
Bluetooth HC-06 Modül Resetleme ve Programlama Arduino İle
Arduino, HC-06 (slave) modülünü kullanarak Bluetooth üzerinden diğer cihazlarla iletişim kurabilir. Arduino'nun Akıllı Telefon, bilgisayar veya diğer mikro denetleyiciler gibi diğer cihazlarla bağlanmasını ve veri alışverişinde bulunmasını sağlar. Bluetooth iletişimi, bir robotu uzaktan kontrol etmek, örneğin bilgisayarınızda veya akıllı telefonunuzda verileri görüntülemek ve depolamak için kullanılabilir.
Modül HC-06'ya genel bakış
Bluetooth modülü HC-06, 2'si güç ve 2'si bağlantı kurmak için olmak üzere 4 pime sahiptir.
VCC güç kaynağı. Tipik olarak Arduino'nun 5V pinine bağlanır.
GND zemin. Tipik olarak Arduino'nun GND pinine bağlanır
RX alım pimi. Tipik olarak Arduino'nun iletim pinine (TX) bağlanır
TX iletim pimi. Tipik olarak Arduino'nun alım pinine (RX) bağlanır
Not: HC-06 modülü bir slave modül olduğu için kendi başına başka bir cihaza bağlanamaz. Bunun için Bluetooth modülü HC-05 gibi bir ana modüle ihtiyacınız vardır .
şemalar
Bazı HC-06 modülleri 3V3'te çalışır ve Rx pinindeki 5V voltaj seviyesini desteklemez. Bu durumda, mantık sinyalini dönüştürmek için bir voltaj bölücü köprüsü gerekir (pin3 ile Rx arasında 1k direnç ve Rx ile GND arasında 2k Ohm).
UYARI :Arduino Uno'nun 2 ve 3 numaralı pinlerini kullanıyoruz. Mikrodenetleyiciye bağlı olarak bazı pinler SoftwareSerial iletişimini desteklemeyebilir. Özellikle Arduino Mega, Micro ve Leonardo. Belgeleri kontrol edin.
Modül HC-06 konfigürasyonu
HC-06 modülünü yapılandırmak, çalıştığını, doğru şekilde bağlandığını doğrulamak ve adı (birden fazla modül kullandığınızda kullanışlıdır), PIN kodu ve iletişim hızı (baud hızı) gibi parametrelerini değiştirmek için ilginç olabilir. Yapılandırmaya izin vermek için, HC-06 modülüne güç verilmeli ancak eşleştirilmemelidir (LED yanıp sönüyor).
Aşağıdaki kod, seri monitörü kullanarak parametreleri değiştirmenize izin verir.
#include<SoftwareSerial.h>SoftwareSerialhc06(2,3);voidsetup(){//Initialize Serial MonitorSerial.begin(9600);Serial.println("ENTER AT Commands:");//Initialize Bluetooth Serial Porthc06.begin(9600);}voidloop(){//Write data from HC06 to Serial Monitorif(hc06.available()){Serial.write(hc06.read());}//Write from Serial Monitor to HC06if(Serial.available()){hc06.write(Serial.read());}}
Seri iletişimi test etmek için, seri monitöre AT girin ve gönder'e tıklayın veya enter'a basın. İletişim seçeneklerinde “Bitiş çizgisi yok” ve doğru baud hızını seçtiğinizden emin olun. Modül Tamam yanıtını vermelidir. Çalışmıyorsa, kablolamayı ve modül versiyonunu kontrol edin.
Modül adını değiştirmek için, AT + NAMEmodule_name girin. Modül, OKsetname yanıtı vermelidir. (Örn: Modül adını BTM1 olarak değiştirmek istiyorsanız AT+NAMEBTM1 giriniz)
Modül PIN kodunu değiştirmek için AT+PINxxxx girin. Modül OKsetPIN'e cevap vermelidir. (Örn: PIN'i 0000 olarak değiştirmek istiyorsanız AT+PIN0000 girin)
Modül iletişim hızını değiştirmek için (sadece gerekliyse), AT+BAUDx girin. Ör: Baud hızını 9600 olarak değiştirmek istiyorsanız AT+BAUD4 girin. Modül OK9600'e cevap vermelidir. (Not: 1200 için 1, 2400 için 2, 4800 için 3, 9600 için 4, 19200, için 5, 38400 için 6, 57600 için 7, 115200 için 8)
UYARI: Bluetooth modülü HC-06'nın farklı sürümleri çıkar ve AT komutlarının listesi değişebilir. AT + VERSION girerek modül üzerinde yazılı seri numarasını ve aygıt yazılımı sürümünü kontrol edin.
Örneğin, donanım yazılımı sürümü 3.0-20170609 olan ZS-040 etiketli HC-06 modülü, AT+NAMExxxx (modülün yeni adı xxxx ile) komutunu gönderirken ERROR(0) döndürür. Bu modülü yapılandırmak için AT komutları şunlardır:
AT+NAME=xxxx modülün adını ayarlamak için
AT+PSWD:”xxxx” modülün pin kodunu ayarlamak için
Bluetooth modülünüzü HC-06 yapılandırırken bir sorunla karşılaşırsanız yorum yapmaktan çekinmeyin.
Bluetooth modülü HC-06'yı eşleştirme
Modül istediğiniz gibi yapılandırıldıktan sonra, HC-06 modülünü herhangi bir Bluetooth cihazı gibi istediğiniz cihazla eşleştirebilirsiniz. Kullanılabilir Bluetooth cihazı listesinden modülünüzün adını seçin (varsayılan HC-06'dır) ve PIN kodunu girin (varsayılan 1234'tür). Tamamlandığında, LED'in yanıp sönmesi durmalıdır.
Kod
Modülünüz eşleştirildikten sonra, istediğiniz işlevselliği elde etmek için aşağıdaki kodu değiştirebilirsiniz. Arduino'da bir işlevi etkinleştirmek için AÇIK veya KAPALI komutunu göndermesini bekliyoruz.(Cep telefonuna bluetooth programı eklenecek.)
HC-06 modülünü işlemek için Arduino kartında Seri bağlantı noktası tanımlamaya izin veren SoftwareSerial.hkitaplığını kullanıyoruz . Bilinmesi gereken fonksiyonlar şunlardır:
Seri bağlantı noktasının pinlerini tanımlamak için SoftwareSerial hc06(Rx,Tx)
baud hızını tanımlamak için hc06.begin() (değer, modülünüzle aynı olmalıdır)
hc06.available() modülün arabelleğinde veri olup olmadığını test etmek için
hc06.read() her seferinde bir bayt veri okumak için
ASCII biçiminde bir dize göndermek için hc06.print ()
hc06.write () her seferinde bir bayt veri göndermek için
#include<SoftwareSerial.h>SoftwareSerialhc06(2,3);Stringcmd="";floatsensor_val=0;voidsetup(){//Initialize Serial MonitorSerial.begin(9600);//Initialize Bluetooth Serial Porthc06.begin(9600);}voidloop(){//Read data from HC06while(hc06.available()>0){cmd+=(char)hc06.read();}//Select function with cmdif(cmd!=""){Serial.print("Command recieved : ");Serial.println(cmd);// We expect ON or OFF from bluetoothif(cmd=="ON"){Serial.println("Function is on");}elseif(cmd=="OFF"){Serial.println("Function is off");}else{Serial.println("Function is off by default");}cmd="";//reset cmd}// Simulate sensor measurementsensor_val=(float)random(256);// random number between 0 and 255//Write sensor data to HC06hc06.print(sensor_val);delay(100);}
Baud hızı tarayıcı
Modül baud hızınızı bulmakta zorluk çekiyorsanız, Bluetooth'u başlatan ve her baud hızı değeri için AT komutu gönderen bir kod burada.
#include<SoftwareSerial.h>SoftwareSerialhc06(2,3);voidsetup(){//Initialize Serial MonitorSerial.begin(9600);// scanscanBaudrate();}voidloop(){}voidscanBaudrate(){unsignedlongbauds[12]={300,1200,2400,4800,9600,19200,38400,57600,74880,115200,230400,250000};for(inti=0;i<12;i++){hc06.begin(bauds[i]);delay(10);Serial.print(F("Baudrate "));Serial.println(bauds[i]);command("AT",2000);}}Stringcommand(constchar*toSend,unsignedlongmilliseconds){Stringresult;Serial.print("Sending: ");Serial.println(toSend);hc06.print(toSend);unsignedlongstartTime=millis();Serial.print(F("Received: "));while(millis()-startTime<milliseconds){if(hc06.available()){charc=hc06.read();Serial.write(c);result+=c;// append to the result string}}Serial.println();// new line after timeout.returnresult;}
İletişim baud hızı doğru ayarlandığında, Bluetooth modülü OK yanıtını vermelidir. Thois kodu, modülün düzgün çalışıp çalışmadığını ve hangi baud hızını kullandığını size hızlı bir şekilde söyleyecektir.
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.