Kā izveidot kontroles ķēdi ar regulējamu darba laiku, izmantojot Wi-Fi

50 Greatest Gospel Hymns of all Time (Jūnijs 2019).

$config[ads_text] not found
Anonim

Kā izveidot kontroles ķēdi ar regulējamu darba laiku, izmantojot Wi-Fi


Šajā rakstā jūs uzzināsit, kā izveidot sistēmu, kas var ieslēgt un izslēgt DC uzlādes, izmantojot mobilo lietojumprogrammu. Jūs arī uzzināsiet, kā veikt šo uzdevumu, veicot tūlītējus pasākumus vai iepriekš iestatītus taimerus, lai ieslēgtu un izslēgtu kravas.

projekta pārskats

Jūs varat ieviest šo sistēmu vidēs, kur jums ir jānosaka jūsu DC spriegums konkrētam laikam. Tas ļaus jums izmantot mūsu Android lietojumprogrammu bez aparatūras saskarnes, tastatūras un LCD ekrāna.

Pārskats par visu projektu.

Daļas saraksts

DaļaQTY
Arduino UNO vai jebkura saderīga plate1
ESP8266 Wi-Fi modulis1
USB TTL pārveidotāja kabelis (pēc izvēles)1
Relejs SPDT 12V2
BC337 NPN BJT2
BS170 MOSFET N kanāls1
1K ohm rezistors2
10K ohm pretestība2
1N4007 diode2
Skrūvju spailes2
LM317 regulējams sprieguma regulators1
0.1uF kondensators2
Virsraksti, sieviešu un vīriešu-
Blank PCB board2

ESP8266 Breakout padomes iestatīšana

ESP8266 ir zemu izmaksu SoC mikroshēma ar iebūvētu mikrokontrolleru un pilnu TCP / IP protokolu kaudzi, kas nozīmē, ka tā var tieši piekļūt jūsu Wi-Fi tīklam.

Tā kā šai mikroshēmai ir savs MCU, jūs varat ievietot savā lietojumprogrammas kodā vai arī izmantot moduli tāpat kā Wi-Fi pārraides uztvērēju, piemēram, to, ko mēs plānojam darīt šajā projektā. Efektīvāk būs izmantot to pašu moduli kā uztvērējs un kontrolleris, taču tikai mācību nolūkos mēs sadarbosimies ar moduli, izmantojot Arduino.

ESP8266 mikroshēma tiek piegādāta dažādos moduļos. Mēs izmantosim ESP-01 moduli. Protams, jūs varat izmantot jebkuru citu moduli.

Pirmkārt, jums jāzina, ka modulis darbojas ar 3.3 V, un Ardino loģikas augstajam spriegumam jābūt vienādam, lai novērstu moduļa bojājumus. Tam nepieciešams sprieguma līmeņa pārveidotājs starp Arduino (kas darbojas uz 5V) un moduli. Labā ziņa ir tā, ka šis pārveidotājs būs vajadzīgs tikai ar Arduino nodošanas spraudņiem, jo ​​saņemšanas spraudnis parasti atzīst 3.3V loģiskos signālus no ESP8266

Viens no vienkāršākajiem veidiem, kā veikt šo reklāmguvumu, ir Sparkfun dizaina izmantošana: jūs varat pasūtīt gatavu moduli.

5V līdz 3.3V līmeņa pārveidotājs

Sekojošais attēls parāda mūsu ESP8266 pinout:

Attēlu avots: ESP8266 WiFi moduļa īsa vadīšanas rokasgrāmata

PIN Funkcija
UTXDUART datu pārraide
URXDUART datu saņemšana: ievadam jābūt 3.3V saderīgam
CH_PDIzejas ieslēgšana: zema ieeja ļauj mikroshēmai uz leju, augsta ieejas jauda; Normālai darbībai pieskarieties augsts vai modulis nedarbosies.
GPIO0Pie boot: jābūt lielam, lai ievadītu zibspuldzi vai normālu boot; zems ievada īpašus sāknēšanas režīmus.
GPIO2Pie boot: Low rada bootloader, lai ievadītu flash augšupielādes režīmā; augsta izraisa normālu boot.
RSTAtiestatīt; aktīvs zems
GNDZeme
VCCJauda / 3.3V

