Dual frequentie RC Outlet Webserver (4 / 5 stap)

Stap 4: Software


Software. Ik vind het geweldig. Gedaan het professioneel voor meer dan 30 jaar. Real-time. Vlucht controle. Simulaties. Zakelijke apps. Wetenschappelijke apps. Ik hou van alle 'em. Dat gezegd zijnde, voor mijn eigen projecten, besteed ik veel meer van mijn inspanning op de hardware dan de software. Dit is een hobby en wat ik doen om te ontspannen na de hele dag het schrijven van software. De software voor dit project zou meer compleet, meer robuuste en mooier, maar dat is niet hoe ik ben op zoek naar mijn tijd besteden op een home project.

User Interface

Omdat dit project is opgebouwd rond een ESP8266-12, dan de hand liggende oplossing voor de user-interface een verzameling webpagina's is. Ik deed niets fancy, gewoon gooide samen enkele HTML5, CSS en Javascript in Kate. Dit was mijn eerste keer met behulp van de ESP8266 voor iets anders dan een triviaal voorbeeld en er waren enkele eigenaardigheden en valkuilen ik mijn weg door struikelen moest voordat ik heb alles werkt.

Ik had niet geschreven HTML-code in meer dan tien jaar en wilde uitproberen van HTML5. Om te voorkomen dat het terug en weer schrijven, compileren en uploaden naar de ESP8266, ik eerste prototyped all de web pagina's op mijn laptop using de SimpleHTTP python module als een server. Dit gaf mij zeer snelle turn-around, terwijl ik de HTML roest geklopt.

Van de foto's, kunt u zien dat de belangrijkste pagina een lijst van bekende apparaten en knoppen is te selecteren/deselecteren en zet ze in- of uitschakelen. Er zijn ook knoppen waarmee u naar pagina's met het definiëren van een nieuw apparaat of een bestaand stereotype bewerken.

Als u wilt definiëren een nieuw apparaat, u gebruikt de knop "Registreren 315" of "Record 434". Hopelijk weet u welke frequentie uw toestel gebruikt maar als niet, u alleen één en dan de andere proberen. Als u eerst verkeerde kiest, zien niet het een signaal, dus geen schade.

De ontwikkelomgeving

De code voor dit project is geschreven in C++ met behulp van de Arduino libraries, gecompileerd en geüpload via de opdrachtregelinterface van Arduino.

Als C++ ontwikkelaar per dag is dat mijn voorkeurstaal thuis. Twee jaar geleden met het platform dat liefde of haat - de Arduino Uno mensen kreeg ik eerst in hobbyist-niveau ingebedde systemen. Net als elke andere professionele programmeur die de Arduino IDE voor meer dan vijf minuten gebruikt, keek ik snel naar een andere oplossing. Na het proberen van de Makefiles van beschikbaar en de Eclipse plug-in, uiteindelijk heb ik met behulp van Kate en een python-script om te roepen de opdrachtregelinterface van Arduino. Dat stond me toe om hun IDE helemaal sloot en maakte me veel gelukkiger.

Voordat er nog een ander zinloos debat is over de vraag of Arduino een geschikt ecosysteem om mee te werken, wil ik erop wijzen dat er drie heel leuke dingen over het werken met deze toolset zijn:

  • De rijkdom van open-source bibliotheken voor interfacing met andere hardwarecomponenten
  • De mogelijkheid om niet-Arduino boards (zoals de ESP8266) integreren in hun bouwsysteem
  • Een hardware abstraction layer waarmee u program (min of meer) onafhankelijk van de specifieke micro-controller die u gebruikt.

Ja, ik weet dat een heleboel zeer vocale mensen daar kijk op het ecosysteem van de Arduino met minachting en beweren dat iemand die niet program rechtstreeks naar de specifieke hardware-interface en schrijven van elke bibliotheek vanaf nul is niet een echte programmeur. Ik ben het oneens, maar dat onderwerp is sinds beat ter dood lang geleden, de debatten kunnen worden verzonden naar/dev/null.

Functionele Prototyping

Al mijn eerste prototyping werd uitgevoerd op een Arduino Uno aangesloten op mijn laptop en met behulp van serieel naar opdrachten van het toetsenbord leest en resultaten naar het scherm afdrukken. Dit liet mij te concentreren op hoe om te lezen, store & replay van de RF-opdrachten zonder vast te lopen door problemen met WiFi en de web-interface.

