Webb aktiverat lata studie ljus Controller (4 / 4 steg)

Steg 4: Programvara Detaljer

Introduktion

Programvaran har äntligen sammanställts och testats med hjälp av Arduino IDE 1.6.5.

För att få gå du behöver följande bibliotek skapad av Paul Stoffregen;

DS1307RTC.h bibliotek

https://github.com/PaulStoffregen/DS1307RTC

Time.h bibliotek

https://github.com/PaulStoffregen/Time

Obekant med att installera Arduino bibliotek? Sedan gå här för fullständiga instruktioner;

https://www.Arduino.cc/en/guide/libraries

Operation

-Startup

På starta upp programvaran initialises Ethernet shield med värden för; HTTP-porten (80), MAC-adress (DEADBEEFFEED), IP-adress (hennes 192.168.1.177, ingen DHCP), Gateway IP-adress (här routern är 192.168.1.1) och nätmask (här klass C, 255.255.255.0) och startar servern "server.begin()".

Alla adresser är IPv 4.

Koden kommer då in avsnittet loop av ramen Arduino programvara.

-Loop

Programmet utför följande åtgärder på varje efterföljande pass av slingan;

  1. Läste i utdata från temperaturgivare via A0 'sensorPin' och konvertera till grader C. Om det beräknade värdet är större än den "OVER_TEMP" alla reläet utgångar är avstängd och en över temperatur-flaggan är angiven. Detta minskar effektförlusten i server inhägnad. Flaggan används senare att styra format HTML visas av klienten, utlöser en varning.
  2. Programvaran sedan loggar den aktuella tiden "RTC.read(on_timer)" och läser status för knapparna ingång via indirekt booleska flaggor; 'SwanLightButtonState', 'TopShelfButtonState' och 'UnderDeskButtonState'. Tiden för detta Läs "GlobalTimeCurrent" jämförs sedan med "GlobalElapsedTime". Om "HOURS_DELAY" + "MINUTES_DELAY" är har överskridits lamporna kommer att automatiskt stänga av. Denna kod är icke-blockerande sålunda tillåt Arduino att spendera mer tid övervakning för HTTP anslutningsbegäranden och förbättra webbserver <> = klienten prestanda. Denna vistelse på timer kan förlängas med en knapptryckning (via webbsida eller knappen box) från valfri knapp, bildar nollställningsbar monostable funktionalitet.
  3. Varje faktiska knappen input övervakas sedan sekventiellt via en 'digitalRead()' med 'SwanLightButton', 'TopShelfButton' eller 'UnderDeskButton' pin referenser. Koden för detta används anropet "millis()" att skapa programvara switch de studsa. Här switch de studsa förlängs medvetet för att förhindra oavsiktlig aktivering. Det är funktionaliteten utvecklades för att växla ljus om hålls permanent i till-läge. Detta tjänar tre syften; 1: endast en knapp behövs för att slå på/av den respektive ljuset, 2: Detta minskar antalet nödvändiga insatsvaror på Arduino, 3: varnar användaren om en knapp trycks ner av misstag som skulle vara fallet om något tunga placeras på rutan omedvetet (jag lutade detta genom erfarenhet). Återigen är dessa dröjsmål samtal icke-blockerande.
  4. Koden sedan söker efter en klientbegäran och läser in några tecken från en HTTP GET via en "client.read()".
  5. Om HTTP-begäran har slutförts avslutas med "\n" programmet svarar med en serie "client.println()" kommandon. Var och en av vilka som innehåller en HTML formaterad svar, bildar "Studie Light" i klienten, inklusive tid, datum, temp (eller över temp varning), s/w webbsidesversionen, kvar på osv. Du kommer att märka från toppen av koden jag lagt till svaret från kompilatorn som anger hur mycket programminne och dynamiskt minne var tillgänglig. Ethernet-biblioteket är ganska minne "hungriga" så måste du vara medveten om din kod storlek. För att göra mest effektiva användning av de tillgängliga icke-flyktigt minne jag omges varje "client.println()" stränglitteral med makrot "F()" så att de kommer att lagras i flash och inte kod utrymme.
  6. I slutet av svaret en GET-begäran kontrolleras för att se om klienten begär en tid ändra 'strHTTPTimeLiteral', ett datum ändra strHTTPDateLiteral. Om så är fallet då RTC är uppdaterade.
  7. Slutligen görs en kontroll att avgöra om en förändring av ljus status har begärts webbgränssnittet, om så respektive indirekt booleska flaggorna är uppdaterad ('SwanLightButtonState', 'TopShelfButtonState', 'UnderDeskButtonState') tillsammans med den motsvarande Arduino utgångsstiftet korrekt köra tillhörande reläet.
  8. Loopen upprepas.

