kutya_moso Creative Commons License 2019.08.19 0 0 3524

Szia Prof !

Azt hittem , követhető lesz az ábra :

Baloldalt fentről lefelé :

-          SD kártya

-          RF24L01 rádiómodul

-          Dallas 18B20 három lábú hőmérőmodul

-          Lcd 16,2 kijelző I2C modullal

-          DS1307 RTC óra

Jobboldalon

Arduino UNO vevő

 

Apró lépésekkel haladtam előre, már régebben tudtam több adatot SD kártyára menteni txt fájlba , majd később excel táblázatban grafikon képezni belőle .

 

Valójában ezek a lábak közösek :

Rádió és SD kártya             MISO         Arduino  D12     fekete színnel

     „    „    „     „                   MOSI           „   „      D11     piros     „ „

    „   „     „                           CLOK          „   „      D13     rózsaszín      „ „

 

 Itt az RF24L01 rádió képe

 

Azt hittem , lesz valami pár lépéses szoftveres ötlet mint a kimenetek megerősítése.

Most a következőket fogom tenni:

-          megpróbálom nagy szkóppal megnézni „ hálózati 20 MHz .-es „ szerencsére szkópom van  4 db

-          különösen a hidegítéseket , tápfesz kondikra gondolok

-          először megpróbálom a tápfeszűltséget felváltva elvenni, ez a könnyebb  

-          ha nem jutok dűlőre , akkor a MOSI és MISO lábakat relével átkapcsolhatóra teszem, mivel egyszerre nem kell adatot átvenni és adatkártyára rögzíteni.

Ha beindul , akkor megpróbálok valami elektronikus megoldást.

Csak régebben láttam ilyen 3 állapotú „ tri state „ illesztőket, de soha nem csináltam.

Olyan volt mint kettő műveleti erősítő és egyik vagy a másik esetleg egyik sem „ ekkor lebegett „  kapott tápfeszültséget.

 

Beteszem a kódját , ezt ne nézd túl kritikusan, biztosan sokat tudnál rajt fésülni , de működik .

Én ezt nem tanultam iskolába , csak össze ollóztam több működő kapcsolást és bele változtattam

 

2 - 3 - 4 - 23.69 -
2 - 3 - 4 - 23.69 -
2 - 3 - 4 - 23.69 -
2 - 3 - 4 - 23.75 -
2 - 3 - 4 - 23.75 -
2 - 3 - 4 - 23.75 -
2 - 3 - 4 - 23.75 -
2 - 3 - 4 - 23.75 -
2 - 3 - 4 - 23.75 -
2 - 3 - 4 - 23.75 -
2 - 3 - 4 - 23.75 -
2 - 3 - 4 - 23.75 -
2 - 3 - 4 - 23.75 -
2 - 3 - 4 - 23.75 -
2 - 3 - 4 - 23.75 -
2 - 3 - 4 - 23.75 -
2 - 3 - 4 - 23.75 -
2 - 3 - 4 - 23.75 -
2 - 3 - 4 - 23.81 -
2 - 3 - 4 - 23.81 -

 

Itt látszik , hogy a mentés működik, csak nem veszi a rádió jeleket, de a hőmérsékletet méri D2 lábon.

Utoljára a program

.,.,.,.,.,.,.,.,.,.,.

// Mikor megírtam azSD progit, leállt az óra  !!!! kártyát lehúzva elindult !
/*  GND barna , 3,3V üres, +5V piros,CS fekete, MOSI fehér, SCK szürke , MISO lila, GND üres   */
// kezdődik a kártyára mentés ,megnyitiotta, de mégsem írt rá ÉS LEÁLLÍTOTTA A RÁDIÓT
//  SD      : MOSI D11, MISO D12, CLOK D13 , CS D10
// RF24L01  : MOSI D11, MISO D12, CLOK D13  CS D10, , CE D3 ,  CS  D4
//  PRÓBA 4 ADATTAL     LEFORDÍTOTTA  !!!!!!!!!!!!
//  https://www.how2electronics.com/nrf24l01-based-wireless-temperature-monitoring-with-dht11-arduino/
#include <SPI.h>
#include <DS1307.h>  // az órának a cucca
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
#include <SD.h>            // SD könyvtár
#include <dht.h>          // azt hiszem , hogy ez a hőmérő könyvtár
//dht DHT ;
#include <nRF24L01.h>
#include <RF24.h>
#include <Wire.h>
#include <LiquidCrystal_PCF8574.h>
LiquidCrystal_PCF8574 lcd(0x27);  // set the LCD address to 0x27 for a 16 chars and 2 line display
DS1307 rtc;
int adattomb[] ={1,2,3,4}       ;  // 4 adatos tömböt kreáltam csak most "int"
RF24 radio( 3, 4 );      //  CE  ,  CSN         (9, 10); !!
const uint64_t pipe = 0xE8E8F0F0E1LL;
const int chipSelect = 10;   //4
//     pinMode ( 10 , OUTPUT );       // Róbert ajánlása, tegyük erős kimenetté
File dataFile ;
float Celsius = 0;

               //   ---

void setup(void) {
    Serial.begin(9600);
    sensors.begin();  // próbára
    pinMode ( 10 , OUTPUT );       // Róbert ajánlása, tegyük erős kimenetté
    Serial.println("Init RTC..."); // inic. RTC óra
 // rtc.set(0, 20, 21, 11, 8, 2019); /*20:24:00 24.12.2014 //sec, min, hour, day, month, year*/        //fasza: átugrom a beállítást
 
   rtc.stop();   /*stop/pause RTC  -.-  NEM TUDOM MÉG MIÉRT KELL */
  rtc.start();     /*start RTC       -.- NEM TUDOM MÉG MIÉRT KELL */
    radio.begin();  
    radio.openReadingPipe(1, 0xE8E8F0F0E1LL );  // pipe
    radio.startListening();
    lcd.begin(16, 2);
    lcd.setBacklight(255);
    lcd.clear();
    lcd.setCursor( 0,0);
    lcd.print("lcd felallt");
    //                 x.x.x-x.-x-
     while (!Serial) {        ; // várjon a soros port csatlakoztatásához. Szükség van a natív USB portra
  }
   if (!SD.begin(chipSelect)) {
    Serial.println("Kártya nyitási hiba");    //ne csinálj többet:
    lcd.setCursor( 0,1);
    lcd.print("SD befosott");
    return;
  }
  Serial.println("Kártya nyitása sikerült");
    lcd.setCursor( 0,1);
    lcd.print("SD faszentos");

    //                 x.x.x-x.-x-              
 
  delay(2000);
}
                                //   --
void loop(void)
{
 //sensors.requestTemperatures();
 // Celsius = sensors.getTempCByIndex(0);
 // Fahrenheit = sensors.toFahrenheit(Celsius);
uint8_t sec, min, hour, day, month;
  uint16_t year;
  /*get time from RTC*/
  rtc.get(&sec, &min, &hour, &day, &month, &year);

  lcd.clear ();
  lcd.setCursor (0,1);
  lcd.print(hour,DEC);
  lcd.setCursor (2,1);
  lcd.print(":");
  lcd.setCursor (3,1);
  lcd.print(min,DEC);
  lcd.setCursor (5,1);
  lcd.print(":");
  lcd.setCursor (6,1);
  lcd.print(sec,DEC);
  lcd.setCursor (9,1);
 // lcd.setCursor (11,1);
 // lcd.print(Celsius);    // még nincs programozva

   if ( radio.available() )
  {
    bool done = false;
    while (!done)
    {
      radio.read(&adattomb, sizeof(adattomb));
      delay(500);  
     // lcd.clear  ();
      lcd.setCursor( 0,0);
      lcd.print(adattomb[1]);
      lcd.setCursor( 5,0);
      lcd.print(adattomb[2]);
      lcd.setCursor( 10,0);
      lcd.print(adattomb[3]);
      
      
     //  lcd.setBacklight(0);  
      Serial.print(adattomb[1]);
      Serial.print("    ");
      Serial.print(adattomb[2]);
      Serial.print("    ");
      Serial.print(adattomb[3]);
      Serial.print("    ");
      Serial.print(adattomb[4]);
      Serial.print("    ");
      Serial.print(Celsius);
      Serial.println("    ");
      sensors.requestTemperatures();
      Celsius=sensors.getTempCByIndex(0);

      
    
      lcd.setCursor (11,1) ;
      lcd.print(Celsius);    // még nincs programozva

      //                   x . x - x -
      File dataFile = SD.open("goreny.txt", FILE_WRITE) ;

     
      
      dataFile.print(adattomb[1]) ;
      dataFile.print(" - ") ;
      dataFile.print(adattomb[2]) ;
      dataFile.print(" - ") ;
      dataFile.print(adattomb[3]) ;
      dataFile.print(" - ") ;
      dataFile.print(Celsius) ;
      dataFile.println(" - ") ;
      dataFile.close();
      
       delay(400);
       lcd.setBacklight(255);
        delay(400);
    }
  }
  else
  {
      Serial.println("Nem talált Rádiót" ) ;
  }
}