جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
هدفنا هذه المرة هو إنشاء برنامج يقرأ درجة الحرارة المحيطة لأي جسم يشير إلى جهاز الاستشعار الخاص بنا. للقيام بذلك ، سنستخدم في هذا المشروع عقدة ESP8266MCU ، ومستشعر الأشعة تحت الحمراء MLX90614 ، وشاشة OLED 96 بوصة ، والتي ستعرض بيانات درجة الحرارة.
الخطوة 1: WiFi ESP8266 NodeMcu ESP-12E
الخطوة الثانية: مستشعر الأشعة تحت الحمراء
مستشعر الأشعة تحت الحمراء MLX90614 المستخدم في هذا الإعداد هو في الواقع نوع من كاميرات الفيديو. إنه يلتقط الصور عبر CCD (جهاز Charged Coupled Device) ، وهو نظام مشابه جدًا للنظام المستخدم في الكاميرات الرقمية الثابتة. وبالتالي ، فإنه يسجل كمية الأشعة تحت الحمراء الخارجة من الجسم ، وبهذه الكمية ، فإنه يحسب درجة الحرارة. إنه دقيق للغاية.
الخطوة 3: عرض OLED
الخطوة 4: التجميع
هذا مخطط بسيط للغاية. لدي جدول هنا يسمح بالتخيل السهل.
ESP8266 - OLEDD5 - SCL
D7 - SDA
D3 - الدقة
D4 - DC
D8 - CS
3 ، 3 فولت - VCC
GND - GND
ام ال اكس 90614
D1 - SCL
D2 - SDA
3 ، 3 فولت - VCC
GND - GND
الخطوة 5: المكتبات
لاستخدام شاشة OLED ، أضف مكتبة "Adafruit-GFX-Library-master" التالية.
ما عليك سوى الوصول إلى "Sketch >> Include Libraries >> Manage Libraries…"
أضف أيضًا مكتبة "Adafruit Unified Sensor" التالية.
روابط التنزيل الخاصة بالمكتبات موجودة في ملف PDF ، المتاح أدناه مباشرة.
الخطوة 6: كود المصدر
سنبدأ بتعريف المكتبات والثوابت التي سنستخدمها خلال الكود الخاص بنا.
# تتضمن // Biblioteca para I2C # include // Biblioteca para comunicação com o sensor #include // Biblioteca para propriedades gráficas #include // Biblioteca para comunicação com dipsplay OLED // pinagem para o NodeMCU ESP8266 # D5 #define cs D8 #define rst D3 #define dc D4 // definição das cores que serão utilizadas #define BLACK 0x0000 #define WHITE 0xFFFF // definição da socenada onde escreveremos cada um dos dados #define POS_X_AMBOSE 2 #define POS_Y_OBJETO 55 #define POS_X_TITULO 10 #define POS_Y_TITULO 4 // construtor do objeto para comunicar com o display OLED Adafruit_SSD1331 display = Adafruit_SSD1331 (cs، dc، mosi، sclk، rst) ؛ // objeto responsável pela comunicação com o sensor infravermelho IRTherm sensor؛ // variáveis que armazenarão o valor das temperature lidas float tempAmbiente؛ تعويم درجة الحرارة
اقامة
في وظيفة الإعداد () ، سنقوم بتهيئة هدف الاتصال الخاص بنا مع المستشعر ، وكذلك موضوع الاتصال بالشاشة. فيما يلي بعض الإعدادات لكل منهم.
إعداد باطل () {// Inicializa sensor de temperature infravermelho sensor.begin () ؛ // سيليسيونا درجة الحرارة em Celsius sensor.setUnit (TEMP_C) ؛ // podemos ainda utilizar TEMP_F para Fahrenheit // ou TEMP_K para Kelvin // inicializa o objeto para comunicarmos com o display OLED display.begin () ؛ // pinta a tela toda de preto display.fillScreen (أسود) ؛ // configura o tamnaho do texto que escreveremos em tela display.setTextSize (0) ؛ // configura a cor branca para o texto display.setTextColor (WHITE) ؛ // os comandos abaixo posicionam o cursor no (x، y) desejado para a seguir escrevermos em tela display.setCursor (POS_X_TITULO، POS_Y_TITULO) ؛ display.print ("TEMPERATURA") ؛ display.setCursor (POS_X_TITULO + 20، POS_Y_TITULO + 15) ؛ display.print ("(") ؛ display.print ((char) 247) ؛ // símbolo de graus display.print ("C)") ؛ display.setCursor (POS_X_AMBIENTE، POS_Y_AMBIENTE) ؛ display.print ("AMB:") ؛ // AMBIENTE display.setCursor (POS_X_OBJETO، POS_Y_OBJETO) ؛ display.print ("OBJ:") ؛ // OBJETO}
حلقة
في وظيفة الحلقة () ، دعنا نقرأ بيانات المستشعر ، ثم نعرضها على شاشة OLED.
// chamamos o método "read" do sensor para realizar a leitura da tempAmbiente // read retornará 1 caso consiga realizar a leitura، ou 0 caso contário if (sensor.read ()) {// recupera a leitura da Temperatura do ambiente tempAmbiente = sensor.ambient () ؛ // recupera a leitura da tematura do objeto apontado pelo sensor tempObjeto = sensor.object () ؛ // limpa a área onde colocamos o valor da temperatura do ambiente e do objeto display.fillRect (POS_X_AMBIENTE + 35، POS_Y_AMBIENTE، 35، 10، BLACK) ؛ display.fillRect (POS_X_OBJETO + 35، POS_Y_OBJETO، 35، 10، BLACK) ؛ // posiciona o cursor e escreve عرض درجة حرارة محيطة. setCursor (POS_X_AMBIENTE + 35، POS_Y_AMBIENTE) ؛ display.print (tempAmbiente) ؛ display.print ((char) 247) ؛ // simbolo de graus // posiciona o cursor e escreve a temperature objeto que o sensor está apontando display.setCursor (POS_X_OBJETO + 35، POS_Y_OBJETO) ؛ display.print (tempObjeto) ؛ display.print ((char) 247) ؛ // simbolo de graus} تأخير (1000) ؛ // interalo de 1 segundo para a próxima leitura}