Inhoudsopgave:

Een computer op afstand afsluiten of opnieuw opstarten met een ESP8266-apparaat - Ajarnpa
Een computer op afstand afsluiten of opnieuw opstarten met een ESP8266-apparaat - Ajarnpa

Video: Een computer op afstand afsluiten of opnieuw opstarten met een ESP8266-apparaat - Ajarnpa

Video: Een computer op afstand afsluiten of opnieuw opstarten met een ESP8266-apparaat - Ajarnpa
Video: Internet- en wifi-problemen oplossen | Monteur Jordi helpt 2024, Juli-
Anonim
Image
Image

Voor alle duidelijkheid: we sluiten JOUW computer af, niet de computer van iemand anders.

Het verhaal gaat als volgt:

Een vriend van mij op Facebook stuurde me een bericht en zei dat hij een dozijn computers heeft waarop een hoop wiskunde wordt uitgevoerd, maar elke ochtend om 3 uur 's nachts sluiten ze. Aangezien de computers op 30 minuten afstand staan, is het enorm vervelend om twee steden over de grens te rijden (we wonen in South Dakota) om de computers aan en uit te zetten. Hij vroeg of ik een IoT-apparaat voor hem kon bouwen waarmee hij de aanstootgevende computer opnieuw kon opstarten vanuit het comfort van zijn knusse bed?

Om nooit een uitdaging te missen, stemde ik ermee in om iets voor hem samen te stellen. Dit is dat project.

Met behulp van twee geregistreerde bit-shift, een ESP8266 ESP01, een handvol LED's en enkele zelfgemaakte opto-isolatoren, kost het hele project ongeveer $ 5 als je de onderdelen uit China op eBay koopt. Misschien $ 20 van Amazon.

Dit is een vrij complexe build met veel fijn soldeerwerk. Mijn fouten en opnieuw solderen niet meegerekend, kostte het me het grootste deel van 20 uur om te maken, maar het bleek geweldig en werkte perfect.

Laten we beginnen.

Stap 1: Prototypebord

Prototypebord
Prototypebord
Prototypebord
Prototypebord

Start alle projecten altijd met een prototype breadboard. Het is de beste manier om te bepalen of u alle componenten hebt en werkt zoals verwacht. Dit project is een beetje ingewikkeld, dus ik raad ten zeerste aan om het op een breadboard te bouwen voordat je verder gaat.

De onderdelen die je nodig hebt zijn:

  • Eén ESP8266 ESP01 (hoewel elk ESP8266-apparaat zou werken)
  • Twee 8-bit schuifregisters, ik gebruikte de 74HC595N
  • 16 LED's, ik gebruikte witte LED's met strohoed die werken op 3,3 V. Als u andere gebruikt, heeft u mogelijk weerstanden nodig.
  • Drie 3k3-ohmpulldown-weerstanden
  • Jumperdraden & een breadboard

U moet ook ten minste één opto-isolator bouwen. Ik gebruikte zwarte krimpkous, een heldere witte LED, een weerstand van 220 ohm en een fotoweerstand. Soldeer de 220-ohm weerstand aan de kathode van de LED en verzegel vervolgens de LED en de fotoweerstand in de krimpkous tegenover elkaar. Maar daar komen we later op terug.

Volg het bedradingsschema in de volgende stap. De bedrading is vrij eenvoudig.

Omdat de ESP8266 op 3,3 V werkt, moet u ervoor zorgen dat u deze op de juiste manier van stroom voorziet

Stap 2: Schema met Will-CAD

Schema met behulp van Will-CAD
Schema met behulp van Will-CAD

Het schema is vrij eenvoudig. We volgen de standaard bekabeling van een 8-bits schuifregister. Omdat ik twee 8-bits schuifregisters gebruik, moeten ze aan elkaar worden geketend op hun 'klok'- en 'latch'-pinnen.

Omdat de ESP01 slechts twee GPIO-pinnen heeft, moeten we de TX & RX opnieuw gebruiken als uitgangen, wat prima werkt voor onze doeleinden. Je zou een ESP-12 of een andere versie met meer dan twee GPIO-pinnen kunnen gebruiken als je meer controle wilt. Maar dat voegt nog eens $ 2 toe aan de kosten van het project - wat gewoon gekke praat is.

