Stap 4: Arduino Code
De code is complex - het was een grote inspanning, en verscheidene trucs nodig om te worden ingezet om het knijpen van alle deze code (toetsenbord emulator, de webserver HTML, HTML-pagina's, e-mailcliënt, Websocket Webserver en DES-codering en Base64 bibliotheken) allemaal in de kleine Arduino UNO 32K flash en ram ruimte.
Alle code wordt gehost hier:
https://github.com/OzmoOzmo/CastleHKCArduinoRKP
Ik zal het bijwerken van de project code van elke tijdje - dus zorg ervoor dat het project vork zodat je meldingen krijgt wanneer er een update.
Gewoon downloaden van alle bestanden (belangrijk: gebruik de download zip knop in plaats van één bestand tegelijk).
Om te compileren:
Plaats ze in dezelfde map - en open het Ino bestand in de Arduino IDE.
Er is een configuratiebestand in de project-config.h - dit is waar u uw IP-adres, uw e-mailadres en andere opties instellen. Het is goed gereageerd met alle opties om uit te kiezen.
Compileren en uploaden naar aan Arduino. U zal moeten verbreken de Arduino volledig het Alarm paneel om hem te programmeren-alsof iets aangesloten op de Arduino RX en TX (pin 0 & 1) het kan interfereren met de programmering vooruitgang.
Ook zijn best niet om de 5V voeding die is aangesloten op de Arduino en de USB kabel is aangesloten op een PC op hetzelfde moment.
Ontwikkelaars - aanpassen van de software
Er is een software seriële uit voor foutopsporing - kunt u dit via een TTL naar USB van de arduino logboeken weergeven. De vlag om de debug-modus is uitgeschakeld in de code die door standaard. Ik vond de visuele Micro te zijn een veel betere ontwikkelomgeving dan de Arduino IDE.
Een oscilloscoop & digitaal signaal analyser waren van vitaal belang om te decoderen van de protocollen die worden gebruikt.
Voor de nieuwsgierig - engineered hoe reverse het protocol
-Ik aangesloten twee klavieren
-Ik heb gemeten de baud-rate met behulp van een oscilloscoop. Het was een verrassende 9 bits en ongewone baud-rate die uitdagend om te werken op de Arduino was (zoals de Arduino Libraries niet alleen 8 bits ondersteunen), kon ik zien. De extra bit was gebruikt om het signaal van het begin van een nieuw bericht.
- en met behulp van geschikte spanning herverdeling weerstanden had een Arduino luisteren op het verkeer op de databus één draad en verzenden van de pc.
-Elk toetsenbord plaatste ik een verschillende weerstand op de data lijn, zodat ik kan bepalen wanneer het alarm, keypad1 of keypad2 was met behulp van de lijn door de monitoring van het spanningsniveau als het bericht lezen.
-Bij de exploitatie van elke functie, kon ik zien dat de relevante berichtpakketten de toetsenborden en alarm verzonden; Ik kon zien een byte van de opdracht voor de verschillende functies; tekst weergeven, licht geleid,, sound zoemer etc. en de weergavetekst verzonden als onbewerkte tekst, elk met een controlesom-byte.
- en ik gedupliceerd deze functionaliteit in de code.
De code voor het registreren van een nieuwe toetsenbord was het moeilijkste.