BASIC4MCU | 질문게시판 | 아두이노 우노보드로 스마트팜 만들려고 하는데 문제가 있어요
페이지 정보
작성자 부러진명검 작성일2024-08-28 09:54 조회366회 댓글4건본문
스마트팜 만들려고 아두이노 우노 보드로 인터넷에 있는 코드 긁어모아서 코드를 짜봤는데 몇가지 문제점이 있네요 ㅠㅠ
혼자서 해결하기엔 너무 어려운거 같아서 질문 올립니다
1. 컴퓨터 usb에 연결하면 작동은 되는데 오래 놔두면 코드가 루프 되지않고 어느구간에서 멈춘채로 먹통이 됩니다.
온습도 읽어오는 과정에서 error no. -1 이라는 오류가 뜨는데 왜 뜨는지를 모르겠네요 아마 이거 때문에 멈추는거 같긴합니다만 어떻게 고칠지 ..
2. 컴퓨터 usb연결하면 잘 작동은 합니다 근데 12v 1.5a (positive polarity)어댑터로 전원을 연결하면 켜지긴 하는데 lcd 화면이 켜지질 않네요 뒤에 가변저항 드라이버로 돌려도 먹통입니다 ;;
왜 안켜지는지는 모르겠습니다
아두이노 우노 보드에 단게 많긴한데 그게 원인일까요? lcd, 조명, 워터펌프, 온습도 센서, 대지습도 센서 등등 여러개 붙였는데 이게 문제라면 어떻게 해결해야 할까요
제 코드입니다
#include <DHT11.h>#include <Wire.h>#include <LiquidCrystal_I2C.h>LiquidCrystal_I2C lcd(0x27, 16, 2);#include <Adafruit_NeoPixel.h>#define PIN 3Adafruit_NeoPixel strip = Adafruit_NeoPixel(64, PIN, NEO_GRB + NEO_KHZ800);int pin = 2; //온습도 센서int i = 0;int k = 0;int soilpin = 14;int A1A = 10;int A1B = 9;DHT11 dht11(pin);int err;float temp, humi;void setup(){strip.begin(); //네오픽셀을 초기화하기 위해 모든LED를 off시킨다strip.show(); //네오픽셀 ONlcd.begin();lcd.backlight();Serial.begin(9600);strip.setBrightness(5); //네오픽셀 초기 밝기pinMode(soilpin, INPUT); // 토양습도센서pinMode(A1A, OUTPUT);pinMode(A1B, OUTPUT);pinMode(9,OUTPUT); // 9번핀 릴레이 모듈 (펠티어 모듈)을 출력핀으로 설정}void loop(){if((err=dht11.read(humi, temp))==0){Serial.println("온습도 불러오기");Serial.print("temperature:");Serial.print(temp); // 온도Serial.print(" humidity:");Serial.print(humi); // 습도Serial.println();}else{Serial.println("온습도 불러오기 실패!!!");Serial.println();Serial.print("Error No :");Serial.print(err);Serial.println();}if(temp >= 18) { // 온도 값에 따라 펠티어 동작Serial.println("펠티어 ON");digitalWrite(9,HIGH);}else{Serial.println("펠티어 OFF");digitalWrite(9,LOW);}for(i=0; i<strip.numPixels(); i++) { //네오픽셀 색상strip.setPixelColor(i, 100, 100, 100);strip.show();}float soil = analogRead(soilpin);Serial.print("read sensor value: ");Serial.println(soil); //수분이 없으면 1023, 수분이 높을수록 0//토양 습도 센서 코드는 여기까지Serial.println("토양습도 불러오기");lcd.setCursor(0,0);lcd.print("soil : ");lcd.print(soil);lcd.setCursor(0,1);lcd.print("temp : ");lcd.print(temp);if(soil < 800){digitalWrite(A1A, HIGH); //모터ONdigitalWrite(A1B, LOW);Serial.println("모터 ON");delay(2500);}else{digitalWrite(A1A, LOW); //모터OFFdigitalWrite(A1B, LOW);Serial.println("모터 OFF");strip.show();delay(2500);}}
댓글 4
조회수 366master님의 댓글
master 작성일
온습도를 못 읽어온다고 해도
펠티어제어, 토양습도, 모터제어 등의 메시지는 계속해서 출력되는 것 아닌가요?
마지막 메시지를 보면 어느 구간에서 멈췄는지 알 수 있을겁니다.
부러진명검님의 댓글
부러진명검 작성일
온습도를 못읽어 오는거와 별개로 메세지는 계속 출력됩니다
근데 한 2~5분 있으면 멈추고 온습도 불러오기 부분에서 멈춥니다
master님의 댓글
master 작성일
펌프 소모전류가 가장 많을까요?
아답터만으로 돌렸을 때 정상동작하지 않는 것은 전원장치 전류 부족으로 인한 오동작일 가능성이 높습니다만 정확한 회로도와 사용된 부품명을 알아야 합니다.
부러진명검님의 댓글
부러진명검 작성일회로도는 제가 킷 + 센서 만지면서 바꿔놔서 정확히 알려면 다시봐서 일일히 선을 따야겠네요 지금은 회로를 볼수가 없어서 나중에 확인하고 다시 질문 드릴게요 답변 감사합니다 전류부족은 저도 그럴거같아서 기존 1.5A에서 2A 어댑터로 새로 주문했는데 도착은 안해서 몇번 해볼거같아요