DHT11 Sıcaklık ve Nem Sensörünün Arduino ile Kullanımı
İsmail // 27 Ağustos 2012 // 247 yorum // kategori: Arduino Eklentileri(Shield)Daha önce DS18B20 dijital sıcaklık sensörü ile ilgili bir yazı yazmıştım. Bu yazımda da yine tek dijital pin aracılığıyla sıcaklık ve nem verileri sağlayan, ucuz, nispeten hassiyeti az olan DHT11 dijital sıcaklık ve nem sensöründen bahsetmeye çalışacağım.
Ölçüm aralığı ve hassasiyetinden bahsederek başlayalım. -? aralığındaki nemi ±%5 hassasiyetle, 0-50°C aralığındaki sıcaklığı ise ±2°C hassasiyetle ölçebilen sensör ek olarak sadece 1 adet 10k dirence ihtiyaç duyuyor Arduino ile kullanabilmek için.
Yandaki resimdeki gibi bağlantıları yaptıktan sonra aşağıdaki bağlantılardan indirebileceğiniz dht11 kütüphanesini yüklüyoruz. (dht11 klasörünü Arduino>libraries klasörüne kopyalıyoruz.)
Aşağıda paylaşacağım örnek program kütüphaneyle birlikte de geliyor. File>Examples menüsünden ulaşabilirsiniz.
// Arduinoturkiye.com DHT11 Test Programı // Yazar: Joseph Dattilo (Virtuabotix LLC) - Version 0.4.5 (11/11/11) // Düzenleme: İsmail BUÇGÜN #include <dht11.h> // dht11 kütüphanesini ekliyoruz. #define DHT11PIN 2 // DHT11PIN olarak Dijital 2"yi belirliyoruz. dht11 DHT11; void setup() { Serial.begin(9600); // Seri iletişimi başlatıyoruz. Serial.println("Arduinoturkiye.com DHT11 Test Programi"); } void loop() { // Bir satır boşluk bırakıyoruz serial monitörde. Serial.println(); // Sensörün okunup okunmadığını konrol ediyoruz. // chk 0 ise sorunsuz okunuyor demektir. Sorun yaşarsanız // chk değerini serial monitörde yazdırıp kontrol edebilirsiniz. int chk = DHT11.read(DHT11PIN); // Sensörden gelen verileri serial monitörde yazdırıyoruz. Serial.print("Nem (%): "); Serial.println((float)DHT11.humidity, 2); Serial.print("Sicaklik (Celcius): "); Serial.println((float)DHT11.temperature, 2); Serial.print("Sicaklik (Fahrenheit): "); Serial.println(DHT11.fahrenheit(), 2); Serial.print("Sicaklik (Kelvin): "); Serial.println(DHT11.kelvin(), 2); // Çiğ Oluşma Noktası, Dew Point Serial.print("Cig Olusma Noktasi: "); Serial.println(DHT11.dewPoint(), 2); // 2 saniye bekliyoruz. 2 saniyede bir veriler ekrana yazdırılacak. delay(2000); }
Çok hassas ölçümler gerektirmeyen, biraz daha genel ölçümlere ihtiyaç duyduğunuz projelerinizde kullanabileceğiniz, kullanımı kolay, ucuz bir çözüm DHT11. LCD ile birlikte kullanarak kendi hava durumu istasyonunuzu oluşturabilirsiniz. Yücel Çetin”in Arduino RF Haberleşme yazısında anlattığı şekilde,ölçtüğünüz değerleri, RF ile farklı bir noktaya iletebilirsiniz.
İyi çalışmalar.
Kaynaklar:
Gerekli Olabilecek Bağlantılar:
Etiketler: arduino > Arduino Hava Durumu > Arduino Hava Durumu İstasyonu > Arduino ile Nem Ölçümü > Arduino ile Sıcaklık Ölçümü > Arduino ve DHT11 > Arduino ve Sıcaklık Sensörü > DHT11 > DHT11 Arduino > DHT11 Dijital Sıcaklık ve Nem Sensörü > DHT11 Sıcaklık ve Nem Sensörü > Sıcaklık ve Nem Sensörü
Ben bu kodları 2*16 LCD ekranda kullanabilir miyim. Kullanırsam kodları nasıl düzenlemeliyim.İyi günler İyi Çalışmalar…
dht11 2×16 aktarmak için kullandığım kod
#include
#include “DHT.h”
#define DHTPIN 9 // what pin we’re connected to
// Uncomment whatever type you’re using!
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
// Connect pin 1 (on the left) of the sensor to +5V
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
DHT dht(DHTPIN, DHTTYPE);
void setup() {
pinMode(13, OUTPUT);
Serial.begin(9600);
lcd.begin(16,2);
lcd.clear();
dht.begin();
}
void loop() {
digitalWrite(13, HIGH);
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds ‘old’ (its a very slow sensor)
float h = dht.readHumidity();
float t = dht.readTemperature();
// check if returns are valid, if they are NaN (not a number) then something went wrong!
if (isnan(t) || isnan(h)) {
Serial.println(“. Failed to read from DHT11 sensor”);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(” SENSOR ERROR”);
lcd.setCursor(0, 1);
lcd.print(” Failed to read”);
delay(3000);
} else {
Serial.print(“Humid: “);
Serial.print(h);
Serial.print(“% “);
Serial.print(“Temp: “);
Serial.print(t);
Serial.println(” C”);
digitalWrite(13, LOW);
delay(150);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(” Nem: “);
lcd.print(h);
lcd.print(“%”);
lcd.setCursor(0, 1);
lcd.print(“Sicak: “);
lcd.print(t);
lcd.print(“C”);
}
}
halil teşekkur ederiz paylaşımın için…
merhaba öncelikle teşşekürler. kodu yazdım fakat
Arduino:1.8.13 (Windows 10), Kart:”Arduino Uno”
lcd:21:1: error: ‘DHT’ does not name a type
DHT dht(DHTPIN, DHTTYPE);
lcd:32:4: error: expected unqualified-id before ‘.’ token
dht.begin();
^
C:\Users\yagiz\OneDrive\Belgeler\Arduino\lcd\lcd.ino: In function ‘void loop()’:
lcd:41:14: error: expected primary-expression before ‘.’ token
float h = dht.readHumidity();
^
lcd:42:14: error: expected primary-expression before ‘.’ token
float t = dht.readTemperature();
^
exit status 1
‘DHT’ does not name a type
ne yapmalıyım çok teşşekürler tekrardan
dht kütüphanesini kurmanız lazım yada kodun tepesinde include kısmında belirtmediğiniz için bulamıyor dht yi
Merhaba. Ben kodu yazdırdım fakat ‘class dht11’ has no member named ‘fahrenheit’ diye bir hata aldım.Aynısını kelvin içinde aldım. Bunun sebebi ne olabilir yardımcı olursanız çok sevinirim.
dht11 kutuphanesini de kurdunuzmu
Merhaba,ben arduinoyu potansiyometre gibi kullanıp,matlab üzerinde osiloskopta gördüğümüz gibi gerilim grafiklerini almak istiyorum bunu nasıl yapabilirim?
http://arduinoturkiye.com/arduino-ogrenirken-yol-haritasi-1/ şurada 4. konu bir pot bağlayıp adc üzerinden verileri okuyabilirsiniz. yok eğer pot bağlamadan farklı değerler üretmek istiyorsanız sitemizde olmayan bir konu ama “arduino r2r” diye aratırsanız yazılımsal olarak birkaç direnci sürerek değişik gerilimler üretebilirsiniz. aslında bu yöntem temel ses üretme tekniği olarak da kullanılıyor o da başka konu.
matlap da kod uretip arduinoya yukleyecekseniz de bu konuda matlap forumlarına bakmanız lazım o kısmı ben bilmiyorum.
@ender 16×2 ile kullanımı için 16×2 LCD yazısına bakabilirsin. yorum kısmına bir örnek kod eklemiştim.
http://arduinoturkiye.com/arduino-uno-16×2-lcd-pcm1602b/
DHT11 sensörüyle ölçtüğümüz dew.Point tam olarak nedir? Yani dew.Point komutuyla biz aslında neyi ölçüyoruz tam olarak
isviçreli ve ingiliz bilim adamları oturup düşünmüşler ve keşfetmişlerki havadaki nem yoğunlaşarak su haline dönüşme noktasını sıcaklık ve nem bilgilerden belli bir formule göre hesaplayarak bulanabiliyor. bunun bize pratikte faydası tarım alanında görülebilir su her nekadar +4 derecede donsa da havadaki nem ve sıcaklık öyle bir orana yaklaşırki nem bir anda suya dönüşerek meyvelerin çiçeklerin üzerinde yoğunlaşır ve yazın ortasında don oluşabilir buda ürüünün hasar görmesine bozulmasına neden olur böyle durumlara hazırlık olması için nem ve sıcaklık ölçerler büyük fan ve ısıtıcıları yöneterek bu durumu önlemeye çalışırlar. bazı soğuk hava depolarında da deponun içinin sadece “serin” olması istenir donması istenmez bu durumunda tespit edilmesinde faydalanılır.
yorumunuz çok açıklayıcı izninizle alıntı yapabilir miyim tubitak projesi için
işe yarıyorsa kullanın daha iyi kaynaklar da olması lazım
wikipediadaki linli vereyim bir inceleyin
https://en.wikipedia.org/wiki/Dew_point
gerçi memlettimizden giriş yasaklı ama ne yapalım en kapsamlı bilgi de burada.
kodun yazılımışı da şurada
http://arduinotronics.blogspot.com/2013/12/temp-humidity-w-dew-point-calcualtions.html
dht11 sıcaklık sensörünü kullanırken dijital pin 2 olarak seçilmiş
acaba pwm bir pini giriş olarak belirleyerek kullansak daha mı uygun olur?
yoksa pwm sadece çıkış için midir?
Merhaba ben yeni yeni arduıno kullanıyorum bu ılk projem. sabah arduınom çalışıyodu sıcaklık ve nem bilgisinide gösterdim yalnız aksam salonda calıştırdım.oda sıcaklıgı yuksektı lcd uzerinde nem ve sıcaklık değerim hep SIFIRI gösteriyor nedendir yardımcı olabilirmisiniz.
bağlantıları tekrar gözden geçir kodu tekrar yükle
DHT11 sensörüyle nem ölçmem gerekiyor programım c kodu ile sensörden nasıl okuma yapabilirim yardıma ihtiyacım var
selam fatih yukarıdaki kod işini görür. humidty denen satır bağıl nem bilgisidir. kolay gelsin.
çok tşşkr ederim 🙂
bir şey değil bana değil ismail buçgüne teşekkür et. soruyu sormadan önce sayfayı ve kodu okusaydın keşke. boşuna 1 hafta zamanın geçmezdi.
peki bi ekran entegre edip oraya yazdıra bilmemiz mümkün müdür ?
http://arduinoturkiye.com/arduino-esplora-ile-guzel-bir-termometre-projesi/
herkese selam. benim projem belirli bir alandaki dht11 sensörü ile ısı ve nem bilgilerinin alınıp kablosuz olarak bilgisayar ortamına aktarılmasıdır. Ben maket olarak herşeyi bitirdim. Şuan ardunio uno kart ile usb bağlantısı şeklinde bilgileri bilgisayara aktarabiliyorum ama bunun kablosuz şeklinde hangi parçalar ile ve nasıl yapabilirim. Şimdiden sağolun .
http://arduinoturkiye.com/arduino-rf-haberlesme/
http://arduinoturkiye.com/arduino-rf-haberlesme-2/
http://www.robotistan.com/HC06-Bluetooth-Serial-Modul-Karti-HC06-BC417-Bluetooth-to-Serial-Port-Module-Breakout-Board%2cPR-1489.html
ömer koman şimdiden cevabınız için teşekkür ederim. Ancak ben rf modülleri yerine aşağıda yer alan linkteki bluetooth ile yapmayı planlıyorum . Sizce bu daha iyi ve uygun olmaz mı
http://www.robotistan.com/HC06-Bluetooth-Serial-Modul-Karti-HC06-BC417-Bluetooth-to-Serial-Port-Module-Breakout-Board%2cPR-1489.html
bluetooth ile p2p serial protokolu kullanırsın ancak, aynı anda sadece 2 cihaz birbiri ile bağlantı kurar. ben daha fazla ölcum noktası varmış gibi anladım. bluetooth da olur ama mesafe fazla uzun olmaz 3-5 metreden sonra bağlantı kaybolur…
Programı derleyince hata veriyor ne yapmam lazım?
dgt11_uno:6: error: ‘dht11’ does not name a type
dgt11_uno.ino: In function ‘void loop()’:
dgt11_uno:20: error: ‘DHT11’ was not declared in this scope
yazılan kodlarda büyük harf küçük harf kullanımına dikkat edin.
şimdi bu programı derleyince boyle bir hata veriyor acaba neden olabilir..
ketch_apr14a:33: error: ‘class dht11’ has no member named ‘fahrenheit’
sketch_apr14a:36: error: ‘class dht11’ has no member named ‘kelvin’
sketch_apr14a:40: error: ‘class dht11’ has no member named ‘dewPoint’
şöyle yapın bütün arduino programlarını kapatın, yazının altındaki örnek programın olduğu rar dosyasını indirin ve içine girin, orada dht11 klasörünü göreceksiniz öyle dursun kenarda, sonra arduino nerede kurulu ise oraya gidin (örnek c:\program files\arduino) ve o arduino klasörü içinde libraries klasörüne gidin(şimdi c:\program files\arduino\libraries içindesin) sonra rarın içindeki dht11 klasörünü kulağından tutulup libraries e sürükleyip bırakın libraries altında dht11 klasörünü görmen lazım. sonra dht11 klasörüne gir oradan examples altındaki programa gir ve compile et sorunsuz çalışacaktır…
yaptıgınızı denedim sıcaklık ve nemi ölçüyor galiba kelvin ve fahreaithttte sorun çıkarıyor… ikinci olarka ethernet kartımı bir türlü kullanamadım .. mac adresi falan atanacak mıs ama benim aldıgım ethernet kartının altında o adres yazmıyor rastgele adres yazdım ama ne yaptıysam olmadı kutuphanedeki bütün ornekleri denedim ama hiçbirinden sonuç alamadım .sizce hata nerden kaynaklanıyor ve mac adresi ile ip adresini neye göre vereceğim.. çok tesekkur ederim
ethernetteki hata mesajlarını görmeden bir şey söylemek mümkün değil. birde aldığınız hata mesajlarını google dan aratın birşeyler çıkar mutlaka
tesekkur ederim ilginiz için.. arduino ethernet shield değil de arduino ethernet V 1.1 almısım ondan dolayı galiba sorun
Merhaba, arduino mega ve 3.2″ tft kullanıyorum.bununla 2 ac servo sürücü kontrol ediyorum. motorları kontrol edebilmem için tft yi gerekli kablolarla arduino dan ayırdım.ekran geliyor fakat dokunmatik çalışmıyor. ground hatası mı yapıyorum anlamadım.bu konuda yardımcı olabilir misiniz. tft yi harici mi beslemem gerekiyor?eğer öyleyse 3.3V mu yoksa 5V ile mi beslemem gerekiyor.
tft nin dokunmatiği bazı sistemlerde analog çalışır adc ile okursun bazılarında i2c veya spi portundan sorgulanarak okursun 4veya 5 telli bir bağlantısı vardır onları kontrol etmekte fayda var. tft ler genelde 3.3v ile çalışırda bazılarının kendi ustunde power dönüştürücusu olablır ne kullanıyorsan datasheetini bul bu değerleri oradan doğrula boşa konuşuyoruz şu anda aslında…
İYİ GÜNLER SAYIN HOCAM BU ASAGIDAKİ KODU YAZDIM EŞİK DEĞERİNİ AŞTIĞI ANDA MAİL ATSIN İSTEDİM.. SU AN İÇİN ÇALIŞIYOR ama durmadan mail atıyor bunu durdurabilirmiyim sadece bir defa atsın istiyorum ve lcd ye bir türlü koddaki ifadeyi yazdıramadım yardımcı olabilirseniz çok sevinirim …TEŞEKKÜRLER
#include
#include
#include
#include
#include
#include // dht11 kütüphanesini ekliyoruz.
#define DHT11PIN 6 // DHT11PIN olarak Dijital 2″yi belirliyoruz.
dht11 DHT11;
const int WAIT = 300; // delay time
byte mac[] = { 0x88, 0xAE, 0x6F, 0x59, 0x89, 0x75 }; //physical mac address
byte ip[] = { 192, 168, 3, 74 }; // ip in lan
byte gateway[] = { 192, 168, 3, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
String smtpServerName = “mail.abdullahbalta.com”;
byte smtpServerIP[] = { 89, 19, 1, 114 };
// Login data for COMCAST (already in MIME Base64 format)
String UserName64 = “YWRtaW5AYWJkdWxsYWhiYWx0YS5jb20=”;
String Password64 = “Q2Z0NjdVam0=”;
// ******************************** Mail information
String Sender = “admin@abdullahbalta.com”;
String Recipient = “bahaddingunduz@hotmail.com”;
String Subject = “GAZ SEVİYESİ TEHLIKELI BOYUTTA “;
String Body = “DEGERLER ESIK DEGERLERIN USTUNDE “;
// ******************************** Arduino network connection
String ServerResponse=””;
EthernetClient client;
//EthernetServer server(25);
//Client client(server, 25);
//Client client;
const int analogInPin = A0;
const int analogInPin1 = A1;// Analog input pin that the potentiometer is attached to
const int ledPin = 5; // LED connected to digital pin 13
const int ledPin1= 2;
const int ledPin2= 3;
const int ledPin3= 4;
unsigned char buzzerPin = 13;
int sensorValue = 0;
int sensorValue1=0;// value read from the sensor
int dhtValue=0;
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
void setup()
{
Serial.begin(9600); // for debug
// get me some ip addressage!
lcd.begin(16,2);
pinMode(ledPin, OUTPUT);
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(13, OUTPUT);
vodSetupCommunications();
// Send the vodSendEmail notification.
}
void loop()
{
sensorValue = analogRead(analogInPin);
sensorValue1=analogRead(analogInPin1);
int chk = DHT11.read(DHT11PIN);
// 2 saniye bekliyoruz. 2 saniyede bir veriler ekrana yazdırılacak.
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(“CH4 =”);
lcd.setCursor(5,0);
lcd.print(sensorValue );
lcd.print(” CO=”);
lcd.print(sensorValue1);
lcd.setCursor(0,1);
lcd.print(“S=”);
lcd.print(DHT11.temperature);
lcd.print(“C”);
lcd.setCursor(7,1);
lcd.print(“NEM=%”);
lcd.print(DHT11.humidity);
delay(1000);
lcd.clear();
if (sensorValue >= 1000)
{
digitalWrite(ledPin, HIGH);
digitalWrite(ledPin1, LOW);
lcd.setCursor(1,0);
digitalWrite(buzzerPin, HIGH);
lcd.print(“CH4 =TEHLIKE”);
delay(10000);
// sets the LED on
vodSendEmail();
// Ensure that port is still open.
vodTestConnection();
}
else
{
digitalWrite(buzzerPin, LOW);
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin, LOW);
lcd.setCursor(1,0);
lcd.print(“CH4 =GUVEN”);
// sets the LED off
delay(1000);
}
// print the results to the serial monitor:
// wait 10 milliseconds before the next loop
// for the analog-to-digital converter to settle
// after the last reading:
if (sensorValue1 >= 1000)
{
vodSendEmail();
// Ensure that port is still open.
vodTestConnection();
digitalWrite(ledPin2, HIGH);
digitalWrite(ledPin3, LOW);
digitalWrite(buzzerPin, HIGH);
lcd.clear();
lcd.setCursor(1,1);
lcd.print(“CO =TEHLIKE”);
delay(10000);
}
else
{
digitalWrite(ledPin3, HIGH);
digitalWrite(ledPin2, LOW);
digitalWrite(buzzerPin, LOW);
lcd.setCursor(1,1);
lcd.print(“C0 =GUVEN”);
delay(1000);
}
}
void beep(unsigned char delayms){
analogWrite(1, 20); // Almost any value can be used except 0 and 255
// experiment to get the best tone
delay(delayms); // wait for a delayms ms
analogWrite(1, 0); // 0 turns it off
delay(delayms); // wait for a delayms ms
}
void vodSendEmail()
{
Serial.println(“Connecting to the SMTP server …”);
//
// If successful connecting to the SMTP server on
// port 587, then pass it the information needed
// to send the email message. Otherwise, display
// a failure message for debugging.
//
if (client.connect(“mail.abdullahbalta.com”, 587))
{
Serial.println(“Connected to the SMTP server …”);
vodEthernetOut(“HELO ” + smtpServerName); /* say hello*/
vodEthernetOut(“AUTH LOGIN “);
vodEthernetOut(UserName64); /* Username*/
vodEthernetOut(Password64); /* Password */
vodEthernetOut(“MAIL From:”); /* identify sender */
vodEthernetOut(“RCPT To:”); /* identify recipient */
vodEthernetOut(“DATA”);
vodEthernetOut(“To: ” + Recipient); /* recipient in message header */
vodEthernetOut(“From: ” + Sender); /* seder name in message header */
vodEthernetOut(“Subject: “+ Subject); /* insert subject */
vodEthernetOut(“”); /* empty line */
vodEthernetOut(Body); /* insert body */
vodEthernetOut(“”); /* empty line */
vodEthernetOut(“.”); /* end mail */
vodEthernetOut(“QUIT”); /* terminate connection */
client.println();
}
else
{
Serial.println(“The SMTP connection has failed!”);
}
}
//********************************************************
//** vodEthernetOut
//** This function will write to the ethernet port
//** and then display the data written as well as any
//** response for debugging purposes.
//********************************************************
void vodEthernetOut(String m) {
// Write the string to the ethernet port.
client.println(m);
// Display the string that was written.
Serial.println(“>>>” + m);
// Pause in order to wait for a response.
delay(WAIT);
// Read and display any response.
vodGetResponse();
}
//********************************************************
//** vodGetResponse
//** This function look for and display any server
//** response for debugging purposes.
//********************************************************
void vodGetResponse() {
if (client.available()) {
char c = client.read();
while (client.available()) { // Store command char by char.
ServerResponse +=c;
c = client.read();
}
Serial.println(“<<<" + ServerResponse);
ServerResponse="";
}
}
void vodSetupCommunications()
{
//
// Variable for this function
//
byte byteIPByte;
//
// Attempt to establish connection to ethernet port.
//
Serial.println("Trying to connect to ethernet port …");
// if (!Ethernet.begin(mac))
// //if (!Ethernet.begin(mac, ip, subnet, gateway))
// {
// Serial.println("Failed to establish DHCP connection.");
// // No point in carrying on, so do nothing forevermore.
// while(true);
// }
/* Non-DHCP : while ( !Ethernet.begin(mac, ip, subnet, gateway) ) */
while ( !Ethernet.begin(mac) )
{
Serial.println("Failed to establish DHCP connection.");
Serial.println("retry …");
}
// Pause to ensure successful connection.
delay(WAIT);
//
// Display the established IP address for debugging
//
Serial.print("My IP address: ");
for (byteIPByte = 0; byteIPByte < 4; byteIPByte++) {
// Print the value of each byte of the IP address.
Serial.print(Ethernet.localIP()[byteIPByte], DEC);
Serial.print(".");
}
Serial.println();
Serial.println("***************************************");
Serial.println();
}
void vodTestConnection()
{
if (!client.connected())
{
Serial.println();
Serial.println("Port closed … reconnecting …");
client.stop();
delay(WAIT);
vodSetupCommunications();
}
}
koda bakmadımda maili atma durumunu bir değişkende tut ve sadece değişken sıfırsa mail at ve her maile gittiğinde 1 arttır, eşik değeri tekrar normale gelince bu mail durumunu tutugun değişkeni sıfırla durum sıfır olduğu için yeniden mail atacaktır programın…
merhaba ben arduino ile RF gömülü sistemi yapmaya çalışıyorum projemde RF sistemi ile ısı ve nem ölçeceğim bana komutlar kısmında yardım edermisiniz şimdiden bana zaman ayırdığınız için çok teşekkür ederim.
proje desteklerini forum kısmında sorarsanız yardım edecek birileri çıkabilir belki… yeni başlayan hiç ilerlememiş projelere kolay kolay destek çıkmayabilir, malzemenizi alıp montajınızı yapın kodunuzu yazın takıldığınız yerleri sorarsanız projenizi bitirme ihtimaliniz olabilir…
Hocam soyle bir sorunum var .. gaz sensoru yaptım arduino ethernetsiz gayet iyi çalışıyor ama ben maail atsın istiyorum .. Arduino etherneti sheildi takınca mail atıyor ama gaz değerleri değişmiyor ne yaptıysam olmadı ..sorun ne olabilir acaba fikriniz var mı teşekkürler
Merhaba . arduino ilk defa kullanıyorum ve bir proje aldım . Arduino mega 2560 da 3 tane dht11 ile 3 ayrı sıcaklık ölçüp sıcaklık değerlerini arduino ya bağlı 3.2 Tft ekranda göstermem gerekiyor. tüm malzemeler elimde yalnız nasıl yapacağımı bilmiyorum yardımcı olurmusunuz
aldığınız malzemeleri tek tek çalıştırın örnekleri deneyin, ekranı bağlayın çalıştırın deneme kodları yukleyin en son hepsini birden bir programda birleştirip projenizi bitirin. bu kadar malzemeyi ezbere almamışsınızdır herhalde …
Programı yazdım sadece 3.2 tft ekrana nasıl aktaracağımı bulamadım
ekrana adını yazdıysan dht11 den gelen değeri de yazarsın bence, bak en yukarıda serial.printte gördüğün şeyleri tftde ki yazma rutini içine koyacaksın olacak bitecek…
Ekranda sadece beyaz ışık var . o kadar örnek yazdım ama bi türlü ekrana yansıtamadım.
Ekranı calıştıramamışın bağlantılarını kontrol et
kabloyla bağlamadım direk ITDB02 ile bağladım .
şu forumda birşeyler anlatmış http://ukreefs.com/index.php?topic=258.0 belki faydası olur.
ben servo motorla ılgılı bı proje yapıyorum arduınoda ama yazılımda sıkıntı var glba calısmıyo yardımcı olur musunuz ?
Merhabalar hocam . bir projem var gas sensoru foruma uye olamadım bir türlü ondan dolayı burdan yazmak istedim . projemi yaptım gaz değerleri belirlenen esik seviyesinin üstündeyken alarm veriyor mail atıyor lcd de değerleri gosteriyor . web te gostersin istiyorum ve temsili ledler kullanarak onları webden yakmak istiyorum ama web kısmını bir türlü beceremedim sonuçları gosterebiliyorum ama led yakamıyorum . acaba bu konuda onerebileceginiz bir sey varmı çok ihtiyacım var
Ve hocam daha onceleri sensorler calisiyor du. Ama su an degerler sabit ya 0 ya 1023 değişmiyor. Su basit potansiyomeyre uygulanmasını yaptım. ayarlar değişiyor potansiyometre ile oynayinca ama. Projede sensörler. Değişmiyor .. acaba arduinonun analog çıkışların da mi sorun vardır hepsini denedim ama olmuyor. Yeni bir tane arduino almak zorunda kalacagim
yukarıdaki şemaya göre bağlantı yapın, programı yukleyip deneyin çalışması lazım. dht11 sensoru analog değil dijital bir sensor olduğundan analog değerler değil analog okumada ya 0 yada 1023 değeri alırsın zaten. yukarıdaki kutuphaneyı kur ve programı yukle çalışır dht11 sensoru…
gaz sensorunun uygulama şemasına uygun şekilde bağlantı yapın. belkı sensoru aşırı gaza boğuyorsunuz ara geçiş değerleri göremiyorsunuzdur. sensorun haznesindekı gazın boşalmasını beklemek lazım. sensor bozulmuşda hatalı çıkış olabılır. gaz sensorlerı ön ısıtma ile çalışır 20sn hatta 1dk bekleyıp sensorun stabıl hale gelmesını bekleyıp olcumlerı o şekılde yapmak gerekebılır bu şartları sağlayıp deneyın.
Özür dilerim hocam belirtmeyi unuttum .. dht değil onu normal kullanıyorum değerleri goruyorum dediğiniz gibi … ben sensor derken MQ serisi gaz sensorleri kullanıyorum projede onlar da analog tan değerleri okuyor bildiğim kadarıyla ..
deneyecegim hocam . Arduinodan kaynaklanmıyor galiba.. çünkü ledleri yakabiliyorum mail atabiliyorum lcd ve serverde değerleri gosteriyorum kolay olsun diye hazır gaz tasıyıcı kartı da aldım .. 4 farklı mq serisi sensor aldım .. ama sensor değerleri bir türlü oturmuyor. olmadı yine denedim şimdi.. Peki ardduino mega alsam acaba uno için yazdgım kodu değiştirmeden mega da da kullanabilirmiyim tekrar kod yazmak için sürem kalmadı ..
YARDIMLARINIZ İÇİN TEŞEKKÜRLER
bahattin uno kodu megadada çalışır ama pinleri birebir aynı bağlaman lazım belki ufak tefek kodunda duzeltme gerekebılır spi ve i2c bağlantı bacakları farklı yerlerde olabılır ozaman gerekli duzenlemelerı yapabılmen lazım.
Arkadaşlar bunu yalnızca LCD ye aktaran çalışan bir program yok mu yardımcı olsanız.Bulduğum programlarda hata veriyor.
sitedeki lcdli programlardan birini yukle buradaki programdaki serial.print(“bla bla” yazan yerleri lcddeki yazdırma rutınındekı yerlere yerleştır çalışır. senın bulup hata veren programların buyuk ıhtımal lcd bağlantılarını yanlış yapıyorsun bacakları telle ve lehımleyerek bağlayın. lcd de adını yaz gor bı kere mutlaka sonra gerısı gelır buradakı programla bırleştirirsin bişey yok. panikten gözünüz kör olmuş hiç birşey görmüyorsunuz düşünemiyorsunuz paniğe luzum yok adım adım gidin 🙂
hocam arduino ethernet ile sms yollamak istiyorum gsm shield olmadan.. bir kaç uygulama baktım internetten .. hem mail atsın hem sms aynı kodda gerçekleştirmek mumkun mudur?
TEŞEKKÜRLER
mümkündür ! şuraya abone oluyorsun https://www.netgsm.com.tr . sonra şuradaki http://toplusms.netgsm.com.tr/Dokuman/api_xlm_gonderim1.asp http post api leri kullanarak internet üzerinden sms atıyorsun hatta sms alıyorsun, 20-30 tl ye 1000 tane sms atabilirsin. istersen telefon numarası yerine BAHATTINSMS diye bir numaradanda sms atabilirsin. kolay gelsin. kayıt olurken kimlik fotokopisi ve size ait bir telefon veya elektrik ft gibi şeyler de istiyorlar. herşeyiniz hazırsa 3-4 saate sms atmaya hazır hale geliyorsun… kolay gelsin.
Ucretsiz bir yolu yokmudur hocam. Extra ozellik olsun diye bitirme projoesinde kullanayim dedim sunum yaptigim anda atsin yeterli benim için sadece ,devamli kullanmayacağım..
falına baktım dayak geliyor (kaçsan iyi olur)
Bilime inan bir insan olarak fala inanmazsiniz diye dusunuyordum .. Ama kacayim ben ne olur ne olmaz 🙂
hocam ben topraktaki nemi ölçüp LCD ekranda görüntülemek istiyorum nasıl yapabilirim.
http://www.robotistan.com/Toprak-Nemi-Algilama-Sensoru,PR-1503.html
tesekurler.peki lcd ekranda nasıl goruntuleye bılırım.kod kısmında yardımcı olabılırmısınız
o kadarına olamıyoruz. bu sizin projeniz biz böyle şeyleri yapalı 20 seneyi geçti sıra sizde şimdi.
tesekurler 🙂
Hocam öncelikle iyi günler arduinodan arduino ile nem sensörü aldık ve toprak nemli ise yeşil az nemli ise sarı nemsiz ise kırmızı işık yanacak bir program yapmamız lazım malzemeleri aldık ama arduino kodları yok elimizde aslen C# programlamayla ilgilendmemin sebebiyle arduinodan tam anlamıyorm ama bu ders için proje vermemmiz gerekiyor yardımcı olabilrseniz çok sevinirim şimdiden kolay gelsin başarılarınızın devamını dilerim iyi günler…
sensoru aldığınız yerden kişiden siteden isteyeceksin kodunu mutlaka arduino kodu vardır oralarda. çok güzel bir kod yazacağınızdan eminim şimdiden kolay gelsin başarılarınızın devamını dilerim.
Dht11 + LCD kodu şu şekildedir:
(bağlantılara dikkat edin veya bağlantı kodunda değişiklik yapın.)
#include
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
#include
dht11 DHT11;
void setup()
{
DHT11.attach(3);
lcd.begin(16, 2);
lcd.print(“Start…”);
delay (500);
}
void loop()
{
lcd.clear();
int chk = DHT11.read();
lcd.print(DHT11.temperature);
lcd.print(“(‘C)”);
delay(1000);
}
dht11 sensörü ile hangi direnci kullanmak pull up olarak uygundur.Kimi diyor 5 kimi diyor 10. Bir de böyle bir direnci neden kullanıyoruz sensörün yanında
sensorun çıkışı açık collektör olduğu için data çıkışını “pull up/yukatı çek” direnci ile +v ye doğru çekmek gerekiyor. dijital sensorler çıkışında 1-0-1-1 şeklinde veri uretiyor sensor sadece çıkışı 0 olduğu zaman çıkışını sürüyor aşağı çekiyor çıkışı, boşta kaldığında port kararsız kalmasın diye bu direnç vasıtası ile çıkışı yukarı çekip 1 değerlerini elde etmiş oluyoruz. direncin değeri ise bu yukarı çıkış hızını belirlemek için faydalı olan birşey eğer sensor kablosu uzun ise düşük değerli bir direnç seçmekte fayda var. sensor data kablosunu çok uzun tutup birde 10k direnç koyarsak bu dirençten +v daha yavaş yukselecedği için dijital sinyalde 1 değerler algılanamaz ve hatalı okuma yapılır. direnç değeri düştükçe dalganın şekli daha duzgun olur ve duzgun okuma yaparsın.
Merhabalar,
benim bir sorum olucakti dht11 e gelen nem ve sicaklik verilerini LCD de nasil gösterebilirim.
bu siteyi kurmamızın en büyük sebebi turkçe içerik olması böylece insanların kendi dillerinde okuyarak bir şeyler öğrenebilmesi idi. anladığım kadarı ile bu yazının altındaki yorumları hiç okumamışınız.
benim yaptığım bi projede aynen lcd de izleyebiliyordum işte kod ve resim
https://www.dropbox.com/s/4jlyexu8x84btow/2014-10-23%2013.12.15.jpg?dl=0
/*
The circuit:
* LCD RS pin to digital pin 46
* LCD Enable pin to digital pin 47
* LCD D4 pin to digital pin 48
* LCD D5 pin to digital pin 49
* LCD D6 pin to digital pin 50
* LCD D7 pin to digital pin 51
* LCD R/W pin to ground
16 -15- 14 – 13 – 12- 11-10-9-8-7 -6 -5 -4 -3 -2 -1
Gnd -5v- potans -46 -gnd- 47- *-*-*-* -48 -49 -20 -51 -5v -gnd
*/
// include the library code:
#include
#define DHT11PIN 33
dht11 DHT11;
// include the library code:
#include
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(46,47,48,49,50,51);
void setup() {
// set up the LCD’s number of columns and rows:
Serial.begin(9600);
lcd.begin(20, 4);
// Print a message to the LCD.
}
void loop() {
Serial.println(DHT11.temperature*20);
lcd.setCursor(0, 0),lcd.print(“TERMOMETRE my_s1m0ne”);
DHT11.read(DHT11PIN);
lcd.setCursor(0, 1), lcd.print(“nem (%): “);
lcd.print((float)DHT11.humidity, 2);
lcd.setCursor(0, 2), lcd.print(“sicaklik (‘C): “);
lcd.print((float)DHT11.temperature, 2);
lcd.setCursor(0, 3), lcd.print(“sicaklik (‘F): “);
float Fahrenheit= (float)(DHT11.temperature)*1.8 + 32;
lcd.print(Fahrenheit, 2);
delay (1000); lcd.clear();
}
DHT11 algılayıcı sını yaklaşık 6 aydır kullanıyorum amatör hava istasyonumda ve bölgemdeki meteoroloji (ve başka cihazlarla) değerleri kalibre ederek okunan değer üzerinde %70 yükselterek ancak doğru sonuç olabilirim. Bu hem iç hemde dış algılayıcı için geçerlidir.
Bu arada rüzgar yönü ve hızı (mekanik tarafı) ili ilgili fiilen çalışan arkadaşlar varsa lütfen görüşelim.
ben şunu anlamadım “okunan değer üzerinde %70 yükselterek ancak doğru sonuç olabilirim.” dht11 ile ilgili mi bu? sensorler bu kadar sapmaz en fazla %5 sapar %70 olması için başka anaormal bir durum vardır, dht11 çin malı bir ucuz bir ürün performansı kötü ise, isviçre yapımı sht11 kullanın(tamamen farklı bir ürün ve teknolojidir) %5 bile hata yapmıyor. şurada dht11 ve sht11 arasındaki bir karşılaştırma devresi videosu var http://www.youtube.com/watch?v=xlNY-qeJUrE . aslında test şekli pek uygun değil doğrusu her iki sensorun bir tup içinde olması ve değeri bilineen nem ve sıcaklığa göre gösterimleri karşılaştırılmalı.
Sapma yüzdesi konusunda haklısınız ve ne garip ki istediğim sonuçları veriyor.
Ayarlama “calibration” ile ilgili çeşitli kaynaklardan faydalandım ( örneğin http://publiclab.org/notes/btbonval/07-14-2014/calibrating-dht11-sensors ve http://forum.arduino.cc/index.php/topic,96470.0.html) fakat değişen fazla bir şey olmadı.
Yanlış temel üzerine kurulu herhangi bir şey sonunda hata verecektir düşüncesi ile,
SHT11 ile ilgili bende meraklandım ve elime geçer geçmez deneyeceğim.
Selamlar
Merhaba Ben aşağıdaki hatayı almaktayım neden olabilir
teşekkürler
DHT11_Ornek_Program:8: error: ‘dht11’ does not name a type
DHT11_Ornek_Program.ino: In function ‘void loop()’:
DHT11_Ornek_Program:23: error: ‘DHT11’ was not declared in this scope
dht11 i bazı yerde büyük bazı yerde küçük yazmışsın, büyük yazman lazım ayrıca dht11 kutuphanesini de arduinoya eklememişsin yukarıda yazıda ve yorumlarda bol bol anlatılmış, bakarsın bi ara.
hocam meraba bi projem var ardoino nano ile sıcaklık ve nem tespiti bunun devre şemasını , mağzemelerini , yapılış seklini bulamadım bana bi yardımcı olurmusunuz
forumdan da sorun yapan vardır…
ardoino nano ile sıcaklık ve nem takip sistemi yapan varmı bi yardımcı olun lütfen
foruma gelin yapan vardır illaki…
Hocam forum neresi bi link atarmısınız lütfen
araştırma kültürü olmayan birinin elektronikle hatta arduino ile işi olmaması lazım. bu sitede forumu da bulamıyorsan başka bir işle uğraşın bence…
merhabalar…
Yapmak istediğim devre,
DHT11 sıcaklık ve nem sensörünün 24 C sıcaklığı algıladıktan sonra Röleyi harekete geçirerek yani ‘HIGH’ çalışmasını sağlamaktır. 24 C altındaki sıcaklıklarda ise ‘LOW’ olmasıdır.
Devremin kesin ve net doğru olduğunu düşünüyorum bununla ilgili Seri Port haberleşmesinde sensörden sıcaklık değerleriyle ilgili haberleşme sağlamaktayım.
Röle devresi için de deneyler yaptım ve röle çalışmakta.
Forumunuzu dikkatle inceledim ipucu vermesi açısından ne LM35’le ne de SHT11’le yapılmış bir röle sürme konusu bulamadım. çözüme ulaştıktan sonra bu konuyu forumunuza da taşımayı düşünüyorum. Fakat Aşağıda kendi imkanlarımla oluşturduğum kodun çalışmasını sağlayamamaktayım. Daha doğru bir tabirle Sensör algıladığı sıcaklıktan sonra röleyi harekete geçirememekte. Kod şu şekildedir, 24 C ve üstü sıcaklığı algıladığında harekete geçen, ancak bu değer algılanamadığında harekete geçmeyen bir devre yapmak istiyorum.
Not: 5V röleye yine 5V bir Fan bağlıdır
#include // kütüphaneye ekledik
#define DHT11PIN 2 // 2 pini DHT11 e bağlı
int role = 13;
dht11 DHT11;
int sicaklik;
void setup()
{
pinMode(role, OUTPUT);
}
void loop()
{
Serial.print(“Sicaklik (Celcius): “);
Serial.println((float)DHT11.temperature, 2);
sicaklik = DHT11.temperature;
if(sicaklik >= 20)
{
digitalWrite(role,HIGH);
}
else if(sicaklik <= 20)
{
digitalWrite(role,LOW);
}}
Durum bilgisi: Şu an devreye 5V’luk gerilim uyguladığımda devre sensörü tanımadan tam gaz çalışıyor
if DHT11 Celcius >= 24 Relay(HIGH);
else Relay(LOW)
Bana devreyi yazabilir misiniz? DHT11 24 dereceyi algıladığında Röle harekete geçecek.
platformunuz sınıfta kaldı gözümde.
sayfayı çok daha ilgili ve bilgili kişiler yönetmeli
desteğiniz için teşekkürler. saygı amacıyla yazının sahibinin sorulan sorulara cevap vermesini bekliyoruz, daha sonra diğer yazarlardan isteyen cevaplayabiliyor. forum kısmmımz daha aktif oradan da soru sorulması daha verimli oluyor. (ben kişisel olarak dht11 sensörünü verimli faydalı ve işe yarar kalitede bulmuyorum kullanmıyorum)
Devreyi paket mi yapalım burada mı yersiniz?
Lakayt, kendini bilmez ve talihsizce karşılıyorum bu cevabı
merhabalar bende kendi projemde gsm shield kullanıyorum sıcaklık belli bi değere ulasınca role aktif ettim sensor sonuclarını sadece serial monitor yada lcd ekrandan değilde birde sms olarak almak istiyorum bunun için birde gsm shield kullanıyorum. sms olarak hazır metin gonderebiliyorum ama ben bunun yerine sensor cıkıslarını gondermek istiyorum yani metin değişken olacak bunu nasıl yapabiliirim yardımcı olursanız cok sevinirim.
kısa bir çalışan sms atma programı yaz buraya koy değişken nasıl yapılır gösterelim.
#include
#include “SIM900.h”
#include
#include “sms.h”
SMSGSM sms;
int numdata;
boolean started=false;
char smsbuffer[160];
char n[20];
dht11 DHT11;
#define DHT11PIN 8
int deg = 0;
int led1 = 13;
int led2 = 12;
void setup()
{
Serial.begin(9600);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
}
void loop()
{
int chk = DHT11.read(DHT11PIN);
Serial.print((float)DHT11.humidity, 2);
Serial.print(“,”);
Serial.print((float)DHT11.temperature, 2);
Serial.println();
delay(2000);
deg=(float)DHT11.temperature;
if (deg 22.00)
{
digitalWrite(led2, HIGH);
delay(1000);
digitalWrite(led1, LOW);
delay(1000);
Serial.begin(9600);
Serial.println(“GSM Shield testing.”);
if (gsm.begin(2400)){
Serial.println(“\nstatus=READY”);
started=true;
}
else Serial.println(“\nstatus=IDLE”);
if(started){
if (sms.SendSMS(“0123456789”, “Arduino SMS”))
Serial.println(“\nSMS sent OK”);
}}}
kodun hepsini yazdım kullanmak isteyen arkadaslar alabilsin diye
algoritmamın mantıgı kısaca ;iki saniyede bir ölçüm alacak referans değerimden sonra yeşil led sonp kırmızı led aktif olacak ve sms atma protokolüne girecek ve girilen numaraya sms atacak delay yada baska bişey eklemedim o yuzden mesaj atma işlemi sıcaklık normal değerlere ulasnca duracak rolelerim elime ulaşmadığı için şimdilik ledlerle test yapıyorum malzemeler ulasıncada rolelerle yapacam devreyi işin en kolay kısmı burasıydı sanırım.
şu değişkeni tanımla
string mysmsmsg
sondaki
if(started){
if (sms.SendSMS(?0123456789?, ?Arduino SMS?))
Serial.println(?\nSMS sent OK?);
}
kısmını aşağıdaki gibi değiştirirsen duruma göre değişen sms atmış olursun
mysmsmmsg=(float)DHT11.temperature;
if(started){
if (sms.SendSMS(?0123456789?,mysmsmsg))
Serial.println(?\nSMS sent OK?);
}
Merhaba Ömer bey,bir uygun fiyatlarla toplu sms sitesi buldum.
bu sitede ki api kodlarını ile http post api leri kullanarak nasıl entegre edip kendimize sms gelmesini sağlayabiliriz. tüm yorumları okudum. çok zorlandım. yardımcı olacak birisi var ise yorum yapabilir mi?
yazının konusu dışındaki isteklerinizi forumdan sorun.
kodları dediğiniz gibi yapıp derlediktern sonra denedim fakat bu defa da bana “mysmsmsg” diye mesaj gonderiyo yani => mysmsmmsg=(float)DHT11.temperature satırı işlenmemiş hatam nerde farkedemiyorum.
iyi günler hesapladığım açı değerlerini pot ile okumak istiyorum arduino’da .Potu açı ölcer olarak kullanacağım pot kaç derece dönebilir? nasıl kod yazabilirim? yardımcı olabilir misiniz?
pot adc analogRead ile ölçülür 0-1024 arasında değer alır
açı 0-360 derece aralığını kullanır
arduinoda map komutu dönüşümleri sağlar
myAcim = map(adcVal, 0, 1024, 0, 360);
http://arduino.cc/en/reference/map
pot 300 derece dönebiliyor diye biliyorum bu 360 yazınca yanlış hesaplanmış olmaz mı ? hesapladığım açı değerlerine göre pottan okuyup hesapladığım açıya göre döndüreceğim ve açısal konuma gelecek.
300 derece açı yeterliyse 300 kullanabilirsin tabiki.
sorunum hala devam ediyo farklı yollar denedim ama basaramadım hala yardımınızı bekliyorum aydınlatın beni lütfen:)
sıcaklık ve nem ölçer devreyi sht 11 ile tasarladık. ölçümler yapılıyor. ayrıca ortalama ve max min değerleri bulup lcd ye yazdrmak istiyoruz. sensörde ölçülen değeri bir diziye atarak max ve min değerleri ortalama değerleri bulmaya çalıştık fakat sorun yaşadık. hem ilk ortalama değer ‘inf’ olarak çıktı veriyor. bir sonraki değere geçerken de satır sonundan yazdığı için ne yazdığını göremiyoruz. yardımcı olursanız çok sevinirim.
mantığı şöyle kurun bir min için bir max için değer tut okuduğun değer minden küçükse min değeri güncelle maxdan buyukse de max ı guncelle bunu böyle halletmişindir zaten. geriye ortalama kalıyor son okunan dğeri saklarsın bir sonraki ölçüm peryodunda son ukuduğunla önce okuduğunu toplarsın 2 ye bölersin 🙂 butun minmax ve ortalam değikenlerin tanımı float veya double olsun ama
Öncelikle Sayın Ömer KOMAN hocam sorum size olacaktır.
Benim üzerinde çalışmış olduğum arduino ile havadaki nem ölçümü üzerinde bir proje bulunuyor ve ben bu projemi tamamladım lcd ekranda değeri görüntülüyor sadece C# bağlantısı kaldı.
Nem sensörü aktif halde çalışıyor şuanda ama ben bu projemi C# koduyla çalıştırmak istiyorum.
Bu konuda düşünceleriniz nelerdir fikrinizi almak ve bu konuda kısa sürede yardımınızı bekliyorum şimdiden teşekkür ederim.
bu sayfadaki yazıyı ve c# kodları kullanmanıza engel bir şey yok. hepsi denenmiştir kullanın hayrını görün kolay gelsin. sorun çıkarsa buradan yazın yine nerede hata veriyor nerede takılıyorsunuz. acil ve acil olmayan hiç bir projeye destek verecek hiç vaktim olmuyor sitedeki yazılar veya forumda da çok güzel çözümler var. biraz araştırırsanız çok kısa sürede bitirebilirsinz projenizi…
Ben arduino ile sıcaklık ve nem oranına göre fan çalıştırma projesi yapıcam ama konrolleri c# la yazılmış bir arayüzde oranları (Sıcaklık ve Nem Oranları) görüp benim belirlediğim oranlara göre fan çalışacak.Yardım edebilecek birileri varmı acaba.
sitede c# kulanımı ile ilgili yazılmış örnek var oraya bir bakın. yukarıdaki mevcut programı deneyip kurcalayarak ilerleyebilirsiniz fazla sürmez. foruma da sorabilirsiniz ayrıca…
Selamun aleykum ben arduıno kullanıyorum bi projem var ama cevabını bir türlü bulamıyorum. sensörün arduınoya nasıl baglıyacagımı vede kod olarak nasıl yacagımı bilmiyorum.
Sorum: Yeşil ve Kırmızı renkte iki tane led var.İlk başta kırmızı olan led yanık. bu ledlerin yanına yanyana iki tane sönsör baglıyacagım. sensörlerin ‘her ikiside’ cisimi algıladıgında yeşil yanıcak.cisimi sönsörlerin önünden çektikten 5 saniye sonrada kırmızı led tekrar yanıcak.bu durumu sürekli yapıcak. YARDIM EDERSENİZ ÇOOOK BÜYÜK HAYIR DUASI ALIRSINIZ Teşekkür ederim şimdiden
http://arduinoturkiye.com/sifirdan-baslamak/
http://arduinoturkiye.com/arduino-ogrenirken-yol-haritasi-1/
http://arduinoturkiye.com/arduino-temel-baglantilar-arduino-basic-connections/
Hocam iki butonu seri olarak bağlamak istiyorum ikisine basılmadan ledin yanmasını istemiyorum.
if(digitalRead(BUTTON1) == HIGH , (BUTTON2) ==HIGH)
{
digitalWrite(LED, HIGH);
}
şeklinde yazılabiliyor mu? eğer yanlışsa nasıl yazıldığını gösteririmisiniz?
hiç kod yazmadan 2 butonu arka arkaya
+5v—–x——x—–arduino pin—–[10k]—gnd
şeklinde bağla aynı anda ikisine basmazsan kodun hiç bir zaman high olmaz. boşuna pin harcama.
O da tmm hocam. bi sorum daha olucak arduınoyu 12 v luk gerilimle beslesek sorun olur mu?
sadece arduino adaptör girişinden 12v uygulayaın başka hiç bir pine 12v sakın vermeyin koruma da yok direk yanar moduller. konu dışı sorularınızı da forum kısmından sorun bundan sonra…
const int sagileri = 9;
const int saggeri = 8;
const int solileri = 12;
const int solgeri = 13;
const int solenable = 11;
const int sagenable = 10;
/*
trigPin1 ve echoPin1 = soldaki uzaklık sensörümüz
trigPin2 ve echoPin2 = öndeki uzaklık sensörümüz
trigPin3 ve echoPin3 = sağdaki uzaklık sensörümüz
*/
int trigPin1 = 6;
int echoPin1 = 7;
int trigPin2 = 4;
int echoPin2 = 5;
int trigPin3 = 2;
int echoPin3 = 3;
float uzaklik(int trigPin, int echoPin){
float olcum;
float cm;
digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
olcum = pulseIn(echoPin, HIGH);
cm= olcum /29.1/2;
return cm;
}
void ileri(int hizsag, int hizsol){
analogWrite(sagenable, hizsag);
digitalWrite(sagileri,HIGH);
digitalWrite(saggeri,LOW);
analogWrite(solenable, hizsol);
digitalWrite(solileri, HIGH);
digitalWrite(solgeri,LOW);
}
void geri(int hizsag, int hizsol){
analogWrite(sagenable, hizsag);
digitalWrite(sagileri,LOW);
digitalWrite(saggeri, HIGH);
analogWrite(solenable, hizsol);
digitalWrite(solileri, LOW);
digitalWrite(solgeri, HIGH);
}
void dur()
{
digitalWrite(sagileri, HIGH);
digitalWrite(saggeri, HIGH);
digitalWrite(solileri, HIGH);
digitalWrite(solgeri, HIGH);
}
void setup(){
pinMode(sagileri,OUTPUT);
pinMode(saggeri,OUTPUT);
pinMode(solileri,OUTPUT);
pinMode(solgeri,OUTPUT);
pinMode(sagenable,OUTPUT);
pinMode(solenable,OUTPUT);
pinMode(trigPin1, OUTPUT);
pinMode(echoPin1,INPUT);
pinMode(trigPin2, OUTPUT);
pinMode(echoPin2,INPUT);
pinMode(trigPin3, OUTPUT);
pinMode(echoPin3,INPUT);
}
void loop(){
while( uzaklik(trigPin2, echoPin2 ) 10 ){ // soluna bak
ileri(150,0); // engel yoksa sola dön
delay(500); // 90 derece dönene kadar geçecek süre. Bu süreyi kendinize göre ayarlayın
dur(); // dur
delay(1000);
}else {if(uzaklik(trigPin3, echoPin3) > 10 ){ // sol dolu ise sağa bak
ileri(0,150); // engel yoksa sağa dön
delay(500); // 90 derece dönene kadar geçecek süre. Bu süreyi kendinize göre ayarlayın
dur(); // dur
delay(1000);
}else { // sağ ve solda engel varsa geri gidip dönelim
geri(100,100);
delay(1000);
ileri(150,0);
delay(500);
dur();
delay(1000);
}
hocam labirent çözen robot yapıcam programım bu ama projeyi derlerken arduınoda – ‘ Proje.ino:90:1: error: expected ‘}’ at end of input ‘ hatası alıyorum bu ne oluyor ve çözümünü nasıl yardımcı olursanız sevinirim.
yazıların altını alakasız sorularla işgal etmeyin foruma gelin sorun hayret birşey.
Foruma tıklıyorum nereden soracağımı bilmiyorum yardımcı olursanız oradan sorarız.
üye olacaksınız ve sağda start discussion butonuna basıp. konu başlığı ve açıklamalarını kodunuz koyup sorunuzu sorabılırısnız..
Merhaba, biz sıcaklık sensörü tasarlamayı düşünüyoruz nasıl yapacağımız hakkında yardıma ihtiyacımız var. Kafamızdaki plan arduino ile led ekrana dereceyi yazdırıp,belirli aralıklarda (5-10 derece) farklı renkte ledler yakmak istiyoruz.Mesela 15 derece iken sarı, 30 derece iken kırmızı gibi. Yardımlarınız için şimdiden teşekkür ederiz
dht11 sensoru alın unoyu alın 3 adet veya kaç tane lazımsa ledi alın yukarıdaki kodu yazın dht11 i şekildeki gibi bağlayıp örneği çalıştırın, çalıştırabildiysenız sonra 3 ledi bağlayın kodunuzda bu ledleri yakmaya çalışın yapamazsanız forum kısmına geliniz oradan sorunuz.
Hocam merhaba yukarıdaki verdiğiniz kod ile sensörümden ölçüm alabiliyorum 5110 ekranıma aldığım sıcaklık değerini yazdırmayı denedim bunun için birakaç satır kod yazdım ama doğru birşekilde aktaramıyorum serial monitordaki değeri 5110 lcd ekranıma kodlarımı bir kontrol edermisiniz.
// Arduinoturkiye.com DHT11 Test Programı
// Yazar: Joseph Dattilo (Virtuabotix LLC) – Version 0.4.5 (11/11/11)
// Düzenleme: İsmail BUÇGÜN
#include
#include // dht11 kütüphanesini ekliyoruz.
#define DHT11PIN 2 // DHT11PIN olarak Dijital 2’yi belirliyoruz.
dht11 DHT11;
LCD5110 myGLCD(8,9,10,11,12);
extern uint8_t SmallFont[];
extern uint8_t MediumNumbers[];
extern uint8_t BigNumbers[];
int sicaklik = 0;
void setup()
{
pinMode(2, INPUT);
pinMode(7, OUTPUT);
digitalWrite(7,HIGH);
myGLCD.InitLCD();
myGLCD.setContrast(60);
Serial.begin(9600); // Seri iletişimi başlatıyoruz.
Serial.println(“Arduinoturkiye.com DHT11 Test Programi”);
}
void loop()
{
myGLCD.clrScr();
myGLCD.setFont(SmallFont);
myGLCD.print(“SICAKLIK:”,14,3);
sicaklik = analogRead(sicaklik);
sicaklik = map(sicaklik,0,1023,0,100);
myGLCD.setFont(BigNumbers);
myGLCD.printNumI(sicaklik,25,20);
// Bir satır boşluk bırakıyoruz serial monitörde.
Serial.println(“\n”);
// Sensörün okunup okunmadığını konrol ediyoruz.
// chk 0 ise sorunsuz okunuyor demektir. Sorun yaşarsanız
// chk değerini serial monitörde yazdırıp kontrol edebilirsiniz.
int chk = DHT11.read(DHT11PIN);
// Sensörden gelen verileri serial monitörde yazdırıyoruz.
Serial.print(“Nem (%): “);
Serial.println((float)DHT11.humidity, 2);
Serial.print(“Sicaklik (Celcius): “);
Serial.println((float)DHT11.temperature, 2);
Serial.print(“Sicaklik (Fahrenheit): “);
Serial.println(DHT11.fahrenheit(), 2);
Serial.print(“Sicaklik (Kelvin): “);
Serial.println(DHT11.kelvin(), 2);
// Çiğ Oluşma Noktası, Dew Point
Serial.print(“Cig Olusma Noktasi: “);
Serial.println(DHT11.dewPoint(), 2);
// 2 saniye bekliyoruz. 2 saniyede bir veriler ekrana yazdırılacak.
delay(2000);
elimde 5110 lcd yok deneyemem şu an. 5110 lcd yi daha önce kullanıp denedinizmi bilmiyorum önce onu bir deneyin ekrana yazdığınız mesajlar yerine dht11 programındaki mesajları yollayacaksınız. şuradaki 5110 örneğini bir deneyin http://www.avdweb.nl/arduino/hardware-interfacing/nokia-5110-lcd.html yazıda 5110 lcd lerin pek iyi çalışmadığından bahsedilmiş ekran bağlantı noktlarında sorun çıkabiliyormuş…
ben gaz sensör devresi yapmak istiyorum bilgi verebilir misiniz
yazıların altına ilgisiz konular girmeyelim. sitenin forum kısmına gelin.
Direnç kullanmadan devreyi arduino ile gerçekleştirmenin bir yolu var mı acaba?
Ya da kullanmazsak ne olur?
direnç gerekiyor. burada sensorun data çıkışı ile +5v arasına direnç konması lazım bu tipteki bağlantılarda sensorun çıkışı dijital olduğu için çıkışta 1-0-1-1-0-0 gibi bir veri akışı olur sensor çıkışına eğer o dirençi koymazsan sensor çıkışı 1 olduğu durumlar oluşmaz. o direnç sayesinde sensorun çıkışı hızlı bir şekilde 1 olur. pull up yani yukarı çekme dirençi deniyor buna. sorana kadar bunu denesen daha çabuk öğrenirdin aslında
Merhabalar bu ise yeni merak saldim simdi dht11 ucuz demisiniz fiyati 35 tl daha ucuz olcum araligi yuksek ve dogruluk yuzdesi yuksek bi sensor onerebilirmisiniz bide lcd ekranim 2*8 olarak yapabilirmiyim saygilar
35 tl nereden buldunuz fiyatı bılemıyorumda robotistan fiyatı sensor olarak 2.5 usd modul olarak alayım derseniz 4.5usd +kdv http://www.robotistan.com/DHT11-Isi-ve-Nem-Sensoru-Kart,PR-2171.html
daha ucuzu derseniz direnc.net e bakın http://www.direnc.net/DHT11-SICAKLIK-VE-NEM-SENSORU,PR-7066.html
malesef elektronikte canımızın istediği gibi olamıyor bazı malzemeler projelerin ucuza çıkması için standart malzemelerden yol alınız. 2×16 lcd 15 tl iken 2×8 lcd 55tl gibi bir fiyat olma ihtimali var. http://www.direnc.net/2×16-YESIL-LCD-DISPLAY-TC1602B,PR-23592.html
İleride projenizi ticarileştirdiğiniz zaman istediğiniz lcd yi bulup kullanırsınız nasılsa.
iyigünler hocam bu dht sensörü lle ölçülen değeri 2×16 lcd ye aktarmak için nasıl bir yol enerim yardımınız için şimdiden teşekkürler hocam
sitemizdeki 2×16 lcd kullanımı yazılarını inceleyin o programları kurun buradaki dht kodunu ekleyin…
merhaba hocam benim projem arduino nano ile dht11 ve mq7 sensörlerini kullanarak fan çalıştırma yyaklaşık 1 aydır ugraşıom ama bi arpa yolu bile katedemedim yardımcı olabilirmisiniz bu konu hakkında ? iyi çalışmalar şimdiden teşekkürler
yardımcı olamam vaktim yok ama seçtiğin sensorleri tek tek çalıştır sonra bunları birer birer tek programda birleştirmeye çalış olmazsa foruma gel oraya da birleştirdiğin programı koy.
Merhabalar hocam.
DHT11 sensör ile hem ısıyı hem nem değerlerini okuyabiliyoruz fakat uzun zaman araştırmalar yapmama rağmen hem ısıyı hem nemi kontrol eden bi skechi bulamadım. Konu hakkında yardımcı olabilirmisiniz. Şimdiden teşekkür ederim..
nemi kontrol etmek zor, nem çoksa hem ortamı ısıtacaksınız hemde havalandırcaksınız. nem azsa ortama nem verecek bir duzeniniz olmalı belkide suyu ısıtıp ortamde nemin yukselmesini sağlayacaksınız. sıcaklık kontrolu daha kolay buna göre ilerleyin işte. foruma gelin sorun…
Hocam
bu devreyi çalıştırdım fakat noktadan sonraki hassasiyeti gösterebilmemiz için ne yapabiliriz.saygılarımla
komutları kullanırken tüm fonksiyonlarını öğrenmeye bakın serialprint şurada anlatılıyor http://www.arduino.cc/en/Serial/Print
Serial.println(1.23456, 3) çıktısı “1.234”
Hocam özür dilerim bir türlü virgülden sonrasını getiremedim. Hassas ölçüm yapabilmek adına sanırım kütüphane içerisinden değiştirmek gerek ama nasıl bir fikir verebilir misiniz?
saygılar
yukarıdaki programda zaten noktadan sonra 2 hane gösteriliyor nesi yapamıyorsun
Serial.print(“Sicaklik (Celcius): “);
Serial.println((float)DHT11.temperature, 2);
yukarıdaki programı birebir yaz değişken tiplerini değiştirme.
Hocam demek istediğim. örnek değer okuyorum 20C sonra ısıya tabi tuttuğum zaman 20,3-20,5 gibi değil de 20c den 21 oluyor , noktadan sonraki değerler her zaman sıfır bunu demeye çalışmıştım.
bir süre siteye giriş sağlayamamıştım kusura bakmayın!!
programını koy bakalım yazdıklarımı hiç okumamışın yada çok dikkatsizsiniz…
Hocam sadece lcd ekledım. 30.00C-31.00C-32.00C olarak artıyor. 31.15 gibi artma veya düşme olmuyor. noktadan sonra hep sıfır hocam burasını çözemedim.
saygılarımla
// Arduinoturkiye.com DHT11 Test Programı
// Yazar: Joseph Dattilo (Virtuabotix LLC) – Version 0.4.5 (11/11/11)
// Düzenleme: İsmail BUÇGÜN
#include
#include // dht11 kütüphanesini ekliyoruz.
#define DHT11PIN 2 // DHT11PIN olarak Dijital 2’yi belirliyoruz.
//const int analogInPin = A0; // Analog input pin that the potentiometer is attached to
//const int analogOutPin = 5; // Analog output pin that the LED is attached to
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
dht11 DHT11;
float deg = 0;
float deg1 = 0;
void setup()
{
lcd.begin(16,2);
Serial.begin(9600); // Seri iletişimi başlatıyoruz.
pinMode(13, OUTPUT);
}
void loop()
{
// Bir satır boşluk bırakıyoruz serial monitörde.
Serial.println(“\n”);
// Sensörün okunup okunmadığını konrol ediyoruz.
// chk 0 ise sorunsuz okunuyor demektir. Sorun yaşarsanız
// chk değerini serial monitörde yazdırıp kontrol edebilirsiniz.
int chk = DHT11.read(DHT11PIN);
deg=((float)DHT11.temperature)/1000;
deg1=deg+1;
lcd.clear();
lcd.setCursor(0,0);
lcd.print(“NEM ORANI=”);
lcd.setCursor(11,0);
lcd.print(deg1);
// lcd.print((float)DHT11.humidity, 2);
lcd.setCursor(0,1);
lcd.print(“SICAKLIK=”);
lcd.setCursor(10,7);
lcd.print((float)DHT11.temperature, 2);
if (deg >= 27.00){
// turn LED on:
digitalWrite(13, HIGH);
}
else {
// turn LED off:
digitalWrite(13, LOW);
}
delay(1500);
// Sensörden gelen verileri serial monitörde yazdırıyoruz.
Serial.print(“Nem (%): “);
Serial.println((float)DHT11.humidity, 2);
Serial.print(“Sicaklik (Celcius): “);
Serial.println((float)DHT11.temperature, 2);
Serial.print(“Sicaklik (Fahrenheit): “);
Serial.println(deg1 );
Serial.print(“Sicaklik (Kelvin): “);
Serial.println(DHT11.kelvin(), 2);
// Çiğ Oluşma Noktası, Dew Point
Serial.print(“Cig Olusma Noktasi: “);
Serial.println(DHT11.dewPoint(), 2);
// 2 saniye bekliyoruz. 2 saniyede bir veriler ekrana yazdırılacak.
delay(2000);
}
uğur kodunda serial.print in float sayılarda decimalden sonra kaç hane gostereceği ayar var yazmışın zaten o kısım çalışıyor mu?
lcd.print fonkisyonunda float gosterim yokmmuş şimdi baktım.
lcd gosterimi için şu ornekte float to string donusumu var bir deneyin birinci ornek iyi http://www.arduino-hacks.com/float-to-string-float-to-character-array-arduino/
16*2 lcd ekranımda arka aydınlatma kullanınca lm35 sıcaklık sensöründen gelen verileri yanlış okuyor. 30lardayken 45e vs çıkıyor. geri kalan bütün verileri normal yazıdrmaya devam ediyor ama arka aydınlatmayı kullanınca niye sapıtıyor anlayamadım..
genel olarak devrende besleme problemi var sanırım 5vda aşırı voltaj düşümü oluyor lcd aydınlatmasına direk5v bağlanmaz arada 10-20ohm gibi bir dirençle seri bağlamak lazım. yada lm35 bacak bağlantılarını kontrol et
Bende uno ile dht11 i okuyorum fakat değerler tam sayı olarak geliyor örnk :24.00 ondalıklı değer gelmiyor hiç bir şekilde bir ayarı mevcut mu acaba yoksa çok hassas olmadığı için mi bu şekilde?
teşekkürler
serial.print komutunda float değerlerin decimal gosterim opsiyonu var ona bak. lcd.printte bu opsiyon yok float to string donusum yapıp sonucu lcd de basmalısın şu orneğin birincisini dene http://www.arduino-hacks.com/float-to-string-float-to-character-array-arduino/
Teşekkürler Hocam Sağolun
Merhaba Ömer Bey,
Bu sayfada yer alan tüm içeriği okudum, sabrınızdan ve yardım etme gayretinizden dolayı size teşekkür etmek istedim. İyi günler.
merhabalar ben DHT11 ile sıcaklık ve nem ölçücem ve ölçülen değeri İ2C LCD’de göstericem yardımcı olursanız sevinirim
hangi i2c lcd de göstereceksenin onun kutuphanesi ni ve yazılmış kod örneğini bulursanız işiniz zor değil…
dht11 sensörü ile sıcaklık degerlerini okuyorum
bu okunan degerleri word ortamını aktarıp nasıl kayıt edebilirim
yardım ederseniz çok sevinirim
orhan sen bu verileri zaten seriporttan pc ye yolluyorsun onu yaptın mı? cunku bizim işimiz orada bitiyor ! verinin arduino dışında sunulması bizim konumuz değil ama sana fikir olması açısından şöyle diyeyim sitede c# la seriporttan okunan verileri işleyebileceğin örnek var pc tarafında c# içinden bu okuduklarını word dosyası şeklinde kaydetme yollarını deneyebilirsin.
bu işler hep böyledir tam arduino öğenmeye başlarsın baktın olmuyor birde pc de c# ogrenmen gerekecek şimdi de hay allah…
Selamın aleyküm abi ben oda sıcaklığı kontrolü yaptım bunada belli bir dereceye gelince motorun dönmesini istiyorum bana bi yardimci olursaniz çok sevinirm😇
aleykum selam kardeşim, sitede motor surucu yazısı vardı oradan motor surme kodunu bu programa ekleyiverirsin ama sana zor gelebilir, sen eğer dereceyi okuduysan mesela hedeflediğin dereceden buyuk bir sıcaklık geldiyse serialmonitrode once bir ekrana mesaj yolla bunu yapman 15sn filan surecektir hatta şoyle bir satır yazacaksın “eğer sıcaklık > hedef_sıcaklık ekrana şunu bas” bunu yaptıysan sistemin mantığını anlamışın demektir. şimdi motor surmek için istersen bir transistorle role sur(roleye motor bagla) istersen bir ledi sur yontem aynı farketmez yazacağın kodda motoru surdugun transıtor veya ledi bağladığın digitalpini HIGH yapacaksın olacak bitecek. allahın ismiyle sitemize gelen musluman kardeşimiz çalışkan bir mumindir sonucta, sag ust kosedeki arama alanına motor ve role diye yazarak bu sitedeki bu konuda yazılmış yazıları şıp diye bulacaktır maşşalah. hatta bununla da yetinmeyip google muhteremden arduino motor driver diye de aratma azmini gosterecektir inşallah. allahu ekber, hadi goreyım aslanımı…
// LCD Kütüphanesini içeri al
#include
// LCD Kütüphanesini bağlanan pin’ler ile başlat.
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int SicaklikPin = 0; // LM35 sensöre bağlı pin (Analog 0)
int OkunanDeger; // Analog 0’dan okunacak değer (0-1023) LM35’in vereceğı en büyük okuma değeri 1V=205 olacak.
int Sicaklik; //
void setup() {
// LCD’yi 16 sütün, 2 satır olarak başlat
lcd.begin(16, 2);
// Birinci satıra “Oda Sıcaklığı:” yaz.
lcd.print(“Oda sicakligi:”);
}
void loop() {
OkunanDeger = analogRead(SicaklikPin);
Sicaklik = map (OkunanDeger, 0, 205, 0, 100); //(0-1v 0-205 okuma değerini, 0-100 sıcaklığa dönüştür.)
// İmleci 2. satıra getir.
// Not: Satır: 0, Satır 2: 1 olarak geçer. Satır sayıları 0’dan başlar.
lcd.setCursor(0, 1);
lcd.print(Sicaklik); // hesaplanan sıcaklığı yazdır.
lcd.print(” derece”); // devamına birimi olan derecece yaz.
delay (1000); // Sonraki ölçümden önce 1 saniye bekle.
}
Buna eklermisin abi okuldan performans aldim ugrasiyorum ama yapamiyorum bide yapabilirken baglantilari atabilirmisin sinavlara denk gelmed n yapasim var
programına 3 satır ekleyeceksin neresi oldugunu kendin bul artık.
pinMode(13, OUTPUT);
digitalWrite(13,LOW);
if (Sicaklik>=30){digitalWrite(13,HIGH);}
zerre kadar emeğin olsun istiyorum projende… başka bişey sorma cevap vermeyeceğim
iyi günler..tek arduino için hem nem hemde su seviyesi sensörü kullanabilir miyim? 5v girişi 2si için nasıl kullanırım?
tek arduino için bir çok sesnor aynı anda kullanılabılır yeterki pin çakışması ve kullanmanma yontemlerı bırbırlerı ıle uyumlu olsun.
her sensoru tek tek kendi kodları ile test edın sonra hepsini birleştirin
forum agelin sorun daha hızlı ılerlersınız…
Merhabalar
ısı ve nem sensörüyle ölçüm yaptığımızda sürekli 300.20 derece gibi değerler alıyoruz.Başka kodları denediğimizde de bu sorunun devam ettiğini gördük. yardımcı olabilirseniz sevinirim…
foruma gelip sorabilirmisiniz orada da deneyenler var bilgi çıkabilir.
Merhaba. ben mantar üreticisiyim ve bunun için arduino ile ısı ve nem sensörü devresi yapmak istiyorum. Bunun için şu şekilde 3 odam var ve bu odaların her birine dht11 sensörü koyacağım. tek lcd üzerinden bütün değerleri görmek istiyorum. yani şu şekilde ;
1. oda yazısı yazacak sonra — o odanın nem ve ısı derecesi yazacak. 3 saniye sonra.
2. oda yazısı yazacak sonra — o odanın nem ve ısı derecesi yazacak. 3 saniye sonra.
3. oda yazısı yazacak sonra — o odanın nem ve ısı derecesi yazacak. 3 saniye sonra başa dönecek.
bunun yazılımı bana lazım yardımcı olabilirseniz çok sevinirim.
hazır projemiz yok yada ısmarlama proje yapamıyoruz, foruma sorun ama ucretıyle yapmak ısteyenlere aracılık yapamıyoruz kımseye garanti veremiyoruz sahtekarlık olabilir.
facebookta arduino gruplarında benzer mantar yetiştiricileri ve kuluçka makınesi yapanlara denk geldim belki kodunu paylaşmak isteyen olabilir.
yazıdaki kodu ve bağlantıları kendiniz yapabilirsenız aslında ve bunu forumda takıldıgınız yerı sorarak kodu paylaşarak ılerlersenız yardımcı olan cıkacaktır.
kolay gelsin.
burada kullanılan sensörle bu aynımı acaba ben bundan almıştım.Sizin sensörün 4 bacağı var benimkinde 3 bacak var
http://market.projehocam.com/urun/dht11-isi-nem-sensoru-kart/
sensoru bir pcb uzerıne koymuşlar, zaten kullanılan 3 bacak var sorun olmaz. buradaki şemada dırenç kullanılmış o direnci kullanmayın aldıgınız sensorlu pcb uzerınde dırenc var zaten.
bir türlü yapamadım gitti arduino hakkında doğru düzgün bişey bilmiyorum uğraştım ama hata verip duruyor hatalar bu şekil yardımcı olursanız sevinirim
D:\arduino\arduino-1.6.9\Projeler\zamanSaat_dereceNem\zamanSaat_dereceNem.ino: In function ‘void setup()’:
zamanSaat_dereceNem:36: error: expected unqualified-id before ‘.’ token
dht11.begin();
^
zamanSaat_dereceNem:37: error: ‘class LiquidCrystal_I2C_AvrI2C’ has no member named ‘init’
lcd.init();
^
zamanSaat_dereceNem:45: error: ‘dht’ was not declared in this scope
float h = dht.readHumidity();
^
D:\arduino\arduino-1.6.9\Projeler\zamanSaat_dereceNem\zamanSaat_dereceNem.ino: In function ‘void loop()’:
zamanSaat_dereceNem:57: error: ‘t’ was not declared in this scope
lcd.print(t);
^
zamanSaat_dereceNem:64: error: ‘h’ was not declared in this scope
lcd.print(h);
^
exit status 1
expected unqualified-id before ‘.’ token
kod da bu
byte termometre[8] = //ikon termometre
{
B00100,
B01010,
B01010,
B01110,
B01110,
B11111,
B11111,
B01110
};
byte sudamlacigi[8] = //ikon su damlacığı
{
B00100,
B00100,
B01010,
B01010,
B10001,
B10001,
B10001,
B01110,
};
#include “Wire.h”
#define DS1307_ADDRESS 0x68
#include “dht11.h”
#define DHT11PIN 2
dht11 DHT11
#include
#include
#define DHTTYPE DHT11
LiquidCrystal_I2C_AvrI2C lcd(0x27 , 16 , 2);
DHT11 dht11(DHTPIN, DHTTYPE);
void setup(){
Wire.begin();
dht11.begin();
lcd.init();
lcd.begin();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print(“www.arduinom.org”);
lcd.createChar(1,termometre);
lcd.createChar(2,sudamlacigi);
delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
}
void loop()
{
lcd.setCursor(0, 0);
lcd.print(“www.arduinom.org”);
lcd.setCursor(1, 1);
lcd.write(1);
lcd.setCursor(3, 1);
lcd.print(t);
lcd.setCursor(5, 1);
lcd.print((char)223); //derece karakteri
lcd.print(“C”);
lcd.setCursor(9, 1);
lcd.write(2);
lcd.setCursor(11, 1);
lcd.print(h);
lcd.print(“%”);
delay(2000);
lcd.clear();
printDate();
delay(2000);
lcd.clear();
}
byte bcdToDec(byte val) {
return ( (val/16*10) + (val%16) );
}
void printDate(){
Wire.beginTransmission(DS1307_ADDRESS);
byte zero = 0x00;
Wire.write(zero);
Wire.endTransmission();
Wire.requestFrom(DS1307_ADDRESS, 7);
int second = bcdToDec(Wire.read());
int minute = bcdToDec(Wire.read());
int hour = bcdToDec(Wire.read() & 0b111111); //24 hour time
int weekDay = bcdToDec(Wire.read()); //0-6 -> sunday – Saturday
int monthDay = bcdToDec(Wire.read());
int month = bcdToDec(Wire.read());
int year = bcdToDec(Wire.read());
lcd.clear();
//print the date EG 3/1/11 23:59:59
lcd.setCursor(1,0);
lcd.print(“Tarih: “);
lcd.print(monthDay);
lcd.print(“/”);
lcd.print(month);
lcd.print(“/”);
lcd.print(year);
lcd.setCursor(0,1);
lcd.print(” Saat :”);
lcd.print(” “);
lcd.print(hour);
lcd.print(“:”);
lcd.print(minute);
lcd.print(“:”);
lcd.print(second);
delay(1);
}
kodun hata mesajlarına göre bir çok yazım hatası veya eksik tanımlamadan kaynaklanan sorunlar yaşıyorsunuz. bu her zaman olabilir internetteki çoğu kod her zaman çalışmayabilir. adım adım ve anlayarak ilerleyin hatalı kodları duzeltmeye çalışarak omrunuz geçer bıktırır insanı.
önce yazımızdaki kodu ve açıklamalara göre programı yazın ve en azından sıcaklığı serialmonitorden görün böylece sensorun bağlantılarını ve çalışmasını öğrenmiş olursunuz.
daha sonra saat ve sonra i2c lcd kodunuzu test edersiniz.
adım adım oluyor bu işler kopyala yapıştı da bır yere kadar…
benim anladığım ladarıyla i2c kütüphanesinde dht 11 i ekleyince hata veriyor bi uyuşmamazlık var ama anlamadım evet dediğiniz doğru kopyala yapıştır olmuyor ama ben genelde aldığım kodlarda sıkıntı çıkıyor illaki bi yerlerini düzeltmek zorunda kalıyor baştan bişeyleri yapamıyorum ama olanları değiştirebiliyorum
i2c ile ne kullanıyorsanız onu tek olarak ayrı bir kodda test edin kodun çalıştıgından eminsenız bırleştirin
Ah be kardeşim open source işlerle uğraşıyosun, libi rarlayıp koymussun. tar ziple vs de rarlamasan olurdu.
merhaba arkadaşlar android Telefondan arduino ya 1234 desimal sayı gönderiyorum gelenVeri degişkenine 49 50 51 52 olarak yükleniyor.bu sorunu nasıl çözebilirim
yardımcı olacak arkadaşlara şimdiden teşekkür ederim
int gelenVeri = 0; // genel veriyi tutacak değişken
void setup()
{
Serial.begin(9600); // Haberleşme baudrate hızı 9600
pinMode(7,OUTPUT);
}
void loop()
{
if (Serial.available() > 0) {
gelenVeri= Serial.read();
Serial.println(gelenVeri); // gelen veriyi serial monitöre yaz
}
if(gelenVeri==1234){digitalWrite(7,HIGH);delay(1000);digitalWrite(7,LOW);}
}
telefondan gelen verinin ascii karşılığını görüyorsunuz, 48=0 49=1 50=2 … 57=9 oluyor. direk gelen sayıdan 48 çıkarırsanız gelen ascii değerin numerik karşılığını almış olursunuz ama bunları birde bulunduğu basamaga gore carpmanız lazım 4 haneli bişey geldıgını bılıyorsanız 1×1000+2×100+3×10+4 =1234 edecektir. yada string ten ıntegere donusum fonksıyonunu kullanırsınız (string.toInt)
String inString = “”; // string to hold input
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
// send an intro:
Serial.println(“\n\nString toInt():”);
Serial.println();
}
void loop() {
// Read serial input:
while (Serial.available() > 0) {
int inChar = Serial.read();
if (isDigit(inChar)) {
// convert the incoming byte to a char
// and add it to the string:
inString += (char)inChar;
}
// if you get a newline, print the string,
// then the string’s value:
if (inChar == ‘\n’) {
Serial.print(“Value:”);
Serial.println(inString.toInt());
Serial.print(“String: “);
Serial.println(inString);
// clear the string for new input:
inString = “”;
}
}
}
hocam zaman ayırıp cevap verdigin için teşekkür ederim hocam gelenveri degişkenin den 48 çıkarınca ascii değerin numerik karşılığını almış olduk 1234 yanlız sayılar birleşik degil ayrı ayrı geliyor ben 4 det degişken tanımlayıp ilk
gelen 1.sayıyı D1 2. sayıyı D2 3.sayıyı D3 4.sayıyıda D4 yüklemek istiyorum hangi komutu kullanmam lazım
1×1000+2×100+3×10+4 =1234
her yeni sayı geldiğinde bir sayac olacak
eger sayac 1 ise d1=gelensayi-48
eger sayac 2 ise d2=gelensayi-48;
eger sayac 3 ise d3=gelensayi-48;
eger sayac 4 ise d4=gelensayi-48;
int sonuc=d1×1000+d2×100+d3×10+d4
bunu mu sordun hocam? 4 işlem ve basamaklar konusu ilkokul 2.sınıf ta gördük bunu.
yada ornegını verdıgım kodu kullan stringden otomatık donusumde yapar
merhaba hocam verdiginiz program derleme yaparken hata veriyor
String inString = “”; // string to hold input
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
// send an intro:
Serial.println(“\n\nString toInt():”);
Serial.println();
}
void loop() {
// Read serial input:
while (Serial.available() > 0) {
int inChar = Serial.read();
if (isDigit(inChar)) {
// convert the incoming byte to a char
// and add it to the string:
inString += (char)inChar;
}
// if you get a newline, print the string,
// then the string’s value:
if (inChar == ‘\n’) {
Serial.print(“Value:”);
Serial.println(inString.toInt());
Serial.print(“String: “);
Serial.println(inString);
// clear the string for new input:
inString = “”;
}
}
}
hata
exit status 1
stray ‘\342’ in program
This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.
kullanıfıgınız karakterlerde sorun var turkçe karalter veya hatalı noktalama oldugu ıcın hata alıyorsunuz. sizdeki çıft tırnaklarda sorun var gibi duruyor.
hocam ben makine mühendisliği öğrencisiyim bitirme tezi olarak bir ortamın sıcaklık ve nem değerlerini belirli aralıkta tutmak için Aurdino kullanabilir miyim malzemelerim ne olur yardımcı olabilir misiniz ?
yukarıdaki projeyi yapabilrsiniz verileri saklamak için sd kart kullanabilirsiniz zaman bilgisini de yıne sitemizdeki rtc ds1302 yazısındaki kod ıle alıp karta zaman bilgisi ile beraber yazabilirsiniz eğer sıcaklık nem bilgisini online tutmak istiyorsanız bir esp8266 wifi modul ile ınternetteki thinspeak sitesine atıp grafik şeklinde de izleyebilirsiniz. bu konularda çok hazır orneği de web de bulmak mumkun arduinoda kod yazma alışkanlığınız yoksa en hızlı yoldan komutları ve yapının nasıl birşey oldugunu anlamaya çalışırsanız fazla uzatmadan projeyı bıtırebılırsınız. foruma da gelin
#include
#include
#include
#include “SystemFont5x7.h”
#include “Arial_black_16.h”
#include “DHT.h”
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
#define DISPLAYS_ACROSS 2
#define DISPLAYS_DOWN 1
DMD dmd(DISPLAYS_ACROSS, DISPLAYS_DOWN);
void ScanDMD()
{
dmd.scanDisplayBySPI();
}
void setup(void)
{
dht.begin();
Timer1.initialize( 5000 );
Timer1.attachInterrupt( ScanDMD );
dmd.clearScreen( true );
}
void loop(void){
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(t) || isnan(h)) {
byte b;
// display some text
dmd.clearScreen( true );
dmd.selectFont(System5x7);
for (byte x=0;x<DISPLAYS_ACROSS;x++) {
for (byte y=0;y<DISPLAYS_DOWN;y++) {
dmd.drawString( 2+(32*x), 1+(16*y), "Fail", 4, GRAPHICS_NORMAL );
dmd.drawString( 2+(32*x), 9+(16*y), "Read", 4, GRAPHICS_NORMAL );
}
}
}
else {
byte b;
dmd.clearScreen( true );
dmd.selectFont(System5x7);
for (byte x=0;x<DISPLAYS_ACROSS;x++) {
for (byte y=0;y<DISPLAYS_DOWN;y++) {
dmd.drawString( 2+(32*x), 1+(16*y), "TEMP", 4, GRAPHICS_NORMAL );
dmd.drawString( 2+(32*x), 9+(16*y), "(t)", 5,GRAPHICS_NORMAL );
}
} delay(2000);
}
}
/*——————————————————————————-*/
EKRANDA
TEMP
(t) F
çıkıyor
istediğim t ve h değişkenlerini P10 ekranında görmek
Yardımınızı rica ediyorum
———————————————————————————
p10 panel ıle ılgılı ornekler forumda var oraya bakmanız iyi olur. yukarıdaki lcd ile ılgılı bolumlerı cıkarın p10 a text yollayacak rutınde sıcaklık verılerınız yollayın. foruma gelin
Merhaba iyi günler Ömer bey. Ben bir kuluçka makinası yaptim. Makinada ds18b20 ısı dht11 nem sensörü ampul DC motor servisi motor kullandım. Sistem herturlu kodlara bakmama rağmen 3 4 saatte bir donuyor. Bazen 7 8 saatte bir donuyor ve bu donmayi dht11 den dolayı yaptığını düşünüyorum. Böyle sorun çıkaran bir sensörmüdur ? Nasıl bir düzeltme yapabilirim simdiden teşekkür ederim.
arduıno projelerınde uzun surelı kullanımda bu tip şikayetler oluyor. bir çok neden olabilir çok basit bir bağlantı problemi veya akım çeken bir sensorun cevap vermemesi veya enerjı kesıntısı veya bır takım yakındakı motorların urettıgı parazıtlerın sistemi etkılenmesı ve daha akla gelmeyen bir çok problem olabılır. bunların tamamen kesmekde mumkun yada onemsız sevıyeye ındırmekde mumkun. oncelikle enerji prblemlerı ıle şebekeden veya havadan gelecek parazitleri kesmenız lazım bunun için guçlu bır enerjı altyapısı ve fıltreleme ıle başlamak lazım, havada gezen uzun kabloları kısaltın, sensorun kıtlenmesını bılemıyorum belkı bır serıçıkışla her rutın başlangıcında dışarıya bır satır verı yollayın ve bunu pc de loglayın problemın takılma noktasını tespit etmiş olursunuz. arduınoda ıyı ısenız watchdog kullanın sistemde bır kaç sanıyelık kesıntı olursa otomatık işlemciyi resetler ve herşey yenıden başlar kullanım ıcın bu reset suresınden once wd tımerı sıfırlamanız lazım sıfırlamazsanız sistem bunun bır kıtlenme oldugunu algılayıp otomatık reset atabılır. bu durumu ıyı yonetebılmenız lazım ılerı kod yazma becerısı gerektırebılır. foruma da gelın sorun
hocam ben arduino ile meteoroloji istasyonu yapıyorum.sıcaklık nem yağmur vebasınç ölçümleri olacak.ölçülen değerler csharp ile yazılan bi programda grafik olarak gösterilecek.yalnız csharp kısmında sorun yaşıyorum yardımcı olabilirmisiniz.
sitede c# ornekleri var onları inceleyin sorun olursa foruma gelin cevaplayan çıkacaktır.
Kodlamayı yaptım dh11’i indirdim fakat buradan sonra ne yapacağımı bilmiyorum. Dh11 klasörünü nereye atmam gerek?
arduınoya kutuphane yukleme diye aratınca şu ornek ılk sırada gelıyor https://www.youtube.com/watch?v=Pxes46wniIg
Teşekkürler ilgilendiğiniz için…
sıcaklığı ölçtükten sonra toprağın ısısı atıyorum 2 ise toprağa ıs verecek sistem için ne yapmak lazım
toprak içinde sıcak su boruları dolaştırabilirsiniz sanırım. foruma da gelin sorun.
Hocam iyi günler. Duman sensörü ile belirlediğim limit aşıldığında tweet atan bir proje yapmıştım DHT11 Isı ve Nem sensörü bağladım. Sensörden aldığım ısı ve nem bilgisinide tweete eklemek istiyorum fakat bi türlü yapamadım. kodlarım aşağıda yardımcı olur musunuz?
#include //ısı ve nem sensörü kütüphanemiz
#define DHT11PIN 2 // DHT11PIN olarak Dijital 2″yi belirliyoruz.
#include //
#include// Ethernet shield kütüphanemiz
#include// twitter kütüphanemiz
dht11 DHT11;
int sensor=1; //Sensörarduinonun analog 1 pinine bağlandı.
int led2=7; // LED 7. dijital çıkış pinine bağlandı.
int buzzer=4; // Buzzer 4. dijital çıkış pinine bağlandı.
int gas_limite; // Gaz limiti değişkeni tanımlandı.
byte mac[] = { 0xB0, 0x6E, 0xBF, 0x1A, 0x84, 0x41 };// mac adresimiz B0-6E-BF-1A-84-41
byte ip[] = {24,133,201,18};
Twitter twitter(“921994338258825216-1QdhzIxqgh9a3auOPdZbBSAkeTpRsQS”);//twitterdan aldığımız token kodumuzu yazıyoruz.
char msg[] = “!test4”;// gönderilecek tweet i burada belirliyoruz.
void setup()
{
Serial.begin(9600); // Seri iletişimi başlatıyoruz.
Serial.begin(9600); // Seri haberleşme ekranına bağlanma kodu.
pinMode(sensor, INPUT); // Sensör giriş yapıldı.
pinMode(led2, OUTPUT); // LED çıkış yapıldı.
pinMode(buzzer, OUTPUT); // Buzzer çıkış yapıldı.
}
void loop()
{
gas_limite=analogRead(sensor); // Sensörden değer okunuyor.
Serial.print(“Gaz Durumu: “); // gaz durumunu ekrana yazdırıyoruz
Serial.print(gas_limite); // gaz limiti ekrana yazılıyor
Serial.println(“Limiti”);
delay(1000);
if (gas_limite>250){ // gaz limitimizin koşulunu belirledik.
Serial.print(“Gaz Limiti Asildi!!! “);
digitalWrite(led2, HIGH); // Kırmızı LED lojik 1 yapıldı.
digitalWrite(buzzer, HIGH); // Buzzer çalıştırıldı.
delay(1000);
Ethernet.begin(mac, ip);
// oryou can use DHCP forautoomatic IP addressconfiguration.
Ethernet.begin(mac);
Serial.begin(9600);
Serial.println(“baglaniyor …”);
if (twitter.post(msg)) {
int status = twitter.wait(&Serial);
if (status == 200) {
Serial.println(“OK. (twit atildi!)”);// tweet atıldı.
} else
{
Serial.print(“HATA : code “);// hata mesajı
Serial.println(status);
}
}
else
{
Serial.println(“baglanti saglanamadi!!!”);// hata mesajı
}
}
else {
Serial.println(“Gaz Limiti Normal”);
digitalWrite(led2, LOW); // led kapatıldı
digitalWrite(buzzer, LOW); // buzzer kapatıldı
}
// Bir satır boşluk bırakıyoruz serial monitörde.
Serial.println();
// Sensörün okunup okunmadığını konrol ediyoruz.
// chk 0 ise sorunsuz okunuyor demektir. Sorun yaşarsanız
// chk değerini serial monitörde yazdırıp kontrol edebilirsiniz.
int chk = DHT11.read(DHT11PIN);
// Sensörden gelen verileri serial monitörde yazdırıyoruz.
Serial.print(“Nem (%): “);
Serial.println((float)DHT11.humidity, 2);
Serial.print(“Sicaklik (Celcius): “);
Serial.println((float)DHT11.temperature, 2);
Serial.print(“Sicaklik (Fahrenheit): “);
Serial.println(DHT11.fahrenheit(), 2);
Serial.print(“Sicaklik (Kelvin): “);
Serial.println(DHT11.kelvin(), 2);
// Çiğ Oluşma Noktası, Dew Point
Serial.print(“Cig Olusma Noktasi: “);
Serial.println(DHT11.dewPoint(), 2);
// 2 saniye bekliyoruz. 10 saniyede bir veriler ekrana yazdırılacak.
delay(10000);
}
merhaba zaten yazıda ve yorumlarda yardımcı olduk uzun uzun anlattık, yazıdaki kodları ve talimatlari bir inceleyin daha sonra kendi kodunuza entegre edersiniz olmadı foruma gelin denediginiz kodun hangi kısmı olmadı detaylı yazın.
İi günler. Dht11 sensörüm sıcaklık değerini normal gösteriyor fakat nem degeri sürekli %95 gösteryor. Neden kaybaklanabilir acaba??
dht11 nem degerlerinin çok hassas olmadıgı biliniyor sensorunuz bozuk bile olabilir başka bir sensor daha alıp denemenızde fayda var.
Hocam ben gelen verileri hc05 ile android telefona aktarmak istiyorum. Kodu nasıl düzenlemeliyim
hc05 li ornekleri ınceleyın oncelikle burada ıkı konu ağır olacak
Ömer hocam merhabalar. Hc 05 ten telefona değer gönderiyorum ve delay kullanıyorum. Delay kullanmasam telefonda 10 diye gönderdiğim değer 10101010 şeklinde uzuyor. Delay kullanırsamda arduino verdiğim delay kadar beklemeye geçip telefondan verdiğim komutları bekletiyor.
mySerialprint(abc);
delay(1000);
şeklindeki kodu nasıl değiştirebilirim.
Milis fonksiyonlarını araştırdım fakat pek anlamadım.
bu yazının konusu dağılıyor siz forumdan başlık açıp bu konuda destek isterseniz daha hızlı olur.
hocam haklısınız. yalnız foruma üye olamıyorum. Site Recaptcha V1 kullanıyor ve v1 sonlandırılmış. dolayısıyla robot olmadığımı onaylatamıyorum.
forumu guncelliyor site admini haber vereceğiz bu konuda gelişme olunca
Merhabalar Arduinomu bilgisayarımla rs485 ile haberleştirmek istiyorum. Ölçtüğüm sıcaklık ve nem değerlerini bilgisayarımda yapacağım bir skada sisteminde görmek istiyorum bunun için gerekli kaynak kod bulamadım. Yardımcı olur musunuz? Teşekkürler.
arduino modbus rtu olarak aratırsanız skada sisteminiz ile uyumlu olur
https://www.google.com/search?ei=qte9W_-rEY_DwQLjg6e4Bw&q=arduino+modbus+rtu&oq=arduino+modbus+rtu&gs_l=psy-ab.3..0i203k1l10.2775.3250.0.4181.3.2.0.1.1.0.125.247.0j2.2.0….0…1c.1.64.psy-ab..0.3.250…0j0i22i30k1.0.yorFYhVv62c
Hocam yazdığım kod bu ancak Modscan programında timeout alıyorum kodda hata nerde acaba bakabilir misiniz?
#include
#include
#include
#include
#include
modbusDevice regBank;
modbusSlave slave;
#define DHT11PIN A0
dht11 DHT11;
void setup()
{
//Assign the Modbus Slave ID.
regBank.setId(1);
//Add Analog Output registers
regBank.add(40010);
regBank.add(40011);
//Analog input registers
regBank.add(30001);
regBank.add(30002);
slave._device = ®Bank;
// Initialize the baudrate serial port
// Set in SCADA: Baud rate=9600,Data bits=8,Stop bits=1,Parity=None,Flow control=None
slave.setBaud(9600);
}
void loop()
{
//Analog input
regBank.set(30001, (word)analogRead((word)DHT11.humidity));
regBank.set(30002, (word)analogRead((word)DHT11.temperature));
//Analog output
word AO10 = regBank.get(40010);
analogWrite((word)DHT11.humidity,AO10);
word AO11 = regBank.get(40010);
analogWrite((word)DHT11.temperature,AO11);
slave.run();
delay(100);
}
bu kodları komutları nereden buldunuz bilmiyorum, dht11 okumanızda sorun var yukarıdaki orneği kullanın ama öncelikle oraya bildiğiniz bir test değeri yollayın modbus testi için.
include satırları html formattan dolayı kesiliyor oraları tırnak içinde yazmayı deneyın
Hocam merhaba 2 adet DHT11 i kullanabilmek mümkün mü? Eğer kullanabilirsem kodlardaki değişiklikler nasıl olmalı?
Tamamdır halletim herşey için teşekkürler.
3 adet sht 21 ve 1 adet sht 20 aynı anda bağlamak için nasıl bir kod kullanmalıyım. Tek sensör sht 20 için yaptım okudum ancak bu durum için(3 adet sht 21-1 adet sht 20) biraz zorlandım.
hepsi aynı tip olursa cd4051 gibi bir analog anahtar entegresi ile pinleri yazılımla seçip okumayı deneyebilirsiniz. kullandığı protokol tam i2c olmadığı için böyle donanım yoluyla öneri verdim.
google dan multiple sht21 diye aratın yazılım çözümü de vardır mutlaka.
Merhaba benim yardıma ihtiyacım var bir proje için bu sensörün ülçtüğü nem belli bir yüzdeye geldiğinde bir süreliğine motorun çalışmasını ardından durmasını ve nem azaldığınde ters yöne çalışması gerekiyor ACİL YARDIM.
acil olamıyor burada işler ama projeyi yapın ornekteki gibi zaten nasıl yapabileceğinizi anlayacaksınız.
Dht11 kutuphanesini nasil kurucaz yardim edermsinzi
birinci yöntemi kullanabilirsiniz
https://www.webagi.net/2017/01/05/arduino-kutuphane-ekleme-resimli-anlatim/
Merhaba ben dht 11 sensörü kullanarak ısı ve nem oranları bellirli noktalara geldiklerinde ayrı pinlerden Led yanmasını istiyorum baya dır uğraşıyorum yapamadım bana yardımcı olurmusunuz.
forumdan sorun cevap veren olur. yada biraz daha uğraşırsanız yapacağınızdan eminim. sıcaklı değeri ile başlayın önce ekrana yazdırmadan önce kontrol edin istediğiniz sıcaklıktan buyuk kucuk gibi bir montıkla kontrol yapabılırsınız.
ben kütüphaneyi indirdim belgelerdeki arduino klasorune attım ama kutupaneyi açmaya çalıstıgımda kutuphane gozukmuyor
dosyaları zip dosyasına çevirmen gerekiyor sonra deneyebilirsin
yazının altında “gerekli olabilecek bağlantılar ” kısmında zaten dht kütüphanesi zip dosyası olarak var oradan kurmanız gerekiyor.
dht nin başka kodu varmı sizde varsa yollarmısınız yoksa boşverin ama bir şekilde bulmaya çalışın
kodlamayı veya arduinoyu öğrenirken yada kendinizi ifade ederken buraya bir cevap verirken acele birşeyler yazmaya çalışıp ne yazdığınızı okumadan yollamayın. baş kodu diye bir tanım yok litaretürde bu şekilde ifadeler yardımcı olmaz kimseye. yardımcı olmaya çalıştığınızı anlıyoruz ama daha sakin ve okunaklı anlamlı olursa çok güzel olur.
Merhabalar arduinoya 220v motor için zamanlayıcı ve nem nozulü ile nem kontrolü yapmak istiyorum ikisini aynı zamanda yapabilir mi
yapabilirsiniz şöyle yapın.
devreyi kurun ve nemi ölçmeye çalışın siizn için geçerli nem aralıklarını belirleyin yani seçtiğiniz nemin üzerinde bir nem olursa motoru devre alırsınız nem düştüğü zaman motoru durdurursunuz böylece ortamda nemi sabit tutarsınız.
sitede devreye röle bağlamanız için devre var onu kurun. motorun çektiği akıma uygun bir röle seçmeniz lazım rölenin beslemesine göre uygun güç kaynağını bağlayın. kolay gelsin
Yanlış anlattim galiba 220vluk motor ve nozül ayrı cihazlar ben motorun her 2 saatte 15 saniye çalısmasini istiyorum nozulun ise nem oranı düstugunde devreye girip nemi yükseltmesini istiyorum (nozül 5v)
tam buraya yazdığınız gibi kodu yazabilirsiniz yapılabilir.
bir timer ile bir “on” zamanı bir de “off” zamanı sayıp duruma göre motoru devreye alacaksın.
çok hassas olmasını istiyorsan bir saat devresi alıp başlangıç bitiş zamanını kaydedip gerektiği zaman aktif edersin motoru
nozul 5v olsada çektiği akım önemli arduino düşük akım verir bir transistörle sürmen lazım.
motoru da röle ile basitçe devreye alırsın.
Hocam merhaba, arduino’ya dht11 modülünü entegre ettim ve bağlantıları doğru yaptığımdan eminim ayrıca kütüphaneyi indirdim örneklerden açıyorum fakat ‘Failed to read from DHT sensor‘ hatasını alıyorum sensörüm mü bozuk acaba yoksa başka bir çözümü var mı
sensor sadece 1 pin üzerinden veri alış verişi yapıyor bu pinde gerekli sinyali göremezse o hatayı verir. arduıno uno kullanıyorsanız şemadaki 10k direnci de kullandıysanız çalışması lazım. 10 yerine 4.7k dirençle de deneyebilirsiniz faydası olur.
4 pinli ve 3 pinli modeli varmış ikisinide kullanabilirsiniz.
şurada başka bir sitedeki örneğe bir bakın.
https://www.mcufreak.com/arduino-dht11-sicaklik-ve-nem-sensoru-kullanimi/
sıcaklık ve nem değerleri hep sıfır geliyor timeout hatası alıyorum sorunu anlamadım
devre çok denenmiş bir devre fazla bağlantı yok söküp tekrar bağlayın farklı bir şey yapmayın programda. sensörünüz sağlam mı acaba.
Bendeki 3 ayaklı modeli, Arkasıda QC yazar ve boş bir etiket var. Önünde mavi sensör ve 3 iğne ,iğnelerin solunda S harfi ve R1 direnci var. sensörün altında sağda CNT5 yazısı var. Bunun ayakları şöyle çalıştı: Üç ayağını aşağıda olacak şekilde tutun, mavi köşeli sensör size baksın. R1 direnci solda. Soldan 1. iğne Dijital Pin, Kırmızı: VCC, voltaj, Anot. Bende Ardunio Mega için 3,3V yetti. Sağdaki de toprak. DHT11 kütüphanesinin tüm örnekleri çalıştı. Bozuk diye kenara atacaktım. Aynısı olanlar için paylaştım.
Merhaba, Acemilik dolayısı ile MQ2 yi modülsüz aldım. Yani altındaki kart yok. Tüm örneklerde modüllü olarak kullanılmış. Modülsüz olarak hangi bacakları nasıl bağlayacağım konusunda bana yardımcı olabilirmisiniz. Teşekkürler.
herhangi bir modülün şeması için google da sensörün kodu ve schematic diye aratın ve görsellere bakın. ben bu şekilde buldum.
http://wiki.sunfounder.cc/index.php?title=MQ-2_Gas_Sensor_Module
şemaya göre bir opamp entegre ayarladığınız seviyede çıkış/alarm vermek için konmuş eğer ihtiyacınız yoksa kullanmayabilirsiniz o kısmı.
R1 1K ve R2 10K olarak dirençleri takıp deneyin. aout kısmını arduinoda bir analog girişe bağlayacaksınız.
şu da mq2 data sheet bacak bağlantısı numaraları için https://www.pololu.com/file/0J309/MQ2.pdf
şurada da başka bir örnek tam açık şemayı uygulamış.
google kullanmayı acil öğrenmelsiniz.
https://www.instructables.com/MQ2-Gas-SensorDetector-for-Arduino-and-Other-Micro/
Merhaba, dht11 sensörünü buradaki kodla birlikte çalıştırdım ve doğru değer döndürüyor gibi fakat int chk=DHT11.read(DHT11PIN) komutunu ekrana yazdırdığımda chk -1 olarak dönüyor. Bağlantı kablosunu çıkardığımda “-2” döndürüyor. Kodun yorum bölümünde sensör eğer sorunsuz okunuyorsa o değerin “0” olması gerektiği söylenmiş “-1” hangi anlama geliyor? Cevaplarsanız sevinirim.
[…] sensörü olarak DHT11 kullanıldı. Bunun Arduino uygulamasını İsmail daha önce Arduino Türkiye‘de […]
mümkün. önce kodu yazın bağlantıları kurun ve çalıştırın sonra kendi mantığınızı oluşturun kodunuzda…
iyi günler rahatsızlık veriyorum ben şöyle bir sorum var ardünyo uno ile aynı anda en fazla kaç adet nem sensörü kullana bilirim yada hangi ardünyo türü bana en fazla sensör kullanmamı sağlayacaktır
kaç sensör okuman lazım ona göre çözüm önereyim. bir tanesini okudun mu hangi kodla okuyorsun buraya koy bakalım.
Merhaba, Ben bu sensörü c++ da yazmaya çalışıyorum (freedom board ile çalışıyorum.) nasıl düzenlemeliyim? Sürekli open drain hatası veriyor sizce sebebi ne olabilir? (direnç taktım ancak bu sefer aldığım error u da kaybettim sensörü hiç görmemeye başladı) DHT11 class ı şu şekilde
/** Example:
* @code
* #include “mbed.h”
* #include “DHT11.h”
*
* DHT11 d;
*
* main()
* {
* int s;
* s = d.readData();
* if (s != DHT11::OK) {
* printf(“Error!\r\n”);
* }
* else {
* printf(“T:%d, H:%d\r\n”, d.readTemperature(), d.readHumidity());
* }
* }
* @endcode
*/
class DHT11
{
public:
/** Create a DHT11 interface
* @param pin 1-wire-like serial I/O port of DHT11
*/
DHT11(PinName pin);
~DHT11();
/** Reading the data from the DHT11
* @return Error code
* 0: OK.
* 1: Reading the data too often.
* 2: 1-wire bus is busy.
* 3: DHT11 does not respond.
* 4: DHT11 is not ready.
* 5: Checksum is incorrect.
* 6: Timeout.
*/
int readData(void);
/** Reading the humidity from the data
* @return Humidity in %,
* regardless of the error from readData()
*/
int readHumidity(void);
/** Reading the temperature from the data
* @return Temperature in Celcius,
* regardless of the error from readData()
*/
int readTemperature(void);
enum ErrorDHT11 {
OK = 0,
READ_TOO_OFTEN = 1,
BUS_BUSY = 2,
NOT_PRESENT = 3,
NOT_READY = 4,
CHKSUM_ERR = 5,
WATCHDOG_ERR = 6,
};
private:
DigitalInOut io;
InterruptIn io_irq;
Timer t;
uint32_t t_pulse_us;
const static int t_tol_start;
const static int t_tol_pulse;
bool first_time;
uint64_t data;
uint32_t chksum;
uint32_t cnt;
uint32_t wdt;
bool eod;
void init(void);
void pos_edge(void);
void neg_edge(void);
};
#endif
mbed arduinoya göre farklıdır burada cevap bulamazsınız mbed in kendi forumlarına bakın. mbed in kendi dht11 orneği varsa onu deneyin değişiklik yapmayın pinler doğru mu kontrol edin.
Hocam size nerden ulaşabilirim acaba yardımcı olabilirseniz sevinirim
ulaşmasanız daha iyi özel proje alamıyorum. buraya derdini yazana yol gösteriyoruz.
merhaba ben bunu tuvalet eğitimini yeni öğrenen evladım için kullanmayı dusunuyorum. bu sensoru yatagın carsafın altına koysam gece altını ıslatınca odaya wifi baglantısı ve buzzer yardımı ile uyarı gönderse olabilir mi nasıl yapmalıyım?
buradaki nem sensörü havadaki nem miktarını ölçer. siz sıvı iletkenlik ölçümü yapan bir sensörle yapabilirsiniz projenizi ama sonuçta bir elektrik vermiş oluyorsunuz insana, tavsiye etmiyorum eğer elektronik tecrübeniz yoksa elektrikli cihazda hata yaparsanız evladınıza zarar verirsiniz. yapmayın bunu !
yalan azdaha dht yi yakıyordum