PHILIPS Pronto Neo afstandsbediening

Een afstandsbediening met aanraakscherm

Voor de afstandsbediende projecten van deze site kun je natuurlijk je normale TV-afstandsbediening gebruiken of de afstandsbediening van deze site (geheel naar eigen wensen) bouwen.
Het lastige is dat je voor elk onderdeel de bijbehorende toets moet onthouden (1 = verlichting, 2 = raam, enz.).
Een oplossing hiervoor is een afstandsbediening van de Philips Pronto Neo serie, zoals de hier afgebeelde SBC RU930 *).
Het aanraakscherm (= touch screen) is op de PC of laptop te ontwerpen en van internet zijn logo's en symbolen te downloaden van diverse sites.
RC5/RC6 codes zijn te downloaden, maar er zit ook een learn mode op, zodat de afstandsbediening van al je overige afstandsbedieningen (ook met andere protocollen dan de RC5/RC6) kan leren en dus vervangen.

Zo heb ik een 'Huiskamer' menu gemaakt met (eenvoudige, rechthoekige) toetsen.
In combinatie met het draadloze 10-kanalen ontvanger project kan ik via de afstandsbediening de luxaflex en het raam open en dicht doen, verlichtingsgroepen dimmen, verwarming regelen, een watervalletje laten lopen, enz.
Ook kan ik het bad vullen, als op deze toets gedrukt wordt, springt de Pronto Neo naar een code invoer scherm zodat eerst een code ingevoerd moet worden, zodat niemand per ongeluk het bad kan laten vullen.
In plaats van een nummer op de afstandsbediening te onthouden (1 = verlichting, 2 = raam, enz.) kun je de tekst op de Pronto Neo afstandsbediening plaatsen. (Zie screenshot Pronto Neo RU930 hieronder).

Meer info:

Doe meer met de Pronto Neo (Engelstalig)
 
Screenshot van menu Huiskamer

TIP
Om de Pronto Neo unieke codes te laten leren kun je de universele afstandsbediening van deze site maken en het daarna naar de Pronto Neo of elke andere programmeerbare afstandsbediening overzenden.
Vaak hebben apparaten meer functies in zich dan er op de bijgeleverde afstandsbediening aan knoppen aanwezig zijn.
Door alle codes één voor één te verzenden ontdek je soms verborgen functies op je CD speler of welk apparaat dan ook!

*) In Amerika onder typenr. TSU500


Automatische ontwaken van Pronto Neo bij oppakken


Hellingschakelaar 
Conrad 70 04 44
 

Normaal slaapt de Pronto Neo en wordt gewekt zodra een toets wordt ingedrukt of het aanraakscherm wordt aangeraakt.
Ook het indrukken van de backlightschakelaar zal de Pronto Neo doen ontwaken, nu mét backlight natuurlijk.
Van deze schakelaar maken we in dit project gebruik.

Door een hellingschakelaar van Conrad met PIC12F629 besturing in de Pronto Neo te bouwen zal de Pronto Neo mét backlight ontwaken zodra de Pronto Neo opgepakt wordt.
De hellingschakelaar is bijna horizontaal in de behuizing geplaatst zodat bij de minste aanraking van de Pronto Neo, contact wordt gemaakt of juist wordt verbroken.
Rechtstreeks verbinden van de hellingschakelaar over de backlightschakelaar wil niet omdat in het geval de Pronto Neo in een zodanige positie wordt gehouden dat de hellingschakelaar continu is gesloten, de Pronto Neo niet te bedienen is.
De functie van de PIC is nu dat bij het oppakken van de Pronto Neo er maar een kort pulsje (one shot) aan de backlightoets wordt gegeven, onafhankelijk of de hellingschakelaar nu contact blijft maken of niet.
Voeding haalt de PIC uit de oplaadbare batterijen van de Pronto Neo (3 × 1,2V).
De PIC slaapt normaal, om deze batterijen te sparen.

Het programma in de PIC wacht op een interrupt van GPIO.2, waarop de hellingschakelaar zit aangesloten.
GPIO.2 is ingesteld op het interrupt on change type interrupt.
Zodra de hellingschakelaar nu door beweging contact maakt (of juist verbreekt) zal de PIC ontwaken en meteen via een BC547 een puls geven op de backlighttoets van de Pronto Neo, die op zijn beurt ook zal ontwaken mét backlight.
De PIC blijft nu minimaal 25 seconden wakker.
Als binnen die 25 seconden de hellingschakelaar wordt bewogen, dan wordt het bit met de naam 'Bewogen' TRUE gemaakt.
Na de 25 seconden kijkt de PIC of bit 'Bewogen' op TRUE staat en zo ja, dan wordt dit bit terug op FALSE gezet en tevens opnieuw een pulsje aan de backlight toets van de Pronto Neo gegeven, waardoor de Pronto Neo op zijn beurt zijn eigen timer weer reset en het backlight nog eens minimaal 30 seconden door zal blijven branden.
De PIC zal nu opnieuw 25 seconden wachten en weer kijken of de hellingschakelaar wordt bewogen waardoor bovenstaande verhaal opnieuw opgaat als dit het geval is.
Pas als de Pronto Neo, en dus ook de PIC, 25 seconden met rust wordt gelaten valt deze weer in slaap, omdat bit 'Bewogen' niet meer op TRUE is gezet.

Maar wordt de Pronto Neo nu met rust gelaten, dan wordt bit 'Bewogen' niet meer op TRUE gezet waardoor de PIC, als de 25 seconden voorbij zijn, in slaap valt zonder een puls naar de backlighttoets van de Pronto Neo te sturen.
Omdat de Pronto Neo nu geen puls meer krijgt op zijn backlighttoets, zal deze 5 seconden later zelf ook in slaap vallen (de Pronto Neo is ingesteld op 30 seconden, de PIC op 25 seconden waardoor de PIC de timer van de Pronto Neo altijd zal resetten vóórdat de Pronto Neo zelf in slaap valt).

8$

De schakeling is zwevend in de Pronto Neo geplaatst.
Ga met de muis op de foto staan voor een detailfoto.

 


Bevestigingsschroeven zitten achter de batterijklep en onder de sticker.


De hellingschakelaar zit onder de PIC 12F629.
De kap van de Pronto Neo is hoog genoeg om de schakeling in te bouwen.
Schuif het zwarte neopreenkousje (+ draad) over de 10Ω weerstand en
plaats isolatieband onder de schakeling (weggehaald voor de foto).

 

Bovenstaand projectje is even snel in elkaar geflanst.
Als je een SMD versie van de 12F629 hebt, of nog beter een 6-pins 10F200 SMD, dan is dát natuurlijk aan te raden.


