Სარჩევი:

დაბალი ღირებულების ავტომატიზაცია ESP01– ით: 19 ნაბიჯი
დაბალი ღირებულების ავტომატიზაცია ESP01– ით: 19 ნაბიჯი

ვიდეო: დაბალი ღირებულების ავტომატიზაცია ESP01– ით: 19 ნაბიჯი

ვიდეო: დაბალი ღირებულების ავტომატიზაცია ESP01– ით: 19 ნაბიჯი
ვიდეო: დაბალბიუჯეტიანი ავიაკომპანიები გლობალურად იზრდება 2024, ნოემბერი
Anonim
Image
Image
MCP23016
MCP23016

დღეს ჩვენ განვიხილავთ ავტომატიზაციას ESP01 გამოყენებით 16 რელესთან ერთად. ეს არის სუპერ იაფი დიზაინის მოდელი, სადაც შეგიძლიათ გაამრავლოთ მოდულები და მიიღოთ 128 -მდე რელე, რადგან ამ მიკროკონტროლერში შესაძლებელია რვა პორტის გაფართოების განთავსება.

ჩვენს წრეში გექნებათ პროგრამა სმარტფონზე, რომელიც კომუნიკაციას უწევს ESP01– ს. მას ექნება გაფართოება 16 პორტით, თითოეული უკავშირდება რელეს. ჩვენ ასევე გვაქვს 3v3 რეგულირებადი წყარო. ამრიგად, ჩვენ გავაკონტროლებთ 16 არხიანი სარელეო მოდულს ESP01 გამოყენებით Android პროგრამის საშუალებით, რომელსაც მე თქვენთვის ხელმისაწვდომს გახდის.

ნაბიჯი 1: რჩევა დასამახსოვრებლად

მნიშვნელოვანია აღინიშნოს, ჩემო მეგობრებო, რომ მე ეს ჩიპი გამოვიყენე წრეში, სახელწოდებით MCP23016. თქვენთვის ასევე მნიშვნელოვანია უყუროთ ვიდეოს EXPANSOR OF IOS FOR ESP32, ESP8266 AND ARDUINO, რომელშიც მე ვამოწმებ მოწყობილობას და ვაჩვენებ რომ მუშაობს ამ სამი ტიპის დაფაზე.

ნაბიჯი 2: MCP23016

აქ ჩვენ გვაქვს MCP23016 გამოსახულება, რომელიც არის ჩიპი 28 ქინძისთავით. მნიშვნელოვანია აღინიშნოს, რომ არსებობს ასევე MCP23017 მოდელი, რომელიც უფრო ხშირია და არ სჭირდება რეზისტორი და კონდენსატორი, რადგან მას აქვს შიდა საათი. ეს ამარტივებს, მაგრამ მისი ჩამაგრება განსხვავდება იმისგან, რასაც ჩვენ ვაჩვენებთ ამ ვიდეოში.

ნაბიჯი 3: მისამართი

მისამართი
მისამართი

MCP23016 მისამართის დასადგენად, ჩვენ ვიყენებთ ქინძისთავებს A0, A1 და A2. თქვენ შეგიძლიათ უბრალოდ დატოვოთ ისინი HIGH ან LOW მისამართის შესაცვლელად.

მისამართი ჩამოყალიბდება შემდეგნაირად:

MCP_ მისამართი = 20 + (A2 A1 A0)

სადაც A2 A1 A0- ს შეუძლია მიიღოს HIGH / LOW მნიშვნელობები, ორობითი რიცხვი 0 -დან 7 -მდე.

Მაგალითად:

A2> GND, A1> GND, A0> GND (ნიშნავს 000, შემდეგ 20 + 0 = 20)

Ან სხვაგვარად, A2> HIGH, A1> GND, A0> HIGH (ნიშნავს 101, შემდეგ 20 + 5 = 25)

ნაბიჯი 4: ბრძანებები

ბრძანებები
ბრძანებები

აქ არის ცხრილი, სადაც მოცემულია კომუნიკაციის ბრძანებები:

