Artikel top billede

Gør det selv-IOT del 3: Byg en dims, der kan tænde og slukke for andre dimser over internettet - hardwaren

Klumme: Internet of Things er tidens store buzzword, men kan man selv ved hjælp af lidt fingersnilde strikke en IoT-løsnings sammen, som kan tilgås fra en åben platform? Her er tredje del af det store selvbyggerprojekt.

Jeg har været i byen og shoppe ingredienser siden sidste artikel, så nu skal vi bage.

Opskriften er simpel:

1. Tag en spand og tilføj ingredienserne.

2. Tilsæt loddetin.

3. Tilsæt varme.

4. Rør rundt.

5. Tilsæt et par dråber blod, et mindre brandsår og et passende udvalg af obskøne gloser (og her er der virkelig mulighed for at lade fantasien blomstre!)

6. Rør rundt igen.

7. Konstater, at det ikke virker.

8. Stir arrigt på printet et par timer (eventuelt en lille detour omkring sidste del af step 5), og sov derefter på det.

9. Fix den helt åbenlyse fejl, som du burde have opdaget efter fem nanosekunder.

10. Prøv igen.

11. Hvis det stadig ikke virker, gå til step 8 (og husk nu step 5 - din hardware skal blive bange for dig, ellers er du for pæn i sproget).

12. Hvis det virker, så slip hvad du har i hænderne og fjern dig forsigtigt fra opstillingen

Så skal vi videre

Nå spøg til side, hardwaren til vores dims er ganske simpel.

Det eneste elektronik der skal laves er driverkredsløb til de to relæer.

Jeg vælger at placere en LED over hver stikkontakt, som skal indikere, om der er tændt eller ej.

Denne LED forsynes af samme driverkredsløb.

Hvorfor ikke direkte?

Hvorfor ikke bare forbinde relæet direkte til RPIens GPIO pins?

Det skyldes, at en microprocessor sjældent er i stand til at levere særlig meget strøm. Det er kun et kontrol interface.

I RPI'ens tilfælde er det maksimale omkring 15-16 mA, hvor relæet typisk kræver noget højere strøm - specielt i "skifte-fasen".

Et relæ (figur 1) består elektrisk af en spole omkring en ferritkerne, der, når strømmen tilsluttes, danner en elektromagnet. Magneten tiltrækker en kontakt som slutter 230V strømkredsen.

Relæet, jeg fandt i skuffen, forlanger 6V/60 mA, så der er helt sikkert behov for at booste GPIO-pinden en smule.

For det første er GPIO 3,3V, og for det andet kan vi ikke source den mængde strøm direkte fra en Raspberry Pi GPIO port.

En lille test viser, at relæet virker fint ved 5V, hvilket er heldigt, da vi på Raspberry-boardet direkte har 5V til rådighed.

Heldigvis er en driverkreds særdeles simpel at lave.

Vi benytter blot en standard NPN-transistor, som styres af GPIO-pinden.

En BC547 er fin til formålet, da den kan tåle 0,5W uden køling, og relæet vil maksimalt trække 0,36W (lige når fjederen skal overvindes).

Vi bruger transistoren som kontakt, og derfor skal der ikke regnes på arbejdspunkter osv, da vi helt bevidst driver transistoren i mætning.

Det smarte ved en transistorEn transistor er kort fortalt en komponent med tre forbindelser: Collector, Base og Emitter.

Det smarte ved en transistor er, at man med en lille strøm gennem base-emitter ($I_b$), kan kontrollere en meget større strøm gennem collector-emitter, $I_c$.

En BC547 har en DC gain (forstærkning) på mindst 100, så hvis der skal leveres 60mA gennem collectoren, skal basen altså fødes med mindst 0,6 mA, og for at have lidt buffer, så siger vi 1,5 mA.

Base modstanden, $R_b$, bestemmer strømmen der går gennem basen i henhold til Ohm's lov, $U=R \cdot I$.

Output fra GPIO er 3,3V og spændingsfaldet over base-emitter strækningen på en BC547 er omkring 900 mV, så spændingsfaldet over base modstanden vil altså være 3,3-0,9=2,4V.

Hermed kan vi beregne basemodstanden til
$\frac{2,4V}{1,5mA} = 1,6k\Ohm$.

Jeg vælger at runde ned til $1k\Ohm$ (vi skal være helt sikre på, at transistoren tillader nok strøm til at relæet trækkes).

Lad os se på et samlet diagram for kredsløbet, der skal tilsluttes vores RPI. Som I kan se, består diagrammet af to identiske kredsløb, da vi skal kontrollere to relæer.

LED1/R1 og D1

Basemodstanden, R2 har jeg beskrevet, men der er to yderligere ting, som lige skal forklares: LED1/R1 og så D1.

LED1 er den lysdiode, som jeg vil bruge til at indikere på kassen, om der er tændt for et strømudtag, og R1 begrænser den strøm, som løber igennem LED1 til omkring 18 mA.

D1 sidder der for at beskytte transistoren mod overspænding fra relæet.

Elektrisk består relæet af en spole, og spoler har den egenskab, at en strøm igennem spolen resulterer i, at et magnetfelt dannes.

Når strømmen afbrydes brat, vil magnetfeltet nedbrydes, hvilket resulterer i, at spolen skaber en spændingstransient.

Det er denne effekt, der benyttes i en tændspole til at lave gnisten i tændrør. I vores tilfælde vil transienten (som sagtens kan være på mere end 200V) kunne brænde transistoren af, hvilket forhindres af dioden.

Derfor kaldes en diode i denne konfiguration typisk en flyback-, clamp- eller supressor-diode: Den begrænser spændingen og tillader EMF-feltet at klinge ud gennem tab i ledninger og spole/diode.

Det var så hardwaren

Hermed er selve hardwaren beskrevet. Hvis det skulle være et kommercielt produkt, skulle vi nu lægge printet ud (altså designe, hvordan traces skal løbe på printkortet), men da det er et one-off design, og hardwaren er så simpel, så vælger jeg at implementere det på en stump veroboard i stedet.

Jeg var så heldig at snuble over en kasse, som kun kostede 29 kr, og næste skridt er at få skohornet alle stumperne ned i kassen (som størrelsesmæssigtr er lige i underkanten - men 29 kr!! Jeg måtte have den.).

Jeg gør mig ekstra umage med at isolere og fiksere alle ledninger, som bærer 230V, så vi minimerer risikoen for stød, kortslutning og brand.

Det første, jeg monterer, er stikkontakterne, da de er synlige udefra og fylder en del inde i kassen.

Jeg vælger at placere dem øverst på kassen for at få mest muligt rum til resten af elektronikken i kassen.

Først skal der bores huller til forfradåserne, som skal rumme stikkontakterne:

Stumperne i kassenNu kan vi så begynde at fifle rundt med alle stumperne for at se, hvordan de bedst passer i kassen.

Af primære stumper, der skal placeres, har vi:

1. Raspberry Pi-kortet

2. Print med driverkredsløb

3. De to relæer

4. En strømforsyning til Paspberry Pi'en

Lad os prøve at danne os et systemoverblik, så vi kan se, hvordan de enkelte blokke skal forbindes:

LK-udtaget

Strømforsyningen til Raspberry Pi'en er en standard USB-strømforsyning, som vi kender den til for eksempel Android-telefoner.

Jeg fandt en i skuffen, som er nogenlunde lille, og hvor man kan lodde 230V-ledningen direkte på strømforsyningen (pladsbesparende).

Ledninger monteres i et moderne Lauritz Knudsen-udtag uden brug af skruetrækker.

Den afisolerede ende stikkes blot ned i et hul og holdes automatisk fast af en intern fjederbelastet mekanisme. Derfor SKAL monteringsledning (en massiv kobberleder, 1,5 mm2 er nok til vores formål) benyttes.

Det er komplet umuligt at gøre med flertrådet 'lampeledning'.

Monteringsledningen er til gengæld ikke nem at lodde på relæets terminaler. Jeg vælger derfor at benytte kronmuffer, så jeg kan få fordelene af begge ledningstyper.

Kassen er for lille!

Efter en del fedten rundt og forgæves forsøg, nærmede jeg mig konklusionen, at jeg havde dummet mig og købt en for lille kasse, men så blev jeg stædig.

Det skulle fandeme passe. Basta!

Problemet var, at Raspberry Pi'en var for lang til at kunne sidde på tværs i kabinettet, men kun fordi microUSB-stikket til strømforsyningen var for langt.

Løsningen kunne være at lede på nettet efter et stik med 90 graders bøj, men det var sent, og jeg ville være færdig, så jeg klippede stikket af, fattede loddekolben og loddede strømforsyningen direkte fast til Raspberry Pi'en.

Der er masser af steder, man kan gøre det. Jeg valgte at lave forbindelsen over C6, som er den store kondensator lige ved USB-stikket.

Finish

Så er hele herligheden samlet, og ledningerne nogenlunde pænt ført. Det vigtige er som sagt at sikre, at ingen dele kan røre ved 230V-forsyningen.

Bemærk, at jeg har etableret et ethernet-stik på siden af kassen. Dette er for at muliggøre opsætning af wifi-forbindelsen.

Slut med hardwaren. Alle fingre i behold og kun mindre brandsår. Lidt hæs af al banderiet, men ellers har jeg det glimrende.

Men virker det så? Er kassen pæn udenpå?. Og hvilken idiot glemte, at det var fronten, da han borede hullerne til montering af Raspberry Pi-printet?

Se med i næste og sidste del af serien, hvor koden skrives og hele svineriet testes.

Husk, I kan følge mig på facebook, hvor jeg skriver løst og fast om teknologi, og hvor I kan komme med forslag til emner, som jeg kan tage op i klummen: https://www.facebook.com/en.noerds.bekendelser/

Min lille private teknologiske losseplads finder I på http://www.nørdoteket.dk/ hvor jeg dumper de artikler jeg har skrevet og diverse andet snask - alt sammen med primær fokus på teknologi.