Smarthjem med Arduino-controllere: design og organisering af et styret rum
Udviklingen af automationsværktøjer har ført til skabelsen af komplekse systemer, der forbedrer menneskets livskvalitet. Mange kendte producenter af elektronik og softwaremiljøer tilbyder færdige standardløsninger til forskellige objekter.
Selv en uerfaren bruger kan udvikle sine egne projekter og samle et “smart home” på Arduino efter sine behov. Det vigtigste er at forstå det grundlæggende og ikke være bange for at eksperimentere.
I denne artikel ser vi på princippet for oprettelse og hovedfunktionerne i et automatiseret hjem baseret på Arduino-enheder. Vi vil også se på de anvendte typer af boards og systemets vigtigste moduler.
Artiklens indhold:
Oprettelse af systemer på Arduino-platformen
Arduino – en platform til udvikling af elektroniske enheder med automatisk, halvautomatisk eller manuel styring. Den er bygget efter princippet om et byggesæt med klart definerede regler for interaktion mellem elementer. Systemet er åbent, hvilket gør det muligt for tredjepartsproducenter at deltage i dets udvikling.
Det klassiske “smart home” består af automatiserede enheder, der udfører følgende funktioner:
- indsamler nødvendig information via sensorer;
- analyserer data og træffer beslutninger ved hjælp af en programmerbar mikroprocessor;
- implementerer de trufne beslutninger ved at give kommandoer til forskellige enheder.
Arduino-platformen er god, netop fordi den ikke er bundet til en bestemt producent, men lader forbrugeren selv vælge de komponenter, der passer til ham. Udvalget er enormt, så man kan realisere næsten alle idéer.
Vi anbefaler at se nærmere på de bedste smarte enheder til hjemmet.

Ud over mangfoldigheden af tilsluttede enheder tilføjer programmeringsmiljøet, implementeret på C++, variation. Brugeren kan ikke kun bruge de oprettede biblioteker, men også selv programmere systemkomponenternes reaktion på hændelser.
Grundlæggende elementer i boards
Hovedelementet i et “smarthjem” er et eller flere centrale (moderkort) boards. De sørger for interaktion mellem alle elementer. Først når man har defineret de opgaver, der skal løses, kan man gå i gang med at vælge systemets hovedenhed.
Moderkortet indeholder følgende elementer:
- Mikrocontroller (processor). Dets primære formål er at udsende og måle spænding i portene i området 0-5 eller 0-3,3 V, gemme data og foretage beregninger.
- Programmator (findes ikke på alle boards). Ved hjælp af denne enhed skrives programmet ind i mikrocontrollerens hukommelse, som “smarthjemmet” vil fungere efter. Det tilsluttes en computer, tablet, smartphone eller en anden enhed via USB-grænseflade.
- Spændingsregulator. Der er brug for en enhed på 5 volt, som kræves til at forsyne hele systemet.
Under mærket Arduino udgives flere boardmodeller. De adskiller sig fra hinanden i formfaktor (størrelse), antal porte og hukommelseskapacitet. Det er ud fra disse parametre, man skal vælge en passende enhed.

Der findes to typer porte:
- digitale, som er markeret på boardet med bogstaverne “d”;
- analoge, som er markeret med bogstavet “a”.
Takket være dem kommunikerer mikrocontrolleren med tilsluttede enheder. Enhver port kan fungere både til at modtage og sende signaler. Digitale porte mærket med “pwm” er beregnet til input og output af PWM-signal (pulsbreddemodulation).
Derfor er det nødvendigt inden køb af boardet at vurdere dets belastningsniveau med forskellige enheder, i hvert fald groft. Dette gør det muligt at bestemme det nødvendige antal porte af alle typer.
Samtidig skal man forstå, at systemet “smarthjem” ikke nødvendigvis skal være knyttet til en kontrolenhed baseret på et enkelt motherboard. Funktioner som f.eks. tænding af kunstig belysning på grundområdet afhængigt af tidspunktet på dagen og opretholdelse af vandreservoir i en lagertank er uafhængige af hinanden.
Fra et synspunkt af pålidelighed af det elektroniske system er det bedre at fordele uafhængige opgaver på forskellige blokke, hvilket Arduino-konceptet let tillader. Hvis man samler mange enheder ét sted, er der risiko for overophedning af mikroprocessoren, konflikt mellem softwarebiblioteker og vanskeligheder ved at finde og rette software- og hardwarefejl.

