Inhoudsopgave:

Van zaklamp tot bewegingssensor met ESP8266 en MQTT - Ajarnpa
Van zaklamp tot bewegingssensor met ESP8266 en MQTT - Ajarnpa

Video: Van zaklamp tot bewegingssensor met ESP8266 en MQTT - Ajarnpa

Video: Van zaklamp tot bewegingssensor met ESP8266 en MQTT - Ajarnpa
Video: How to use DHT11 DHT22 with NodeMCU ESP8266 to read temperature over WiFi - IoT 2024, December
Anonim
Image
Image
LED's hebben stroom nodig om te worden beperkt
LED's hebben stroom nodig om te worden beperkt

In dit bericht zou ik onderstaande items presenteren:

  • LED's hebben een stroombegrenzing nodig
  • hoe maak je een zaklamp?
  • maak een lamp die wordt gevoed door de draagbare batterij en dim de LED's met ESP8266 via MQTT

De video is de samenvatting en een korte uitleg van hoe dit werkt,

Ik was van plan om een PIR-sensor toe te voegen, maar de tutorial wordt nogal lang, zodat de PIR-sensor in het tweede deel van dit onderwerp wordt gepresenteerd

Dus laten we beginnen.

Stap 1: LED's hebben stroom nodig om te worden beperkt

Voor beginners is dit raar als je bedenkt hoe je normaal gesproken een gloeilamp of tl-lamp aanzet. Geen zorgen, die led-lampen op de plank worden al geleverd met een AC-naar-DC-voedingsadapter en een begrenzingsstroom. Maar het zou leuk zijn om iets van de grond af te maken.

Een sleutel om een LED te laten draaien is een stroombegrenzingscircuit. Dit werkt als een klep voor de stroom, zodat zodra de spanning die op de LED wordt toegepast waardoor deze geleidend wordt, de stroom door de LED's niet groter kan zijn dan de stroom die door het circuit wordt geregeld. Het uitvallen van LED's is meestal het gevolg van oververhitting. Geen stroombegrenzingscircuit is een zekere manier om de LED's in een paar seconden op te branden. Trouwens, het bevestigen van de LED-chips, die op het aluminium frame komen, op een koellichaam verminderen de LED-chip en worden over het algemeen aanbevolen.

Ik krabde veel aan mijn hoofd toen ik dit rond 2015 leerde, en krabde nog steeds aan mijn hoofd (om verschillende redenen). Ik heb geleerd van deze tutorial en zijn duidelijke uitleg bespaart me wat craquelé.

De schakeling is bijgevoegd. De dikke lijnen geven de hoofdlaadroute aan en de dunnere lijnen geven het regelmechanisme aan om de stroom van de hoofdroute te regelen, die ongeveer 150 mA is. Wikipedia heeft een kort artikel en enkele referenties bijgevoegd. De stroombegrenzing kan worden gebouwd met een transistor door MOSFET te vervangen door transistors met gemiddelde stroombelasting, zoals BD135, BD139.

Stap 2: Maak een zaklamp

Maak een zaklamp
Maak een zaklamp
Maak een zaklamp
Maak een zaklamp
Maak een zaklamp
Maak een zaklamp
Maak een zaklamp
Maak een zaklamp

Onderdelen nodig:

  1. een N-kanaal MOSFET (IRF540N $ 1,62/10st, 30N06, $ 1,75/10st)
  2. een NPN-transistor (zoals S8085)
  3. 3.9 ohm - 2W weerstand, de stroom beperkt rond 0.6/3,9 = 153mA
  4. 100kR (1/4W) weerstand
  5. Een push-lock schakelaar
  6. Er is een LED van 0,5 W 8 mm, hier $ 3,18 / 100 stuks
  7. Een 18660 lithiumbatterij. Ik heb er een paar van een powerbank gered. Laptopbatterij (4, 6, 8 cellen) gemaakt van 18650 cellen, maar wees voorzichtig met dat spul.
  8. 1 boost tot 12V-kaart, zoals deze, $ 0,56
  9. 1 lithium-oplader zoals deze, $ 0,30

