32 bit parallel in serieel uit met RPI

Ik ben bezig met het ontwerp voor een systeem voor de detectie in een sleutelkast. Ik wil weten of de sleutel aanwezig is of niet, hiervoor ga ik een mono jack plug gebruiken en een jack bus met schakelcontact. Elk contact moet ingelezen worden met een Raspberry Pi met daaraan al een camera en touch screen. Deze zal dan op het netwerk komen en telkens als er een sleutel wordt uitgenomen of teruggeplaatst een 30-tal seconden gaan filmen. Dit om te weten wie welke sleutel wanneer gebruikt en terugplaatst.
Ik dacht dat er nog wel een viertal io-pennen op de rpi zullen vrij zijn om dit serieel in te lezen. Ik ben bekend met de 4021 serieel naar parallel omzetter. Misschien zijn er betere ic's hiervoor. Ik weet niet zeker of het mogelijk is om 4x een 4021 te gebruiken, of deze een serieel in heeft welke doorgeklokt wordt naar de serieel uit, dit om in totaal 32 sleutelposities te loggen. Volgens wat ik zie moet dit lukken dmv pin 3 (Q8) van de vorige te verbinden met pin 11 (serial in) van de volgende. Clock en latch zullen dan moeten doorverbonden worden. Met 4 4021 moeten er dan 32 clockpulsen volgen voordat er weer een latch puls wordt gegeven. Het afvragen zou 1x per 2 of 3 seconden moeten kunnen. Is het nuttig om dit te vertragen of te versnellen? Dit om de werking van het touchscreen niet teveel te vertragen of te verstoren.
Ook is de RPI nieuw voor mij, ik wens deze te gebruiken om een code in te tikken en zo het magneetslot vrij te geven voor een bepaalde tijd. Het geheel zal dan ook via LAN aan het netwerk komen te hangen zodat ik ook vanop afstand activiteiten kan opvolgen.
Op de kast zelf komen ook 2 knipperende 10mm leds, een rode en een groene. Als alle sleutels aanwezig zijn moet de groene knipperen, als er eentje niet aanwezig moet de rode knipperen. Als er nog voldoende io-pennen vrij zijn kan dat ook met de RPI.
Hebben jullie nog ideeën waarmee ik rekening moet houden? Ik zie dat de GPIO pins 3,3V voeren, wellicht moet ik met een pull-up werken voor de clock-signalen op het juiste niveau te krijgen? Ik heb geen idee hoeveel GPIO-pins gebruikt zullen zijn voor het scherm. Volgens de datasheet zou het scherm de eerste 26 pins gebruiken voor de aansturing.
Alle tips zijn welkom.

[Bericht gewijzigd door Appel op dinsdag 5 januari 2016 23:48:49 (11%)

Met een io expander via i2c kan het ook.
Kijk eens naar de Pcf8575

Je moet denk ik een draadje door de sleutelring doen en dan aan je Jack plug solderen. Anders loop je risico dat iemand meerdere sleutels meeneemt, door de sleutel van de plug te knippen. Als je het contact gebruikt, is die op jouw manier nog aanwezig.

GMT+1

Je kan natuurlijk ook de camera al aanzetten als er een code wordt getoest. Zo zie je de "inbrekers".
En wat als iemand het kastje niet dicht doet?
Is het zo dat er maar 1 persoon per keer komt, of is het mogelijk dat er meerdere staan te wachten? Moet een ieder het kastje dan dicht doen volgens het "protocol" voordat de volgende sleutel in of uit gaat?
Heeft iedere sleutel zijn unieke positie in het kastje? Hoe wil je dat herkennen als men het fout doet? Ik neem tenminste aan dat alle sleutels niet identiek zijn.
En zo kan ik nog wel meer dingen verzinnen..

TonHek
P.s. Die 8575 zijn idd goed toepasbaar.

[Bericht gewijzigd door Henry S. op maandag 11 januari 2016 20:56:05 (15%)

The fastest way to succeed is to double your failure rate.

Een rits 4021 chips achter elkaar zetten is geen probleem werkt prima.

Het is even de vraag hoever je dat printje met de 4021's van je RPI af zet?

Als dat een langere kabel/afstand moet overbruggen zou ik zeker de 3v3 signalen van de RPI omzetten naar een hogere spanning, bijvoorbeeld 12V met een opencollector trapje erachter en een pull-up naar +12V. Dan is de noise margin een stuk beter.
(En de data uitgang weer naar 3v3 omzetten natuurlijk, kan met een simpel torretje + paar weerstanden).

Bij een soortgelijke opstelling die ik ook gemaakt heb op dezelfde manier moest ik zelfs nog een kleine C op de data/clock lijnen zetten om wat storingen weg te werken.

Verder om het wat luxer te maken kun je van het eerste schuifregister de D-input aan een output van de RPI hangen (ook voltage aanpassen) zodat je de chips door kunt klokken, weet je meteen of je bordje nog heel is bij het opstarten en je kunt de lengte van het schuifregister testen.

Verder denk ik dat ook aan de ingangen van de 4021 zelf wel de nodige "ontstoor" maatregelen genomen moeten worden. Minimaal en R/C netwerkje zou ik ervoor zetten + pulldown van enkele 10-tallen k om er voor te zorgen dat de inputs niet kunnen gaan zweven, vind CMOS niet zo leuk.

1-st law of Henri: De wet van behoud van ellende. 2-nd law of Henri: Ellende komt nooit alleen.

Is het moeilijker met de Pcf8575 of net niet? Ik ben wat bang van de spanningsverschillen (3,3V) tussen de GPIO en de CD4021.

De pluggen zijn doorboord en voorzien van een sleutelring. Meerdere sleutels meenemen kan dan idd wel maar het wordt toch lastig gemaakt en niet logisch om te doen.

Het doel is tweeledig: 1. anti diefstal. 2. Weten wie met welk voertuig wanneer aan het rijden is. Dit omdat je dit volgens de Belgische wetgeving zou moeten bijhouden (flitsers en dergelijke...) en zodoende kan je ook de juiste persoon aanspreken in geval van schade aan het voertuig.

Mijn ervaring met i2c is kleiner dan die met de schuifregisters + meer programmeerwerk lijkt me.

@Tonhek, het kastje gaat met een veer terug dicht. Uitnemen van een sleutel heeft zowiezo een opname tot gevolg, het openen van de deur ook.
De camera start als er 'een' toetsdruk is op het touchscreen

@Henri62, de afstand zal slechts enkele cm's bedragen, de RPI en de schuifregisters zitten in de kast, op een print.

TonHek, de sleutels zijn niet identiek en vergissen is dus mogelijk. Maar als je weet welke werd uitgenomen en welke werd teruggeplaatst kan je dat wel terugvinden. Elke sleutel krijgt een markering (label) met bijhorend nummer in het bord.
Vergissen is dus niet uit te sluiten zonder verdere uitbreiding van het systeem (actieve sleutelhanger dan).
Voor mijn toepassing is dat niet echt noodzakelijk.

[Bericht gewijzigd door Henry S. op maandag 11 januari 2016 20:56:29 (17%)

Op 6 januari 2016 00:10:34 schreef Appel:
@Henri62, de afstand zal slechts enkele cm's bedragen, de RPI en de schuifregisters zitten in de kast, op een print.

Dan zou je de 4021's direct aan de 3V3 kunnen hangen en niks speciaals ertussen.

Wel de ingangen nog steeds van een R/C/R voorzien (R in serie->input, C van input naar gnd, R van input naar GND).

De 4021 is de goedkoopste oplossing kost volgens mij maar 30 cent of zo. Een I2C expander is duurder. In beide oplossingen moet je zowiezo de ingang conditioneren.

Verder is die genoemde I2C expander niet 3V3 maar 5V?
-edit- TI heeft een second source, gaat vanaf 2V5.
-edit- Waarempel, ik zie dat de Philips ook vanaf 2V5 gaat, was vroeger volgens mij niet zo! Eigenlijk werkt I2C volgens de originele specs alleen op een 5V bus. Maar de meeste chips werken ook op 3V3 (Sinds Intel met zijn SMBus concept is gestart op mainboards).

1-st law of Henri: De wet van behoud van ellende. 2-nd law of Henri: Ellende komt nooit alleen.

Ik zou een 1wire device (DS2401) in de jackplug zetten, kun je precies zien om welke sleutel het gaat die er uit wordt gehaald, terug gestoken of op de verkeerde plek hangt.
Heb je ook maar 1 io pin nodig

JoWi

Special Member

Een alternatief is de MCP23017, die werkt vanaf 1,8 Volt.
Voor aansturen van I2C devices zijn er verschillende bibliotheken zoals deze: http://wiringpi.com/

Ignorance is bliss

@2n3055, de reden dat we niet met een actieve jackplug wensen te werken is dat er door sleet en vervuiling geen zekerheid bestaat over het contact tussen de jackplug en bus. Ik wil problemen hierdoor uitsluiten en maak dus enkel gebruik van het contact op de bus.

Tot op heden kies ik ervoor om te weten of de sleutel al dan niet aanwezig is en ligt de verantwoordelijkheid voor het juist terug plaatsen bij de gebruiker. Als dit met grote zekerheid kan worden ingebouwd tegen een beperkte kost kan er nagedacht worden over een actieve sleutelherkenning. Momenteel dus enkel passief.

Om het niet te ingewikkeld te maken, hardwarematig, gaan we toch voor 2 PCF8574 ic's gaan om de aanwezigheid van de sleutels na te gaan.
Vraagje dat ik nu heb, ik heb ook een schermpje voorzien, deze gebruikt de gpio connector voor het aansturen en de voeding ervan. Hierdoor zijn de i2c pennen dus al in gebruik (denk ik) of toch niet meer toegankelijk met een connector.
Als ik het concept goed begrijp kan ik deze pennen wel naar buiten brengen en hierop een 'aftakking' maken om zo met een korte bandkabel naar de print met de PCF8574's gaan. Dit zou ook de werking van het schermpje niet mogen beïnvloeden aangezien de ic's elk een eigen adres hebben.
Wat ook leuk is is een simpele temperatuurmeting, liefst net buiten de kast. Hiervoor is er de TC74 (microchip) zie ik. Iemand nog een ander/beter voorstel? Liefst through hole, ik heb geen ervaring met het klein grut...

En weet er iemand hoe ik dit best oplos om de I2C bus te kunnen blijven gebruiken? Moet er eventueel een buffer tussen (na het schermpje dan) vooraleer ik de andere ic's aansluit?

Een buffer is denk ik niet nodig, als je de pfc met 3,3v voed.

Afhankelijk van hoe het schermpje werkt, kan het niet mogelijk te zijn de i2c bus nog te gebruiken, als die vanuit de kernel in gebruik is.

Ik denk trouwens dat ie spi gebruikt, dat is vele malen sneller.

Heb je een schema van het scherm? Controller bekend?

GMT+1
Lambiek

Special Member

Op 9 januari 2016 12:11:37 schreef Appel:
Als ik het concept goed begrijp kan ik deze pennen wel naar buiten brengen en hierop een 'aftakking' maken om zo met een korte bandkabel naar de print met de PCF8574's gaan.

Let op met flat cable, het is misschien makkelijk in gebruik maar soms erg storing gevoelig. Je kan beter getwiste aders gebruiken voor de contacten waar je de sleutels mee detecteert.

Als je haar maar goed zit, GROETEN LAMBIEK.

Het is deze:

http://www.conrad.be/ce/nl/product/1380381/

In de beschrijving is niet af te leiden welke pins er worden gebruikt. Voeding haalt ie van de gpio, spi voor het scherm wellicht. Maar ook de touch moet ergens gestuurd worden.
Wellicht moet ik toch ook voor het schermpje een stukje kabel gebruiken.
Ik kan toch moeilijk alles recht op de RPI steken? Ik moet iets van print bouwen (gaatjesprint wellicht) om een en ander aan te sluiten en naar buiten te brengen. Ik denk om daarop mss een drietal connectors te voorzien waarop de i2c bus zit.

[Bericht gewijzigd door Appel op zaterdag 9 januari 2016 13:59:33 (81%)

Zou twisted flatcable wellicht een oplossing tegen inductie kunnen zijn?
http://nl.rs-online.com/web/c/cables-wires/ribbon-flat-cable...bon-cab…

TonHek

The fastest way to succeed is to double your failure rate.
Lambiek

Special Member

@ TonHek,

Dat is inderdaad al een stuk beter.

Als je haar maar goed zit, GROETEN LAMBIEK.