We moeten onze 8-bits schuifregisters en ESP01-pinnen hoog houden tijdens het opstarten, zodat ze geen rare dingen doen of in de programmeermodus gaan. Ik gebruikte drie 3k3-weerstanden, grotere of kleinere waarden zouden ook werken. Deze waarde is afgeleid van de handleidingen over het gebruik van alternatieve pinnen op ESP01.

ESP01 (ESP8266)

  • TX klokpen 3k3 pullup
  • RX borgpen 3k3 pullup
  • 00 seriële gegevens 3k3 pullup
  • 02 drijvend

8-bits schuifregister (74HC595H)

  • VCC 3.3V
  • OE 3.3V (dit is de activeringspin)
  • GND GND
  • CLR GND (dit zorgt ervoor dat de doorzichtige pin niet wordt gewist)
  • En de LED's, die gaan naar de grond.

Stap 3: ESP8266-code

ESP8266-code
ESP8266-code

De ESP8266-code is vrij eenvoudig. Helaas is de editor in Instructables behoorlijk nutteloos, dus je wilt de code rechtstreeks van Github krijgen.

"racks-reboot" project:

github.com/bluemonkeydev/arduino-projects/…

De klasse "SensorBase" is hier beschikbaar. Het is vereist als je mijn code wilt "gebruiken":

github.com/bluemonkeydev/arduino-projects/…

Er zijn een paar dingen om op te merken. De code is redelijk goed gedocumenteerd.

  1. Ik ben een erg luie ontwikkelaar, dus ik heb alle herbruikbare ESP8266-code in een klasse met de naam "SensorBase" geplaatst. Je kunt dat ook op Github vinden, link hierboven.
  2. U moet de server, gebruikersnaam, wachtwoord en poort van uw MQTT-makelaar invoeren. Die zijn iets verderop te vinden wanneer we de CloudMQTT-service maken.
  3. U hoeft de syntaxisindeling van mijn onderwerp NIET te volgen. Ik zou echter aanraden om het te volgen.
  4. Er is niets slims aan deze code. Het is erg pragmatisch.

Stap 4: Perfboard-indeling

Perfboard-indeling
Perfboard-indeling

Dit project zal worden geïnstalleerd in een mini-datacenter, dus ik besloot om gewoon perf-board te gebruiken voor het definitieve ontwerp. Perfboard werkt geweldig voor dit soort projecten en is eenvoudig te indelen met behulp van een stuk aangepast ruitjespapier. Hier ziet u mijn lay-out. Je kunt er natuurlijk voor kiezen om het anders te doen.

Mijn project had twee 8-bits schuifregisters nodig, dus ik begon met hun positionering in het midden. Ik wist dat mijn connectoren naar opto-isolatoren voorlopig simpele vrouwelijke headers zouden zijn, ook al is dat geen ideale oplossing.

Ik ben dol op LED's, en dit moest een LED hebben voor elk opto-isolatorcircuit. Ik wist dat de testfase oneindig veel gemakkelijker zou zijn als ik directe feedback rechtstreeks op het bord kon krijgen, maar ik wist ook dat die LED's enorme pijn zouden veroorzaken bij het solderen. En dat waren ze. Ik had niets kleiner dan 5 mm LED's, dus ik moest ze spreiden. Mijn uiteindelijke ontwerp maakte een zigzagpatroon van de kathoden omdat ik de anodes niet over de aardedraden wilde laten lopen. Dit bleek een goed ontwerp te zijn. De LED-draden komen samen boven de 8-bits schuifregisters en lopen voor de eenvoud op de bovenkant van het bord met afgeschermde draden.

Voor stroom wilde ik het van een oude USB-kabel laten lopen om rechtstreeks vanaf een van de computers te worden gevoed. Dit werkt prima omdat de USB-poorten meestal worden gevoed, zelfs als de computer is uitgeschakeld. Ik gebruikte een LM317 lineaire spanningsregelaar om het vermogen te verminderen tot 3,3V. Een 3.3V-regelaar zou ook hebben gewerkt, maar die had ik niet.

Om te voorkomen dat er te veel draden elkaar kruisen, heb ik een paar draden aan de bovenzijde van het perfboard gelegd, wat ik probeer te vermijden. Houd er rekening mee dat de doorgaande gaten geleidend zijn, dus gebruik afgeschermde draden om kortsluiting te voorkomen. Die verbindingen die aan de bovenkant van het bord plaatsvinden, worden in mijn diagram met stippellijnen weergegeven.

Stap 5: Gesoldeerd bord

Gesoldeerd bord
Gesoldeerd bord

Mijn laatste gesoldeerde bord is echt goed gelukt. Zoals verwacht hebben de LED's aan de bovenkant veel werk gekost om correct te worden gesoldeerd zonder kortsluiting. Nadat u de LED's en headers hebt gesoldeerd, gebruikt u uw multimeter om te bepalen of u kortsluiting heeft. Het is het beste om daar nu achter te komen.

Afgezien van de LED's, ging al het andere redelijk goed. Ik moest wel een paar verbindingen opnieuw maken, maar met sommige patiënten, wat debuggen en een beetje opnieuw solderen, zal alles goed werken.

Op deze foto kun je zien dat ik ook de opto-isolators heb aangesloten, waarvoor ik een 8-aderige CAT-5-kabel heb gebruikt. De reden is dat het super goedkoop is, gemakkelijk te splitsen en goed wordt aangegeven - meer over die opto-isolatoren in de volgende stap.

Stap 6: Opto-isolatoren maken

Opto-isolatoren maken
Opto-isolatoren maken

U hoeft natuurlijk niet uw eigen opto-isolatoren te maken. Veel commerciële versies zijn beschikbaar voor centen per stuk en zouden beter werken omdat ze de stroomkabels van de computer rechtstreeks zouden aandrijven zonder enige weerstand. Maar ik had geen opto-isolator, dus ik moest de mijne maken met een LED, weerstand en fotoresistor.

Nadat ik had bevestigd dat in een huls van zwarte krimpkous de "uit"-weerstand met minder dan mijn meter kon lezen en de "aan"-weerstand een paar duizend ohm was, deed ik een laatste test op een oud moederbord. Het werkte perfect voor mij. Ik vermoed dat sommige computers meer of minder gevoelig zijn, maar op de moederborden die ik heb getest, werkte deze configuratie prima.

U wilt een echt heldere witte LED gebruiken om het maximale licht in de fotoresistor te krijgen. Ik heb niet veel opties uitgeprobeerd, maar de helderwitte LED en een 220 ohm weerstand werken zeker goed.

Stap 7: CloudMQTT-installatie

CloudMQTT-configuratie
CloudMQTT-configuratie
CloudMQTT-configuratie
CloudMQTT-configuratie
CloudMQTT-configuratie
CloudMQTT-configuratie

Elke MQTT-service, of vergelijkbare IoT-service zoals Blynk, zou werken, maar ik kies ervoor om CloudMQTT te gebruiken voor dit project. Ik heb CloudeMQTT in het verleden voor veel projecten gebruikt en aangezien dit project aan een vriend zal worden overgedragen, is het logisch om een nieuw account aan te maken dat ook kan worden overgedragen.

Maak een CloudMQTT-account aan en maak vervolgens een nieuwe "instantie", kies de grootte "Cute Cat", aangezien we deze alleen gebruiken voor controle, geen logboekregistratie. CloudMQTT zal u voorzien van een servernaam, gebruikersnaam, wachtwoord en poortnummer. (Merk op dat het poortnummer niet de standaard MQTT-poort is). Breng al deze waarden over naar uw ESP8266-code op de overeenkomstige locaties, en zorg ervoor dat de zaak correct is. (serieus, kopieer/plak de waarden)

U kunt het "Websocket UI"-paneel op CloudMQTT gebruiken om de verbindingen van uw apparaat te zien, op de knop te drukken en, in het oneven scenario, dat u een foutmelding krijgt, een foutmelding.

U ZULT deze instellingen ook nodig hebben bij het configureren van de Android MQTT-client, dus noteer de waarden indien nodig. Hopelijk is je wachtwoord niet te ingewikkeld om in te typen op je telefoon. U kunt dat niet instellen in CloudMQTT.

Stap 8: MQTT Android-client

MQTT Android-client
MQTT Android-client
MQTT Android-client
MQTT Android-client
MQTT Android-client
MQTT Android-client
MQTT Android-client
MQTT Android-client

Elke Android (of iPhone) MQTT-client zou werken, maar ik hou van MQTT Dash. MQTT Dash is gebruiksvriendelijk, zeer responsief en heeft alle opties die je nodig hebt.