Es izmantoju LM317, regulējamu izejas sprieguma lineāro regulatoru ar līdz 1, 5 A izejas strāvu, lai nodrošinātu piemērotu 3.3 V barošanas avotu modulim.

Piezīme : nelietojiet Arduino 3.3V spraudni, kamēr Arduino 3.3V sprieguma regulators nevar sūtīt pieprasīto strāvu modulim, jo ​​īpaši maksimālajam enerģijas patēriņam raidīšanas laikā.

ESP8266 izkliedes plāksnes diagramma

Logic līmeņa pārveidotājam es izmantoju BS170 (nevis BSS138); abi strādā labi.

ESP8266 izlaides dēlis

Tagad jūs varat savienot moduli ar USB-TTL pārveidotāja kabeli un izmēģināt moduli. Lai iegūtu sīkāku informāciju, es iesaku lasīt dažus starteru ceļvežus, piemēram, ESP8266 WiFi moduļa ātro palaišanas pamācību.

USB-TTL pārveidotāja kabelis

Relay Breakout padomes iestatīšana

Releja izlādes plāksnes diagramma

Es izmantoju BC337 NPN BJT, lai kontrolētu releja spoli ar 1KOm bāzes rezistoru. Es arī izmantoju 1n4007 diode kā aizsardzību no spoles atpakaļgaitas sprieguma.

Es izvēlējos padarīt normāli slēgtu (NC) savienojumu ar zemi. Ja man ir normāls stāvoklis, tad, ja vēlaties, varat mainīt savienojumu.

Releja izslēgšanas panelis (augšējais skats)

Releja izslēgšanas panelis (apakšējais skats)

Arduino kodekss

Tagad mums ir problēma. ESP8266 izmanto UART kā interfeisu AT komandām, un Arduino UNO (kas izmanto Atmega328) ir tikai viens UART ports. Šī viena osta jau ir savienota ar mūsu USB-TTL tiltu, arī ar 0 un 1 tapu.

Kā risinājumu, jūs varat izmantot emulatoru UART portu citam digitālajam kontaktam Arduino, izmantojot AltSoftSerial vai SoftwareSerial bibliotēkas. Tas ļaus jums joprojām ir aparatūras UART ports kontu atkļūdošanai un drukāšanai, bet programmatūras portu paredzēts sazināties ar moduli.

Daudzi cilvēki (ieskaitot mani) ziņoja par neveiksmēm ar programmatūras sērijas ierīci, kas izmanto augstas bodu likmes, piemēram, tā, kuru izmantosim ar esp8266, 115200 bodu. Var teikt, ka jums būs 50% bojāti saņemtie dati no moduļa, ja izmantojāt programmatūras seriālo versiju un gandrīz 100% pareizos pārsūtītos datus no Arduino uz moduli. Es saņēmu šos rezultātus pēc sniffing ap RX un TX līnijām.

Kā risinājumu, es pievienoju dažus "definēt" paziņojumus kodā, lai padarītu lietas vieglāk izvēlēties no programmatūras vai aparatūras porta. Ņemiet vērā, ka nevarat izmantot to pašu portu, lai varētu atkļūdošanu un sazināties ar moduli, tāpēc jums ir jāizvēlas viens no tiem.

 //uncomment Serial.*** if you want to use HW serial port (PIN 0, 1) //uncomment esp8266.*** if you want to use SW serial port (PIN 2, 3) #define esp8266_Available() Serial.available() //esp8266.available() #define esp8266_Find(ARG) Serial.find(ARG) //esp8266.find(ARG) #define esp8266_Read() Serial.read() //esp8266.read() #define esp8266_Write(ARG1, ARG2) Serial.write(ARG1, ARG2) //esp8266.write(ARG1, ARG2) #define esp8266_Print(ARG) Serial.print(ARG) //esp8266.print(ARG) 