Het belangrijkste verschil met het bovenstaande circuit is het gebruik van een lithiumbatterij (18660) met boost-upboard in plaats van een mock-up 5V-voedingsadapter.

De laatste foto toont de laatste zaklamp en hij laadde op vanaf een micro-USB-bron (>1A).

Stap 3: Internet of Things met deze zaklamp?

Internet of Things met deze zaklamp?
Internet of Things met deze zaklamp?
Internet of Things met deze zaklamp?
Internet of Things met deze zaklamp?
Internet of Things met deze zaklamp?
Internet of Things met deze zaklamp?

Ik verdeel dit deel in drie stappen:

  • Bereid een abonnee voor (deze)
  • MQTT-server instellen (volgende stap)
  • en bereid een uitgever voor (de volgende)

Onderdelen:

Ten eerste, ja, ik gebruikte dat modewoord, ook wel IOT's genoemd, maar deze zou een goede combinatie kunnen zijn van het gebruik van het circuit in stap 2 met een ESP8266 en vervolgens de lichtintensiteit regelen met de MQTT-methode.

Onderdelen voor het circuit zijn identiek, behalve:

  1. Vervang 12V boost-up door MT3608 boost-up board, $ 1,92 / 5st, deze kan de spanning van een 18650-batterij (ongeveer 3,7 V) verhogen tot 28 V, genoeg om 8 LED's van stroom te voorzien (in plaats van 3).
  2. De un-push positie in de schakelaar is verbonden met de GPIO 1 of 2 in de ESP8266 voor PWM-signaal.
  3. ESP8266 01, $ 1,68 per stuk. Zoals deze
  4. AMS1117 3.3 V, een spanningsregelaar voor ESP8266, sommige condensatoren
  5. Een USB-module om ESP8266 te flashen, $ 0,78/pcs zoals deze

Trouwens. die links zijn voor het gemak.

Solderen en uploaden:

  • Soldeer onderdelen aan elkaar en gebruik de schema's hierboven. Sommige vooraf gemaakte 3.3-spanningscircuits kunnen u wat tijd besparen ($ 1,38 / 5 stuks zoals deze). Ik was in de war toen ik me de pin herinnerde bij het omdraaien van de printplaat en uiteindelijk voldeed aan een AMS1117-spanningsregelaar.
  • Volgende. Breng een kleine wijziging aan zoals in de derde foto om de GPIO 0 op GND te houden, tik snel op de RST-pin met GND-pin om de ESP8266 in Flash-modus te zetten.
  • Download de code hier van mijn GitHub en upload de code naar ESP 8266 met behulp van Arduino IDE.

Ik heb de regel gemarkeerd om het onderwerp weer te geven waarop de abonnee zich heeft geabonneerd. Elk bericht dat in dit onderwerp wordt geplaatst, wordt doorgegeven aan andere klanten (abonnees) op dit onderwerp. De EPS8266 in dit circuit zal luisteren naar het JSON-bericht dat in het onderwerp is gepost en eruit springen als er een wijziging is aangebracht in kanaal drie

* Er was eens, ik dacht dat ik een pull-down weerstand (100k) kon plaatsen om de Gate van MOSFET te aarden toen de ESP8266 niet werd gepresenteerd. Dit werkt in de afwezigheid van een ESP8266, maar met ESP8266 trekt de weerstand ook de GPIO0 of 2 naar GND, waardoor ze in een Flash-modus gaan of niet opstarten (wanneer GPIO2 LAAG is). U ziet een ononderbroken groen als dit gebeurt.

Stap 4: MQTT-server instellen

MQTT-server instellen
MQTT-server instellen
MQTT-server instellen
MQTT-server instellen
MQTT-server instellen
MQTT-server instellen
MQTT-server instellen
MQTT-server instellen

