Blynk hakkında yardım

2mmert

Üye
Katılım
24 Nis 2021
Mesajlar
24
Puanları
1
Yaş
52
Arkadaslar lutfen yardim edin..
Butun sensorler ve roleler unoya bagli..
45 gundur uno yu- nodemcu 8266 ile internete baglamaya calisiyorum ..sonunda baglandim..
Bu seferde bylinkde verileri goruyorum. ama buton fonksiyonlari ile 4 relay role yi kontrol edemiyorum..
Kodlara bir bakarmisiniz..
bir de ilginc sorunlarim var.. nodemcu uzerinde internete baglaninca yanan led yanmiyor(yazilimla mi yaniyor bilemedim)
arduino uno yu enerjiye bagladigim an 4 role de aciliyor ve yazilim tamamen okununca ,yazilima gore roleler gorevlerini yapiyor..enerji takildigi an acilmamasini nasil saglayabilirim..
[
//ARDUINO YUKLE

//DHT11 Lib
#include <DHT.h>

//Arduino to NodeMCU Lib
#include <SoftwareSerial.h>
#include <ArduinoJson.h>

//Initialise Arduino to NodeMCU (10=Rx & 11=Tx)
SoftwareSerial nodemcu(10, 11);

//Initialisation of DHT11 Sensor
#define DHTPIN 2
DHT dht(DHTPIN, DHT11);
int temp;
int hum;

// MQ135 AYARLARI

#define sensor A1
int gas, co2lvl;



void setup() {
Serial.begin(9600);
pinMode(sensor, INPUT); //MQ135
dht.begin();
nodemcu.begin(115200);

pinMode(12,OUTPUT);

delay(1000);

Serial.println("Program started");
}


void loop() {

StaticJsonBuffer<1000> jsonBuffer;
JsonObject& data = jsonBuffer.createObject();

//Obtain Temp and Hum data
dht11_func();
mq135_func();
buton_func();

//Assign collected data to JSON Object
data["humidity"] = hum;
data["temperature"] = temp;
data["co2"] = co2lvl;

//Send data to NodeMCU
data.printTo(nodemcu);
jsonBuffer.clear();



delay(1000);
}

void dht11_func() {

hum = dht.readHumidity();
temp = dht.readTemperature();
Serial.print("Humidity: ");
Serial.println(hum);
Serial.print("Temperature: ");
Serial.println(temp);

}
void mq135_func() {

gas = analogRead(sensor);
co2lvl = gas-120;
co2lvl = map(co2lvl,0,1024,400,5000);
Serial.println(gas);
}
void buton_func() {
while (nodemcu.available() > 0 ) {
int val = nodemcu.parseInt();
if (nodemcu.read() == "\n") {
Serial.println(val);
if (val == HIGH) {
digitalWrite(12, HIGH);
}
else {
digitalWrite(12, LOW);
}
}
}
}
]