Kodā jūs atradīsit daļu, kas izveido moduli, lai izveidotu savienojumu ar maršrutētāju.

 sendCommand("AT+RST\r\n", 2000, DEBUG); // reset module sendCommand("AT+CWMODE=1\r\n", 1000, DEBUG); // configure as access point sendCommand("AT+CWJAP=\"tur\", \"341983#tur\"\r\n", 3000, DEBUG); //**** CHANGE SSID and PASSWORD ACCORDING TO YOUR NETWORK ******// delay(10000); sendCommand("AT+CIFSR\r\n", 1000, DEBUG); // get ip address sendCommand("AT+CIPMUX=1\r\n", 1000, DEBUG); // configure for multiple connections sendCommand("AT+CIPSERVER=1, 1337\r\n", 1000, DEBUG); // turn on server on port 1337 

Sketch cilpa gaida komandu, kas iet pa Wi-Fi savienojumu. Pašlaik atbalstītās komandas ir:

  • "kon", lai reaģētu uz rezultātiem, zemu vai augstu.
  • 'on =' pagrieziet atbilstošo tapu uz.
  • 'of =' pagrieziet attiecīgo tapu.
  • 'Tm = n / fS' ir ieslēgts (n) / izslēgts (f) atbilstoša tapa taimeris.

Visas iepriekšējās komandas ir atzītas atbildes.

Piezīmes:

  • Dažas šīs skices daļas pamatā ir AllAboutEE apmācība.
  • Ja izmantojat moduļus ar veco SDK, jums var būt bugs, piemēram, es. Vienīgais risinājums šajā gadījumā ir atjaunināt jūsu programmaparatūru līdz jaunākajai versijai. Pārbaudiet šo AAC rakstu, lai palīdzētu atjaunināt programmaparatūru. Es modernizēju manu programmaparatūru no 1.3 versijas līdz 1.5.4.

Lejupielādes kods

Android lietojumprogramma

Lai kontrolētu visus iepriekšminētos aparatūras komponentus, mēs izmantosim vienkāršu Android lietojumprogrammu. Šis pieteikums ļaus mums tieši vai pēc konkrēta laika perioda ieslēgt vai izslēgt izvadi.

Lejupielādes kods

Piezīme: šim lietojumprogrammai ir nepieciešama operētājsistēma Android 4.0 (IceCreamSandwich) un jaunāka versija.

  • Vispirms jums jāzina sava moduļa IP adrese. Ja jūs izmantojāt programmatūras seriālo portu, IP tiks drukāts uz konsole, ja izmantojat aparatūras portu, jums jāizmanto seriālais kabelis, lai šautu uz RX, TX līnijām un redzētu IP adresi. Jums būs jāzina ostas numurs, kā jūs to ievietojat skicē. Pēc tam nospiediet "connect", lai iegūtu visu trīs ieejas statusu. Jums būs jāpārliecinās, ka Wi-Fi ir ieslēgts, un esat izveidojis savienojumu ar savu vietējo tīklu.
  • Tagad nospiediet jebkuru slēdzi, kuru vēlaties ieslēgt / izslēgt. Ikreiz, kad vēlaties, varat noklikšķināt uz "atsvaidzināt", lai atsvaidzinātu visu rezultātu statusu.
  • Cilnē "Taimeri" varat iestatīt kādu no šiem trim rezultātiem, lai ieslēgtu / izslēgtu pēc noteiktā laika perioda (no 0 līdz 24 stundām).
  • Pēc jebkura procesa jūs saņemsit apstiprinājuma ziņojumu, kurā būs norādīts, vai process ir veiksmīgi pabeigts vai ja jums ir kļūda.