MQTT (Message Queuing Telemetry Transport) is een Message-protocol gebaseerd op de publish-subscribe-methode. Device hosting MQTT-bericht in en uit wordt de makelaar genoemd. Als een echte makelaar organiseert het de uitwisseling tussen uitgevers (verkopers) en abonnees (kopers). Geen geld verandert handen die. Hier zijn genoeg tutorials voor.

Hier is de samenvatting. Raspberry Pi is hiervoor het meest populaire apparaat. Installeer eerst MQTT door:

sudo apt-get install mosquitto mosquitto-clients

test of de MQTT-server werkt door twee terminals op Raspberry te openen, typ de eerste regel en de andere voor de volgende:

mosquitto_sub -h localhost -t "uwonderwerp"

mosquitto_pub -t "yourtopic" -h localost -m "zeg iets"

Je zou de "zeg iets" moeten zien verschijnen op de eerste terminal. Wala! Het werkt.

De "#" kan worden gebruikt om naar elk onderwerp te luisteren, vervang "yourtopic" door "#"

Nu u niet wilt dat iemand uw MQTT-server kan publiceren of erop kan abonneren, moet u een wachtwoord instellen door:

cd ~

mosquitto_passwrd -c pwfile mqtt_user

mqtt_user kunnen andere gebruikersnamen zijn die je leuk vindt, voer het wachtwoord twee keer in en werk het.conf-bestand bij door:

sudo nano /etc/mosquitto/mosquitto.conf

voegt deze twee regels toe:

allow_anonymous false

wachtwoord_bestand /home/pi/pwbestand

herstart dan de mug door:

sudo systemctl herstart mug

maak een test door de naam op te nemen met een wachtwoord zoals:

mosquitto_sub -h localhost -t "yourtopic" -u "mqtt_user" -P "123456"

mosquitto_pub -h localhost -t "yourtopic" -u "mqtt_user" -P "123456" -m "is dit beveiligd?"

Ook als de MQTT de verbinding weigert, probeer dit dan om de MQTT-service op de achtergrond van het Linux-systeem te plaatsen door:

mug -d

Ik vond deze referenties goed om te bekijken. Ik heb vandaag iets van deze twee geleerd.

  1. Adafruit:
  2. Stees-internet-guide.com

Stap 5: Een uitgever voorbereiden

Een uitgever voorbereiden
Een uitgever voorbereiden
Een uitgever voorbereiden
Een uitgever voorbereiden
Een uitgever voorbereiden
Een uitgever voorbereiden
Een uitgever voorbereiden
Een uitgever voorbereiden

Voor deze maak ik een eenvoudig dashboard om het bericht naar de MQTT-server te pushen. In de stand-modus toont het LCD-scherm de klok.

Onderdelen:

  1. SSD1306 Schermweergave, $ 2,41 per stuk
  2. EPS8266 WEMOS D1 Mini, elk $ 2,53
  3. een potentiometer
  4. Een 4-pins schuifschakelaar.
  5. twee 3 mm LED's,
  6. sommige weerstanden

Solderen:

Hier is het schema van deze terminal:

Upload de code:

De branded WEMOS ESP8266 is prettig om mee te werken. Je hebt alleen een micro-USB nodig, druk op de upload-knop op Arduino IDE flash de chip. De code is hier (GitHub):

Om een bericht te publiceren, drukt u op de schakelaar om de groene led aan (en rood uit) te zetten, schuift u vervolgens de pin omhoog en past u deze aan, en tenslotte drukt u nogmaals op de knop om het bericht naar de MQTT-server te duwen. Het dashboard zou een JSON-bericht kunnen publiceren naar 4 kanalen.

Bekijk de markering op de code (screenshot). Dat is het onderwerp waar het dashboard de boodschap naartoe stuurt, en onze LED's willen heel graag iets nieuws van het JSON-bericht zien

Daar gaat het om. Ik hoop dat de tutorial nuttig is.

Aanbevolen: