Inleiding |
Omdat ik van de zomervakantie niet echt iets om handen heb, heb ik me voorgenomen een nieuw - dit keer wat groter - electronica project te starten en wel een 1337 room control system voor mijn kamertje. Na een middagje nadenken kwam ik tot de conclusie dat mijn systeem toch tenminste de volgende (technische) functies moet incorpereren: • Het moet draaien op een nog te bouwen pentium 2-3 systeempje. • Alle apparatuur (nodes) moeten op dezelfde maximaal 2-wire bus aangesloten kunnen worden • Configureerbaar via webinterface (en eventueel in de toekomst met voice-control). • Het systeem moet compatible (of iig bridgable) zijn met de welbekende klik-aan-klik-uit (achtige) systemen. • Ik ben van plan in de nabije toekomst een deel van mijn verlichting te vervangen met een RGB-led systeem. Hiermee moet het uiteraard ook goed werken. |
Software |
Omdat ik niet zo houd van het combineren van verschillende stukken software en nog geen software heb gezien die alle functies die ik hierboven noem heeft, ben ik zelf aan de slag gegaan en ben ik in java begonnen aan een stukje programmatuur dat als daemon proces op de server gaat draaien en alles controleert. Via een telnet-achtige interface is vervolgens van elke node de huidige status op te vragen en de nog te bouwen webapplicatie (php) vertaalt de telnet commando's naar een echt werkbare interface. |
De bus |
Om alle nodes met elkaar te laten communiceren zal ik een bus bouwen gebaseerd op de RS-485 specificatie waar twee-wegs communicatie met 1 masternode mogelijk is ('party-line'). De feitelijke communicatie gebeurt net zoals bij RS-232 op een vooraf bepaalde baud snelheid en een start en stopbit bij elke byte:![]() Elke childnode heeft een (virtueel) geheugen, waar de master data naartoe kan schrijven of data uit kan trekken. Als communicatieprotocol wil ik het volgende gebruiken: When writing: Master > Slave: 101010ii iiiiiiii aaaaaaaa aaaaaaaa dddddddd When reading: Master > Slave: 110011ii iiiiiiii aaaaaaaa aaaaaaaa Slave > Master: 111000ii iiiiiiii dddddddd i: device id a: address d: data |
Master node |
De master node zal uit een eenvoudige rs232 <--> rs485 converter bestaan, mbv een max232 en een sn65hvd07, waarbij de RTS lijn van de seriele poort gebruikt zal worden om de master node in transmit mode te zetten. |
Child nodes |
Over de verschillende child nodes heb ik nog niet echt nagedacht, maar ik zie voldoende mogelijkheden om hier wat moois van te maken. Enkele voorbeelden. rgb-light control unit Doel: het aansturen van een rgb-(led-)verlichting. Adresindeling: 0x0001 RW : rood 0x0002 RW : groen 0x0003 RW : blauw klik-aan-klik-uit bridge Doel: het controleren van klik-aan-klik-uit switch en dimmer units. Adresindeling: 0x0001 RW : tx-kanaal-selectie 0x0002 R- : zodra hier een 0x01 naartoe wordt geschreven wordt het 'aan' signaal verstuurd naar het betreffende kanaal; bij een 0x00 wordt het 'uit' signaal verstuurd. 0x0003 R- : rx-kanaal 0x0000 RW : interrupt-byte: indien 0x00 is er niets gebeurd, indien 0x01 is er een uit-signaal ontvangen, indien 0x02 is er een aan-signaal ontvangen; nadat de master deze byte heeft gelezen met een waarde anders dan 0x00 moet hij er opnieuw 0x00 naartoe schrijven. 4-button-unit met lcd Doel: bijvoorbeeld snel schakelen tussen 4 voorgedefinieerde verlichtings-programma's. Adresindeling: 0x0000 RW : interrupt-byte: geeft aan welke knoppen ingedrukt zijn (geweest) sinds de laatste poll. Elke knop wordt gerepresenteerd door een van de 4 least significant bits. Net zoals bij de kaku bridge moet de master er 0x00 naartoe schrijven zodra hij deze gepolled heeft. 0x0100 RW : lcd character 1 ... 0x0150 RW : lcd character 80 Voor elk type device zal een device driver worden gemaakt, die bijvoorbeeld ook als taak heeft elke paar milliseconden de interrupt byte (0x00) te lezen voor de betreffende nodes. |
Doel van dit topic |
Het project is momenteel nog in onderzoeksfase, en ik open het topic nu al vooral om jullie mening en tips aan te horen, zodat ik eventuele goede ideeen of wijzigingen kan gebruiken voordat de eerste printplaatjes geetst worden. Gedurende de vorderingen komen er natuurlijk mooie plaatjes en fotos |
[ Voor 11% gewijzigd door Verwijderd op 27-07-2006 20:17 ]