ნაბიჯი 5: კატეგორიები

GP0 / GP1 - მონაცემთა პორტის რეგისტრატორები

არსებობს ორი რეგისტრი, რომლებიც უზრუნველყოფენ წვდომას GPIO ორ პორტზე.

რეგისტრის კითხვა გვაწვდის ამ პორტზე ქინძისთავების სტატუსს.

ბიტი = 1> მაღალი ბიტი = 0> დაბალი

IODIR0 / IODIR1

არსებობს ორი რეგისტრი, რომლებიც აკონტროლებენ pin რეჟიმს. (შეყვანა ან გამომავალი)

Bit = 1> INPUT Bit = 0> OUTPUT

ნაბიჯი 6: სტრუქტურა კომუნიკაციისთვის

სტრუქტურა კომუნიკაციისთვის
სტრუქტურა კომუნიკაციისთვის

აქ ჩვენ ვსაუბრობთ ჩიპის მისამართზე და შედიხართ ბრძანებასა და მონაცემებზე, რაც არის ერთგვარი პროტოკოლი, რომელიც უნდა გაკეთდეს ინფორმაციის გასაგზავნად.

ნაბიჯი 7: პროგრამა

პროგრამა
პროგრამა

ჩვენ გავაკეთებთ პროგრამას, რომელიც შედგება ESP01– ის MCP23016– თან კომუნიკაციისგან, რათა გამოვიყენოთ მეტი GPIO. ეს 16 ახალი GPIO, რომელიც ჩვენ გვექნება, ვაპირებთ გავაკონტროლოთ 16 არხიანი სარელეო მოდული.

ბრძანებები გაიგზავნება ESP01– ზე Android პროგრამის საშუალებით.

ნაბიჯი 8: MCP23016

MCP23016
MCP23016

ნაბიჯი 9: ESP-01

ESP-01
ESP-01
ESP-01
ESP-01

ეს არის 16 სარელეო დაფა.

ნაბიჯი 10: მონტაჟი ESP01

სამონტაჟო ESP01
სამონტაჟო ESP01

ნაბიჯი 11: ბიბლიოთეკები და ცვლადები

ჩვენ შევიტანთ ბიბლიოთეკებს, რომლებიც პასუხისმგებელნი არიან i2c კომუნიკაციაზე და წვდომის წერტილისა და ვებ სერვერის შექმნაზე. ჩვენ განვსაზღვრავთ ჩიპის მისამართს და პორტებს. დაბოლოს, ჩვენ განვსაზღვრავთ ცვლადებს MCP ქინძისთავების მნიშვნელობების შესანახად.

#შეიტანეთ // საპასუხოდ გამოაქვეყნეთ i2c. #მოიცავს // პასუხი განსაზღვრეთ GP0 0x00 // DATA PORT REGISTER 0 #განსაზღვრეთ GP1 0x01 // DATA PORT REGISTER 1 #განსაზღვრეთ IODIR0 0x06 // I/O DIRECTION REGISTER 0 #განსაზღვრეთ IODIR1 0x07 // I/O DIRECTION REGISTER 1 // guarda os valores dos pinos გააკეთე MCP uint8_t მიმდინარეValueGP0 = 0; uint8_t მიმდინარეValueGP1 = 0;

ნაბიჯი 12: დაყენება

ჩვენ ვაყენებთ ESP01 ინიციალიზაციას და ვაკეთებთ პორტების კონფიგურაციას. ჩვენ ასევე ვაყენებთ წვდომის წერტილს და ვაყენებთ სერვერს.