Hver mikroprocessor er udstyret med tre typer hukommelse:
- Flash Memory. Den primære hukommelse, hvor koden til systemstyringsprogrammet gemmes. En lille del (3-12 %) optages af den indbyggede bootloader.
- SRAM. Arbejdshukommelse, hvor midlertidige data, der er nødvendige under programmets kørsel, gemmes. Den har høj arbejdshastighed.
- EEPROM. Langsommere hukommelse, hvor data også kan gemmes.
Den største forskel mellem hukommelsestyperne til datalagring er, at når strømmen slukkes, går informationen, der er gemt i SRAM, tabt, mens den forbliver i EEPROM. Men den ikke-flygtige type har også en ulempe – et begrænset antal skrivecyklusser. Det skal man huske, når man laver sine egne applikationer.
I modsætning til brugen af Arduino i robotteknologi, kræver de fleste opgaver i “smart home” ikke meget hukommelse hverken til programmer eller til lagring af information.
Typer af boards til smart home-opbygning
Lad os se på de vigtigste typer kort, der oftest bruges ved samling af et smart home-system.
Type #1 — Arduino Uno og dens afledte
Mest almindeligt i “smart home”-systemer anvendes Arduino Uno og Arduino Nano-kort. De har tilstrækkelig funktionalitet til at løse typiske opgaver.

Vigtigste specifikationer for Arduino Uno Rev3:
- processor: ATMega328P (8 bit, 16 MHz);
- antal digitale porte: 14;
- heraf med PWM-funktion: 6;
- antal analoge porte: 6;
- flash-hukommelse: 32 KB;
- SRAM: 2 KB;
- EEPROM: 1 KB.
For ikke så længe siden kom en modificeret version – Uno Wi-Fi, som indeholder en integreret ESP8266-modul, der gør det muligt at udveksle information med andre enheder via 802.11 b/g/n-standarden.
Forskellen mellem Arduino Nano og dens større modstykke er, at den ikke har en egen strømstik til 12 V. Dette er gjort for at opnå en mindre enhedsstørrelse, så den nemt kan skjules i et lille rum. Ligeledes er standard USB-forbindelse erstattet med en chip med mini-USB-kabel til disse formål. Arduino Nano har 2 flere analoge porte sammenlignet med Uno.
Der er endnu en modificeret version af Uno-kortet – Arduino Mini. Den er endnu mindre end Nano, og den er meget sværere at arbejde med. For det første skaber manglen på en USB-port et problem med firmware, da man skal bruge en USB-Serial Converter til dette. For det andet er dette kort mere kræsen med strømforsyning – man skal sikre et indgangsspændingsområde på 7-9 V.
Af de ovennævnte grunde bruges Arduino Mini-kortet sjældent til “smarthus”-arbejde. Det anvendes normalt enten inden for robotteknik eller til implementering af allerede færdige projekter.
Type #2 — Arduino Leonardo og Micro
Arduino Leonardo-kortet ligner Uno, men er lidt kraftigere. En interessant egenskab ved denne model er, at den ved tilslutning til en computer registreres som et tastatur, en mus eller et joystick. Derfor bruges den ofte til at skabe originale spil-enheder og simulatorer.

De vigtigste parametre for Arduino Leonardo er:
- processor: ATMega32u4 (8 bit, 16 MHz);
- antal digitale porte: 20;
- heraf med PWM-funktion: 7;
- antal analoge porte: 12;
- flash-hukommelse: 32 KB;
- SRAM: 2,5 KB;
- EEPROM: 1 KB.
Som det ses af den anførte parameterliste, har Leonardo flere porte, hvilket gør det muligt at belaste denne model med et større antal sensorer.
Desuden findes der til Leonardo en fuldstændig identisk miniature-ækvivalent kaldet Micro. Den mangler 12 V-strømforsyning og i stedet for et fuldt USB-indgang har den en chip til mini-USB-kabel.
Modifikationen af Leonardo kaldet Esplora er en ren spillemodel og egner sig ikke til “smarthus”-behov.
Type #3 — Arduino 101, Arduino Zero og Arduino MKR1000
Nogle gange kræver arbejdet med “smarthus”-systemer baseret på Arduino en større beregningskraft, som 8-bit mikrocontrollere ikke kan levere. Opgaver som stemme- eller billedgenkendelse kræver en hurtig processor og en betydelig mængde RAM for sådanne enheder.
Til at løse sådanne specifikke opgaver bruges kraftige kort, der fungerer efter Arduino-konceptet. Antallet af porte er omtrent det samme som på Uno- eller Leonardo-kort.