[
//NODEMCU YUKLE
#include <Blynk.h>
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

BlynkTimer timer;

char auth[] = "1HJh3g8b4ra9rFkhLjDz_ABL5CukkH4";
char ssid[] = "Kablonet Netmaster-C5B5-G_EXT";
char pass[] = "1971mm74";

#include <SoftwareSerial.h>
#include <ArduinoJson.h>

int a;

//D8 = RX & D7 = TX
SoftwareSerial nodemcu(D8, D7);

void send_data() {
StaticJsonBuffer<200> jsonBuffer;
JsonObject& data = jsonBuffer.parseObject(nodemcu);

if (data == JsonObject::invalid()) {
//Serial.println("Invalid Json Object");
jsonBuffer.clear();
return;
}



Serial.println("JSON Object Recieved");
Serial.print("Recieved Humidity: ");
float hum = data["humidity"];
Serial.println(hum);
Blynk.virtualWrite(V6,hum);

Serial.print("Recieved Temperature: ");
float temp = data["temperature"];
Serial.println(temp);
Blynk.virtualWrite(V5,temp);

Serial.print("Recieved co2: ");
float co2lvl = data["co2"];
Serial.println(co2lvl);
Blynk.virtualWrite(V7,co2lvl);

Serial.println("-----------------------------------------");
}

BLYNK_WRITE(V2)
{
a = param.asInt();
nodemcu.print(a);
nodemcu.println("\n");
Serial.println(a);
}

// ================= SETUP =============================
// ======================================================
void setup() {
// Initialize Serial port
Serial.begin(9600);
nodemcu.begin(115200);
while (!Serial) continue;

Blynk.begin(auth, ssid, pass,"blynk-cloud.com", 8080);
timer.setInterval(100L, send_data);

pinMode(D8, INPUT);
pinMode(D7, OUTPUT);

}


void loop() {
Blynk.run();
timer.run();
}
Screenshot_20210615-155315.jpg
 

Ekli dosyalar

  • Screenshot_20210615-155315.jpg
    Screenshot_20210615-155315.jpg
    64.3 KB · Görüntüleme: 10
Son düzenleme:
Daha önce hem BLYNK ile hem de RemoteXY ile deneme uygulaması yazmış biri olarak size aşağıdaki kodu verebilirim. Deneme tahtasında bir adet çiftli 5V röle ve DHT11 nem sıcaklık sensörü kontrolu sağlamıştım.

Sizdeki röle aşağıdaki ikili röleye benzer bir röle ise açıklamasında dikkat ederseniz, "Röleler lojik 0(0V) ile tetiklenir" diye bir ibare bulunmaktadır. Başta aynı hataya ben de düşmüştüm. setup kısmında,

Kod:
pinMode(PIN_ROLE1, OUTPUT);
digilaWrite(PIN_ROLE1, HIGH);
pinMode(PIN_ROLE2, OUTPUT);
digilaWrite(PIN_ROLE2, HIGH);
demeniz, ilk açılışta rölenin kapalı olması için yeterli gelecek.

Diğer soruda; NodeMCU üzerindeki led'i (D4) internet bağlantısı başarılı olunca sürekli yanacak şekilde düşük seviyede yakıyorum.

Kod:
#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
#include <SPI.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
//#include <SimpleTimer.h>
#include <DHT.h>

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "kendi auth id niz"; //Enter the Auth code which was send by Blink

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "wifi_adiniz";  //Enter your WIFI Name
char pass[] = "12345678";  //Enter your WIFI Password

#define DHTPIN D1          // Digital pin D1 //arduino pin 5

// Uncomment whatever type you're using!
#define DHTTYPE DHT11     // DHT 11


#define PIN_ROLE1 D2 // Röle 1
#define PIN_ROLE2 D3 // Röle 2
                   
DHT dht(DHTPIN, DHTTYPE);
SimpleTimer timer;

void sendSensor()
{
  float h = dht.readHumidity();
  float t = dht.readTemperature(); // or dht.readTemperature(true) for Fahrenheit

  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
  Blynk.virtualWrite(V5, h);  //V5 is for Humidity
  Blynk.virtualWrite(V6, t);  //V6 is for Temperature
}

void setup()
{
  Serial.begin(9600); // See the connection status in Serial Monitor
  Blynk.begin(auth, ssid, pass);

  dht.begin();

  // Setup a function to be called every second
  timer.setInterval(1000L, sendSensor);

  pinMode(D4, OUTPUT); // nodemcu üzerindeki led.
  analogWrite(D4, 1009); //1023); // led'in katot ucu pin4'e, anot vcc'ye bağlı olduğundan led ters çalışır. LOW 0V, HIGH 5V/3.3V
                         // maks değer söner. led pin e ters bağlı. 0 değerde maks yanar.

  pinMode(PIN_ROLE1, OUTPUT);
  pinMode(PIN_ROLE2, OUTPUT);
}

BLYNK_WRITE(V0)  // Virtual pin'değişkeninde değişiklik olursa bu kısım tetikleniyor.
{
  int pinData = 1023 - param.asInt();
  Blynk.virtualWrite(V1, pinData); // V0 değerini V1'e aktar. V0 mobil uygulamada slider'e bağlı.
  analogWrite(D4, pinData);
}

BLYNK_WRITE(V2)
{
  int pinData = param.asInt();
  Blynk.virtualWrite(PIN_ROLE1, pinData);
  digitalWrite(PIN_ROLE1, pinData);
}
BLYNK_WRITE(V3)
{
  int pinData = param.asInt();
  Blynk.virtualWrite(PIN_ROLE2, pinData);
  digitalWrite(PIN_ROLE2, pinData);
}


void loop()
{
  Blynk.run(); // Initiates Blynk
  timer.run(); // Initiates SimpleTimer
}

1623789055960.png

Not: Program kodunuzu kod tag'ları [ CODE ] [ /CODE ] arasında yazarsanız program kodunuz daha okunaklı olacaktır.
 
Çok teşekkür ederim..
Hocam ,bu yazılımda sizin röleler nodemcu pinlerine bağlı sanırsam..bendeki röleler uno 12-4-5-7 pinlerine bağlı ve sensör okuma işlemleri uno da yapiliyor..bylinkden gelen aç veya kapat komutunu o pinlerle nasıl eslestirecegim..onu çözemedim..
 
Uno'yu başka amaçla mı kullanıyorsunuz? Ben tüm işlemleri NodeMCU üzerinden yapıyorum. NodeMCU varken Uno'ya gerek duymadım. Röleleri NodeMCU'nun uygun pinlerine taşıyabilirsiniz.
 
Hocam ilginize ,Çok teşekkür ederim..
Uno uzerinde 3 sensor,1 ekran,1 rgb seviye isigi,rtc modulu-4 lu role bagli... ve bircok islem yapiliyor, yaklasik 800 satirlik bir yazilim var...stabil calisiyor...
ben bunu 8266-01 ile internete baglanip blink kullanmaya calistim .sistem dondu,koptu vs,, sorunlar yasadim..
Nodemcu ile sensor verilerini blynk ile guzelce okuyorum.. sadece blynk deki 4 buton ile unoya bagli 4 lu relay sensoru ac-kapa kontrol edemedim...
Yani derdim uno ile sistemi cevirmek, nodemcu ile internete baglanip verileri istekleri unodan alip- gondermek..
{
int pinData = param.asInt();
Blynk.virtualWrite(PIN_ROLE1, pinData);
digitalWrite(PIN_ROLE1, pinData);
}
bu komutlari 2 alet arasinda uyumlu calistirmak.. sanirim sikinyiyi cozecek ama .....
bir turlu yapamadim
 
Normalde uno ve diğer arduino türevleri için wifi shield'ler mevcut. Tabi esp8266 tabanlı kartlar daha ekonomik. Sonuçta her iki kart haberleşebliyorsa uyumlu hale getirilebilirler. NodeMCU daha güçlü bir kart olduğunda kodlamayı onun üzerine adım adım taşırsanız daha rahat edersiniz diye düşünüyorum. Port sikintisi varsa port çoklayıcı ilave edilebilir. NodeMCU'ya gelen komutu Uno'ya iletmek için muhtemelen seriport gibi bir yolu vardır. Şuan odaklanamadım. Diğer arkadaşların farklı önerileri olabilir.

Şu bağlantılar da işinize yarayabilir;
https://roboturka.com/arduino/arduino-ve-nodemcu-ic2-seri-haberlesme-protokolu/
http://www.elektrobot.net/arduino-uno-esp8266-kullanimi-tcp-client-olusturma/
http://www.elektrobot.net/arduino-uno-esp8266-kullanimi-tcp-client-olusturma/
 
Son düzenleme:
Tesekkurler...
Seri iletisim
#include <SoftwareSerial.h>
#include <ArduinoJson.h> library ile
unodaki sensor verilerini data yapip nodemcuya oradan bylnk e gonderebiliyorum..ve cep telefonundan 1 sn. guncelleme ile izleyebiliyorum..
ama tersini nasil yapabilirim.. yani
bylnk sanal butondan(V1-V2-V3-V4) ==>komut = 1(ACIK) ==> nodemcu ==> uno

_ #define ROLEPIN_L 5 //ROLE ISIK 1 220V in3
- pinMode(ROLEPIN_L, OUTPUT);
_ digitalWrite(ROLEPIN_L, HIGH);

Mantik bu ama...
Umarim dIger arkadaslar cozum bulabilir...
 
Arduino Uno tercih sebebininiz nedir?
 
Ben 2 ay önceye kadar bu sistemin adını bile duymamıştım.. ben yazılımdan falan hiç anlamam..evde sıkıntıdan YouTube da bütün videoları ,forumları okuya okuya mantığı iyi kötü anladım.. ,oradan buradan kopya çekerek kendime mantarhane otomasyon sistemi yaptım ve calistirdim.
Daha sonra blynk uygulamasını gördüm.. bunu ekleyebilrmiyim diye 8266-01 entegre ettim ama çok iyi bilmediğim için sorunlar oldu.. mesela sistem internete bağlanmadan calismiyordu🤔internet koparsa tekrardan bağlanmıyordu falan..
Sonra nodemcu yu gördüm..bununla internete ayrıca bağlanmak istedim.. ve yaptım,sadece buton sıkıntısı kaldı..
Şimdi bu kodları nodemcu mantığı ile derlemek bana çok zor geliyor..
Yani Arduino uno seçmemin bilinçli bir sebebi yok..
Teşekkürler...
 
@2mmert, bu konuda yalnız sayılmazsınız, ben de aynı şekilde bu işe giriştim. Tabi yıllar öncesinden bir miktar PIC ve Arduino tecrübem vardı. Ben ESP8266-01 veya NodeMCU'yu edindikten sonra Arduino'ya ihtiyaç duymayacağımı düşünüyorum. Tabi çok fazla port kapasitesi için mega modeli gerekiyorsa başka. Bahsettiğiniz sensör ve röleler NodeMCU'ya bağlanabilse yazılım da kolay olur. Yine de uzun yoldan seri port üzerinden her iki kartı haberleştirmek mümkün.
Yazılımın NodeMCU üzerine kurulması sadece portların değişmesi ile mümkündür. Yoksa ESP8266 çipleri de Arduino Ide ile programlanmaktadır.

Sistem internete bağlı olmadan çalışmıyor olayında kontrol tamamen sizdedir. Yani siz programda öyle bir istisna koymadıysanız bağlantıyı sağlamadan diğer kısmın çalışmaması doğaldır. Ben akıllı bir röle uygulamasında şöyle bir şey yapmıştım, etrafta internet varsa ve şifresi daha önce ESP8266 eeprom'unda kayıtlı ise doğrudan bağlanıp internete çıkıyor. Yok etrafta internet yok, ya da internet var ve bir kaç kez deneyip bağlanamıyorsa (şifre değişmiş olabilir), Access Point (AP) moda geçip telefonla cihaza bağlanacağı modem bilgileri girip eeprom'a kaydettikten sonra reset atıp, tekrar istasyon/client modda sisteme bağlanıyor. Zaten bu işlem için internet bağlantısı şartsa olmadığında açılsa bile kontrolü sağlamak için farklı bir yöntem denemek gerekiyor.
1623861600841.png
 

Forum istatistikleri

Konular
127,950
Mesajlar
913,831
Kullanıcılar
449,595
Son üye
Ferden1011

Yeni konular

Geri
Üst