معرفی GPIO
عموما به پایههای ورودی خروجی یک میکرو GPIO میگویند. که میتواند یا به عنوان ورودی و یا به عنوان خروجی تعریف شود. این تعریف میتواند در هنگام اجرای برنامه تغییر کند.
در اینجا توضیحات را روی بورد NodeMCU انجام میدهیم. NodeMCU یک کیت توسعه یافته است برای دسترسی بهتر به GPIO های ESP8266. تنها نکتهای که باید دقت داشت اسم پینها در بورد ESP8266 و NodeMCU با هم فرق دارند که در ادامه آنرا قرار میدهم. برای مثال پین D0 ماژول NodeMCU با پین 16 قطعهی ESP8266 یکی است.
پینهایی که با خط آبی مشخص شدهاند (1،3،9،10) بصورت معمول استفاده نمیشوند.
ESP8266 یک سامانه روی چیپ SoC است. یعنی اجزای مورد نیاز مثل پردازنده و حافظه و غیره روی یک چیپ قرار دارند. پردازنده با 16 عدد GPIO احاطه شده است، که بعضی از آنها برای ارتباط بین اجزاء مثل دسترسی پردازنده به فلش مموری استفاده میشود.
از این پینها 11 عدد برای استفاده باقی میماند. که دوتا از این پینها هم برای RX و TX استفاده میشود که البته در این مطلب طریقه استفاده از آنرا توضیح دادم.
از پایهی D0 یا GPIO16 فقط برای خواندن و نوشتن دیجیتالی استفاده میتوان کرد (digitalWrite, digitalRead). نمی توان از این پین برای وقفهی خارجی یا PWM استفاده کرد.
نمونه کد
uint8_t LED_Pin = D4; // declare LED pin on NodeMCU Dev Kit void setup() { pinMode(LED_Pin, OUTPUT); // Initialize the LED pin as an output } void loop() { digitalWrite(LED_Pin, LOW); // Turn the LED on delay(1000); // Wait for a second digitalWrite(LED_Pin, HIGH);// Turn the LED off delay(1000); // Wait for a second }
نکته:
بعضی از پینها برای بوت کردن NodeMCU استفاده میشوند. اگر در هنگام آپلود برنامه این پینها HIGH یا LOW باشند ممکن است از بوت شدن ماژول جلوگیری شود. پس در استفاده از آنها باید دقت کرد.
من خودم در پروژه ها بیشتر از فرمان LOW و ترانزیستور NPN استفاده میکنم تا مشکلی پیش نیاد.
- GPIO0 این پین هنگام بوت شدن 100 میلی ثانیه نوسان دارد و بعد HIGH میشود. اگر LOW اعمال شود بوت نمیشود.
- GPIO1 این پین برای 50 میلی ثانیه LOW می باشد و بعد از آن HIGH میشود. اگر LOW اعمال شود بوت نمیشود.
- GPIO2 این پین هنگام بوت شدن 100 میلی ثانیه نوسان دارد و بعد HIGH میشود. اگر LOW اعمال شود بوت نمیشود.
- GPIO3 برای 50 میلی ثانیه LOW میشود و بعد از آن HIGH.
- GPIO9 هنگام بوت HIGH میشود.
- GPIO10 هنگام بوت HIGH میشود.
- GPIO15 هنگام بوت LOW میشود. اگر HIGH اعمال شود بوت نمیشود.
- GPIO16 هنگام بوت HIGH است و به یک ولت اُفت میکند.
دیدگاه ها :