* Pro Tip * - vanaf het allereerste begin, ik schreef de kern-logica als een set van zelfstandige klassen volledig onafhankelijk van welke gebruiker interface werd gebruikt door de testrijder. Terwijl ik prototyping was, ik lees opdrachten via het toetsenbord, geparseerd hen, de juiste methoden aangeroepen vanuit code van mijn bibliotheek en resultaten op het scherm weergegeven. Toen ik naar een web-gebaseerde interface op de ESP8266 verhuisde, de bibliotheek gleed middenin aangezien er geen afhankelijkheden op de UI. Configuratieparameters graag GPIO pin toewijzingen als constructor parameters worden doorgegeven aan de klasse op het hoogste niveau bibliotheek. In de belangrijkste bronbestand (de Ino in Arduino-land) zijn er een aantal #ifdefs die deze juist afhankelijk van het type van de Raad van bestuur dat ik ben het samenstellen voor configureren.

Wanneer een opdracht wordt ontvangen, de software draait op de juiste RF-hardware (315 ontvanger, 315 zender, 434 ontvanger of 434 zender) met behulp van de transistor gebonden aan elk van deze eenheden. Hij wacht een kleine hoeveelheid tijd om ervoor te zorgen dat de hardware is ingeschakeld en vervolgens verzendt een opdracht of voor een binnenkomende opdracht luistert.

Veiligheid

Geen. Dit is niet blootgesteld buiten mijn lokaal netwerk, dus ik lui in het belang van tijd doorbrengen met mijn familie ben. Eerlijk gezegd, als u besluit om buste via mijn brandhout en het enige wat u vinden kunt om te doen is mijn kerstverlichting inschakelen en uitschakelen herhaaldelijk, goed... u mag niet helemaal nog niet klaar voor anoniem zijn.

Volgend vakantieseizoen, kan ik een MAC whitelist en sommige rudimentaire gebruikersreferenties toevoegen. Ik dacht ook over het toevoegen van enkele logica die u uit voor een tijdje sluizen als u probeert tot uitgifte van meer dan N commando's in een uur. Voor nu is het losgekoppeld, dus het is vrij veilig.

Software hergebruik

Zoals ik al zei, is zijnde kundig voor hergebruik bestaande bibliotheken een enorme productiviteit impuls. Voor dit project, zijn er twee bibliotheken in het bijzonder dat ik maakte gebruik van.

RCSwitch - Arduino library voor afstandsbediening outlet wissels en kruisingen

Deze bibliotheek (http://code.google.com/p/rc-switch/) maakt het zeer eenvoudig om de interface met de RF-ontvangers en zenders. Ik heb uiteindelijk het nogal zwaar wijzigen aanpassen aan mijn name moet maar het was een geweldig startpunt en liet me de antwoorden die ik nodig had om dingen werken.

ESP8266WebServer - Dead eenvoudige web-server

Deze code van Ivan Grokhotkov is een goed uitgangspunt voor het schrijven van een eenvoudige webserver.

Als ik verder gezien heb, is het door staande op de schouders van reuzen. --Isaac Newton

Dat citaat een beetje pretentieus voor een dergelijk alledaagse project is, maar ik vind het belangrijk om te erkennen het werk van andere mensen die deze software veel eenvoudiger dan het schrijven zou zijn geweest anders. Bedankt.

Gerelateerde Artikelen

Zonnepaneel Dual managementsysteem (DMS SP)

Zonnepaneel Dual managementsysteem (DMS SP)

Dit IoT prototype heeft twee functies: 1) diefstal preventie en 2) onderhoud indicatie van zonnepaneel met behulp van een LinkIt en sensoren1) diefstal preventie: om dit te bereiken gebruiken we de GPS en GPRS kenmerken van LinkIt een bord met de ver
[Home Automation] Versie 2: Controleer de RFID-tag voor het gebruik van eenvoudige webserver.

[Home Automation] Versie 2: Controleer de RFID-tag voor het gebruik van eenvoudige webserver.

Deze inhoud is RFID-RC522, Wizwiki-W7500 + webserver.IDE is ARM mbed web compiler.De missie van dit project is Check de RFID-tag voor het gebruik van eenvoudige webserver.Stap 1: beschrijving-Je moet delen onder lijst1. RFID-RC5222. Wizwiki-W75003. d
Circuit Planning: Het maken van een Dual LED Circuit schicht voort Protoboard met 555 Timer

Circuit Planning: Het maken van een Dual LED Circuit schicht voort Protoboard met 555 Timer

Het doel voor dit DIY-project is om u door alle stadia van ontwikkeling van circuit dat een bedrijf zou meestal doorlopen wanneer prototyping een product; niet alleen een eenvoudige "how-to".Dit omvat:Kaart brengen van de elektronicaOntwerpen va
Dual-natie stekkerdoos

Dual-natie stekkerdoos

alle frequente reizigers weten dat als u een vreemd land bezoekt, het is een goed idee om van tevoren weet wat voor soort sockets het land dat u bezoekt heeft, en wat voor soort adapter die u moeten zult bestellen tot plug-in of uw elektronische appa
Digitale frequentie Counter

Digitale frequentie Counter

Allereerst, als je van dit project, please vote voor me in de orkaan-Laser-competitie en de LED-wedstrijd!Heeft u ooit nodig om erachter te komen hoe snel iets is oscillerende? Voor dingen zoals hamster wielen en de oceaan golven is dit eenvoudig. U
Vaart opwaarts uw (papa's satelliet) Internet-verbinding met een draadloze Router Dual-Band

Vaart opwaarts uw (papa's satelliet) Internet-verbinding met een draadloze Router Dual-Band

Hallo. RaadpleegIk zal waarschijnlijk opgemaakt deze info op een persoonlijke blog binnenkort.Stap 1: Shop voor een draadloze Router Dual-Band Snelkoppeling: kopen van de Netgear WNDR3300 voor ongeveer $76 exclusief verzendkosten van buy.com. Ik vind
Kwartaal Wave Dual Band VHF/UHF Ham radioantenne

Kwartaal Wave Dual Band VHF/UHF Ham radioantenne

A eenvoudige & goedkope Dual band-antenne bespaart u met twee verschillende antennes voor UHF en VHFStap 1: Stap 1 Zal u koper of messing staaf lassen op gesneden3 x 19.5" lengte, een beetje langer, b.v. 20" is OK als u een SWR-meter hebt en
Hoe te bouwen van uw PC voor Media Center, webserver, bestanden delen

Hoe te bouwen van uw PC voor Media Center, webserver, bestanden delen

Dit leerprogramma tonen u hoe te bouwen van een PC voor mijn Mediacenter, webserver installeren, bestanden delen.Voor mij gebruik ik het maken van een mediacenter.Wat heb je nodig? :Mini of mid towerMoeder van bestuurProcessorRAMVoor mijn gebruik hoe
Arduino stoplicht webserver

Arduino stoplicht webserver

op de plaats die ik werk, we xymon gebruiken om te controleren van onze servers. Alle services gecontroleerd zijn belangrijk, maar we wilden een aparte indicator wordt weergegeven eenvoudig de algehele gezondheid van de meest kritieke systemen. Boven
Goedkope Home Automation met behulp van draadloze Outlet Modules

Goedkope Home Automation met behulp van draadloze Outlet Modules

het is die tijd van het jaar weer, wanneer de winkels vol van kerstversiering en accessoires zijn.  Kerst kan maanden weg nog, maar nooit onderschatting de kracht van het hacken van seizoensgebonden vakantie accessoires, één accessoire in het bijzond
Raspberry Pi - webserver / draadloos toegangspunt (WAP)

Raspberry Pi - webserver / draadloos toegangspunt (WAP)

Wat je nodig hebtRaspberry Pi model B + (of B) met stroomvoorzieningEthernet-kabelWiFi-adapterSD-kaart 4GB + met RaspbianVoorbereidingDeze tutorial volledig wordt verondersteld uw Pi al ingesteld en klaar om te gaan. Als het niet klaar/bereid is, gaa
Arduino Home Automation Outlet vak

Arduino Home Automation Outlet vak

HAAR GEDAAN! BEKIJK DE VIDEO IN DE LAATSTE STAP!We moeten dus in mijn appartement een geschakelde stopcontact hebben zodat kunt u een licht op zodra u het appartement. Ik heb niet kunnen vinden van genoemde outlet. Dus ik dacht dat ik zou eindelijk e
Ciphone M5000 Tri Band Dual SIM TV mobiele telefoon

Ciphone M5000 Tri Band Dual SIM TV mobiele telefoon

http://www.papayaone.com/ciphone-m5000-tri-band-dual-sim-tv-cell-phone-p-1827.htmlWholesale Ciphone M5000 Tri Band Dual SIM TV Cell PhoneDe Fashion Ciphone ondersteunen schudden en de controle van de titel, Gravity Sensor, Dual SIM dubbele stand-by,
DIY WiFi Outlet (HariFun #135)

DIY WiFi Outlet (HariFun #135)

In dit instructable, ik vindt u langs op mijn reis van de bouw van deze WiFi-Outlet.Stap 1: onderdelenHet laatste vak zal bevatten:ESP8266 (elke versie zal doen)5V relais ModuleAMS1117 Lage Drop-Out Regulator1K Ohm weerstandDubbelzijdig OutletInbouwm