Eenmaal geïnstalleerd, stel een MQTT-server in, vul de server, poort, gebruikersnaam en wachtwoord in met de waarden van uw instantie, NIET uw aanmeldingsgegevens voor CloudMQTT. U kunt elke klantnaam gebruiken die u wilt.

Als je alles correct hebt getypt, zal het automatisch verbinding maken met je MQTT-server en je een leeg scherm tonen omdat je nog geen knoppen, tekst of berichten hebt ingesteld. Op het lege scherm ziet u een "+" in de rechterbovenhoek, klik erop en selecteer vervolgens "Selecteren/Knop". We voegen één "Select/Button" per computer toe, dus 8 of 16 of minder.

Als je een verbindingsfout hebt gekregen, heb je een van de waarden verkeerd. Ga terug en dubbelcheck

Elke computer gebruikt het onderwerp dat overeenkomt met de waarden die in uw code zijn opgegeven. Als je mijn conventies zou volgen, zouden ze "cluster/rack-01/computer/01" zijn. Het zou het beste zijn om de "aan" en "uit" waarden aan te passen aan onze code. Gebruik in plaats van " 0 " en " 1 " respectievelijk de waarden " on " en " off. Ik zou ook aanraden om QoS(1) te gebruiken, aangezien we een bevestiging van de server verwachten.

Nadat je er een hebt toegevoegd, kun je lang drukken en de "kloon"-optie gebruiken om een groep te maken en vervolgens hun naam en onderwerp wijzigen.

Makkelijk genoeg.

Stap 9: Uw ESP8266 op wifi krijgen

Uw ESP8266 op wifi krijgen
Uw ESP8266 op wifi krijgen

Met behulp van de ESP8266 Wifi Manager-module is het een fluitje van een cent om ons apparaat op wifi te krijgen. Als je mijn SensorBase-klasse hebt gebruikt, is deze al ingebouwd. Zo niet, volg dan de instructies op de Wifi Manager-pagina.

Wifi Manager zal tijdens het opstarten proberen verbinding te maken met uw SSID, wat niet kan omdat u het nooit uw SSID hebt verteld, dus het zal automatisch in de toegangspuntmodus (of AP-modus) gaan en een eenvoudige webpagina openen waarin om uw SSID wordt gevraagd & Wachtwoord. Verbind met uw telefoon of laptop het nieuw beschikbare draadloze netwerk met de SSID-naam "ESP_xxxxxx", waarbij de "xxxxxx" een willekeurige (niet echt willekeurige) reeks is. (Volledige instructies zijn te vinden op de Wifi Manager-pagina.)

Eenmaal verbonden, opent u uw webbrowser en wijst u deze naar 192.168.4.1, typt u uw SSID en wachtwoord in en klikt u op opslaan.

U bent nu op internet en uw IoT-apparaat heeft het "I"-gedeelte werkend!

Stap 10: definitieve verbinding en testen

Definitieve verbinding en testen
Definitieve verbinding en testen

Helemaal klaar.

Om alles aan te sluiten, zoekt u de kabel van de aan/uit-knop van uw computer waar deze het moederbord ontmoet. Je zou twee rijen headers moeten zien met een heleboel draden en connectoren. Meestal zijn ze vrij goed geëtiketteerd. Koppel uw schakelaar los en sluit de opto-isolator-stekker aan. Ik heb een paar "Dupont"-stekkers op de mijne geplaatst, zodat ze net als de stroomkabel zijn aangesloten. Polariteit aan dit uiteinde doet er niet toe, maar zorg ervoor dat je de polariteit van het andere uiteinde correct hebt - degene die naar je aangepaste bord gaat.

En het werkt perfect. Met behulp van de MQTT Dash-client (of een vergelijkbare tool) kunt u uw computers op afstand van stroom voorzien.

Druk op de overeenkomstige vinkje op uw app en zodra de app terug hoort van de MQTT-server met het bericht "uit", verandert de knop weer in niet-aangevinkt.

Dit draait al een paar weken zonder problemen. We merkten wel dat de tijdsduur om de knop laag te houden op de computers verlengd moest worden. We eindigden met 1 volle seconde. Deze waarde kan worden weergegeven als een instelbare waarde via de MQTT-server, of u kunt de waarde vast bedraden, afhankelijk van uw wens.

Succes, en laat me weten hoe de jouwe is bevallen.

Aanbevolen: