Dubbla frekvenser RC utlopp Webserver (4 / 4 steg)

Steg 4: programvara



Programvara. Jag älskar det. Gjort det professionellt i över 30 år. Realtid. Flygning kontroll. Simuleringar. Business apps. Vetenskapliga apps. Jag älskar dem alla. Med detta sagt, för min hem projekt, tillbringar jag mycket mer av min insats på hårdvara än programvaran. Detta är en hobby och vad jag gör för att varva ner efter skrift mjukvaran hela dagen. Programvaran för detta projekt skulle kunna vara mer komplett, mer robust och snyggare men det är inte hur jag vill lägga min tid på ett hem projektet.

Användargränssnitt

Eftersom detta projekt är byggd runt en ESP8266-12, då är den självklara lösningen för användargränssnittet en uppsättning webbsidor. Jag gjorde inte något fancy, bara kastade ihop några HTML5, CSS och Javascript i Kate. Detta var första gången jag använder ESP8266 för något annat än ett trivialt exempel och det fanns några quirks och fallgropar hade jag snubbla mig igenom innan jag fick allt fungerar.

Jag hade inte skrivit någon HTML i över tio år och ville prova HTML5. Att undvika tillbaka och vidare skriver, kompilera och ladda upp till ESP8266, jag första prototyped alla webbsidor på min laptop med modulen SimpleHTTP python som en server. Det gav mig mycket snabb vändning medan jag knackade HTML rosta bort.

Från bilderna, kan du se att huvudsidan är en lista över kända enheter och knapparna för att markera/avmarkera och aktivera eller inaktivera dem. Det finns också knappar som tar dig till sidor för att definiera en ny enhet eller redigera en befintlig.

Om du vill definiera en ny enhet, använder du knappen "Record 315" eller "Rekord 434" knappen. Förhoppningsvis vet du vilken frekvens din enhet använder men om inte, du bara prova en och sedan den andra. Om du väljer fel först, syns det en signal, så ingen skada skedd.

Utvecklingsmiljön

Koden för detta projekt är skriven i C++ använder Arduino bibliotek och sammanställt och laddat upp genom att använda Arduino kommandoradsgränssnitt.

Som C++ utvecklare av dagen är det mitt språk hemma. Jag hamnade först i hobby-nivå inbyggda system för två år sedan med plattformen som folk antingen älskar eller hatar - Arduino Uno. Som alla andra professionella programmerare som har använt Arduino IDE i mer än fem minuter, tittade jag snabbt för en annan lösning. Efter försökande den tillgängliga makefiler och Eclipse plug-in, slutade jag upp med Kate och ett python-skript för att åberopa Arduino kommandoradsgränssnittet. Som tillät mig att dike deras IDE alldeles och gjorde mig mycket gladare.

Innan det finns ännu en annan meningslös debatt om huruvida Arduino är en lämplig ekosystem att arbeta med, vill jag påpeka att det finns tre mycket fina saker om att arbeta med att verktygen:

  • Rikedomen av öppen källkod bibliotek för gränssnitt med olika maskinvarukomponenter
  • Förmågan att integrera icke-Arduino styrelser (som ESP8266) i deras byggsystem
  • En hardware abstraction layer som låter dig programmera (mer eller mindre) oberoende av den specifika mikro-controller du använder.

Ja, jag vet att en hel del mycket högljudd människor där ute ser på Arduino ekosystemet med förakt och hävda att någon som inte direkt för att gränssnittet maskinvaruspecifika och skriva varje bibliotek från början inte är riktiga programmerare. Jag håller inte men eftersom detta ämne har varit slå ihjäl länge sedan, debatter kan skickas till DjoceNet.

Funktionella prototyper

Alla min första prototyper utfördes på en Arduino Uno ansluten till min laptop och använda följetong till läsa kommandon från tangentbordet och skriva ut resultaten till skärmen. Detta tillät mig att fokusera på hur till läsa, lagra & replay RF kommandon utan att få kört fast med problem med WiFi och webbgränssnittet.