void setup () {Serial.begin (9600); დაგვიანება (1000); Wire.begin (0, 2); // ESP01 Wire.setClock (200000); კონფიგურაციის პორტი (IODIR0, OUTPUT); კონფიგურაციის პორტი (IODIR1, OUTPUT); writeBlockData (GP0, 0x00); writeBlockData (GP1, 0x00); setupWiFi (); // configuração do Access Point server.begin (); // ოფიციალური სერვერი}

ნაბიჯი 13: მარყუჟი

აქ ვამოწმებ არის თუ არა რომელიმე კლიენტი დაკავშირებული სერვერთან. ჩვენ ასევე ვკითხულობთ პირველი მოთხოვნის ხაზს. ჩვენ ვიღებთ მონაცემებს მანიპულირებისთვის, განვსაზღვრავთ ნაგულისხმევი პასუხის სათაურს და ვუგზავნით ამ პასუხს კლიენტს.

void loop () {WiFiClient client = server.available (); // Verifica se um cliente foi conectado if (! Client) {დაბრუნება; } String req = client.readStringUntil ('\ r'); // Faz a leitura da primeira linha da requisição/ */MR é o header prefixo para saber se a requisição é a esperada para os relés */if (req.indexOf ("/MR")! = -1) {parserData (მოთხოვნა); // a partir da requisição extrai os dados para manipulação} else {Serial.println ("არასწორი მოთხოვნა"); დაბრუნების; } client.flush (); სიმებიანი s = "HTTP/1.1 200 OK / r / n"; // cabeçalho padrão de resposta client.print (s); // envia a resposta para o cliente დაგვიანება (1); } // ბოლო მარყუჟი

ნაბიჯი 14: ParserData

ParserData
ParserData

მოთხოვნიდან ჩვენ ვეძებთ მონაცემებს რელესთან დაკავშირებით. შემდეგ ჩვენ ვგზავნით მონაცემებს MCP23016.

// partir da requisição busca os dados referente aos relésvoid parserData (სიმებიანი მონაცემები) {uint8_t სარელეო = -1; uint8_t gp = -1; uint8_t მნიშვნელობა = -1; int index = data.indexOf ("/MR"); // busca o index do prefixo MR if (data [index+5] == '/') ///MR01/1, onde 0 = GP; 1 = RELE; 1 = ESTADO (ჩართვა/გამორთვა) {gp = მონაცემები [ინდექსი+3]-'0'; სარელეო = მონაცემები [ინდექსი+4]-'0'; მნიშვნელობა = მონაცემები [ინდექსი+6]-'0'; // envia os dados para o MCP23016 // [სარელეო -1] porque o MCP vai de 0-7 os pinos writePinData (სარელეო -1, მნიშვნელობა, gp); }}

ნაბიჯი 15: კონფიგურაცია პორტი

ჩვენ დავაყენეთ GPIO pin რეჟიმი (GP0 ან GP1).

// configura o modo dos pinos GPIO (GP0 ou GP1) // como parametro passamos: // port: GP0 ou GP1 // INPUT para todos as portas do GP trabalharem como entrada // OUTPUT para todos as portas do GP trabalharem como saida // საბაჟო მნიშვნელობა 0-255 მიუთითეთ და შეიტანეთ პორტები (1 = INPUT, 0 = OUTPUT) // მაგ.: 0x01 ou B00000001 ან 1: მითითება აპენასი o GPX.0 ტრაბალჰარ á como entrada, o restante como said void configurePort (uint8_t პორტი, uint8_t საბაჟო) {if (საბაჟო == INPUT) {writeBlockData (პორტი, 0xFF); } else if (საბაჟო == OUTPUT) {writeBlockData (პორტი, 0x00); } else {writeBlockData (პორტი, საბაჟო); }}

ნაბიჯი 16: ჩაწერეთ pin მონაცემები

კოდის ამ ნაწილში ჩვენ ვცვლით სასურველ პინის მდგომარეობას და მონაცემებს ვგზავნით MCP– ში.

// muda o estado de um pino desejado, passando como parametro: // pin = pino desejado; მნიშვნელობა = 0/1 (ჩართვა/გამორთვა); gp = 0/1 (PORT do MCP) void writePinData (int pin, int value, uint8_t gp) {uint8_t statusGP = 0; თუ (gp == GP0) სტატუსი GP = მიმდინარეValueGP0; else statusGP = მიმდინარეValueGP1; if (მნიშვნელობა == 0) {statusGP & = ~ (B00000001 << (პინი)); // muda o pino para LOW} სხვაგან თუ (მნიშვნელობა == 1) {statusGP | = (B00000001 << (პინი)); // muda o pino para HIGH} if (gp == GP0) currentValueGP0 = statusGP; else currentValueGP1 = სტატუსი GP; // envia os dados para o MCP writeBlockData (gp, statusGP); დაგვიანება (10); }

ნაბიჯი 17: ჩაწერეთBlockData & SetupWiFi

აქ ჩვენ ვგზავნით მონაცემებს MCP23016– ზე i2c ავტობუსის საშუალებით. შემდეგი, ჩვენ ვაკონფიგურირებთ თვისებებს წვდომის წერტილის გასააქტიურებლად. დაბოლოს, ჩვენ დავაკონფიგურირეთ WiFi წვდომის წერტილის რეჟიმში და შევქმენით AP SSID– ით და PASSWORD– ით.

// envia dados para o MCP23016 através do barramento i2c // reg: REGISTRADOR // data: dados (0-255) void writeBlockData (uint8_t port, uint8_t data) {Wire.beginTransmission (MCPAddress); Wire.write (პორტი); Wire.write (მონაცემები); Wire.endTransmission (); დაგვიანება (10); }

// configura as propriedades para habilitar o ACCESS POINTvoid setupWiFi () {WiFi.mode (WIFI_AP); WiFi.softAP ("ESP01_RELAY", "12345678"); }

ნაბიჯი 18: აპლიკაცია

Აპლიკაცია
Აპლიკაცია
Აპლიკაცია
Აპლიკაცია
Აპლიკაცია
Აპლიკაცია
Აპლიკაცია
Აპლიკაცია

აპლიკაციის შესაქმნელად ჩვენ ვიყენებთ MIT App Inventor 2 -ს, რომლის წვდომა შესაძლებელია ბმულის საშუალებით:

ai2.appinventor.mit.edu/

პროგრამა შედგება ორი ეკრანისგან, რომელიც შეიცავს რვა წყვილ ღილაკს თითოეულში, რაც მიუთითებს თითოეული რელეს სტატუსზე.

ქვემოთ მოცემულია პროგრამირების ზოგიერთი ბლოკი:

მნიშვნელოვანია: ESP– ის ნაგულისხმევი IP მისამართი, რადგან წვდომის წერტილი არის 192.168.4.1

1. როდესაც ეკრანი ინიციალიზდება, ჩვენ ვინახავთ IP მეხსიერებას და ვიძახებთ ღილაკების მდგომარეობის აღდგენის პროცედურას (ჩართვა / გამორთვა).

2. დარეკეთ სხვა ეკრანზე

1. ერთ -ერთი რელეის ON ღილაკზე დაჭერისას ჩვენ ვიზუალურ ცვლილებებს შევიტანთ ღილაკში (მწვანე ბლოკები). WebViewer1. GoToUrl ითხოვს მოთხოვნას ჩვენს ESP01– ზე MR01 / 1 მონაცემების URL– ში მიბმით.

2. ერთ -ერთი რელეს OFF ღილაკზე დაჭერისას ჩვენ ვიზუალურ ცვლილებებს შევიტანთ ღილაკში (მწვანე ბლოკები). WebViewer1. GoToUrl უგზავნის თხოვნას ჩვენს ESP01– ს MR01 / 0 მონაცემების URL– ში მიბმით.

ეს პროცედურა გამოიყენება ღილაკების (რელეების) მდგომარეობის აღსადგენად, რადგან ეკრანის შეცვლისას იგი ბრუნდება შექმნის შაბლონზე.

ყვითელი ბლოკი მეორდება ღილაკების თითოეული წყვილისთვის.

ნაბიჯი 19: ჩამოტვირთეთ

აქ არის პროექტის ფაილები ჩამოსატვირთად:

MIT აპლიკაცია გამომგონებელი 2 პროექტის ფაილი - ჩამოტვირთვა

აპლიკაციის APK დაყენება android– ზე - ჩამოტვირთვა

ჩამოტვირთეთ სხვა ფაილები:

PDF

ინო

გირჩევთ: