산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

목이 타오르는 사무실 식물

구성품 및 소모품

Arduino Due
× 1
Andium Anduino WiFi
× 1
Arduino Zero
× 1
용량식 토양 수분 센서
× 1

앱 및 온라인 서비스

Arduino IDE
IFTTT
Adafruit IO

이 프로젝트 정보

동기

여기 Andium에서 마침내 새로운 사무실 공간으로 이사하게 되어 매우 기쁩니다. 우리는 화이트보드로 덮인 벽, 반짝이는 새로운 기술, 집에 있는 것과 같은 모든 안락함으로 장식했습니다. 특히 우리가 이 녹색 잎이 많은 친구들을 공간 전체에 배치했을 때 집처럼 느껴지기 시작했습니다!

우리는 물주는 것을 잊었고 일주일 정도 만에 잎이 많은 친구들이 이렇게 보이기 시작했습니다...

실패하다.

우리는 IoT 회사입니다. 우리는 이것보다 낫습니다. 우리 공장이 인터넷에 연결되어 있지 않은 이유는 무엇입니까! 이 작은 녀석이 너무 늦기 전에 anduinoWiFi 실드와 IFTTT를 사용하여 솔루션을 구성했으면 합니다. 식물에게 목소리를 낼 시간입니다!

시작하기

당신이 녹색 엄지손가락을 가지고 있다면 당신은 아마도 이미 읽기를 중단했을 것입니다. 그러나 당신이 나와 같고 당신의 식물이 디지털 방식으로 자비를 구하고 물을 달라고 소리칠 수 있는 능력을 부여해야 한다면 당신은 올바른 위치에 있습니다.

식물에 음성을 제공하려면 Arduino Due 또는 Zero, anduinoWiFi 실드(또는 Adafruit IO와 통신할 수 있는 다른 WiFi 연결 Arduino)와 마지막으로 '용량성 토양 수분 센서'가 필요합니다. 아, 그리고 물 한 잔. (작업이 끝나면 공장에 주시면 지금 이메일로 감사 인사를 전할 것입니다.)

수분 센서

토양 수분 센서는 꽤 훌륭합니다. 실제로 젖은 흙에 잠기도록 권장되는 센서는 많지 않으므로 가능한 한 즐기십시오. 너무 많지는 않지만 이 줄에 주목하세요...

무엇을 하든지 센서를 흰색 선 아래에 담그지 마십시오. 위의 어떤 것도 습기 노출을 잘 견디지 못하므로 이 센서가 있는 식물에 물을 줄 때 주의하십시오.

위의 다음 사진을 클릭하면 왜 센서를 물 한 컵에 담가두었는지 의아할 것입니다. 더 이상 궁금해하지 마세요!

'정전용량 토양 수분 센서' 보정 방법

용량성 센서에는 3.3v(빨간색), 접지(검정색) 및 (파란색 신호) 아날로그 핀 A1에 연결할 3개의 와이어가 있습니다. 센서를 보정할 때 센서가 완전히 건조되었을 때 커패시턴스 판독값을 기록하고 센서가 물 한 컵에 담겼을 때(흰색 선까지!) 두 번째 판독값을 취합니다. 이것은 우리에게 극단적인 0-100% 상대 습도 임계값을 가져옵니다.

센서를 연결하고 이 스케치를 실행하고 결과를 기록하십시오. 참고로 내 dryVal은 807, wetVal은 415였습니다.

<사전><코드>int inputPin =A1; 무효 설정() { Serial.begin(115200); 지연(3000); } 무효 루프() { Serial.print("원시 값:"); Serial.println(readHumidity()); 지연(3000); } int readHumidity() { int sensorVal =analogRead(inputPin); 반환 sensorVal; }

이 두 숫자가 있으면 상대 습도 매핑을 구성할 준비가 된 것입니다. 보정된 자신을 고려하십시오!

스케치

