NodeMCU ESP8266 สัปดาห์ที่ 11

 

ระบบจัดสวนอัตโนมัติด้วย NodeMCU และ Blynk


/***********************************************************************
*  NodeMCU and OLED display "Hello World" test
*  
*  MJRoBot 15march17
************************************************************************/
#include <Wire.h>
#include <ACROBOTIC_SSD1306.h>
void setup()
{
  Wire.begin();  
  oled.init();                      // Initialize SSD1306 OLED display
  oled.clearDisplay();              // Clear screen
  oled.setTextXY(0,0);              // Set cursor position, start of line 0
  oled.putString("  MJRoBot.org");
  oled.setTextXY(4,0);              // Set cursor position, start of line 4
  oled.putString("  HELLO, WORLD");
}
void loop()
{
}

ในโครงการ ArduFarmBot ก่อนหน้านี้เราได้สำรวจวิธีการทำงานกับเครื่องวัดความชื้นในดินเพื่อวัดความชื้นในดิน เราได้สำรวจเซ็นเซอร์ประเภท DIY แล้ว เรามาลองใช้อุปกรณ์อิเล็กทรอนิกส์กัน ซึ่งพบได้ทั่วไปในตลาด: เซ็นเซอร์ YL-69 และ LM393 Comparator โมดูลไฮโกรมิเตอร์สำหรับดินขนาดกลาง

โมดูล LM393 มี 2 เอาต์พุต หนึ่งดิจิตอล (D0) ที่สามารถตั้งค่าได้โดยใช้โพเทนชิออมิเตอร์ที่มีอยู่และอนาล็อก (A0) โมดูลนี้สามารถจัดหาได้ด้วย 3.3V ซึ่งสะดวกมากเมื่อทำงานกับ NodeMCU สิ่งที่เราจะทำคือติดตั้งพิน LM393 4 พินดังนี้:

  • LM393 A0 เอาต์พุต A0 NodeMCU A0 อินพุต
  • LM393 VCC เป็น NodeMCU VCC หรือ NodeMCU GPIO D3*
  • LM393 GND เป็น NodeMCU GND
  • LM393 D0 เปิดอยู่

สิ่งสำคัญคือต้องเน้นว่าสิ่งที่ถูกต้องคือการเชื่อมต่อ Sensor VCC กับ Digital Pin เป็นเอาต์พุต ดังนั้น LM393 จะทำงานเมื่อเราต้องการอ่านเท่านั้น สิ่งนี้สำคัญไม่เพียงแต่เพื่อประหยัดพลังงานเท่านั้น แต่ยังต้องปกป้องโพรบจากการกัดกร่อนอีกด้วย ด้วยเซ็นเซอร์ประเภท DYI ที่ใช้ในโปรเจ็กต์ ArduFarmBot ดั้งเดิม มันใช้งานได้ดี แต่ในกรณีนี้ NodeMCU ใช้งาน PIN ของ soilMoisterVcc ได้ไม่ดีเท่าที่ควร ฉันยังมีข้อผิดพลาดในที่สุดเนื่องจากการใช้พลังงาน ดังนั้นฉันจึงขับเคลื่อน LM393 โดยตรงไปยัง VCC (5V) โดยไม่จำเป็นต้องเปลี่ยนรหัส มันทำงานได้ดี

รูทีนง่าย ๆ สามารถเขียนเพื่ออ่านพอร์ตแอนะล็อก:



/***************************************************
 * Get Soil Moister Sensor data
 **************************************************/
void getSoilMoisterData(void)
{
  soilMoister = 0;
  digitalWrite (soilMoisterVcc, HIGH);
  delay (500);
  int N = 3;
  for(int i = 0; i < N; i++) // read sensor "N" times and get the average
  {
    soilMoister += analogRead(soilMoisterPin);   
    delay(150);
  }
  digitalWrite (soilMoisterVcc, LOW);
  soilMoister = soilMoister/N; 
  Serial.println(soilMoister);
  soilMoister = map(soilMoister, 600, 0, 0, 100); 
}

เว็บ https://www.hackster.io/mjrobot/automatic-gardening-system-with-nodemcu-and-blynk-47f040


ความคิดเห็น