Hello ,
please - can you help me :
I have Arduino as central node and some home made temperature wireles sensors (sensor = lithium battery+ds18b20+attiny25+rfm12b).
How to create RF12 packet (exactly which bytes i need send) if i want receive this packet in arduino. For example i need send from attiny only 2 bytes: {100,100}
my idea is:
Spi16(&Hb8aa) --B8.. is RF12 command to transmit 1 byte , in this case "aa" , SPi16() is sending function (this is not important)
Spi16(&Hb8aa)
Spi16(&Hb8aa) -- preamble end (3xaa was sending)
Spi16(&Hb82D) -- SYNC 2D
Spi16(&Hb801) -- group is 1
Spi16(&Hb801) -- header C=0,D=0,A=0 , node ide =1 => 01 (it is OK ?)
Spi16(&Hb802) -- LEN is 2 bytes
Spi16(&Hb864) -- DATA (100 decimal)
Spi16(&Hb864) -- DATA (100 decimal)
Spi16(&Hb8**??) -- CRC16 , but how to calculate CRC16 (compatible with arduino) in BASCOM ?????
Spi16(&Hb8??**) -- CRC16 I need BASCOM routine for x^16 + x^15 + x^2 + 1 ?
of course , before sending from attiny - I must setting rfm modul : correct frequency,data rate and etc. - it is no problem for me....
Here is piece my old BASCOM program from my home automation project :
Send_data:
D = Spi16(&H823d) 'TX on, VBD on
Waitms 5
D = Spi16(&H0000)
Data_out(3) = High(d)
Wait_rfm12
D = Spi16(&Hb8aa)
Wait_rfm12
D = Spi16(&Hb8aa)
Wait_rfm12
D = Spi16(&Hb82d)
Wait_rfm12
D = Spi16(&Hb801) 'SYNC v tejto siet 01 !!!
Data_out(1) = 1 'jedinecne ID modulu v sieti
Data_out(2) = Pck_id 'poradove cislo paketu odoslane z modulu (0-255)
Data_out(4) = T2 'teplota Hi .byte
Data_out(5) = T1 'teplota Lo .byte
Data_out(6) = 0 'rezerva
Data_out(7) = 0
Data_out(8) = 0
Data_out(9) = 0
Data_out(10) = 0
Data_out(11) = Crc8(data_out(1) , 10) 'CRC z prvych 10 bytov
Data_out(12) = "x"
For N = 1 To 12
Wait_rfm12
D = &HB800 + Data_out(n)
D = Spi16(d)
Next N
Wait_rfm12
D = Spi16(&Hb8aa)
Wait_rfm12
Pck_id = Pck_id + 1
Waitms 30
D = Spi16(&H8201) 'standby
Return
thanks !