Tag Archives: ESP8266

ربط حساس الحركة EKMC1601111 بشريحة ESP8266

أردت استخدام حساس يساعدني إلى التعرف فيما إذا كان هناك حركة أم لا. هناك العديد من الحساسات التي قد تفي بالغرض. لكنها تختلف (1) مسافة النطاق التي من خلالها يمكنها التحسس (2) وبما يعرف بـ rest time وقت إعادة الضبط أو بمعنى الوقت الذي تحتاجه لتصبح جاهزة للتحسس لحركة جديدة

إشتريت بضعة حساسات EKMC1601111 لشركة بناسونيك Panasonic. وقمت بربط الحساس إلى شريحة ESP8266.

Untitled1

مخطط توضيحي للتوصيلات للحساس EKMC1601111 مع شريحة ESP8266

 

تم استخدام الشيفرة التالية لقراءة قيمة الحساس وطباعتها إلى نافذة الخرج.  لاحظ السطر 6 ، تم ضبط موخر لمدة 30 ثانية لتهيئة الحساس

1
2
3
4
5

6
7
8

9
10
11
12
13
14

15
16
17
18
19
20
21

const int PPR = D2;

int bState = 0;
float State =
0;

void setup() {
pinMode(PPR, INPUT
);

delay(30000);//wait for 30s until the sensor voltage becomes stable

 Serial.begin (9600);
}

void loop() {

 int State = digitalRead (PPR);

 if (bState != State) {
bState =
State;
Serial.println (“”
);
}

 if (State == HIGH) {
Serial.print
(State);
} else
{
Serial.print
(State);
}

 delay(100);
}

 

 

بعد تحميل البرنامج إلى شريحة ESP8266 قم بفتح نافذة الخرج لمشاهدة نتائج تعليمات الطباعة المستخدمة

Untitled2

 

لاحظ قيمة 1 تدل على أن هناك جسم متحرك ضمن نطاق الحساس

Untitled

 

 

لم أستخدم الباعث الضوئي إلى الآن ، سأقوم بإضافة تعليمات الآن لإضاءة الباعث الضوئي إشعارا بأن هناك حركة

const int PPR = D2;

const int LED = D1;

float State = 0;

void setup() {

pinMode(LED, OUTPUT);

pinMode(PPR, INPUT);
digitalWrite(LED, LOW
);

 delay(30000);//wait for 30s until the sensor voltage becomes stable
}

void loop() {

int readState = 0;

 for(int i = 0; i < 10; i++){
readState += digitalRead
(PPR);
}

State = readState/10;

if(State >= 0.5){
digitalWrite(LED, HIGH
);
}else
{
digitalWrite(LED, LOW
);
}

 delay(500);
}

 المراجع:

  1. https://qiita.com/FireFoxCorp/items/0b56d672bc9abcbd5ef6
  2. https://titanwolf.org/Network/Articles/Article?AID=f89c3796-bbc6-4548-9c3b-bf5832b04bcf#gsc.tab=0
  3. https://randomnerdtutorials.com/esp8266-nodemcu-digital-inputs-outputs-arduino/

ربط ثنائي باعث ضوئي بـشريحة ESP8266

أردت بداية أن أتعرف إلى كيفية استخدام مبسطة لشريحة esp8266. فتبادر إلى ذهني استخدام الباعث الضوئي. فهو مثال بسيط جدا يمكناستخدامه كمشروع “مرحبا عالم” Hello World. في هذه المقالة سأقوم بداية بربط الباعث الضوئي
مباشرة بمأخذ الطاقة في قاعدة
esp8266 ثم سأقوم بتحول مصدر الطاقة إلى أحد مآخذ العامة GPIO
لأتعرف إلى كيفية استخدامهن.

الأدوات التي سأحتاج إليها:

  1. ثنائي باعث ضوئي led
  2. مقاومة 1 كيلو أوم
  3. موصلات
  4. شريحة esp8266
  5. لوح التجارب breadboard

 

ربط الباعث مباشرة بمأخذ الطاقة في قاعدة esp8266

في هذه الحالة الأمر جدا بسيط انظر إلى الرسم التوضيحي إلى كيفية الربط. الربط الصحيح للدارة سيضيء الباعث الضوئي.

Untitled

ربط باعث ضوئي إلى قاعدة شريحة esp8266 مباشرة

ربط مأخذ الطاقة إلى أحد مآخذ الدخل والخرج العامة (D1)

لنحول مصدر الطاقة للباعث من مأخذ الطاقة 3V إلى المأخذ العام D1، كما هو موضح بالشكل التالي

Untitled

ربط الباعث الضوئي إلى مأخذ عام D1

الآن سأقوم بتعريف متحول ثابت أحدد من خلال المأخذ العام الذي سأستخدمه D1 في هذا المثال. لاحظ الشيفرة التالية

const int LED_PIN =  D1;

void setup() {
  // put your setup code here, to run once:
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(LED_PIN, LOW);
  delay(1000);
  digitalWrite(LED_PIN, HIGH);
  delay(2000);
}

الأمر سهل جدا. حمل البرنامج وستكون النتيجة أن الباعث الضوئي سينير لمدة ثانيتين ويطفئ لمدة ثانية واحدة

المرجع:

  1. https://randomnerdtutorials.com/esp8266-nodemcu-digital-inputs-outputs-arduino/?unapproved=523340&moderation-hash=cdc606415fc34f0f0aa773d2d6032a7f#comment-523340
%d مدونون معجبون بهذه: