Ik heb onlangs bij de action een thierry mugler weerstation gekocht om mee te experimenteren.
Echt geweldig zijn ze niet, slecht bereik, veel te lage waarden en de ontvanger loopt uit de pas waardoor na een tijd geen buitentemperatuur meer word weergegeven.
Maar ze zijn wel leuk om te zien hoe een en ander werkt.
Op het internet vond ik al snel het protocol waar mee de sensoren werken.
http://roel.reijerse.net/thierry/ Met een heel simpel programmatje wat via rs232 de lengte van de pulsen aangaf met PulsIn PORTB.0,1 kon ik de lengte bepalen, hieruit bleek dat voor de data er een startpuls word uitgezonden van ongeveer 4000us, hierna volgt de data waarbij een 1 : 980us is en een 0 : 2300us is.
Voor de startpuls zitten ook nog pulsen maar die zijn niet nodig.
Op de site van Roel kun je vinden waar alles zit. In mijn progje mist alleen het - teken. Deze bit zit nog na de hygro en kun je dus eenvoudig toevoegen. De ontvanger is van de conrad, elke andere zal ook willen als het maar op 433.92 Mhz werkt. Wat ook mooi zou zijn is om zelf ook het signaal te kunnen uitzenden maar er zit een checksum in waar nog niet alles van bekend is. Ook heb ik nog meer weerstations van andere merken die ga ik ook proberen te decoderen met proton.
' " ook" ontvanger op portb.0
Device 18F2620
Xtal 20
LCD_DTPin PORTC.0
LCD_ENPin PORTC.4
LCD_RSPin PORTC.5
All_Digital = On
TRISB = 000000
Dim tijdpuls As Word
Dim teller As Byte
Dim mugtemp As Byte
Dim mugtempdec As Byte
Dim mughyg As Byte
Clear
DelayMS 100
Print $FE, $40, $08, $14, $08, $03, $04, $04, $03, $00 ' celcius
Print $FE, $48, $04, $0E, $0E, $1F, $1F, $1F, $0E, $00 ' drupje
Print $FE, $50, $04, $0E, $1F, $00, $1F, $0E, $04, $00 ' temp buiten
Cls
main:
tijdpuls = PulsIn PORTB.0,1
Select Case tijdpuls
Case 1600 To 2300 'startpuls ong 4000us (bij 20mhz is 1 puls 2us) +- 20%
GoTo bitsinlezen
End Select
GoTo main
bitsinlezen:
For teller = 23 To 0 Step -1 ' 24 bits inlezen na start
tijdpuls = PulsIn PORTB.0,1
Select Case tijdpuls
Case < 390 ' bij pulsen die te klein of te groot of er tussen vallen weer terug
GoTo main
Case > 1400
GoTo main
Case 590 To 950
GoTo main
Case 390 To 590 ' 1 = ong 980 us +- 20%
Select Case teller ' eerste 4 bits altijd 1 kunnen we overslaan.
Case 16 To 19
SetBit mugtempdec, 19 - teller ' decimalen inlezen 4 bits
Case 8 To 15
SetBit mugtemp, 15 - teller ' aantal graden
Case 0 To 7
SetBit mughyg, 7 - teller ' hygro
End Select
Case 950 To 1400 '0 ong 2300 us
Select Case teller
Case 16 To 19
ClearBit mugtempdec, 19 - teller
Case 8 To 15
ClearBit mugtemp, 15 - teller
Case 0 To 7
ClearBit mughyg, 7 - teller
End Select
End Select
Next teller
Print At 1,1, 2," ",Hex2 mugtemp,".",Hex1 mugtempdec,0," ",1," ",Hex2 mughyg,"%"
GoTo main