Stap 4: Een andere truc – rijden een relais en het lezen van een drukknop met behulp van GPIO0 / GPIO2
Hier is een andere manier voor het configureren van de pinnen. Opmerking: Deze truc werkt alleen als u een Relais module met een geïsoleerde inbreng (N1 en N1-com). Vanwege deze beperking en de complexiteit van de ondersteunende code is het vorige voorbeeld, met behulp van RX als input, beter.
Met behulp van ESP8266 GPIO0/GPIO2/GPIO15 pinnen heeft reeds het gebruik van GPIO0/GPIO2 samen om een extra ingang. Hier is dat voorbeeld zal worden uitgebreid tot het GPIO0 als een stuurprogramma relaisuitgang en GPIO0/GPIO2 gebruiken als input.
Hier is het schema als een PDF-bestand.
Hier GPIO0 wordt gebruikt als een vermogen om te rijden het Relais en GPIO0/GPIO2 wordt gebruikt als input voor het lezen van de kortstondige drukknop die wordt gebruikt als een handbediende keuzehefboom om te schakelen de relais in- en uitschakelen, naast de afstandsbediening via de WiFi-verbinding. De kortstondige push-knop wordt ook gebruikt om de config-modus als het druk is, wanneer de macht wordt toegepast.
De truc hier is om dit alles terwijl nog GPIO0 en GPIO2 hoog wanneer de ESP8266 module wordt geïnitialiseerd.
De pull-up weerstanden, R1 en R3, de noodzakelijke hoge voorzien in deze twee pinnen, maar hebt om ervoor te zorgen dat elke extra circuits gekoppeld aan GPIO0 en GPIO2 niet niet pinnen laag overhalen. De optisch geïsoleerd estafette is aangesloten tussen + 3,3 v en GPIO0. Dit houdt GPIO0 hoog op opstarten maar GPIO0 naar een uitgang worden gemaakt na het opstarten, en de estafette input voor het bedienen van de estafette op de grond staat. Het niet van belang als de kortstondige drukknop wordt bediend terwijl de module wordt geïnitialiseerd, zoals dat enkel GPIO0 met GPIO2 verbindt en verbinden beide aan hun pullup weerstanden.
Opsporen van Config-modus
Met behulp van de ESP8266 als een tijdelijke toegangspunt kunt configureren via een web-pagina zoals hier beschreven. Onderdeel van dat proces is het gebruik van een drukknop of kortsluiting koppeling, op power-up om aan te geven de software dat u wilt invoeren config-modus.
Zodra de ESP8266 module is geïnitialiseerd, loopt de Setup -code. In deze code, detecteren dat als de kortstondige push-knop wordt gedrukt, je moet niet maken GPIO0 laag te voorzien van een GND tot drukknop en controleer vervolgens de GPIO2 ingang om te zien of het laag. De invloed van een kant van deze controle is dat het Relais altijd zal worden geëxploiteerd wanneer de eenheid in config-modus wordt gezet. Zodra u ziet het Relais werken kunt kunt u de drukknop, vrijgeven omdat haar inbreng zal zijn opgetreden tegen die tijd. Hier is een steekproefcode om dit te doen in de Setup
boolean configMode = false; // not in config mode normally void setup() { pinMode(0, OUTPUT); digitalWrite(0, LOW); // make GPIO0 output low // check GPIO2 input to see if push button pressed connecting it to GPIO0 configMode = (digitalRead(2) == LOW); if (configMode) { // start AP and get ready to serve config web page // leave relay on to indicate in config mode //...... } else { // normal usage // make GPIO0 HIGH to turn off the relay digitalWrite(0, HIGH); //..... } // rest of setup() }
Opsporen van de drukknop handbediende keuzehefboom
De vorige sectie gedekt detecteren wanneer de push-knop werd ingedrukt op de macht tot config-modus inschakelen. Wij willen ook dat push-knop gebruiken als een handbediende keuzehefboom voor het draaien van de estafette in- en uitschakelen naast zijnde kundig voor controle van de estafette via de WiFi-verbinding.
De WiFi controle van het Relais is hier niet onder, maar kan gemakkelijk worden gedaan met behulp van pfodApp. Zie OLIMEX Menu Generator voor het genereren van de code van de Arduino met pfodDesigner voor de ESP8266 modules.
In deze sectie zullen behandelen hoe te detecteren wanneer de drukknop is geduwd, die aangeeft dat de gebruiker wil de estafette in-/ uitschakelen, d.w.z. zwenking op vandoor is het op of zet hem op als het is uitgeschakeld. Het schema is hetzelfde als hierboven, alle trucs worden in de code. Er zijn twee case te overwegen:-
- Het Relais is OFF en de gebruiker wenst in te schakelen met de drukknop,
- Het Relais is ingeschakeld en de gebruiker wil uitschakelen met behulp van de drukknop.
Het Relais is OFF en de gebruiker wenst in te schakelen met de drukknop.
In dit geval is de output van de GPIO0 hoog. GPIO0 kan wel dat een bijdrage in dit geval als de pull up weerstand R1 de estafette zorgt wordt niet ingeschakeld. Dat is de truc. In this case maken GPIO0 een ingang en GPIO2 uitgang laag en dan wanneer de gebruiker duw op de knop drukt, zal er twee dingen gebeuren: - a) het Relais wordt ingeschakeld als gevolg van de grond geleverd door GPIO2 via de drukknop en b) de Input-GPIO0 laag zal gaan. De code controleert de status van de Input-GPIO0 en wanneer het gaat laag kent de code het gebruik de drukknop heeft ingedrukt en wil de estafette op. De code maakt GPIO0 dan een DIEPTEPUNT van de Output te houden van de estafette op wanneer de knop wordt losgelaten.
Het Relais is ingeschakeld en de gebruiker wil uitschakelen met behulp van de drukknop.
In dit geval is naar aanleiding van het bovenstaande geval, GPIO0 een Output-laag houden van de relay-ON. Nu voor dit geval maak GPIO2 een Input (trok door R3) en vervolgens wanneer de gebruiker op de knop de Input-GPIO2 wordt getrokken laag door de lage Output op GPIO0. Wanneer het gebruik releases de drukknop de code de lage tot hoge overgang detecteren en vervolgens maakt GPIO0 een Input, die met de estafette als gevolg van de aantrekkingskracht van weerstand, R1, releases en maakt GPIO2 een lage Output instellen voor het geval ik) hierboven.
Één meer truc. Case ii) hebben we nodig GPIO2 als een Input die detecteert een lage tot hoge overgang het Relais om uit te schakelen. Maar als we het maken van GPIO2 en input aan het einde van de zaak ik) dan zullen we een lage tot hoge overgang zodra de gebruiker de drukknop ze gewoon ingedrukt om te schakelen de relais worden vrijgegeven. Om te voorkomen dat het Relais dan weer direct uit te draaien, de eerste lage tot hoge overgang na het draaien van de estafette zullen genegeerd worden, omdat het alleen de gebruiker die het vrijgeven van de drukknop is ze ingedrukt om te schakelen de Relais.
Monster loop Code voor Relay handleiding overmatige rit
In deze code ben ik negeer schakelaar ontdendering voor eenvoud. De ingangen moeten worden debounced in een echte toepassing.
De voorbeeldcode is hier, ESP8266_01pinMagic_1.ino
Nogmaals dit laat de TX / RX beschikbaar voor seriële debuggen of gebruik als andere I/O pinnen
Conclusie
Deze pagina laat zien hoe je het meeste uit de beperkte pinnen beschikbaar op de ESP8266-01. Met behulp van GPIO0 / GPIO2 als een I2C-bus geeft de grootste uitbreiding, maar als u project geen I2C gebruikt, u kunt nog steeds rijden een relais en een drukknop invoeren met behulp van GPIO0 detecteren / GPIO2. In of geval TX / RX zijn ook beschikbaar voor het debuggen van de seriële of als u debug print verklaringen via de WiFi-verbinding verzendt, deze pinnen zijn beschikbaar voor algemene I/O evenals...