Et af de letteste at bruge, men kraftige kort – Arduino 101 har følgende specifikationer:
- processor: Intel Curie (32 bit, 32 MHz);
- flash memory: 196 KB;
- SRAM: 24 KB;
- EEPROM: ingen.
Derudover er kortet udstyret med BLE-funktionalitet (Bluetooth Low Energy) med mulighed for nem tilslutning af færdige løsninger, såsom en hjertefrekvenssensor, indhentning af information om vejret udenfor, afsendelse af tekstbeskeder osv. Der er også integreret et gyroskop og et accelerometer i enheden, men de bruges hovedsageligt inden for robotteknik.
Endnu et lignende kort – Arduino Zero har følgende specifikationer:
- processor: SAM-D21 (32 bit, 48 MHz);
- flash-hukommelse: 256 KB;
- SRAM: 32 KB;
- EEPROM: ingen.
En karakteristisk egenskab ved denne model er tilstedeværelsen af en indbygget debugger (EDBG). Med den er det meget lettere at finde fejl under programmering af boardet.

Arduino MKR1000 er endnu en model, der er velegnet til kraftfulde beregninger. Den har en mikroprocessor og hukommelse, der svarer til Zero. Hovedforskellen er tilstedeværelsen af en integreret Wi-Fi-chip med 802.11 b/g/n-protokol og en kryptochip med understøttelse af SHA-256-algoritmen til beskyttelse af overførte data.
Type #4 — Mega-familiens modeller
Nogle gange er det nødvendigt at bruge et stort antal sensorer og styre et betydeligt antal enheder. For eksempel er dette nødvendigt for automatisk drift af distribuerede airconditionsystemer, der opretholder en bestemt temperatur for specifikke zoner.
For hvert lokalt område skal man overvåge aflæsningerne fra to temperatursensorer (den anden bruges som kontrol) og i overensstemmelse med algoritmen justere spjældets position, som bestemmer mængden af varm luft, der tilføres.
Hvis der er mere end 10 sådanne zoner i sommerhuset, kræves der mere end 30 porte til styring af hele systemet. Man kan selvfølgelig bruge flere Uno-board under fælles styring af et af dem, men det skaber yderligere komplikationer med forbindelse. I dette tilfælde er det hensigtsmæssigt at bruge modeller fra Mega-familien.

Arduino Mega boardet er baseret på en ret simpel 8-bit 16 MHz mikroprocessor aTMega1280.
Den har en stor mængde hukommelse:
- flash-hukommelse: 128 KB;
- SRAM: 8 KB;
- EEPROM: 4 KB.
Men dens største fordel er tilstedeværelsen af mange porte:
- antal digitale porte: 54;
- heraf med PWM-funktion: 15;
- antal analoge porte: 16.
Der findes to moderne varianter af dette board:
- Mega 2560 er baseret på mikroprocessoren aTMega2560, som har en større flash-hukommelse – 256 KB;
- Mega ADK er udover mikroprocessoren aTMega2560 udstyret med en USB-grænseflade, der muliggør tilslutning til enheder baseret på Android-operativsystemet.
Arduino Mega ADK-modellen har en særlig egenskab. Når telefonen tilsluttes USB-indgangen, kan følgende situation opstå: hvis telefonen har brug for opladning, vil den begynde at “trække” strøm fra boardet. Derfor er der et ekstra krav til strømkilden – den skal kunne levere en strømstyrke på 1,5 ampere. Ved strømforsyning via batterier skal denne betingelse tages i betragtning.

Due – endnu en model fra Arduino, der kombinerer mikroprocessorens kraft og et stort antal porte.
Dens specifikationer er:
- processor: Atmel SAM3X8E (32 bit, 84 MHz);
- antal digitale porte: 54;
- heraf med PWM: 12;
- antal analoge porte: 14;
- flash-hukommelse: 512 KB;
- SRAM: 96 KB;
- EEPROM: ingen.
De analoge ben på dette board kan fungere både i den for Arduino sædvanlige 10-bit opløsning, hvilket er gjort for kompatibilitet med tidligere modeller, og i 12-bit opløsning, som giver et mere præcist signal.
Særlige kendetegn ved interaktion mellem moduler via porte
Alle moduler, der tilsluttes boardet, har mindst tre udgange. To af dem er strømkabler, dvs. “jord”, samt spænding på 5 eller 3,3 V. Det tredje kabel er logisk. Dataoverførsel til porten sker via dette. Til tilslutning af moduler bruger man specielle kabler, der er grupperet i sæt af tre, og som nogle gange kaldes jumpere.
Da Arduino-modeller normalt kun har én spændingsport og 1-2 porte med “jord”, skal man enten lodde kablerne eller bruge breadboards for at tilslutte flere enheder.

Lodning er mere pålidelig og anvendes i enheder, der udsættes for fysisk påvirkning, f.eks. styreboards til robotter og quadcopters. Til et smart home er det bedre at bruge breadboards, da det er lettere både ved installation og ved fjernelse af modulet.
Nogle modeller (f.eks. Arduino Zero og MKR1000) har en driftsspænding på 3,3 V, så hvis der tilføres en højere spænding til portene, kan boardet blive beskadiget. Al information om strømforsyning findes i enhedens tekniske dokumentation.
Tilføjelsesboards (shields)
For at udvide mulighederne for motherboardene bruger man shields – udvidelsesenheder, der tilføjer funktionalitet. De fremstilles til en specifik formfaktor, hvilket adskiller dem fra moduler, der tilsluttes porte. Shields er dyrere end moduler, men de er nemmere at arbejde med. De leveres også med færdige kodebiblioteker, hvilket fremskynder udviklingen af egne styringsprogrammer til “smart home”.
Proto- og Sensor-shields
Disse to standard-shields tilføjer ikke nogen særlige funktioner. De bruges til mere kompakt og bekvem tilslutning af et stort antal moduler.
Proto Shield er en næsten fuld kopi af originalen med hensyn til porte, og midt i modulet kan man lime et breadboard. Det gør det lettere at samle konstruktionen. Sådanne tilføjelser findes til alle fuldformat Arduino-kort.

Men hvis der er meget udstyr (mere end 10), er det bedre at bruge de dyrere Sensor Shield-koblingskort.
De har ikke et breadboard, men strøm og jord er ført individuelt til alle portben. Det gør, at man ikke bliver forvirret i ledninger og jumperkabler.

Desuden har dette kort stik til nem tilslutning af flere moduler: Bluetooth, SD-kort, RS232 (COM-port), radio og ultralyd.
Tilslutning af ekstra funktionalitet
Shields med integreret funktionalitet er designet til at løse komplekse, men typiske opgaver. Hvis man har brug for at realisere originale ideer, er det bedre at vælge et passende modul.
Motor Shield. Den er designet til at styre hastighed og rotation af lavenergimotorer. Originalmodellen er udstyret med en enkelt L298-chip og kan arbejde samtidigt med to DC-motorer eller en servo. Der findes også en kompatibel del fra en tredjepartsproducent med to L293D-chips, der kan styre dobbelt så mange drev.
Relay Shield. Et ofte anvendt modul i “smart home”-systemer. Et kort med fire elektromekaniske relæer, hver tillader strøm op til 5 A. Det er nok til automatisk at tænde og slukke for kilowattapparater eller lyslinjer designet til 220 V vekselstrøm.
LCD Shield. Gør det muligt at vise information på den indbyggede skærm, som kan opgraderes til en TFT-enhed. Denne udvidelse bruges ofte til at skabe vejrstationer med temperaturaflæsninger i forskellige boliger, tilbygninger, garagen samt temperatur, luftfugtighed og vindhastighed udendørs.

Data Logging Shield. Modulets hovedopgave er at optage data fra sensorer på et fuldformat SD-kort op til 32 GB med understøttelse af FAT32-filsystemet. For at optage på et mikro-SD-kort skal du købe en adapter. Dette shield kan bruges som informationslager, f.eks. ved optagelse af data fra en videooptager. Produceret af det amerikanske firma Adafruit Industries.
SD-card Shield. En enklere og billigere version af det foregående modul. Sådanne udvidelser produceres af mange producenter.
EtherNet Shield. Officielt modul til at forbinde Arduino med internettet uden computer. Der er et slot til mikro-SD-kort, hvilket gør det muligt at optage og sende data via det globale netværk.
Wi-Fi Shield. Gør det muligt at udveksle information trådløst med understøttelse af krypteringstilstand. Den anvendes til forbindelse med internettet og enheder, der kan styres via Wi-Fi.
GPRS Shield. Dette modul bruges typisk til at forbinde “smarthjemmet” med ejeren via mobiltelefon gennem SMS-beskeder.
Moduler til “smart home”
Tilslutning af moduler fra tredjepartsproducenter og muligheden for at arbejde med dem ved hjælp af det indbyggede programmeringssprog – det er den største fordel ved det åbne Arduino-system sammenlignet med “proprietære” løsninger til “smarthjem”. Det vigtigste er, at modulerne har en beskrivelse af de modtagne eller sendte signaler.
Måder at indhente information på
Indlæsning af information kan ske via digitale eller analoge porte. Dette afhænger af typen af knap eller sensor, der modtager informationen og videresender den til printpladen.

Et signal til mikroprocessoren kan sendes af en person, som bruger to metoder til dette:
- Tryk på knap (tast). Den logiske ledning går i dette tilfælde til den digitale port, som modtager værdien “0” når knappen er sluppet, og ”1” når den trykkes.
- Drejning af hætten på en drejepotentiometer (modstand) eller forskydning af en skydekontaktarm. I dette tilfælde går den logiske ledning til den analoge port. Spændingen passerer gennem en analog-til-digital-omformer, hvorefter data overføres til mikroprocessoren.
Knapper bruges til at starte en handling, f.eks. tænd og sluk lys, opvarmning eller ventilation. Drejeknapper anvendes til at ændre intensitet – øge eller mindske lysstyrke, lydstyrke eller ventilatorbladets rotationshastighed.

Til automatisk bestemmelse af miljøparametre eller oprindelsen af en hændelse anvendes sensorer.
Til brug i “smart home” er følgende varianter mest efterspurgte:
- Lydsensor. Digitale versioner af denne enhed bruges til at aktivere en begivenhed ved klap eller stemme. Analoge modeller kan genkende og bearbejde lyd.
- Lyssensor. Disse apparater kan fungere i både synligt og infrarødt område. De sidstnævnte kan anvendes som brandalarmsystem.
- Temperatursensor. Til indendørs og udendørs brug anvendes forskellige modeller, da udendørsmodeller er bedre beskyttet mod fugt. Der findes også separate enheder med ledning.
- Luftfugtighedssensor. Til indendørs brug er model DHT11 egnet, og til udendørs brug den dyrere DHT22. Begge enheder kan også give temperaturmålinger. De tilsluttes til en digital port.
- Lufttrykssensor. Til samarbejde med Arduino-kort har analoge barometre fra Bosh: bmp180, bmp280 vist sig gode. De måler også temperatur. Model bme280 kan kaldes en vejrstation, da den også angiver fugtighedsværdi.
- Bevægelses- og tilstedeværelsessensorer. De bruges til sikkerhedsformål eller til automatisk tænding af lys.
- Regnsensor. Reagerer på vand, der rammer dens overflade. Den kan også bruges til at udløse alarm ved lækager i vandforsyning eller varmekreds.
- Strømsensor. De bruges til at detektere defekte elektriske apparater (udbrændte pærer) eller til spændingsanalyse for at undgå overbelastning.
- Gaslækagesensor. Bruges til at detektere og reagere på forhøjet koncentration af propan.
- Kuldioxidsensor. Den bruges til at bestemme koncentrationen af kuldioxid i beboelsesrum og i specielle rum som vinkældre, hvor gæring finder sted.
Der findes mange forskellige sensorer til specifikke opgaver, f.eks. til måling af vægt, vandstrømningshastighed, afstand, jordfugtighed osv.

Mange sensorer og detektorer kan laves selv ved hjælp af simplere komponenter. Det vil være billigere. Men i modsætning til brug af serieproducerede enheder, skal der bruges tid på kalibrering.
Styring af apparater og systemer
Udover indsamling og analyse af information skal et “smart home” også reagere på hændelser. Tilstedeværelsen af avanceret elektronik i moderne husholdningsapparater gør det muligt at tilgå dem direkte via Wi-Fi, GPRS eller Ethernet. Normalt implementeres kommunikation mellem mikroprocessoren og højteknologiske enheder via Wi-Fi til Arduino-systemer.
For at tænde for airconditioneren med Arduino, når temperaturen i huset er høj, blokere tv og internet om natten i børneværelset eller starte varmtvandsbeholderen, før beboerne kommer hjem, skal du udføre tre handlinger:
- Installer Wi-Fi-modulet på bundkortet.
- Find ubrugte frekvenskanaler for at undgå systemkonflikter.
- Sæt dig ind i enhedernes kommandoer og programmer handlingerne (eller brug færdige biblioteker).
Udover “kommunikation” med computeriserede enheder opstår der ofte opgaver, der involverer udførelse af mekaniske handlinger. For eksempel kan du tilslutte en servomotor eller en lille gearmotor til boardet, som forsynes fra det.

Hvis der er behov for at tilslutte kraftige enheder, der drives af en ekstern strømkilde, anvendes to muligheder:
- Indsættelse af et relæ i kredsløbet.
- Tilslutning af en effekttransistor (MOSFET) og en triac.
Et elektromagnetisk eller solid-state relæ indsat i det elektriske kredsløb lukker og åbner en af ledningerne efter kommando fra mikroprocessoren. Deres vigtigste egenskab er den maksimalt tilladte strøm (f.eks. 40 A), der kan passere gennem enheden.
Hvad angår tilslutning af en effekttransistor (MOSFET) til jævnstrøm og en triac til vekselstrøm, har de en lavere tilladt strømstyrke (5-15 A), men kan gradvist øge belastningen. Det er netop derfor, at boardsne er udstyret med PWM-porte. Denne egenskab bruges til at justere lysstyrke, blæserhastighed osv.
Med relæer og effekttransistorer kan man fuldautomatisere alle husets elektriske kredsløb og starte en generator, når strømmen er væk. Derfor er det muligt med Arduino at realisere en autonom forsyning af en lejlighed eller bygning, herunder alle særligt vigtige funktioner – opvarmning, vandforsyning, spildevandshåndtering, ventilation og sikkerhedssystem.
Vil du have, at dit hjem bliver smartere, men er du ikke så ferm med programmering? I så fald anbefaler vi at se på færdige løsninger fra Xiaomi og Apple, som selv en nybegynder nemt kan installere og konfigurere. Og du kan endda give kommandoer og kontrollere deres udførelse fra din smartphone.
Læs mere om smart home fra Xiaomi og Apple i følgende artikler:
- Smart home Xiaomi: designfunktioner, overblik over de vigtigste komponenter og arbejdselementer
- Apple Smarthome: detaljer om organisering af hjemmestyringssystemer fra “æble”-virksomheden
Konklusioner og nyttig video om emnet
Eksempel på en selvbygget begynderskabelon for et “smart home”:
Arduino-platformens åbenhed gør det muligt at bruge komponenter fra forskellige producenter. Dette gør det nemt at konstruere et “smart home” efter brugerens behov. Derfor, hvis du har bare grundlæggende viden inden for programmering og tilslutning af elektroniske enheder, er dette system værd at overveje.
Har du praktisk erfaring med Arduino-platformen og ønsker at dele dine oplevelser med nybegyndere? Måske vil du gerne supplere ovenstående materiale med nyttige råd eller bemærkninger? Skriv dine kommentarer under dette indlæg.
Hvis du har spørgsmål om design af et automatiseret hjem baseret på Arduino, så stil dem til vores eksperter og andre besøgende på siden i boksen nedenfor.
