فهرست مطالب:
تصویری: با استفاده از 4 پین ESP8266-01: 3 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:55
توجه: این پروژه اساساً فرمت دستورالعمل قبلی است که فقط از 2 پین استفاده می کرد. تعداد محدود (4) پین GPIO در ESP8266-01 ممکن است برای هر برنامه جدی مانعی به نظر برسد. اما اگر از پین ها استفاده کنید به طرز هوشمندانه ای می توان کارهای بسیار زیادی را فقط با آن 4 پین انجام داد. در برخی از دستورالعمل های اخیر من ، استفاده از DHT11 a DS18B20 ، OLED ، RTC و BMP180 با ESP8266-01 را نشان داده ام. در این دستورالعمل تصمیم گرفتم از 4 سنسور و یک صفحه نمایش استفاده کنم ، در حالی که داده های به دست آمده را در Thingspeak بارگذاری می کنم. این در واقع در حال گسترش پروژه نظارت بر جو و اطراف مرغداری من است. بله ، شما می توانید این را آب و هوا نامید ، اما این فقط برای نشان دادن استفاده از 4 پین است ، به راحتی می توانید چیز دیگری را به این روش بسازید. من از 2 پین برای I2C (BMP180 و OLED) 1 پین برای 2 سنسور DS18B20 از طریق اگرچه ESP8266-01 در حال حاضر از همه پین های آن استفاده شده است ، اما هنوز می توانم حسگرهای بیشتری (یا محرک ها) را از طریق پروتکل OneWire و/یا از طریق پروتکل I2C اضافه کنم. بنابراین ، به چه چیزی نیاز داریم:
- ESP8266-01
- 2x DS18B20
- 1x DHT11
- 1x BMP180
- OLED (اختیاری)
و البته یک تخته نان ، یک منبع تغذیه 3.3 ولت و برخی از سیم های نان و یک حساب Thingspeak
فقط چند نکته در مورد BOM:
- بدیهی است که پروژه در مورد استفاده از پین های محدود ESP8266-01 است ، اما اگر هنوز نیاز به خرید آن دارید ، می توانید ESP8266-12 را که دارای پین های بیشتری است ، در نظر بگیرید.
- سنسور رطوبت و دما DHT11A ارزان قیمت. این خیلی دقیق نیست اما این کار را خواهد کرد. اگر هنوز نیاز به خرید دارید ، می توانید DHT22 را انتخاب کنید که ظاهراً دقیق تر است ، اما می توانید AMS2321 را نیز انتخاب کنید. این نوعی DHT22 است که برای I2C مناسب است ، بنابراین یک پین دیگر آزاد می شود
- BMP180 دما و فشار هوا را اندازه گیری می کند. این جانشین BMP085 است ، اما در حال حاضر نیز دارای تعدادی محافظ است. BMP280 (ارزان تر) وجود دارد ، اما شما همچنین می توانید BME280 را انتخاب کنید که دما ، تهویه هوا و رطوبت را اندازه گیری می کند. به این ترتیب می توانید در سنسور DHT/AMS صرفه جویی کنید
- OLEDI فقط از آن استفاده کرد ، بنابراین من به سرعت می توانم ببینم سنسورها خوانده شده اند یا نه ، اما شما همچنین می توانید آن را در Thingspeak بررسی کنید. OLED به هر حال برای چاپ تمام مقادیر خوانده شده بسیار کوچک است
مرحله 1: مدار
4 پین ESP8266 به این صورت در PCB نشان داده نمی شود و اکثر تصاویر فقط به وضوح GPIO0 و GPIO2 را نشان می دهند. با این حال ESP826-01 دارای پین aa GPIO1 (پین Tx) و پین GPIO3 (پین Rx) است. از پین های زیر استفاده خواهد کرد
- GPIO0 -> پین SDA درگاه I2C
- GPIO1 -> DHT11
- GPIO2-> پین SCL درگاه I2C
- GPIO3-> گذرگاه OneWire
از آنجا که ماژول های I2C من قبلاً دارای مقاومت کششی هستند ، هیچ مقاومت کششی I2C را به آن اضافه نمی کنم. DS18B20 هنوز به مقاومت کششی احتیاج دارد که برای آن از 4k7 استفاده کردم ، اما واقعاً چندان مهم نیست ، 10k نیز خوب است. DHT11 ظاهراً به یک مقاومت کششی نیز احتیاج دارد اما من دریافتم که بدون آن نیز کار می کند. افزودن یک مقاومت 4k7 هیچ یک از قرائت ها را تغییر نداد ، بنابراین آن را کنار گذاشتم. بسیاری از ماژول های 3 پین DHT11 ، در حال حاضر 10 کیلوگرم روی ماژول لحیم شده اند. من تازه متوجه شدم که اتصالات OLED را ترسیم نکرده ام. این به این دلیل است که من فقط آن را برای یک بررسی سریع متصل کردم ، اما اگر بخواهید آن را اضافه کنید ، فقط موضوع اتصال SDA به SDA و SCL به SCL است … و البته پایه های Vcc و پایه به همتایان خود
مرحله 2: برنامه
برنامه کاملاً ساده است. ابتدا کتابخانه ها و حسگرها را تنظیم می کند. DHT11 را به پین 1 (Tx) و گذرگاه OnWire را برای DS18B20 به پین 3 (Rx) متصل می کند. برای استفاده از بیش از 1 سنسور DS18B20 در گذرگاه OneWire ، باید "آدرس منحصر به فرد" آنها را بشناسید. اگر آن را ندارید ، به برنامه ای برای خواندن این آدرس ها نیاز دارید. این کار را با arduino برای سهولت انجام دهید. در برنامه شما هنوز باید اعتبار WiFi خود و همچنین API نوشتن را برای Thingspeak Channel خود ارائه دهید
/*
میدان 1 درجه حرارت (DHT11) میدان 2 رطوبت خروجی (DHT11) میدان 3 دمای همکاری (DS18B20) میدان 4 دمای خاک (DS18B20) میدان 5 فشار هوایی (bmp180) میدان 6 دمای خارج (bmp180) * */ #شامل #شامل // https://www.pjrc.com/teensy/td_libs_OneWire.html #include // https://milesburton.com/Main_Page؟title=Dallas_Tem… #شامل #شامل #شامل #SSD1306.h نمایشگر SSD1306 0 (0x3c ، ، 2) ؛ #تعریف DHTPIN 1 // GPIO1 (Tx) #تعریف DHTTYPE DHT11 #تعریف ONE_WIRE_BUS 3 // GPIO3 = Rx const char* ssid = "YourSSID" ؛ const char* رمز عبور = "YourPassword"؛ const char* host = "api.thingspeak.com"؛ const char* writeAPIKey = "W367812985"؛ // از writeApi خود استفاده کنید // DHT11 stuff float temperature_buiten؛ float temperature_buiten2؛ DHT dht (DHTPIN ، DHTTYPE ، 15) ؛ // موارد DS18b20 OneWire oneWire (ONE_WIRE_BUS) ؛ // نمونه oneWire برای برقراری ارتباط با هر دستگاه OneWire سنسورهای دما DallasTemperature (& oneWire) ؛ // آدرس نمونه oneWire ما را به دمای دالاس منتقل کنید. DeviceAddress Probe01 = {0x28 ، 0x0F ، 0x2A ، 0x28 ، 0x00 ، 0x00 ، 0x80 ، 0x9F} ؛ DeviceAddress Probe02 = {0x28 ، 0x10 ، 0xA4 ، 0x57 ، 0x04 ، 0x00 ، 0x00 ، 0xA9} ؛ // موارد bmp180 Adafruit_BMP085 bmp؛ void setup () {// I2C stuff Wire.pins (0، 2)؛ Wire.begin (0 ، 2) ؛ // مقداردهی اولیه سنسورها // dht 11 stuff dht.begin ()؛ // ds18b20 stuff sensors.begin ()؛ // ds18b20 // وضوح را روی 10 بیت تنظیم کنید (می تواند 9 تا 12 بیت باشد. پایین تر سریعتر است) sensors.setResolution (Probe01، 10)؛ sensors.setResolution (Probe02، 10) ؛ // موارد bmp180 if (! bmp.begin ()) {// Serial.println ("بدون BMP180 /BMP085") ؛ // while (1) {}} // OLED stuff display.init ()؛ display.flipScreenVertically ()؛ display.setFont (ArialMT_Plain_10) ؛ تاخیر (1000) ؛ // اتصال به شبکه WiFi WiFi.begin (ssid ، رمز عبور) ؛ while (WiFi.status ()! = WL_CONNECTED) {تأخیر (500)؛ }} void loop () {// ds18b20stuff ------------------- sensors.requestTemperatures ()؛ // ارسال دستور برای دریافت درجه حرارت temperature_buiten = sensors.getTempC (Probe01) ؛ // temperature_buiten2 = sensors.getTempC (Probe02) ؛ // // dht11 stuff ---------------- ---- رطوبت شناور = dht.readHumidity ()؛ دمای شناور = dht.readTemperature ()؛ if (isnan (رطوبت) || isnan (دما)) {return؛ } // چیزهای bmp ------------------------- رشته t = رشته (bmp.readTemperature ()) ؛ رشته p = رشته (bmp.readPressure ()) ؛ // موارد OLED -------------------------- display.clear ()؛ display.drawString (0 ، 10 ، p) ؛ // bmp pressure display.drawString (0 ، 24 ، String (temperature_buiten)) ؛ // ds18b20 display.drawString (0 ، 38 ، String (رطوبت)) ؛ // نمایش dht11.نمایش دادن()؛ // ایجاد اتصالات TCP مشتری WiFiClient ؛ const int httpPort = 80؛ if (! client.connect (میزبان ، httpPort)) {return؛ } url رشته = "/update؟ key ="؛ url += writeAPIKey؛ url += "& field1 ="؛ url += رشته (دما) ؛ // roost (DHT1) url += "& field2 ="؛ url += رشته (رطوبت) ؛ // roost (DHT11) url += "& field3 ="؛ url += رشته (temperature_buiten) ؛ // دمای coop (DS18B20 nr 1) url += "& field4 ="؛ url += رشته (temperature_buiten2) ؛ // دمای خاک (DS18B29 nr 2) url += "& field5 ="؛ url += رشته (bmp.readTemperature ()) ؛ دمای بیرون (BMP180) url += "& field6 ="؛ url += رشته (bmp.readPressure ()) ؛ // فشار هوا (BMP180) url += "\ r / n" ؛ // ارسال درخواست به سرور client.print (String ("GET") + url + "HTTP/1.1 / r / n" + "Host:" + host + "\ r / n" + "Connection: close / r / n / r / n ")؛ تاخیر (1000) ؛ }
……..
مرحله 3: بیشتر
در حال حاضر این برنامه فقط مانیتور می کند ، اما چه چیزی شما را از اضافه کردن سنسور نور BH1750 I2C برای اندازه گیری عصر یا صبح یا RTC برای اطلاع از زمان روز و باز و بسته شدن خودکار درب قفس به کمک خودکار باز می دارد. یک کارت گسترش PCF8574 I2C I/O یا همانطور که در باغ است ، یک مبدل PCF8591 یا ADS1115 AD برای اندازه گیری رطوبت خاک و فعال سازی پمپ در صورت لزوم اضافه کنید. یا شاید زمانی که دمای هوا به زیر صفر می رسد ، بخاری آب را روشن کنید ، اگر یک تراشه I2 C برای آن وجود دارد ، ESP8266 احتمالاً می تواند از آن استفاده کند.
یک نکته مهم: برنامه به خوبی کار می کند ، اما اگر سنسورهای دیگری را به Rx یا Tx اضافه کنید ، به ویژه اگر آنها را به خروجی تبدیل کنید ، ممکن است پین ها ناگهان به یاد بیاورند که آنها واقعاً پین GPIO نیستند. بهتر است از ابتدا به پین ها بگویید که اکنون پین GPIO هستند. یکی این کار را با قرار دادن عبارات زیر در تنظیم انجام می دهد:
pinMode (1 ، FUNCTION_3) ؛
pinMode (3 ، FUNCTION_3) ؛
توصیه شده:
نحوه خواندن چندین ارزش آنالوگ با استفاده از یک پین آنالوگ: 6 مرحله (همراه با تصاویر)
نحوه خواندن چندین ارزش آنالوگ با استفاده از یک پین آنالوگ: در این آموزش ، من به شما نحوه خواندن چندین مقدار آنالوگ با استفاده از تنها یک پین ورودی آنالوگ را نشان خواهم داد
چشمک زدن LED با تمشک پای - نحوه استفاده از پین های GPIO در رزبری پای: 4 مرحله
چشمک زدن LED با تمشک پای | نحوه استفاده از پین های GPIO در Raspberry Pi: سلام بچه ها در این دستورالعمل نحوه استفاده از GPIO's Raspberry pi را یاد می گیریم. اگر تا به حال از آردوینو استفاده کرده اید ، احتمالاً می دانید که ما می توانیم سوئیچ LED و غیره را به پین های آن وصل کرده و آن را مانند کار کنیم. چشمک بزنید یا ورودی را از سوئیچ دریافت کنید تا
تاس نورد VISUINO با استفاده از ماژول OLED 0.96 اینچی 4 پین: 7 مرحله
VISUINO Rolling Dice با استفاده از ماژول OLED 0.96 اینچی 4 پین: در این آموزش ما از یک OLED Lcd و Visuino برای ایجاد یک تاس رول استفاده می کنیم وقتی دکمه ای را روی نان برد خود فشار می دهیم
ESP8266 با استفاده از پین GPIO0/GPIO2/GPIO15: 4 مرحله
ESP8266 با استفاده از پین های GPIO0/GPIO2/GPIO15: به روز رسانی 1 جولای 2018-اضافه شدن یادداشت در مورد برنامه نویسی مجدد هنگامی که GPIO0 خروجی است. این یک یادداشت بسیار کوتاه در مورد نحوه استفاده از پین GPIO0/GPIO2 و GPIO15 در ماژول ESP8266 است. به روز رسانی: همچنین بررسی کنید out نحوه استفاده از پین های ESP8266-01 مقدمه ESP8266 کم است
ISP 6 پین تا 8 پین سوکت: 4 مرحله
ISP 6 پین تا 8 پین سوکت: دلیل اصلی این پروژه من برنامه نویسی ATTiny45 بود که دارای اتصال 8 پین است ، در حالی که USBtinyISP من (از Ladyada) فقط 10 پین و 6 پین اتصال دارد. بعد از حدود 3-4 هفته جست و جو در اینترنت ، چیزی پیدا نکردم که