Rauchmelder V2.4 auf ARM portiert
Rauchmelder V2.4 auf ARM portiert
Hallo,
ich habe den Code für das Raucmelder Modul vom LPC922 auf den ARM LPC1115 portiert.
Vorab: ich habe einen Gira Dual Q 233602 und eine ARM 4TE Platine verbunden.
Eine "original" LPC922 Rauchmelder Platine habe ich nicht und werde auch keine beschaffen.
Was bisher nicht funktioniert und ich mir auch nicht sicher bin ob es vorher funktioniert hat:
Die Status Informationen (z.B. Batteriespannung, Temperatur...) werden nicht vom Rauchmelder geholt, wenn die Option "Status Information zyklisch senden" für die entsprechende Information nicht aktiviert wurde.
Das müsste allerdings auch bei dem LPC922 Modul so gewesen sein, so weit ich den Code verfolgt habe. Kann das jemand bestätigen oder dementieren?
Zur Zeit sind RX und TX noch an PIO1_6 und PIO1_7 angeschlossen.
Im bereits designten ARM Rauchmeldermodul sind RX und TX an PIO3_1 und PIO3_0 angeschlossen.
Leider ist es mir bisher mit der sblib nicht gelungen diese Pins zu verwenden.
Falls dafür jemand ne Initsequenz hat, wäre ich sehr dankbar.
Mit einem einfachen "setRxPin" und "setTxPin" habe ich es bereits versucht (ohne Erfolg)
Ich denke, da in der "serial0.cpp" bereits der Aufruf "Serial serial(PIO1_6, PIO1_7);" stattfindet, sind PIO1_6 und PIO1_7 als RX und TX konfiguriert. Eventuell muss man diese vorab "dekonfigurieren"?
Soll ich das Ganze mal ins Github stellen?
Eventuell kann man die letzten Feinheiten auch gemeinsam beheben.
Das Ganze funktioniert zur Zeit mit der rm-2.4.vd1
Grüße,
Olli
ich habe den Code für das Raucmelder Modul vom LPC922 auf den ARM LPC1115 portiert.
Vorab: ich habe einen Gira Dual Q 233602 und eine ARM 4TE Platine verbunden.
Eine "original" LPC922 Rauchmelder Platine habe ich nicht und werde auch keine beschaffen.
Was bisher nicht funktioniert und ich mir auch nicht sicher bin ob es vorher funktioniert hat:
Die Status Informationen (z.B. Batteriespannung, Temperatur...) werden nicht vom Rauchmelder geholt, wenn die Option "Status Information zyklisch senden" für die entsprechende Information nicht aktiviert wurde.
Das müsste allerdings auch bei dem LPC922 Modul so gewesen sein, so weit ich den Code verfolgt habe. Kann das jemand bestätigen oder dementieren?
Zur Zeit sind RX und TX noch an PIO1_6 und PIO1_7 angeschlossen.
Im bereits designten ARM Rauchmeldermodul sind RX und TX an PIO3_1 und PIO3_0 angeschlossen.
Leider ist es mir bisher mit der sblib nicht gelungen diese Pins zu verwenden.
Falls dafür jemand ne Initsequenz hat, wäre ich sehr dankbar.
Mit einem einfachen "setRxPin" und "setTxPin" habe ich es bereits versucht (ohne Erfolg)
Ich denke, da in der "serial0.cpp" bereits der Aufruf "Serial serial(PIO1_6, PIO1_7);" stattfindet, sind PIO1_6 und PIO1_7 als RX und TX konfiguriert. Eventuell muss man diese vorab "dekonfigurieren"?
Soll ich das Ganze mal ins Github stellen?
Eventuell kann man die letzten Feinheiten auch gemeinsam beheben.
Das Ganze funktioniert zur Zeit mit der rm-2.4.vd1
Grüße,
Olli
Tags:
Re: Rauchmelder V2.4 auf ARM portiert
So, kurzes Update.
Die korrekten Pins PIO3_0 und PIO3_1 können nun doch sehr einfach als UART Interface verwendet werden.
Ich muss letztes Mal wohl noch nen anderen Fehler gemacht haben.
Somit funktioniert der Code nun so wie er soll für die neu designte Rauchmelderplatine.
Ich werde mir mal nen paar Platinen machen lassen und dann wieder berichten.
Grüße,
Olli
Die korrekten Pins PIO3_0 und PIO3_1 können nun doch sehr einfach als UART Interface verwendet werden.
Ich muss letztes Mal wohl noch nen anderen Fehler gemacht haben.
Somit funktioniert der Code nun so wie er soll für die neu designte Rauchmelderplatine.
Ich werde mir mal nen paar Platinen machen lassen und dann wieder berichten.
Grüße,
Olli
-
- Beiträge: 645
- Registriert: 17. Mai 2013, 20:57
- Kontaktdaten:
Re: Rauchmelder V2.4 auf ARM portiert
Vielen herzlichen Dank Olli für die Portierung!
Wir hatten da noch irgendwie manchmal ein Problem wenn der Rauchmelder gefragt wurde und dieser im geöffneten Gehäuse also im standby war. Kannst du feststellen ob man einen PIN irgendwie auf high zero oder so testen kann, sodass unser Modul erst nach Schließen , also Freischalten anfängt mit dem Rauchmelder zu kommunizieren.
Ich stelle mir das Ausspähen eines zuschaltbaren pullups seitens des Rauchmelders vor, der im idle high zero ist.
Wir hatten da noch irgendwie manchmal ein Problem wenn der Rauchmelder gefragt wurde und dieser im geöffneten Gehäuse also im standby war. Kannst du feststellen ob man einen PIN irgendwie auf high zero oder so testen kann, sodass unser Modul erst nach Schließen , also Freischalten anfängt mit dem Rauchmelder zu kommunizieren.
Ich stelle mir das Ausspähen eines zuschaltbaren pullups seitens des Rauchmelders vor, der im idle high zero ist.
liebe Grüße
Andreas
Andreas
Re: Rauchmelder V2.4 auf ARM portiert
Hallo,
ich hab den Rauchmelder auseinandergenommen und ein wenig gemessen.
Der bekannte Teil der Schnittstelle:
Pin 1+2: VCC (12V)
Pin 3+4: GND
Pin 5+6: RXD
Pin 7+8: TXD
Pin 9+10: GND setzen zum kommunizieren
Zusätzlich habe ich gefunden:
Pin 11+12: VCC (3,3V)
Pin 13: über 48kOhm Widerstand an VCC (3,3V) angeschlossen
Pin 14: über 18kOhm Widerstand an GND angeschlossen
Die beiden 3,3V Schienen sind nur aktiv, wenn der Rauchmelder an der Bodenplatte befestigt ist.
Ich denke, dass diese Widerstände zum Schutz vorgesehen wurden. Da wir vom Rauchmelder ja nur ein Signal brauchen, würde ich nun von Pin 13 auf einen µC Input gehen. Da kann man dann detektieren, ob der Rauchmelder an der Bodenplatte sitzt oder nicht.
Was dann passieren soll und was nicht muss man sich evtl noch ansehen, das ist mir noch nicht ganz klar. Aber das ist ja einfach per Programm änderbar, wenn die Hardware das dann hergibt.
Grüße,
Olli
ich hab den Rauchmelder auseinandergenommen und ein wenig gemessen.
Der bekannte Teil der Schnittstelle:
Pin 1+2: VCC (12V)
Pin 3+4: GND
Pin 5+6: RXD
Pin 7+8: TXD
Pin 9+10: GND setzen zum kommunizieren
Zusätzlich habe ich gefunden:
Pin 11+12: VCC (3,3V)
Pin 13: über 48kOhm Widerstand an VCC (3,3V) angeschlossen
Pin 14: über 18kOhm Widerstand an GND angeschlossen
Die beiden 3,3V Schienen sind nur aktiv, wenn der Rauchmelder an der Bodenplatte befestigt ist.
Ich denke, dass diese Widerstände zum Schutz vorgesehen wurden. Da wir vom Rauchmelder ja nur ein Signal brauchen, würde ich nun von Pin 13 auf einen µC Input gehen. Da kann man dann detektieren, ob der Rauchmelder an der Bodenplatte sitzt oder nicht.
Was dann passieren soll und was nicht muss man sich evtl noch ansehen, das ist mir noch nicht ganz klar. Aber das ist ja einfach per Programm änderbar, wenn die Hardware das dann hergibt.
Grüße,
Olli
- Dateianhänge
-
- Pinbelegung des Gira Dual Q 233602
- Gira_Dual_Q.jpg (199.6 KiB) 11129 mal betrachtet
-
- Beiträge: 645
- Registriert: 17. Mai 2013, 20:57
- Kontaktdaten:
Re: Rauchmelder V2.4 auf ARM portiert
Hallo,
ich meinte ja auch, das die Hardware nun von mir so umgebaut wird, dass eine Detektion möglich wird.
Was man dann in der Software mit dem detektierten Wert anstellt, kann man sich ja auch später überlegen, wenn ich weiß um welche Probleme es genau geht.
Ich werde erstmal mein Testaufbau umbauen und die Funktion evaluieren.
Anschließend kann ich dann ja nen paar Platinen mit meinem Umbau bestellen.
Gruß,
Olli
ich meinte ja auch, das die Hardware nun von mir so umgebaut wird, dass eine Detektion möglich wird.
Was man dann in der Software mit dem detektierten Wert anstellt, kann man sich ja auch später überlegen, wenn ich weiß um welche Probleme es genau geht.
Ich werde erstmal mein Testaufbau umbauen und die Funktion evaluieren.
Anschließend kann ich dann ja nen paar Platinen mit meinem Umbau bestellen.
Gruß,
Olli
Re: Rauchmelder V2.4 auf ARM portiert
Guten Abend!
Ich kämpfe zwar immer noch mit meinem ersten ARM-Controller (Fehler ist gefunden, Teile sind allerdings noch nicht da) aber ich würde mich gerne bei der Platinenbestellung beteiligen.
Wenn ich das richtig mitverfolgt habe, sind ja allenfalls noch kleine Änderungen an der Schaltung zu erwarten und ich vermute bei einer größeren Anzahl Platinen wird der Einzelpreis interessanter, oder?
Ich übernehme auch gerne Testaufgaben- mein Eval-Board müsste nächste Woche da sein...
Also bei Interesse oder Bedarf gerne PN.
Schöne Grüße,
Oliver
Ich kämpfe zwar immer noch mit meinem ersten ARM-Controller (Fehler ist gefunden, Teile sind allerdings noch nicht da) aber ich würde mich gerne bei der Platinenbestellung beteiligen.
Wenn ich das richtig mitverfolgt habe, sind ja allenfalls noch kleine Änderungen an der Schaltung zu erwarten und ich vermute bei einer größeren Anzahl Platinen wird der Einzelpreis interessanter, oder?
Ich übernehme auch gerne Testaufgaben- mein Eval-Board müsste nächste Woche da sein...
Also bei Interesse oder Bedarf gerne PN.
Schöne Grüße,
Oliver
Oliver (ZwergNase)
RasPi 3 mit FT1.2 (ARM und LPC), TPUART, out8-bcu1 (ARM), out-cs-bim112, in8-bcu1 (230V, ARM), Drossel_2TE (nur für Testaufbau)
RasPi 3 mit FT1.2 (ARM und LPC), TPUART, out8-bcu1 (ARM), out-cs-bim112, in8-bcu1 (230V, ARM), Drossel_2TE (nur für Testaufbau)
Re: Rauchmelder V2.4 auf ARM portiert
Hallo,
ich bestelle eigentlich aktuell immer Kleinstmengen, die noch Zollfrei durchkommen. Müssen wir mal sehen, wenn ich die Platinen bestelle, ob das ne größere Bestellung wird.
Zur Technik:
ich habe nun einen AD Pin genommen, um später sogar die Versorgungsspannung des Rauchmelder-Controllers zu überprüfen.
Vorerst habe den Pin aber als Input geschaltet und den internen Pulldown Widerstand zugeschaltet. Da der Pin13 aber über 48kOhm an VCC liegt und der interne Pulldown so ca bei 60kOhm liegt, funktioniert das so nicht.
Nun habe Pin11+12 auf den Input geschaltet. Nun fließen da ca 55µA dauerhaft nur für die Kontrolle der Bodenplatte.
Da wir den Rauchmelder durch die KNX Spannung unterstützen, dürfte das aber ja keine negativen Auswirkungen auf die Lebensdauer der Batterie haben?!
Die Funktion ist damit dann gegeben. Ca 3 Sekunden nach dem Entfernen der Bodenplatte ist die Versorgungsspannung des Rauchmelder so weit gesunken, dass der ARM Controller den Pegel nicht mehr als High erkennt.
Somit ist die gewünschte Erkennung, ob der Rauchmelder montiert/nicht montiert ist nun vorhanden.
PS: damit ich das Ganze mal ins GitHub laden kann, brauche ich dazu noch die Berechtigung. Wer kann mir die geben? Eventuell trifft man sich mal im Chat.
Grüße,
Olli
ich bestelle eigentlich aktuell immer Kleinstmengen, die noch Zollfrei durchkommen. Müssen wir mal sehen, wenn ich die Platinen bestelle, ob das ne größere Bestellung wird.
Zur Technik:
ich habe nun einen AD Pin genommen, um später sogar die Versorgungsspannung des Rauchmelder-Controllers zu überprüfen.
Vorerst habe den Pin aber als Input geschaltet und den internen Pulldown Widerstand zugeschaltet. Da der Pin13 aber über 48kOhm an VCC liegt und der interne Pulldown so ca bei 60kOhm liegt, funktioniert das so nicht.
Nun habe Pin11+12 auf den Input geschaltet. Nun fließen da ca 55µA dauerhaft nur für die Kontrolle der Bodenplatte.
Da wir den Rauchmelder durch die KNX Spannung unterstützen, dürfte das aber ja keine negativen Auswirkungen auf die Lebensdauer der Batterie haben?!
Die Funktion ist damit dann gegeben. Ca 3 Sekunden nach dem Entfernen der Bodenplatte ist die Versorgungsspannung des Rauchmelder so weit gesunken, dass der ARM Controller den Pegel nicht mehr als High erkennt.
Somit ist die gewünschte Erkennung, ob der Rauchmelder montiert/nicht montiert ist nun vorhanden.
PS: damit ich das Ganze mal ins GitHub laden kann, brauche ich dazu noch die Berechtigung. Wer kann mir die geben? Eventuell trifft man sich mal im Chat.
Grüße,
Olli
Re: Rauchmelder V2.4 auf ARM portiert
Einen strombegrenzenden Widerstand solltest Du aber schon zw. Controller Pin und 3.3V vorsehen.
Wenn der Ruhestrom stört, schalte doch den Pull-down nur alle 3+x Sek. einmal kurz ein und Werte dann den Pin aus.
Wenn der Ruhestrom stört, schalte doch den Pull-down nur alle 3+x Sek. einmal kurz ein und Werte dann den Pin aus.
Re: Rauchmelder V2.4 auf ARM portiert
Hallo Mirko,
ja da haste wahrscheinlich Recht...
Ich bau noch einen Angstwiderstand von ca. 10 kOhm ein.
Da der Strom laut LPC1115 Datenblatt beim internen Pulldown Widerstand recht konstant (bei 25 Grad Celsius) bei 55µA liegt (was ich auch gemessen habe), würde bei einem 10 kOhm Vorwiderstand sie Spannung am Pin noch 2,75V betragen. Das Datenblatt den LPC1115 gibt eine VIH von 0,7*VDD her. Bei 3,3V VDD ist das dann 2,3V. Somit sollte die Erkennung noch problemlos funktionieren.
Die Taktung des Pulldown Widerstands ist ne gute Idee. Man könnte die Abfrage auch einfach vor jeder anstehenden Kommunikation mit dem Rauchmelder machen (ausgehend vom LPC1115 ARM Prozessor). Das ist ja nicht allzuoft. So kann ich das mal in die SW bauen.
Grüße,
Olli
ja da haste wahrscheinlich Recht...
Ich bau noch einen Angstwiderstand von ca. 10 kOhm ein.
Da der Strom laut LPC1115 Datenblatt beim internen Pulldown Widerstand recht konstant (bei 25 Grad Celsius) bei 55µA liegt (was ich auch gemessen habe), würde bei einem 10 kOhm Vorwiderstand sie Spannung am Pin noch 2,75V betragen. Das Datenblatt den LPC1115 gibt eine VIH von 0,7*VDD her. Bei 3,3V VDD ist das dann 2,3V. Somit sollte die Erkennung noch problemlos funktionieren.
Die Taktung des Pulldown Widerstands ist ne gute Idee. Man könnte die Abfrage auch einfach vor jeder anstehenden Kommunikation mit dem Rauchmelder machen (ausgehend vom LPC1115 ARM Prozessor). Das ist ja nicht allzuoft. So kann ich das mal in die SW bauen.
Grüße,
Olli