Lakás hőmérséklet figyelő rendszer, rádiós kommunikációval.

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
broland
Tranzisztorgyógyász
Hozzászólások: 152
Csatlakozott: 2009. április 20. hétfő, 6:00

Lakás hőmérséklet figyelő rendszer, rádiós kommunikációval.

Hozzászólás Szerző: broland »

Szervusztok.

Szeretnék egy hőmérséklet figyelő, rögzítő rendszert építeni, ami a hagyományos kazánom előre/visszatérő vízhőmérsékletét, és bizonyos helyiségek hőmérsékletét mérné, rádiós rendszeren beküldené a központi egységbe (ezen kijelző stbstb), ami kb 30 percenként rögzítené az adatokat.

Valahogy így képzeltem el:
-kazánház: proci, hőmérők, rádiós RX/TX(?) modul.
-szobák: proci, hőmérő, rádiós RX/TX(?) modul.
-központi egység: proci, kijelző, I2C eeprom, rádiós RX/TX(?) modul, stb.

Van e tapasztalat a procik közötti rádiós kommunikáció kiépítésével, protokollal kapcsolatban? Tudnátuk e ajánlani kész, lehetőleg olcsó modult ami alkalmas kb 15 m átvitelére. Adatsebesség nem kritikus.

Előre is köszönöm.

Üdv Roland
Avatar
Hegemon
Biztosítékgyilkos
Hozzászólások: 58
Csatlakozott: 2009. március 13. péntek, 6:00

Hozzászólás Szerző: Hegemon »

Szia.
Hasonló témában tevékenykedek most. RFM12B-868 modullal szemezek, ha itt rákeresel találtam mintapéldát is, meg tapasztalatokat (50 méter??) viszont ez ISP buszos nem sima soros. 1500 ft /db.

Én az egész rendszert L es procikkal csinálom mert a kijelző is 3,3 voltról megy( EADOGM128 + touch) meg az RF modul is, meg a bluetooth modul is (BTM112 ezen töltöm fel az upgrédet bootloaderrel).

a hőmérőkhöz lehet kapni 3/8 colos betétet rézből, sima bélés. Én nyomást is szeretnék mérni, erre nem tudtok véletlen valami tehnológiát, vagy kapjam ki egy átfolyós vízmelegítőből a membránt?
Avatar
broland
Tranzisztorgyógyász
Hozzászólások: 152
Csatlakozott: 2009. április 20. hétfő, 6:00

Hozzászólás Szerző: broland »

Szia Hegemon

köszi szépen, már nézegetem.
találtam is egy sample programot, ime:

Kód: Egész kijelölése

$regfile = "m32def.dat"
$hwstack = 32
$swstack = 10
$framesize = 40

'$crystal = 11059200
$crystal = 8000000
$baud = 19200

Nsel Alias Portb.4
Sdi Alias Portb.5
Sdo Alias Pinb.6
Sck Alias Portb.7

Dim D As Word
Dim Data_in(10) As Byte
Dim Data_out(10) As Byte
Dim N As Byte
Dim Timeout As Word
Dim T As Word
Dim Tt As Word
Dim Freq As Single

Declare Sub Send_rfm12
Declare Sub Receive_rfm12
Declare Sub Freq_rfm12
Declare Sub Wait_rfm12
Declare Function Spi16(byval Dout As Word) As Word

Config Nsel = Output
Config Sdi = Output
Config Sck = Output
Config Portc = Output
Porta = &HFF

'Init
  Nsel = 1
  Sck = 0
 'D = Spi16(&H80d7)                                         ' El , Ef , 11.5pf, 433 MHz band
  D = Spi16(&H80e7)                                         ' El , Ef , 11.5pf, 868 MHz band
  D = Spi16(&H82d9)                                         '!er , !ebb , Et , Es , Ex , !eb , !ew , Dc
  D = Spi16(&Ha67c)                                         ' 434,15 MHz / 868,3 MHz
  D = Spi16(&Hc647)                                         ' 4.8kbps
  D = Spi16(&H94a4)                                         ' Vdi , Fast , 134 kHz , 0db , -79dbm
  D = Spi16(&Hc2ac)                                         ' Al , !ml , Dig , Dqd4
  D = Spi16(&Hca81)                                         ' Fifo8 , Sync , !ff , Dr
  D = Spi16(&Hc483)                                         ' @pwr , No Rstric , !st , !fi , Oe , En
  D = Spi16(&H9850)                                         ' 90 kHz , power - 0 dB
  D = Spi16(&He000)                                         '
  D = Spi16(&Hc800)                                         '
  D = Spi16(&Hc000)                                         ' 1 MHz , 2.2V

  Freq = 868.300
  Freq_rfm12

'start transmitter, no data
'Goto Test1:

'transmit  data
'Goto Test2:

'transmit key data
'Goto Test3:

'start receiver, all data
'Goto Test4:

'start receiver, matched data
'Goto Test5:


 Do
    For N = 1 To 10
      Data_out(n) = N
    Next N
    Send_rfm12
    Waitms 500
    For N = 1 To 10
       Data_in(n) = 0
    Next N
    Timeout = 400 + Rnd(1000)
    Receive_rfm12
    For N = 1 To 10
       Print Data_in(n);
       Print " ";
    Next N
    Waitms 700
 Loop


Sub Freq_rfm12
  If Freq < 800 Then Freq = Freq * 2
  Freq = Freq - 860
  D = Freq / 0.0050
  If D < 96 Then D = 96
  If D > 3903 Then D = 3903
  D = D + &HA000
  D = Spi16(d)
End Sub


Sub Send_rfm12
  D = Spi16(&H8238)
  Wait_rfm12
  D = Spi16(&Hb8aa)
  Wait_rfm12
  D = Spi16(&Hb8aa)
  Wait_rfm12
  D = Spi16(&Hb8aa)
  Wait_rfm12
  D = Spi16(&Hb82d)
  Wait_rfm12
  D = Spi16(&Hb8d4)
  For N = 1 To 10
    Wait_rfm12
    D = &HB800 + Data_out(n)
    D = Spi16(d)
  Next N
  Wait_rfm12
  D = Spi16(&Hb8aa)
  Wait_rfm12
  D = Spi16(&Hb8aa)
  Wait_rfm12
  D = Spi16(&H8208)
End Sub

Sub Wait_rfm12
  Nsel = 0
  Do
  Loop Until Sdo = 1
End Sub


Sub Receive_rfm12
  Tt = Timeout * 10
  D = Spi16(&H82c8)
  D = Spi16(&Hca83)
  For N = 1 To 10
    Nsel = 0
    T = 0
    Do
      T = T + 1
      Waitus 100
      If T > Tt Then Goto Nosignal
    Loop Until Sdo = 1
    D = Spi16(&Hb000)
    Data_in(n) = D
  Next N
Nosignal:
  D = Spi16(&H8208)
End Sub


Function Spi16(byval Dout As Word) As Word
Local Nspi As Integer
Local Dspi As Integer
Local Dsdo As Word
  Nsel = 0
  Dsdo = 0
  For Nspi = 1 To 16
    Dspi = Dout And &H8000
    If Dspi = 0 Then
       Sdi = 0
    Else
       Sdi = 1
    End If
    Dout = Dout * 2
    Dsdo = Dsdo * 2
    Dsdo = Dsdo + Sdo
    Sck = 1
    Waitus 5
    Sck = 0
  Next Nspi
  Nsel = 1
  Spi16 = Dsdo
End Function



'transceiver tests

'start transmitter, no data
Test1:
  D = Spi16(&H8238)
  Do
  Loop


  'transmit data
Test2:
  D = Spi16(&H8238)
  Do
    Wait_rfm12
    D = Spi16(&Hb8aa)
  Loop


  'transmit key data
Test3:
  D = Spi16(&H8238)
  Do
    Wait_rfm12
    D = Spi16(&Hb82d)
    Wait_rfm12
    D = Spi16(&Hb8d4)
  Loop


'start receiver, all data
Test4:
  D = Spi16(&H82c8)
  D = Spi16(&Hca87)
  For N = 1 To 100
    Wait_rfm12
    D = Spi16(&Hb000)
    Data_in(n) = D
    Print Chr(d);
  Next N
  Do
  Loop


'start receiver, matched data
Test5:
    D = Spi16(&H82c8)
    D = Spi16(&Hca83)
    For N = 1 To 100
      Wait_rfm12
      D = Spi16(&Hb000)
      Data_in(n) = D
      Print Chr(d);
    Next N
  Do
  Loop

üdv Roland
Válasz küldése