#include  #include "Adafruit_MQTT.h" #include "Adafruit_MQTT_Client.h" #include "AnduinoLCD.h" // WiFi 매개변수 #define WLAN_SSID "Andium" #define WLAN_PASS "maybeits justpassword" // Adafruit IO #define AIO_SERVER "io.adafruit.com" #define AIO_SERVERPORT 1883 #define AIO_USERNAME "사용자 이름" #define AIO_KEY "dosifje0j230fj32lksdfj230ff23" WiFiClient 클라이언트; Adafruit_MQTT_Client mqtt(&client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY); /****************************** 피드 ****************** *********************/ // 온도에 대한 피드 설정 Adafruit_MQTT_Publish 습도Val =Adafruit_MQTT_Publish(&mqtt, AIO_USERNAME "/feeds/officePlants"); /* AnduinoLCD 인스턴스 생성 */ AnduinoLCD LCD =AnduinoLCD(ST7735_CS_PIN, ST7735_DC_PIN, ST7735_RST_PIN); 정수 입력 핀 =A1; const int dryVal =807; const int wetVal =415; int 습도 =0; int 습도Prev =0; int relHumidity =0; 무효 설정() { Serial.begin(115200); 지연(3000); //WiFi &Adafruit.IO에 연결 connectToWiFi(); connectToAdafruit(); //LCD 초기화 LCD.begin(); LCDinit(); } void loop() { // 연결 상태를 유지하기 위해 adafruit io를 몇 번 ping if(! mqtt.ping(3)) { // adafruit io에 다시 연결 if(! mqtt.connected()) connect(); } 습도 =readHumidity(); // int temp를 char 배열로 변환 char b[4]; 문자열 str; str=문자열(습도); for(int i=0; i=0) mqtt.disconnect(); Serial.println(F("연결 시도 중...")); 지연(1000); } Serial.println(F("Adafruit IO 연결되었습니다!")); } void displayHumidity(int 습도, int HumidtyPrev) { //부실 값 지우기 LCD.setTextColor(ST7735_BLACK); LCD.setTextSize(2); LCD.setTextWrap(true); LCD.setCursor(40,60); LCD.setTextSize(5); LCD.print(humidityPrev); LCD.setTextSize(2); LCD.print("%"); //새로운 값 인쇄 LCD.setTextColor(ST7735_WHITE); LCD.setTextSize(2); LCD.setTextWrap(true); LCD.setCursor(40,60); LCD.setTextSize(5); LCD.print(습도); LCD.setTextSize(2); LCD.print("%"); } void connectToWiFi() { // WiFi 액세스 포인트에 연결합니다. 지연(10); Serial.print(F("연결 중 ")); 직렬.println(WLAN_SSID); WiFi.begin(WLAN_SSID, WLAN_PASS); 동안 (WiFi.status() !=WL_CONNECTED) { 지연(500); Serial.print(F(".")); } Serial.println(F("와이파이 연결!")); } void connectToAdafruit() { // adafruit에 연결 io connect(); } 무효 LCDinit() { LCD.setBacklight(ON); LCD.fillScreen(ST7735_BLACK); //화면 지우기 LCD.showBanner(); //앤디움 배너 로드 LCD.setTextColor(ST7735_WHITE); LCD.setTextSize(2); LCD.setTextWrap(true); LCD.setCursor(0,40); LCD.print("습도:"); } int readHumidity() { int sensorVal =analogRead(inputPin); relHumidity =map(sensorVal, dryVal, wetVal, 0, 100); Serial.println("relHumidity"); Serial.print(relHumidity); 반환 relHumidity; }  

이 스케치를 복사하여 IDE에 붙여넣고 이러한 라이브러리가 설치되어 있는지 확인하십시오.

<울>
  • WiFi101
  • <울>
  • Adafruit_MQTT
  • <울>
  • 안두이노LCD
  • 뿐만 아니라 개인적으로 보정된...

    <사전><코드> const int dryVal =807; const int wetVal =415;

    젖은 값과 건조한 값. 우리가 습도()를 읽을 때 스케치의 맨 아래로 우리는 이 값을 사용하여 0-100% 상대 습도를 매핑합니다. 이제 우리의 값은 건조 상태일 때 0%, 완전히 포화 상태일 때 100%로 표시됩니다.

    relHumidity =map(sensorVal, dryVal, wetVal, 0, 100); 

    모든 것이 순조롭게 진행되고 arduino가 WiFi 및 Adafruit IO에 연결되면 10분마다 판독값이 표시되기 시작해야 합니다. 다음은 오늘 읽은 내용의 스냅샷입니다.

    오늘 일찍 발생한 이상값은 신경쓰지 마세요. 매핑되지 않은 원시 커패시턴스를 읽고 건조 및 습식 값을 결정하는 동안에도 게시했습니다.

    좋습니다. 이제 10분마다 토양 수분 측정값을 게시합니다. 이제 나는 식물이 죽어가는 것을 막고 물을 주기 전까지는 수치가 무엇인지에 대해 전혀 신경 쓰지 않습니다. IFTTT를 사용하여 임계 습도 수준을 설정하고 식물에 물을 줄 것을 상기시키도록 알림을 보내도록 구성합시다!

    IFTTT 임계값

    IFTTT를 사용하여 토양의 상대 습도가 20% 아래로 떨어지면 목마른 식물이 트위터(@andiumPlants)를 통해 물을 요청하는 우리에게 도달하도록 임계값을 설정했습니다! 설정을 한 눈에 볼 수 있습니다.

    그게 다야!

    다음은 무엇입니까?

    나는 당신에게 그것을 맡깁니다! 그렇지 않으면 어떻게 우리가 창의적으로 식물에 목소리를 내고 동물군이 실패하지 않도록 할 수 있습니까? anduinoWiFi와 토양 센서를 들고 만들기 시작하세요!

    <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    안두이노
    Andium(Anduino) 쉴드용 Arduino 라이브러리입니다. Arduino를 AndiumNode로 변환합니다.https://github.com/andium/Anduino

    제조공정

    1. 비료
    2. Arduino 스파이봇
    3. FlickMote
    4. 수제 TV B-Gone
    5. 마스터 시계
    6. 나를 찾기
    7. Arduino Power
    8. Tech-TicTacToe
    9. TinyML로 식물 상태 확인
    10. Arduino Quadruped