Super enkel Raspberry Pi 433MHz hemautomation (3 / 7 steg)
Steg 3: Transkribera den resulterande signalen
Nu när du har identifierat blocket med periodiska toppar och dalar motsvarar en viss knapp signal, behöver du ett sätt att lagra och tolka den. I exemplet ovan signal, kommer du att märka att det finns endast två unika mönster som utgör hela signalen blocket. Ser ibland du en kort hög följt av en lång låg, och ibland är tvärtom - en lång hög följt av en kort låg. När jag renskriva min signaler, beslutade jag att använda följande namnkonvention:
1 = short_on + long_off
0 = long_on + short_off
Titta igen på märkta vågformen, och du kommer se vad jag menar. När du har identifierat de motsvarande mönsterna i din signal, allt du behöver göra är räkningen 1 och 0 är för att bygga upp sekvensen. När transkriberas, kan ovan signalen skrivas som följer:
1111111111111010101011101
Nu behöver du bara upprepa denna process för att registrera och transkribera de signaler som motsvarar de andra knapparna på din telefon och du har slutfört den första delen av processen!
Innan du kan skicka signaler genom att använda sändaren, är det lite mer arbete att göra. Timingen mellan toppar och dalar motsvarar en 1 eller 0 är mycket viktigt, och du måste se till att du vet hur länge en "short_on" eller en "long_off" faktiskt varar. För min koder fanns det tre stycken av tidsanpassad information jag behövde för att extrahera för att replikera signalerna:
- Varaktigheten av en "kort" intervall, dvs en 1 början eller slutet av en 0.
- Varaktigheten av en "lång" intervall, dvs i slutet av en 1 eller i början av en 0.
- Varaktigheten av ett "utökat" intervall. Jag märkte att när jag höll en knapp i telefonen, det var en "extended_off" period mellan varje upprepad förekomst av signal blocket. Denna försening används för synkronisering och har en fast varaktighet.
För att fastställa värdena timing, kan du använda zoomfunktionen på fönstret matplotlib zooma in hela vägen i och placera markören över de relevanta delarna av signalen. Markören plats avläsning längst ned i fönstret gör att du kan avgöra hur bred varje del av signalen är det motsvarar till en lång, korta eller längre intervall. Observera att x-axeln av tomten representerar tid, och den x delen av markören utslaget är i enheter av sekunder. För mig var bredden enligt följande (i sekunder):
- short_delay = 0.00045
- long_delay = 0.00090 (två gånger så länge som en "kort")
- extended_delay = 0.0096