De collector en emitter van de BC547 transistor is verbonden
met de backlightschakelaar van de Pronto Neo (zie foto's hierboven).

 


Het PIC Basic programma

;Bij bewegen van de Pronto Neo zal de backlight automatisch aan gaan
;De hellingschakelaar rechtstreeks wil niet goed (is geprobeerd, zie tekst)

;           PIC12F629/675:              +--v--+
;                                   +5V [     ]  GND
;          Backlight Pronto Neo GPIO.5<>[     ]<>GPIO.0
;                               GPIO.4<>[     ]<>GPIO.1    
;                               GPIO.3 >[     ]<>GPIO.2 Hellingschakelaar
;                                       +-----+
;www.picbasic.nl / Frits Kieftenbelt, Raalte, Netherlands (Frizie)

;GPIO.5 stuurt via een 10k weerstand een BC547 aan, die op zijn beurt over de
; backlightschakelaar van de Pronto Neo zit
;GPIO.2 ontvangt van hellingschakelaar een laag niveau (interne weak pull-ups ingeschakeld)
;GPIO.2 heeft een interrupt on change status en zal bij bewegen van de hellingschakelaar
; uit zijn slaap komen c.q. bit 'Bewogen' TRUE maken (als de PIC al uit zijn slaap was)

DEVICE 12F629                 ;Gebruik een 12F629 (of 12F675) type
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, BODEN_OFF, PWRTE_ON, MCLRE_OFF
ALL_DIGITAL TRUE              ;Alle ingangen digitaal
'SET_OSCCAL                   ;Gebruik fabrieks kalibreerwaarde

;Logische constanten
SYMBOL FALSE        = 0       ;Niet waar
SYMBOL OFF          = 0       ;UIT
SYMBOL ON           = 1       ;AAN
SYMBOL TRUE         = 1       ;Waar

;Algemene constanten
SYMBOL Tijd         = 25000   ;mSec: Iets korter dan de 30 seconden instelling van Pronto Neo

;Registernamen (zie voor info hierover de datasheet van de 12F629 / 675, kijk bij INTCON)
SYMBOL GPIF         = INTCON.0;Bit 0 van INTerrupt CONtrol register heet: GP Interrupt Flag
SYMBOL INTF         = INTCON.1;GPIO.2 INT external interrupt Flag bit
SYMBOL GPIE         = INTCON.3;Bit 3 van INTCON register heet: Port Change Interrupt Enable
SYMBOL INTE         = INTCON.4;GPIO.2 INT external interrupt Enable bit
SYMBOL GIE          = INTCON.7;Global Interrupt Enable bit

;Poortnamen
SYMBOL HellingSchak = GPIO.2  ;Hellingschakelaar tussen GND en deze poort aansluiten
SYMBOL ProntoNeo    = GPIO.5  ;Zit via BC547 aan de backlighttoets van de Pronto Neo

;Variabelen declareren
;BIT
DIM Bewogen         AS BIT    ;TRUE als Pronto Neo is bewogen (melding van kantelswitch)

PORTB_PULLUPS ON              ;Voor de hellingschakelaar
CLEAR                         ;Wis alle RAM geheugen

;         76543210
GPIO   = %00000000
TRISIO = %11011111            ;GPIO.5 zit via BC547 met de Pronto Neo verbonden
IOC    = %00000100            ;Interrupt On Change voor GPIO.5 inschakelen

DELAYMS 2000                  ;Bij opstart Pronto Neo (batterijen inleggen) even wachten
ON_HARDWARE_INTERRUPT GOTO InterruptHandler ;Hellingschakelaar beweegt, dan interrupthandler

GIE  = 1                      ;Global interrupts inschakelen
INTE = 1                      ;Interrupt inschakelen

WHILE 1 = 1
  ProntoNeo = ON              ;Aansturing van backlight Pronto Neo
  DELAYMS 150                 ;Pulstijd
  ProntoNeo = OFF             ;Lijn weer laag maken

  Bewogen = FALSE             ;Ga er vooralsnog vanuit dat Pronto Neo niet wordt bewogen
  DELAYMS Tijd                ;Gelijk aan de tijdsinstelling van de backlighttijd in de Pronto Neo

  IF Bewogen = FALSE THEN     ;Gehele tijd doorlopen zonder dat Pronto Neo is bewogen, dan...
    GPIE = 1                  ;GP port change Interrupt Enable inschakelen voor ontwaken uit slaap
    SLEEP                     ;Breng PIC in slaapmode (hier wachten, met GPIO.2 weer uit slaap te halen)
    GPIE = 0                  ;General Port change Interrupt Enable weer uitschakelen na ontwaken
  ENDIF
WEND


InterruptHandler:
  Bewogen = TRUE              ;Pronto Neo is (weer) bewogen
  INTF = 0                    ;Reset de INTerrupt Flag, zodat interrupt opnieuw gebruikt kan worden
  GPIF = 0                    ;Reset de GPIO INTerrupt Flag, zodat interrupt opnieuw gebruikt kan worden
  CONTEXT RESTORE             ;Restore registers, ga terug naar plek waar interrupt ontstond
END                           ;Zekerheid, eigenlijk staat dit er overbodig

Er wordt gebruik gemaakt van de GPIO.2 interrupt on change om de PIC te ontwaken en/of het bit 'Bewogen' TRUE te maken.

Voor de 25 seconden tijd wordt hier gebruik gemaakt van PIC Basic instructie DELAYMS en niet van een hardwarematige PIC timer.
Nét voordat de DELAYMS tijd begint te lopen wordt eerst bit 'Bewogen' op FALSE gezet (= '0' gemaakt).
Tijdens het 25 seconden wachten van de DELAYMS tijd, is het mogelijk om met GPIO.2 (de hellingschakelaar in dit project) een interrupt te geven door GPIO.2 van niveau te veranderen waardoor even naar subroutine 'InterruptHandler' wordt gesprongen.
Hier wordt nu bit 'Bewogen' op TRUE gezet (= '1' gemaakt).
Verder worden de interrupt flaggen weer gereset en GPIE uitgeschakeld.
Met CONTEXT RESTORE (= spring terug naar waar je was toen de interrupt kwam) wordt teruggesprongen naar DELAYMS, waar de timer verder gaat alsof er niets gebeurt is.

Als de 25 seconden van DELAYMS nu voorbij zijn, wordt bij de programmaregel erna bekeken of bit 'Bewogen' TRUE of FALSE is.
Is 'Bewogen' nog steeds FALSE, dan weet de PIC dat er in die 25 seconden geen interrupt is geweest en zal de PIC nu in slaap vallen.
Wanneer 'Bewogen' dus niet FALSE, maar TRUE is, dan wordt via WEND weer naar WHILE gesprongen en de eerste instructie aldaar is weer een 150mSec puls geven op de 'ProntoNeo' uitgang (GPIO.5), en begint het hele verhaal weer opnieuw.
Ook als de PIC weer uit zijn slaap gewekt wordt, wordt deze route gevolgt.

Het PIC Basic programma is klein genoeg om ook met de LITE versie te kunnen experimenteren (alleen dán DEVICE 12F675 opgeven).
 

Download PRONTO.HEX, V-1 bestand om in een PIC 12F629 te programmeren
Download schema als PDF bestand
Bestel geprogrammeerde PIC