فهرست مطالب:
- مرحله 1: نکته ای برای به خاطر سپردن
- مرحله 2: MCP23016
- مرحله 3: آدرس
- مرحله 4: دستورات
- مرحله 5: دسته بندی ها
- مرحله ششم: ساختار ارتباطات
- مرحله 7: برنامه
- مرحله 8: MCP23016
- مرحله 9: ESP-01
- مرحله 10: نصب ESP01
- مرحله 11: کتابخانه ها و متغیرها
- مرحله 12: راه اندازی
- مرحله 13: حلقه کنید
- مرحله 14: ParserData
- مرحله 15: ConfigurePort
- مرحله 16: WritePinData
- مرحله 17: WriteBlockData & SetupWiFi
- مرحله 18: برنامه
- مرحله 19: بارگیری کنید
تصویری: اتوماسیون کم هزینه با ESP01: 19 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:56
امروز ، ما در مورد اتوماسیون با استفاده از 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_Address = 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
دو ثبات وجود دارد که حالت پین را کنترل می کنند. (ورودی یا خروجی)
بیت = 1> ورودی بیت = 0> خروجی
مرحله ششم: ساختار ارتباطات
در اینجا ما در مورد آدرس تراشه صحبت می کنیم و به دستور و داده ها دسترسی داریم ، که نوعی پروتکل است که برای ارسال اطلاعات باید انجام شود.
مرحله 7: برنامه
ما برنامه ای را متشکل از ارتباط ESP01 با MCP23016 انجام می دهیم تا GPIO های بیشتری برای استفاده داشته باشیم. این 16 GPIO جدید که در اختیار داریم یک ماژول رله 16 کانالی را کنترل می کنند.
دستورات از طریق یک برنامه Android به ESP01 ارسال می شود.
مرحله 8: MCP23016
مرحله 9: ESP-01
این یک برد 16 رله است.
مرحله 10: نصب ESP01
مرحله 11: کتابخانه ها و متغیرها
ما کتابخانه های مسئول ارتباط i2c و ایجاد نقطه دسترسی و سرور وب را شامل می شود. آدرس تراشه و پورت ها را مشخص می کنیم. در نهایت ، ما متغیرها را برای ذخیره مقادیر پین های MCP تعریف می کنیم.
#include // responsável pela comunicação i2c. # تعریف GP0 0x00 // DATA PORT REGISTER 0 #تعریف GP1 0x01 // DATA PORT REGISTER 1 #تعریف IODIR0 0x06 // I/O DIRECTION REGISTER 0 #deodine IODIR1 0x07 // I/O DIRECTION REGISTER 1 // guarda os valores dos pinos انجام MCP uint8_t currentValueGP0 = 0 ؛ uint8_t currentValueGP1 = 0 ؛
مرحله 12: راه اندازی
ESP01 را مقداردهی اولیه می کنیم و پورت ها را پیکربندی می کنیم. همچنین Access Point را پیکربندی کرده و سرور را مقداردهی می کنیم.
void setup () {Serial.begin (9600)؛ تاخیر (1000) ؛ Wire.begin (0 ، 2) ؛ // ESP01 Wire.setClock (200000) ؛ configurePort (IODIR0 ، OUTPUT) ؛ configurePort (IODIR1 ، OUTPUT) ؛ writeBlockData (GP0 ، 0x00) ؛ writeBlockData (GP1 ، 0x00) ؛ setupWiFi ()؛ // configuração do Access Point server.begin ()؛ // inicializa o server}
مرحله 13: حلقه کنید
در اینجا بررسی می کنم که آیا کلاینتی به سرور متصل شده است یا خیر. اولین خط درخواست را نیز می خوانیم. داده ها را برای دستکاری استخراج می کنیم ، سرصفحه پیش فرض پاسخ را تعریف می کنیم و این پاسخ را برای سرویس گیرنده ارسال می کنیم.
void loop () {WiFiClient client = server.available ()؛ // Verifica se um cliente foi conectado if (! client) {return؛ } 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 (req)؛ // 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 delay (1)؛ } // حلقه پایان
مرحله 14: ParserData
از درخواست ، ما به دنبال داده های مربوط به رله ها هستیم. سپس داده ها را به MCP23016 ارسال می کنیم.
// a partir da requisição busca os dados referente aos relésvoid parserData (String data) {uint8_t relay = -1؛ uint8_t gp = -1؛ uint8_t مقدار = -1؛ int index = data.indexOf ("/MR") ؛ // busca o index prefixo MR if (data [index+5] == '/') ///MR01/1، onde 0 = GP؛ 1 = RELE ؛ 1 = ESTADO (روشن/خاموش) {gp = data [index+3]-'0'؛ رله = داده [فهرست+4]-'0'؛ value = data [index+6]-'0'؛ // envia os dados para o MCP23016 // [relay-1] porque o MCP vai 0-7 os pinos writePinData (رله -1 ، مقدار ، gp) ؛ }}
مرحله 15: ConfigurePort
ما حالت پین GPIO (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 saya // custom um valor de 0-255 indicando o modo das portas (1 = INPUT، 0 = OUTPUT) // ex: 0x01 ou B00000001 ou 1: indica que apenas o GPX.0 trabalhará como entrada، or restante como saida void configurePort (پورت uint8_t ، uint8_t سفارشی) {if (سفارشی == INPUT) {writeBlockData (پورت ، 0xFF) ؛ } else if (سفارشی == OUTPUT) {writeBlockData (پورت ، 0x00) ؛ } else {writeBlockData (پورت ، سفارشی) ؛ }}
مرحله 16: WritePinData
در این قسمت از کد ، حالت پین مورد نظر را تغییر می دهیم و داده ها را به MCP ارسال می کنیم.
// muda o estado de um pino desejado، passando como parametro: // pin = pino desejado؛ مقدار = 0/1 (روشن/خاموش) ؛ gp = 0/1 (PORT تا MCP) void writePinData (int pin، int value، uint8_t gp) {uint8_t statusGP = 0؛ if (gp == GP0) statusGP = currentValueGP0 ؛ else statusGP = currentValueGP1؛ if (value == 0) {statusGP & = ~ (B00000001 << (پین))؛ // muda o pino para LOW} else if (value == 1) {statusGP | = (B00000001 << (پین))؛ // muda o pino para HIGH} if (gp == GP0) currentValueGP0 = statusGP؛ else currentValueGP1 = statusGP؛ // envia os dados para یا MCP writeBlockData (gp، statusGP)؛ تأخیر (10) ؛ }
مرحله 17: WriteBlockData & SetupWiFi
در اینجا ، ما داده ها را از طریق گذرگاه i2c به MCP23016 ارسال می کنیم. در مرحله بعد ، ویژگی ها را پیکربندی می کنیم تا Access Point فعال شود. در نهایت ، ما WiFi را برای حالت Access Point پیکربندی کردیم و یک AP با SSID و PASSWORD ایجاد کردیم.
// envia dados para o MCP23016 através do barramento i2c // reg: REGISTRADOR // data: dados (0-255) void writeBlockData (پورت uint8_t ، داده uint8_t) {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/
این برنامه شامل دو صفحه شامل هشت جفت دکمه در هر کدام است که وضعیت هر رله را نشان می دهد.
موارد زیر برخی از بلوک های برنامه نویسی مورد استفاده است:
مهم: آدرس IP پیش فرض ESP ، زیرا نقطه دسترسی 192.168.4.1 است
1. هنگامی که صفحه نمایش اولیه می شود ، IP را در حافظه ذخیره می کنیم و روش را برای بازیابی وضعیت دکمه ها (ON / OFF) فرا می خوانیم.
2. با صفحه دیگر تماس بگیرید
1. هنگام کلیک بر روی دکمه ON یکی از رله ها ، تغییرات بصری را در دکمه (بلوک های سبز) ایجاد می کنیم. WebViewer1. GoToUrl با پیوند داده های MR01 / 1 در URL ، درخواست ESP01 ما را ارائه می دهد.
2. وقتی روی دکمه OFF یکی از رله ها کلیک می کنیم ، تغییرات بصری را در دکمه (بلوک های سبز) ایجاد می کنیم. WebViewer1. GoToUrl با پیوند داده های MR01 / 0 در URL ، از ESP01 ما درخواست می کند.
این روش برای بازیابی وضعیت دکمه ها (رله ها) استفاده می شود ، زیرا هنگام تغییر صفحه ، به الگوی ایجاد باز می گردد.
بلوک زرد برای هر یک از جفت های دکمه تکرار می شود.
مرحله 19: بارگیری کنید
در اینجا فایل های پروژه برای بارگیری وجود دارد:
فایل پروژه MIT App Inventor 2 - بارگیری
APK برنامه برای نصب در اندروید - بارگیری کنید
فایلهای دیگر را بارگیری کنید:
من نه
توصیه شده:
مسافت سنج کم هزینه: 11 مرحله (همراه با تصاویر)
رئومتر کم هزینه: هدف از این دستورالعمل ایجاد یک رئومتر کم هزینه برای یافتن تجربی ویسکوزیته یک سیال است. این پروژه توسط تیمی از دانشگاه براون و دانشجوی کارشناسی ارشد در کلاس ارتعاش سیستم های مکانیکی ایجاد شد
نحوه ساخت دستگاه ECG کم هزینه: 26 مرحله
نحوه ساخت دستگاه ECG کم هزینه: سلام به همه! نام من ماریانو است و من یک مهندس پزشکی هستم. من برخی از تعطیلات آخر هفته را صرف طراحی و پیاده سازی نمونه اولیه دستگاه ECG ارزان قیمت بر اساس برد آردوینو کردم که از طریق بلوتوث به دستگاه Android (تلفن هوشمند یا رایانه لوحی) متصل شده بود. من می خواهم
GPSDO YT ، فرکانس مرجع نوسان ساز انضباطی 10 مگاهرتز. کم هزینه. دقیق: 3 مرحله
GPSDO YT ، فرکانس مرجع نوسان ساز انضباطی 10 مگاهرتز. کم هزینه. دقیق.: *********************************************** ****************************** STOP STOP STOP STOP STOP STOP STOP STOP STOP این یک پروژه منسوخ شده است. در عوض من را بررسی کنید نسخه جدید ال سی دی 2x16 در اینجا موجود است: https: //www.instructables.com/id
DIY اتوماسیون کم هزینه خانه با استفاده از Esp8266: 6 مرحله
DIY کم هزینه اتوماسیون خانگی با استفاده از Esp8266: سلام به همه ، امروز در این دستورالعمل ها به شما نشان خواهم داد که چگونه با استفاده از ماژول ESP 8266 که عموماً با نام nodemcu شناخته می شود ، اتوماسیون خانه خود را به عنوان گامی به سوی خانه هوشمند آماده کردم. بیایید شروع کنیم:)
مرحله به مرحله اتوماسیون خانگی با استفاده از Wemos D1 Mini با طراحی PCB: 4 مرحله
گام به گام اتوماسیون خانگی با استفاده از Wemos D1 Mini با طراحی PCB: اتوماسیون خانگی گام به گام با استفاده از Wemos D1 Mini با طراحی PCB چند هفته قبل ما آموزش "اتوماسیون خانگی با استفاده از تمشک پای" را در rootaid.com منتشر کردیم که مورد استقبال علاقه مندان و علاقه مندان قرار گرفت. دانشجو. سپس یکی از اعضای ما آمد