* Pro tips * - från början, jag skrev core logiken som en uppsättning fristående klasser helt oberoende av vad användaren var gränssnittet som används av testförare. Medan jag var prototyper, jag läsa kommandon från tangentbordet, tolka dem, startas korrekt metoderna från min bibliotek kod och visas resultaten för skärmen. När jag flyttade till ett webbaserat gränssnitt på ESP8266, biblioteket gled rätt i eftersom det har några beroenden på UI. Konfigurationsparametrar som GPIO pin uppdrag skickas som konstruktören parametrar till klassen "top level"-biblioteket. I huvudsakliga källfilen (.ino i Arduino-land) finns det en rad #ifdefs som konfigurerar dessa korrekt utifrån styrelsen jag sammanställer för.

När ett kommando tas emot, programvaran vänder på lämplig RF maskinvara (315 mottagare, 315 sändare, 434 mottagare eller 434 sändare) med hjälp av transistorn knuten till var och en av dessa enheter. Det väntar en liten mängd tid att se till att maskinvaran drivs upp och sedan antingen skickar ett kommando eller lyssnar efter ett inkommande kommando.

Säkerhet

Ingen. Detta är inte utsatt utanför mitt lokala nätverk så jag fick lata intresse spendera tid med min familj. Ärligt talat, om du väljer att bust genom min brandvägg och det enda du kan hitta för att göra är slå min julbelysningen på och av flera gånger, väl... du kanske inte är redo för anonym ganska ännu.

Nästa semester säsong, kan jag lägga till en MAC vitlista och vissa rudimentära användarreferenser. Jag tyckte också om att lägga till några logik som låser du ut ett tag om du försöker fråga mer än N kommandon i en timme. För nu är det ansluten, så det är ganska säkert.

Programvara för återanvändning

Som jag nämnde, är att kunna återanvända befintliga bibliotek en enorm produktivitet öka. För detta projekt, det finns två bibliotek i synnerhet som jag använder.

RCSwitch - Arduino bibliotek för fjärrkontrollen utlopp växlar

Detta bibliotek (http://code.google.com/p/rc-switch/) gör det mycket enkelt att kommunicera med RF-mottagare och sändare. Jag sluta ändra den ganska kraftigt för att passa min särskilt behöver men det var en bra utgångspunkt och visade mig de svar jag behövde för att få saker och ting fungerar.

ESP8266WebServer - död enkel web-server

Denna kod från Ivan Grokhotkov är en bra utgångspunkt för att skriva en enkel webserver.

Om jag har sett ytterligare, är det genom att stå på en jättes axlar. --Isaac Newton

Se Steg
Relaterade Ämnen

Billiga hem Automation med trådlös utlopp moduler

det är den tiden på året igen, när butikerna är fulla av juldekorationer och tillbehör. Julen kan vara månader bort ännu, men aldrig underskatta kraften i hacking säsongsbetonade semester tillbehör, ett tillbehör i synnerhet är otroligt användbara år...

Solpanel dubbla Management System (SP DMS)

Detta sakernas prototyp har två funktioner: 1) identitetsstöld förebyggande och 2) underhåll uppgift om solpaneler med en LinkIt och sensorer1) theft Prevention: för att uppnå detta vi använder GPS och GPRS funktioner i LinkIt en bräda med accelerome...

Foto Sensor kontrollerat utlopp (slår på eller av vid dagsljus eller nightime)

Om du tittar runt, är det väldigt lätt att hitta en fotoelektriska sensor växlar som stänger av ljus under dagen. Vad händer om projektet behövde du kan vända på ett objekt under dagen och stänga av på natten. Jag antar att de finns också tillgänglig...

Arduino hem Automation utlopp Box

DESS GJORT! KOLLA IN VIDEON I DET SISTA STEGET!Så i min lägenhet vi ska ha en växlade utlopp så att du kan tända ett ljus så snart du anger lägenheten. Jag har kunnat hitta nämnda utlopp. Så jag tänkte att jag äntligen skulle hitta en "permanent"...

Konstnärliga dekorativa utlopp Cover

med många kreativa alternativ, denna outlet täcka är enkla att designa och göra. Idén kom till mig efter jag renoverade mitt kök. Jag ville nog försäljningsställen så att jag inte skulle behöva söka och koppla bort varje gång jag använde ett utlopp....

En bättre DT dubbla bas

Här är en dubbla bas som kommer att skära på wasting silvertejp. Denna bas kommer att skapa ren överkanter och en tunn design för lättare skrynklor.Steg 1: material-styckning mattan-plant underlag-hobbykniv-linjalen-tejpSteg 2: Kapning & lägga remsor...

Barn Proofing dubbla dörrar

efter att ha försökt att hålla mina barn därifrån garderober med krok och ögla typ hårdvara och inte, beslutade jag att prova något nytt och det fungerade bra så jag bestämde mig att dela! Jag är medveten om att de säljer lås för dessa typer av dörra...

Förhöjda dubbla fat regnvatten Collection System

Steg 1: Skaffa fat jag shoppade Craigslist och hade tur - hittade en kille som bodde nära mig som befriade dem från hans arbetsplats - $15 varje. En hade persikor de andra aprikoser - min trädgård har en ny doft.Steg 2: Fat orientering Eftersom dessa...

Alesis trumma pad mesh huvudet konvertering med extra dubbla zon

Ändra om maskstorlek huvuden och lägga dubbla zon till en Alesis trumma 8 in Realhead pad. Modding pad för bättre utlösa svar och känsla. Detta kommer att fungera på både 8 in och 10 i Alesis Realdrum kuddar....

AR-15 dubbla fat

Här är min nya bössa AR-15 dubbla fat...

Dubbla skärm Digital Picture Frame & Family Center

svar på min vänner uppmaningar, jag gör detta instructable. Tyvärr innebär detta att jag inte har någon "making of" bilder, och inte heller eventuella faktiska priser för delar som används.Jag har ett hem för egensinniga tech, och tittade på min...

Dubbla Laser-Guided parkering System

detta är ett bra sätt att park i ditt garage utan hängande tennisboll. Du vet den som barnen använder för MELLANFODER praxis, som bara varar en dag.Detta system använder en liten laser monterad i taket som guidar dig in i garaget och hjälper du parke...

Anpassade dubbla plånbok Kit

För några månader sedan, började min vän matta och jag arbeta på en anpassningsbar tunn plånbok kit som kräver inga specialverktyg. Vi tyckte det blev bra och publicerade en Instructable för den.Vi fick mycket bra respons, inklusive vissa begäranden...

Smart hemautomation webserver på OpenWRT router WR703N kopplats ihop till Arduino, jämfört med Raspberry Pi och Ubuntu

Hämta WR703N Digest (340MB zip-fil):https://sourceforge.net/projects/wr703n/---------------------------------------------------------------------------------------------------------------------------------Kära läsare,Det finns många Linux styrelser p...

3D skriva ut ett fall mögel att göra dubbla mögel delar

Detta är en avancerad mögel-making handledning. Om du behöver göra en multipel-del mögel, eller måste du göra multiplar av samma mögel, kan du överväga att göra vad som kallas ett fall mögel. Det vill säga en mögel-av-en-mögel-del. Denna handledning...

Dubbla lastning panintball dumper

detta är en instructable för enkel billigt sätt att göra en egen paintball dumper häxa är annars vara som $20 eller så om du får en i butiken eller online. Så here go we.Första material:-en uppfart salt behållare med spridare-en emerald nötter behåll...

Lägga till dubbla priser för en sändare kanal

Att kunna styra den maximala resor eller ändpunkten för en kanal kallas brukar dubbla priser. På ett flygplan, kan det användas för att begränsa resa av en yta att göra flygplan lättare att kontrollera för landning och ta av. De kan sedan utvidgas fö...

En praktisk användning för dubbla dörrar

en av de värsta uppfinningarna genom tiderna är en dubbla dörr. De är alltid ur läge och är en mardröm att installera. Jag hoppas i detta Instructable kommer jag visa dig en mer praktisk användning. Förra året jag hade sammanställt ett skrivbord för...

DUBBLA tangentbord

fördubbla din produktivitet genom att ansluta en enda tangentbord till två datorer! Det är enkelt: ett tangentbord, två USB-anslutningar, oändliga möjligheter. Varje finger stroke kommer att vara dubbelt så kraftfull med detta tangentbord mod. Detta...