من اگه بخوام از اردوینو یک سری اطلاعات بگیرم توسط سریال با esp8266، میشه تک تک اتصالات به پین های اردوینو رو به esp8266 وارد کرد تا از اونا بگیره اطلاعات؟ چیزی دراین مورد پیدا نکردم
سلام
راستش درست منظورتون رو متوجه نشدم
اگر منظورتون اینه که بتونید از GPIO های esp به جای آردوینو استفاده کنید جوابش اینه که بسته به پروتکلی که داره استفاده میشه تا حد زیادی شدنیه .
اگر spi یا i2c بخواید ساپرت می کنه
اگه سریال بخواید علاوه بر سریال سخت افزاری یه سریال نرم افزاری هم ساپرت می کنه .
اگر منظورتون چیز دیگه ای بوده بفرمایید تا پاسخ بدم .
برای این کار باید پین دیتای سنسور رو هم به esp بدید هم به آردوینو
اما به نظر من این که با هردو تا پردازنده داده سنسور رو بخونید کار مفیدی نیست .
داده رو با آردوینو بخونید با سریال بفرستید برای Esp . تو خود Esp هم کد بزنید که با داده سریال دریافتی قصد دارید چه کار کنید.
Arduino Wireless Temperature LCD Display (nRF24L01+ DHT11) | Elec-Cafe.Com
اینی که شما گذاشتین از فرستنده ای به فرستنده ی دیگه س
چطوری از طریق پرت سریال چندتا داده بفرستم و اونارو با esp دریافت کنم
راستی مال رله هم کنترلی نمیکنه روش
پین esp رو وصل میکنم و برنمشو میریزم
حتی دستور دادنی مینویسه Relay On یا off ولی عمل نمیکنه و اون رله همیشه روشنه! خاموشش نمیکنه
نباید مستقیم وصل شه به پینش یا ایراد جای دیگه س؟
اول در مورد رله با هم قضیه رو حل کنیم :
من با این کد دارم از یه رله 3 ولت تست میگیرم :
سیم بندیم هم به این شکله :کد:int Relay = 14; // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(Relay, OUTPUT); } // the loop routine runs over and over again forever: void loop() { digitalWrite(Relay, HIGH); // turn the Relay on (HIGH is the voltage level) delay(3000); // wait for a second digitalWrite(Relay, LOW); // turn the Relay off by making the voltage LOW delay(3000); // wait for a second }
nodemcu رله GND DC- 3.3 DC+ 14(D5) IN
رله ای که استفاده می کنم اینه :
ماژول رله 3.3 ولت یک کاناله KEEPONIC با قابلیت تنظیم سطح ولتاژ تریگر
بردمم اینه:
برد توسعه NodeMcu به همراه ماژول وایفای ESP8266 با مبدل CP2102
همین کارو کردم
البته ماژول رله من 4 کاناله
دوباره چراغ رله روشن میمونه
ولی وقتی دقت میکنم چراغ مربوط به اون رله هر سه ثانیه کمرنگ و پررنگ میشه
یعنی اون 3 ثانیه که باید رله رو روشن کنه ، چراغ رله پررنگ روشن میشه، و 3 ثانیه بعد بجای اینکه رله رو خاموش کنه فقط چراغش کم نور تر میشه.
مشکلم با یه 547 حل شد!
یه سوال
برای هر رله باید یدونه از این ترانزیستورها بزارم؟!
خب بریم سراغ ادامه ش
چطوری از سریال اردوینو چندتا داده رو بفرستم رو esp و دریافت کنه
برقراری اربتاط سریال بین آردوینو و ESP خیلی خیلی راحت تر از اون چیزیه که فکر می کنه .
این دو تا کد رو به تریتب روی UNO و روی esp آپلود کن :
سمت UNO:
و این کد رو سمت esp :کد:#include <SoftwareSerial.h> SoftwareSerial UNO(10, 11); // RX, TX void setup() { // Open serial communications and wait for port to open: Serial.begin(9600); UNO.begin(9600); UNO.println("Hello, world?"); } void loop() { // run over and over if (UNO.available()) { Serial.write(UNO.read()); } if (Serial.available()) { UNO.write(Serial.read()); } }
حالا هر دو سمت کنسول رو باز کن . هر داده ای که تو کنسول آردوینو بنویسی تو کنسول esp8266 چاپ میشه و هر داده ای که تو کنسول esp8266 بنویسی تو کنسول آردوینو چاپ میشه . به همین راحتیکد:#include <SoftwareSerial.h> SoftwareSerial esp8266(4, 5, 128); void setup() { Serial.begin(9600); esp8266.begin(9600); } void loop() { if (esp8266.available()) { Serial.write(esp8266.read()); } if (Serial.available()) { esp8266.write(Serial.read()); } }
تو این کدها به جای این که بیایم از پینهای سریال اصلی آردوینو و esp8266 استفاده کنیم از پین های سریال نرم افزاری استفاده کردیم . شماره پینهایی که استفاده شدن تو هدر برنامه معلوم هستن .