riasztó

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Avatar
szovhoz
Bitfaragó
Hozzászólások: 608
Csatlakozott: 2007. április 7. szombat, 6:00

riasztó

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

Egy riasztó építésén dolgozom mert meg nőtt erre fele a betörések és lopások száma.

Készen olcsóbb lenne ne abban semmi saját munka sincs.

Szóval van 10 érzékelőm az ablakokon és ajtókon. Kinyílás esetén logikai 1 adnak át.

És egy szirénát szeretnék vele vezéreltetni.
nem is lenne vele semmi gond hisz egyszerű de egy gombal szeretném nyugtázni a riasztást erre a sziréna kimenetet 0 szeretném tenni.

ez is sikerült csak egy probléma hogy ha nyugtázom mondjuk az ajtó érzékelő hibáját utánna nem szólal meg újra ha az ablakot kinyitom.

valami ötlet?

a gomb inten van azzal sok mindenre lehet használni.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

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

Az szoftverhiba... a programkod nelkul nehez barmit mondani...

- INT engedelyezve ujra?
- valtozo letarolva?


En inkabb kesz kozpontban gondolkodnek, es azt egeszitenem ki sajat megoldasokkal.... Ez egyszerubb:) Az akku, tapresz keszen van... a mobiltelefonos atjelzes es hasonlok meg jobban megerik sk megcsinalni...
Avatar
szovhoz
Bitfaragó
Hozzászólások: 608
Csatlakozott: 2007. április 7. szombat, 6:00

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

Mobilos rész is lessz benne majd. de először az érzékelőket kell megcsinálnom hozzá. A GSM rész már kész van hozzá de annak a konfigurálása készőbbiekben fog sorra kerülni annak már csak jeleket kell adni és telefonon felhív vagy sms-t küld. Illetve kívülről sms-el is lehet vezérelni majd. PL a villanyt otthon felkapcsolni meg ilyesmi.

Illetva van egy + funkció a gsm részben jelez ha nem talál hálózatot illetve sérült az antenna vagy éppen nincs sim kártya benne.

Itt a szoft

És csak az intes részét szeretném valahogy megoldani hogy ha új riasztás érkezik akkor kapcsolja be a relét és én az itnen lévő nyomógombal lekapcsoljam a relét illetve a + buzzert. és utánna újra szóljaon a kövnél.

Ha értitek mire gondolok.

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

'------------------------------------------------------------------------------
'name                     : Alarm - GSM
'copyright                :
'micro                    : Mega64
'------------------------------------------------------------------------------
$regfile = "m64def.dat"
$crystal = 14745600
$hwstack = 255
$swstack = 160
$framesize = 160
$baud = 9600


'Config Watchdog = 2048
Config Adc = Single , Prescaler = 4 , Reference = Internal  'The prescaler divides the internal clock by 2,4,8,16,32,64 or 128

'RS485--------------------------------------------------------------------------
Config Com2 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Open "COM2:" For Binary As #1

'Input -------------------------------------------------------------------------

Config Pina.0 = Input                                       '11 in
Config Pina.5 = Input                                       '1 in

Config Pinb.2 = Input                                       '3 in
Config Pinb.3 = Input                                       '2 in


Config Pinb.6 = Input                                       '12 in
Config Pinb.7 = Input                                       'ajtó reed

Config Pind.0 = Input                                       'reset - törlése

Config Pine.2 = Input                                       '4 in
Config Pine.3 = Input                                       '16 in
Config Pine.4 = Input                                       '15 in
Config Pine.5 = Input                                       '14 in
Config Pine.6 = Input                                       '13 in
Config Pine.7 = Input                                       'GSM AWR input

Config Pinf.0 = Input                                       'AKKU ADC
Config Pinf.1 = Input                                       'TÁP ADC
Config Pinf.2 = Input                                       '5 in
Config Pinf.3 = Input                                       '6 in
Config Pinf.4 = Input                                       '7 in
Config Pinf.5 = Input                                       '8 in
Config Pinf.6 = Input                                       '9 in
Config Pinf.7 = Input                                       '10  in

'Output -------------------------------------------------------------------------

Config Porta.1 = Output                                     '5 LED
Config Porta.2 = Output                                     'RIASZT RELÉ
Config Porta.3 = Output                                     '8 LED
Config Porta.4 = Output                                     '7 LED
Config Porta.6 = Output                                     'BUZZER2
Config Porta.7 = Output                                     'RESET LED

Config Portb.0 = Output                                     'GSM 6 input
Config Portb.4 = Output                                     'GSM 5 input
Config Portb.5 = Output                                     'GSM 4 input

Config Portc.7 = Output                                     '13 LED
Config Portc.6 = Output                                     '15 LED
Config Portc.5 = Output                                     '16 LED
Config Portc.4 = Output                                     'SUPPLY  LED
Config Portc.3 = Output                                     '4 LED
Config Portc.2 = Output                                     '12 LED
Config Portc.1 = Output                                     '2 LED
Config Portc.0 = Output                                     '3 LED



Config Portd.5 = Output                                     '1 LED
Config Portd.6 = Output                                     '9 LED
Config Portd.7 = Output                                     '10 LED


Config Portg.0 = Output                                     '11 LED
Config Portg.1 = Output                                     '6 LED
Config Portg.2 = Output                                     '14 LED

'Interrupt----------------------------------------------------------------------

On Int0 Riasztreset                                         'RIASZT - RESET GOMB
Config Int0 = Falling
Enable Interrupts
Enable Int0

'ADC VÁLTOZÓK---------------
Dim U As Word , Channel0 As Word                            'akku Adc
Channel0 = 0
Dim V As Word , Channel1 As Word                            'táp Adc
Channel1 = 1


'INPUT ALIAS--------------------------------------------------------------------
In1 Alias Pina.5                                            '1 in
In2 Alias Pinb.3                                            '2  in
In3 Alias Pinb.2                                            '3  in
In4 Alias Pine.2                                            '4  in
In5 Alias Pinf.2                                            '5  in
In6 Alias Pinf.3                                            '6 in
In7 Alias Pinf.4                                            '7  in
In8 Alias Pinf.5                                            '8  in
In9 Alias Pinf.6                                            '9  in
In10 Alias Pinf.7                                           '10  in
In11 Alias Pina.0                                           '11  in
In12 Alias Pinb.6                                           '12  in
In13 Alias Pine.6                                           '13  in
In14 Alias Pine.5                                           '14  in
In15 Alias Pine.4                                           '15  in
In16 Alias Pine.3                                           '16  in


Gsmawrinput Alias Pine.7                                    'GSM AWR input
Ajtosensor Alias Pinb.7                                     'ajtó reed
Riasztastorles Alias Pind.0                                 'reset - törlése


'OUTPUT ALIAS--------------------------------------------------------------------
1led Alias Portd.5                                          '1 LED
2led Alias Portc.1                                          '2 LED
3led Alias Portc.0                                          '3 LED
4led Alias Portc.3                                          '4 LED
5led Alias Porta.1                                          '5 LED
6led Alias Portg.1                                          '6 LED
7led Alias Porta.4                                          '7 LED
8led Alias Porta.3                                          '8 LED
9led Alias Portd.6                                          '9 LED
10led Alias Portd.7                                         '10 LED
11led Alias Portg.0                                         '11 LED
12led Alias Portc.2                                         '12 LED
13led Alias Portc.7                                         '13 LED
14led Alias Portg.2                                         '14 LED
15led Alias Portc.6                                         '15 LED
16led Alias Portc.5                                         '16 LED


Buzzer Alias Porta.6                                        'BUZZER
Resetled Alias Porta.7                                      'RESET LED
Riasztasrele Alias Porta.2                                  'RIASZT RELÉ
Supplyled Alias Portc.4                                     'SUPPLY  LED

Gsm6input Alias Portb.0                                     'GSM 6 input
Gsm5input Alias Portb.4                                     'GSM 5 input
Gsm4input Alias Portb.5                                     'GSM 4 input

' relé változók ----------------------------------------------------------------
Dim Riasztasreletap As Word
Dim Riasztasreleakku As Word
Dim Riasztasrelefuse As Word
Dim Riasztasrelegsm As Word

Dim Riasztasrele1in As Word
Dim Riasztasrele2in As Word
Dim Riasztasrele3in As Word
Dim Riasztasrele4in As Word
Dim Riasztasrele5in As Word
Dim Riasztasrele6in As Word
Dim Riasztasrele7in As Word
Dim Riasztasrele8in As Word
Dim Riasztasrele9in As Word
Dim Riasztasrele10in As Word
Dim Riasztasrele11in As Word
Dim Riasztasrele12in As Word
Dim Riasztasrele13in As Word
Dim Riasztasrele14in As Word
Dim Riasztasrele15in As Word
Dim Riasztasrele16in As Word

Dim L As Bit

Declare Sub Akkuadc(byref Channel0 As Word , U As Word )
Declare Sub Tapadc(byref Channel1 As Word , V As Word )
Declare Sub Riasztas
Declare Sub Rs485
Declare Sub Ledek
Declare Sub Riasztasrelesub


Riasztasreletap = 0
Riasztasreleakku = 0
Riasztasrelefuse = 0
Riasztasrelegsm = 0

Riasztasrele1in = 0
Riasztasrele2in = 0
Riasztasrele3in = 0
Riasztasrele4in = 0
Riasztasrele5in = 0
Riasztasrele6in = 0
Riasztasrele7in = 0
Riasztasrele8in = 0
Riasztasrele9in = 0
Riasztasrele10in = 0
Riasztasrele11in = 0
Riasztasrele12in = 0
Riasztasrele13in = 0
Riasztasrele14in = 0
Riasztasrele15in = 0
Riasztasrele16in = 0



L = 0



Riasztasrele = 1


'Főprogram kezdete
Do




Call Akkuadc(channel0 , U )
Call Tapadc(channel1 , V )
Call Ledek
Call Riasztasrelesub





Loop
'Főprogram Vége




'INT----------------------------------------------------------------------------
Riasztreset:
Riasztasrele = 0
Resetled = 0
Buzzer = 0
L = 1
Return


'ADC----------------------------------------------------------------------------

Sub Akkuadc(byref Channel0 As Word , U As Word )
U = 0
U = Getadc(channel0)

If U < 186 Then
Riasztasreleakku = 1
Supplyled = 0
Wait 1
Supplyled = 1
Wait 1
Else
Riasztasreleakku = 0
End If

End Sub


Sub Tapadc(byref Channel1 As Word , V As Word )

V = 0
V = Getadc(channel1)
If U > 186 Then

Select Case V

Case 0 To 330 : Riasztasreletap = 1
                 Supplyled = 0

Case 711 To 1024 : Riasztasrelefuse = 1
                    Waitms 80
                    Supplyled = 1
                    Waitms 80
                    Supplyled = 0

Case Else : Supplyled = 1
             Riasztasrelefuse = 0
             Riasztasreletap = 0
End Select
End If

End Sub



'Riasztas-----------------------------------------------------------------------
Sub Riasztas


End Sub



Sub Riasztasrelesub

If Riasztasreletap = 1 Or Riasztasreleakku = 1 Or Riasztasrelefuse = 1 Or Riasztasrele1in = 1 Or Riasztasrele2in = 1 Or Riasztasrele3in = 1 Or Riasztasrele4in = 1 Or Riasztasrele5in = 1 Or Riasztasrele6in = 1 Or Riasztasrele7in = 1 Or Riasztasrele8in = 1 Or Riasztasrele9in = 1 Or Riasztasrele10in = 1 Or Riasztasrele11in = 1 Or Riasztasrele12in = 1 Or Riasztasrele13in = 1 Or Riasztasrele14in = 1 Or Riasztasrele15in = 1 Or Riasztasrele16in = 1 Or Riasztasrelegsm = 1 Then

If L <> 1 Then
Riasztasrele = 1
Buzzer = 1
Resetled = 1
End If

End If

If Riasztasreletap = 0 And Riasztasreleakku = 0 And Riasztasrelefuse = 0 And Riasztasrele1in = 0 And Riasztasrele2in = 0 And Riasztasrele3in = 0 And Riasztasrele4in = 0 And Riasztasrele5in = 0 And Riasztasrele6in = 0 And Riasztasrele7in = 0 And Riasztasrele8in = 0 And Riasztasrele9in = 0 And Riasztasrele10in = 0 And Riasztasrele11in = 0 And Riasztasrele12in = 0 And Riasztasrele13in = 0 And Riasztasrele14in = 0 And Riasztasrele15in = 0 And Riasztasrele16in = 0 And Riasztasrelegsm = 0 Then

L = 0
   Riasztasrele = 0
   Buzzer = 0
   Resetled = 0
End If
Reset Watchdog
End Sub




Sub Ledek

If In1 = 1 Then
Riasztasrele1in = 1

1led = 1
Else
1led = 0
Riasztasrele1in = 0
End If


If In2 = 1 Then
Riasztasrele2in = 1

2led = 1
Else
2led = 0
Riasztasrele2in = 0
End If

If In3 = 1 Then
Riasztasrele3in = 1

3led = 1
Else
3led = 0
Riasztasrele3in = 0
End If


If In4 = 1 Then
Riasztasrele4in = 1

4led = 1
Else
4led = 0
Riasztasrele4in = 0
End If


If In5 = 1 Then
Riasztasrele5in = 1

5led = 1
Else
5led = 0
Riasztasrele5in = 0
End If


If In6 = 1 Then
Riasztasrele6in = 1

6led = 1
Else
6led = 0
Riasztasrele6in = 0
End If

If In7 = 1 Then
Riasztasrele7in = 1

7led = 1
Else
7led = 0
Riasztasrele7in = 0
End If

If In8 = 1 Then
Riasztasrele8in = 1

8led = 1
Else
8led = 0
Riasztasrele8in = 0
End If

If In9 = 1 Then
Riasztasrele9in = 1

9led = 1
Else
9led = 0
Riasztasrele9in = 0
End If

If In10 = 1 Then
Riasztasrele10in = 1

10led = 1
Else
10led = 0
Riasztasrele10in = 0
End If

If In11 = 1 Then
Riasztasrele11in = 1

11led = 1
Else
11led = 0
Riasztasrele11in = 0
End If


If In12 = 1 Then
Riasztasrele12in = 1

12led = 1
Else
12led = 0
Riasztasrele12in = 0
End If


If In13 = 1 Then
Riasztasrele13in = 1

13led = 1
Else
13led = 0
Riasztasrele13in = 0
End If


If In14 = 1 Then
Riasztasrele14in = 1

14led = 1
Else
14led = 0
Riasztasrele14in = 0
End If

If In15 = 1 Then
Riasztasrele15in = 1

15led = 1
Else
15led = 0
Riasztasrele15in = 0
End If

If In16 = 1 Then
Riasztasrele16in = 1

16led = 1
Else
16led = 0
Riasztasrele16in = 0
End If


End Sub







Sub Rs485




' KIÍRATÁS ---------------------------------------------------------------------

Print #1 , ""
Print #1 , ""
Print #1 , ""
Print #1 , ""
Print #1 , "                     -= Riasztóközpont =-                          "
Print #1 , ""
Print #1 , "                         -= 2009 (c) =-                            "
Print #1 , ""
Print #1 , "                    -= ALARM - GSM 1.0 REV =-                          "
Print #1 , ""
Print #1 , "                         -= by SBS =-                              "
Print #1 , ""
Print #1 , "                       - = SZOVHOZ = -             "
Print #1 , ""
Print #1 , ""
Print #1 , ""
Print #1 , "                      -= DATA OUTPUT =-                            "
Print #1 , ""
Print #1 , ""
Print #1 , ""
Print #1 , ""
Print #1 , ""
Print #1 , ""
Print #1 , ""
Print #1 , ""
Print #1 , "                          -=END=- "
Print #1 , ""
Print #1 , ""
Exit Sub
End Sub

End
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

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

Itt az L változót miért vizsgálod?
If L <> 1 Then
Riasztasrele = 1
Buzzer = 1
Resetled = 1
End If

Lehetséges, hogy ez a rész hamarabb lefut:
L = 0
Riasztasrele = 0
Buzzer = 0
Resetled = 0
Mivel L = 0 lesz az előző If már nem fut le?

És itt Miértelme van?
Print #1 , ""
Exit Sub ’Ennek a sornak?
End Sub
Avatar
szovhoz
Bitfaragó
Hozzászólások: 608
Csatlakozott: 2007. április 7. szombat, 6:00

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

ez a rész csak akkor fut le ha egyik bemeneten sincs hiba.

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

L = 0
   Riasztasrele = 0
   Buzzer = 0
   Resetled = 0
End If 

amikor megnyomom a gombot hogy töröljem a riasztást akkor az L = 1

így a másiknál nem tudja vissza kapcsolni.
ha az az L<>1 nem lenne ot a gomb megnyomás után újra vissza kapcsolna egyből a riasztó. de csak akkor kellene neki vissza kapcsolni ha újabb jel jön valamelyik lábon a sok közül.

ami most van szép és jó mert nyugtázza a riasztást csak én nem így szeretném. hanem ha nyugtázás után új riasztás jön a riasztreset gombal újra le tudjam lőnni a relét és a buzzert.

Attól egy led villog nekem ami mutatja hogy hiba van és hogy hol.

de ennek nem jövök rá a logikájára.


az rs485 véletlen maradt benne azt csak bele tettem még nincs kidolgozva majd azt is felhasználom jó kis kommunikáció lesz belőlle. de kössz már töröltem is belőlle.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

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

Próbáld úgy megoldani, hogy INT-ben megjelölöd 1 változóban melyik riasztást jelölted falsnak.
És utána a fals jelzésre nem riasztasz.

Mert így ha 1szer van hibátlan állapot, többet nem kapsz riasztást!

Például mikor elmész otthonról, a bejárati ajtó csak késleltetés után riasztjon. Legyen időd kimenni és bezárni az ajtót,
A hozzászólást 1 alkalommal szerkesztették, utoljára kapu48 2009. június 29. hétfő, 15:33-kor.
Avatar
szovhoz
Bitfaragó
Hozzászólások: 608
Csatlakozott: 2007. április 7. szombat, 6:00

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

ezt nem értem meg próbálnád a logikáját levezetni vagy leírni egy mintában.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

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

Valahogy így képzelem:

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



Dim Rele1in As Bit
Dim Rele2in As Bit
Dim Rele3in As Bit
...
...

 'INT----------------------------------------------------------------------------
Riasztreset:
Riasztasrele = 0
Resetled = 0
Buzzer = 0
If Riasztasrele1in = 1 Then Rele1in = 1 Else  Rele1in = 0 End if
If Riasztasrele2in = 1 Then Rele2in = 1  Else Rele2in = 0 End if
If Riasztasrele3in = 1 Then Rele3in = 1  Else Rele3in = 0 End if
... 'Így ugyan azzal a gombbal le is kapcsolhatod a megkülönböztető jelzést.
...


Return


Sub Riasztasrelesub
    If Riasztasrele1in = 1 Then
      If Rele1in = 0 Then
         Call Riaszt
      End If
    End If
    If Riasztasrele2in = 1 Then
      If Rele2in = 0 Then
         Call Riaszt
      End If
    End If
    If Riasztasrele3in = 1 Then
      If Rele3in = 0 Then
         Call Riaszt
      End If
    End If
    ...
    ...
End Sub

Sub Riaszt
   Riasztasrele = 1
   Buzzer = 1
   Resetled = 1
End Sub
A hozzászólást 3 alkalommal szerkesztették, utoljára kapu48 2009. június 30. kedd, 17:41-kor.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

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

Valahogy még meg kel oldani, hogy a fals jelzést vissza kapcsold, ha már nem kel.
Esetleg így:
TimerINT:
Rele1in = 0
Rele2in = 0
Rele3in = 0


return

Különben így ha a betörőd becsukja az ajtót maga után, megszűnik a riasztás!
És mi van, ha ablak betöréssel hatol be?
:twisted:
A hozzászólást 1 alkalommal szerkesztették, utoljára kapu48 2009. június 29. hétfő, 16:15-kor.
Avatar
szovhoz
Bitfaragó
Hozzászólások: 608
Csatlakozott: 2007. április 7. szombat, 6:00

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

és a sub riasztot hol hívod meg azt nem is használtam eddig csak bettem hogy hátha kell majd.

szóval a főprogramban gondoltam a meghívását?
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

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

Ezt a főprogramból hívod:

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

Sub Riasztasrelesub
    If Riasztasrele1in = 1 Then  'Riaszt1 jelzö be
      If Rele1in = 0 Then  'Ha a fals jelző nincsen bekapcsolva
         Call Riaszt  'ITT hívom meg a riasztást
      End If
    End If
A hozzászólást 3 alkalommal szerkesztették, utoljára kapu48 2009. június 29. hétfő, 16:33-kor.
Avatar
szovhoz
Bitfaragó
Hozzászólások: 608
Csatlakozott: 2007. április 7. szombat, 6:00

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

Ha becsukja akkor szünjön is meg a riasztás mert nem csak ablak ajtót figyelak arra van 10 bemenet a 16 ból. a többi 6 bemenet mozgás érzékelő lessz majd a lakásban.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

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

Mi újság boldogultál? (Olvas vissza közben javítottam!) :idea:

Kész program nem létezik, csak befejezet! :D
Avatar
nobody_hun
Bitfaragó
Hozzászólások: 425
Csatlakozott: 2005. november 14. hétfő, 7:00

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

Ez tök jó ötlet!

Amúgy pölö a DSC régi központjaiban PIC volt, a kezelőiben pedig a mai napig azt alkalmazza.

Sajnos a Keybus protokollja "titkos", így arról nem nyilatkozom, de egy kis kereséssel egészen sok információ található róla. :wink:
"Az IC-k füsttel működnek. Ha kijön belőlük a füst, nem működnek tovább." - ismeretlen szerző
"Az ID:FFFFFF egyenlő az Atmel még nem kiadott processzorával."
Avatar
szovhoz
Bitfaragó
Hozzászólások: 608
Csatlakozott: 2007. április 7. szombat, 6:00

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

Nem sikerült!

Ez a nyomógomb kifog rajtam.

De hétvégén megyek nyaralni majd agyalok rajta.

én pedig csak azt szeretném hogy minden riszatásnál egy gombnyomással ki lehesen kapcsolni a sziréna kimeneti relayt!

Olyan nagy kérés ez a bascomtól? :D :D :D :D
Válasz küldése