.

Temperaturen beräkning med MCP9700

Från tillverkare databladet ger MCP9700 en utgång ändring av 10mV/DegC. Ekvationen för beräkning av svaret är Vout = Tc * Ta + Vout0C. (eller y = mx + c) Om Tc (Temp Coeff) är 10mV/DegC, Ta den omgivande temp som mäts, Vout0C är MPC9700 produktionen vid 0 grader C.

Så beräknas temp enligt följande: TemperatureDegC = ((sensorValue * (5.0/1024.0))-0.5)/0.01

Andra objekt att överväga

  1. Automatisk tid inrätta på start. Eller bil uppdatera regelbundet. Sparar behöva göra det manuellt.
  2. Visning av aktuell status för varje beteckning på webbsidan.
  3. Förbättra HTML. Möjligen att skriva att använda serveras sidor från Ethernet Shield ombord uSD kortet. Hårdkodad stränglitteraler är inte en särskilt effektiv metod att använda.
  4. Om 3 är gjort, Lägg sedan till en FTP-server så uppdaterade webbsidor och vara enkelt laddas upp.

Lärdomar

  1. Använda en Arduino Pro version så du kan lägga till din egen, pålitliga kontakter.
  2. Tillbringa mer tid att lära sig HTML. Jag fuskade och använde WireShark för att se exakt vad som hände över Ethernet så jag kunde lista ut vad som hände i Ethernet shield. Arduino IDE är ganska bra att komma igång men sorgligt otillräckligt att felsöka med. Om du inte gillar att använda 'print' uttalanden. Jag gör inte.

.

.

Slutligen, som alltid, koden, kopplingsschema, tillhandahålls konstruktionsdetaljer etc. gratis för att använda på det sätt du se passa (bara göra ett omnämnande av mig), men de kommer inte stöds.

.

Happy uppfinna.

Se Steg
Relaterade Ämnen

Bygga en webb aktiverat dörrlås med resten API och Raspberry PI

I detta instructable, vi kommer att bygga en webb aktiverat elektroniska dörrlås från grunden med RESTFUL API, nod JS och Raspberry PI för att tillhandahålla webbtjänsten konsumeras av mobila app eller någon resten klient.Arkitekturen är uppdelad i t...

Snabb Tips #3 - snabb och enkel rörelse aktiverat cykel chef ljus

Min El-cykel ledde huvudet ljus inte hade arbetat sedan jag fick den. Så... vad göra vad göra...?Jag bestämde mig snarare än avfall strålkastare eftersom den ser bra ut på cykeln, tills jag kan fixa det på rätt sätt, jag var tvungen att tillfälligt t...

3D tryckt målat glas ljus dekoration

Jag är alltid nyfiken vackra glasmålningar i museum och kyrkor. Typen av glaskonst har finns i tusen år, traditionellt färgade glas skapas med tillsatsen av mineraliska pulver. hela processen tar lång tid att göra med skicklig hantverkare. Min idé är...

Touchscreen RGB ljus Controller

för vårt bröllop vi verkligen ville ha någon belysning som kan ändra färg på en långsam, kontrollerat sätt. Det behövs också för att ändra mellan fördefinierade färger som utrustad med våra färgsättning. Vi kunde inte hitta ett billigt sätt att göra...

Webb aktiverat garageport (Raspberry Pi)

Målet att skapa en webb baserad garage dörröppnare som bör retrofit till de flesta vanliga konservöppnare. Testade med ca 1990-talet Chamberlain 1/2 hp öppnaren. En gång tävlade din garageport kunde öppnas från din mobiltelefon eller dator.Raspberry...

USB-Stud ljus

i grunden en USB mask ljus men utan masken del.I följande instructable kommer jag visa dig hur man gör en något mer förenklad version av en USB-WormlightMen jag vill bara varna dig jag kommer att använda mestadels bilder gjort i MS paint, min kamera...

Bromsning aktiverat bakre Bike ljus

jag fick uttråkad och beslöt att befria min gamla dynamo ljus,så jag rensad, och fast lampan till 3 AAA batterier och leda 2 leder ut på sidan av lätta höljet,Jag sprang sedan kablarna till båda sidor av skivan/bromsok, för armen som inte skulle vara...

Webb aktiverat Pool kontroll - Raspberry Pi

Förra året hade jag en pool byggd. Det var spännande när pool byggare visade mig att pool industrin hade flyttat in i teknik ålder och nu erbjuds Programkontroll över internet. Att vara en dator knarkare hoppade jag av glädje. Sedan citatet... $10.00...

Quiz Game Controller med hjälp av "Ljus och ljud Buzzers" och Arduino

fara stil frågesport spel är favoriter för att skapa spänning och pedagogiska instruktioner samtidigt. Lärare, summer camp rådgivare och även industrin pedagoger hitta denna typ av spel för att skapa intresse och engagemang från deltagarna.Tanken bak...

Arduino Web aktiverat RGB belysning

jag råkade bara se några stora remsor av LED-belysning när jag plockade upp vissa delar på Maplin som var till försäljning (om jag minns rätt var de cirka £12 per ca. 2m band) men du styrenheten var fortfarande runt £40, så jag tänkte jag skulle bara...

Edwardian konstellation kjol med Fairy ljus

För årets Edwardian Ball ville jag skapa en klänning som påminner om en vintage natthimlen världen. En hoop kjol skapar struktur, fairy ljus belysa konstellationerna och en väska (som från min praktik bit) avslutar outfit. Jag är så nöjd med hur det...

Mångfärgade frysta Rose LED-ljus

Jag skapade detta projekt för att lägga till en liten gnista till matbordet när man har en romantisk måltid med flickvän hemma. Med inspiration från förtrollad Rose i Disney's skönheten och odjuret, den består av ett block av is med en riktig ros inn...

Håll oönskade besökare bort med en rörelse aktiverat Sprinkler

Tror de lokala djur att din gräsmatta är deras personliga toalett? Hålla ninja mördare försöker smyga in i ditt hus? Hålla dessa oönskade besökare bort med en rörelse aktiverat sprinkleranläggning. Så fort de kliver in i din gräsmatta, en passiv infr...

Hur man gör en rörelse aktiverade på/av ljus eller elektroniska utrustningen

i detta instructable jag ska visa dig hur man gör en analog rörelse aktiverat på/av ljus eller apparaten. Detta kan användas för att byta någon apparat. Jag gjorde denna krets analogt eftersom jag har bara varit en hobby för 2 år och jag did'nt har m...

Tilt aktiverat LED glöd cube

jag kan tacka Instructibles för inspirerande mig att göra olika LED projekt för min familj och vänner. Nu är det dags att publicera min första instructible på min senaste och favorit projekt hittills.Detta instructible kommer att visa dig hur du snab...

Fjärrstyrning av christmas lights med eter IO24

Detta projekt omfattar både mjukvara och hårdvaraInledning:Detta var en jul ljus controller jag använde ett år att köra en uppsättning med reläer med antingen IO24-modulen som jag ville köra dem över internet. Det ursprungliga projektet slutfördes fö...

Hur man bygger en ZMR250 racing quadcopter

Detta blir min tredje quadcopter. Jag har byggt en reptil 500 med en APM 2.8 och en mikro quad med borstad motors kör Cleanflight. Inspirerad av de fantastiska videor på YouTube, jag har dock valt att bygga en snabb och kraftfull FPV racer. Jag ska f...

LED Ice Rink

Här är en cool projekt som jag gjorde för mina barn. En isbana med avlägsen kontrollerade LED-lampor under isen.Steg 1: Gör ramen och gör det platt1. av plast eller presenningar första!!! Gå till er lokala järnhandeln ett pris ut 6mil klart (du behöv...

ETextiles med Intel Edison

eTextiles görs med hjälp av tekniker och material som gör det så elektriska komponenter kan bäddas in och integreras i tyg. Det är en viktig del av bärbar teknik och ett perfekt sätt för crafty människor att dyka till elektronik och vice versa. Dessa...