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

SmartAgro

구성품 및 소모품

Arduino MKR GSM 1400
× 1
SORACOM Air Global IoT SIM
× 1
Arduino MKR MEM 쉴드
× 1
GY21 온도 및 습도
× 1
Adafruit SI1145 UV 광 센서
× 1
SparkFun 토양 수분 센서(스크류 터미널 포함)
× 1
Adafruit 방수 DS18B20 디지털 온도 센서
× 1
점퍼 와이어(일반)
× 1

필요한 도구 및 기계

납땜 인두(일반)

이 프로젝트 정보

개요

농지는 현대 사회의 생존을 위해 꼭 필요한 소중한 자원입니다. 그러나 농업 농업에서는 많은 문제에 직면해 있으므로 작물에 적합한 온도, 습도 및 햇빛을 확보해야 하며, 그 다음에는 작물을 파괴하는 것이 없도록 해야 합니다.

스마트 농업 개념 최근 몇 년 동안 작물의 상태를 원격으로 감독하는 아이디어가 구체화되고 있습니다. 그러나 이러한 농업 혁명에는 막대한 비용이 소요되며, 대부분의 사용 가능한 시스템은 소규모 농장에서 구현하기에는 너무 비싸고 시스템은 대규모 농장을 포함하지 않을 수 있습니다.

SmartAgro는 모니터링되는 현장에 배치할 수 있는 사용하기 쉬운 장치 네트워크를 만들려고 합니다. 이 장치는 대기 데이터, 토양 관련 매개변수 및 조명 값을 수집하여 모든 데이터를 대시보드에 표시되는 클라우드로 보냅니다.

이를 통해 규모에 관계없이 모든 농장이 새로운 농업 시대로 들어서고, 가뭄이 다가오면 경고할 수 있는 확장 가능한 장치를 토지 전체에 구현할 수 있습니다.

동영상

이미지

기능

SmartAgro를 사용하면 사용자가 모니터링 중인 현장에서 여러 장치를 쉽게 구현할 수 있습니다. 이 장치는 정의된 시간 간격으로 센서에서 샘플을 가져옵니다.

그런 다음 데이터는 SD 카드의 a.csv 파일에 기록되고 대시보드에서 데이터가 시각화되는 백엔드로 전송됩니다. 프로젝트는 프론트엔드와 백엔드로 구성됩니다.

프런트엔드

프로젝트의 프런트 엔드는 현장에 배치된 물리적 장치를 나타냅니다. 이러한 장치는 센서에서 데이터 샘플을 가져와 SD 카드에 굽고 데이터를 백엔드로 보냅니다. 다음은 프로젝트의 기능 개요입니다.

MKR GSM은 프론트 엔드에 사용되며 장치는 데이터를 수집한 다음 이를 시각화하는 Soracom으로 보냅니다. 다음은 데이터를 수집할 때 장치에서 수행하는 단계입니다.

SD 카드

장치는 센서에서 수집한 데이터를 연결된 SD 카드에 기록합니다. 데이터는 다운로드할 수 있는 .csv 파일에 추가됩니다.

설정에서 장치는 쓸 .csv 파일이 있는지 찾아보고 이미 존재하는 경우 파일에 추가합니다. 파일이 없으면 새 파일을 만듭니다. 아래는 파일의 일부 이미지입니다.

배터리

여러 가지 방법으로 장치에 전원을 공급할 수 있습니다. 장치에 제공된 포트를 통해 LiPo 배터리, 보조 배터리 또는 장치의 VIN 포트를 통해 배터리를 연결하여 전원을 공급할 수 있습니다.

장치의 수명은 배터리 전력에 크게 의존합니다. 장치는 가능한 한 많은 에너지를 절약하기 위해 읽기 사이에 절전 모드로 들어갑니다.

데이터 전송

데이터는 서버에 대한 GSM 연결을 통해 Soracom으로 전송됩니다. 데이터는 JSON 페이로드로 전송됩니다. 이 데이터는 백엔드에서 수신된 다음 처리됩니다. 다음은 페이로드의 예입니다.

{ "위도":53.3570404, "경도":-6.2609935, "soilTemp":20.56, "soilHumidity":40, "atmoTemp":22.12, "atmoHumidity":62, "uvLight":0 "irLight":257, "deviceName":"device1"} 

백엔드

애플리케이션의 백엔드는 Soracom을 참조합니다. 쏘라콤에서 데이터를 받아 처리한 후 대시보드에 표시합니다.

대시보드

프로젝트의 대시보드는 Soracom Lagoon에서 호스팅됩니다. 데이터는 백엔드에서 Soracom Air가 수신하고, Soracom Harvest는 데이터를 수집하고 Lagoon은 Harvest에서 이를 쿼리합니다.

차량의 각 장치 위치와 모든 센서 데이터는 대시보드에 표시됩니다. 대시보드 스크린샷은 아래와 같습니다.

경고

사용자는 장치에서 수집한 UV 지수 또는 토양 습도가 비정상인 경우 이메일 알림을 받도록 백엔드를 설정할 수도 있습니다. 이렇게 하면 작물에 주의가 필요한지 사용자가 알 수 있습니다.

혜택

이 프로젝트를 운영하는 사용자에게는 다음과 같은 많은 이점이 있습니다.

<울>
  • 대시보드를 사용하여 언제 어디서나 이동 중에 데이터를 시각화합니다.
  • 기기를 쉽게 확장하고 여러 개로 사용할 수 있습니다.
  • 시장에 나와 있는 일반적인 솔루션보다 비용이 저렴합니다.
  • 프로젝트 구성

    1단계:필수 장비

    이 프로젝트에는 센서 및 기타 재료 목록이 필요합니다. 필요한 자료의 전체 목록은 아래와 같습니다.

    <울>
  • 1, Arduino MKR GSM
  • 1, Arduino MEM 쉴드
  • 1, GY-21 온도 및 습도 모듈
  • 1, 방수 온도 센서
  • 1, SI-1145 UV 광 센서
  • 1, 토양 수분 센서
  • 1, 2AA 배터리 상자(배터리 포함) 또는 LiPo 배터리
  • 1, 소라콤 심카드
  • 1, SD 카드
  • 점퍼 와이어
  • 2단계:회로 연결

    모든 구성 요소를 함께 납땜하려면 납땜 인두가 필요합니다. 회로도는 아래 fritzing 파일에 설명되어 있습니다.

    MEM 실드를 보드에 부착하는 것을 잊지 마십시오!

    MKR GSM 준비

    Arduino MKR GSM을 준비해야 합니다. VIN 포트를 통해 2개의 AA 배터리로 보드에 전원을 공급했습니다. 단계는 아래와 같습니다.

    3단계:코드 승인

    프로젝트에 사용된 코드에는 4개의 주요 섹션이 있습니다.

    <울>
  • SD 준비
  • 데이터 수집
  • SD로 데이터 굽기
  • Soracom에 데이터 보내기
  • 이 모든 섹션은 아래에 설명되어 있습니다.

    SD 준비

    bool createFile(){ // SD 카드에 .csv 파일 생성 Serial.println("Creating File"); Serial.println(" 확인 - 파일 생성 및 열기"); 파일 dataFile =SD.open("datalog.csv", FILE_WRITE); if(dataFile) { Serial.println(" 확인 - 생성된 파일"); Serial.println(" 확인 - 파일에 범례 추가"); Serial.print(" 확인 - 추가 "); Serial.println(범례); dataFile.println(범례); dataFile.close(); Serial.println("성공 - 데이터 추가됨"); } else { Serial.println("오류 - 파일이 감지되지 않음"); Serial.println(" 확인 - 5초 후에 다시 시도합니다."); Serial.println("______________________________________________________"); Serial.println(""); dataFile.close(); 지연(5000); 거짓을 반환합니다. } Serial.println("________________________________________"); Serial.println(""); return true;} void checkFile(){ Serial.println(".csv 확인 중"); Serial.println("______________________________________________________"); Serial.println("파일 설정"); Serial.println(" OK - 파일 존재 여부 확인"); if(SD.exists("datalog.csv")) // .csv 파일이 이미 존재하는지 확인 { // 존재하는 파일에 추가 Serial.println(" OK - File Exists"); Serial.println(" 확인 - 기존 파일에 추가합니다."); Serial.println("______________________________________________________"); Serial.println(""); } else { // Serial.println(" OK - File Not Present")에 추가할 새 파일을 만듭니다. Serial.println(" 확인 - 파일 생성 중"); Serial.println(""); 동안(!createFile()) {}; }} 

    checkFile() 기능은 장치가 추가해야 하는 .csv 파일이 존재하는지 확인합니다. 파일이 존재하면 함수가 종료되고, 그렇지 않으면 createFile()을 호출합니다. 추가할 new.csv 파일을 생성합니다.

    데이터 수집

    void collectData(){ Serial.println("데이터 수집"); Serial.println("______________________________________________________"); Serial.println("센서에서 데이터 가져오기"); Serial.println(" OK - 모든 센서에 연결"); // 모든 센서에서 데이터를 수집합니다.oilSens.requestTemperatures(); 흙온도 =흙센스.getTempCByIndex(0); 토양습도 =analogRead(A1); 토양습도 =지도(토양습도, 1023, 0, 0, 100); atmoTemp =gy21.readTemperature(); atmoHumidity =gy21.readHumidity(); 가시광 =uv.readVisible(); irLight =uv.readIR(); rawUVLight =uv.readUV(); uvLight =(rawUVLight / 100); Serial.println(" 확인 - 수집된 데이터"); Serial.println(" OK - 데이터 덤프"); Serial.print("[빛] 보이기 "); Serial.println(visibleLight); Serial.print("[빛] 적외선 "); Serial.println(irLight); Serial.print("[빛] 자외선 "); Serial.println(자외선); Serial.print("[기압] 온도 "); Serial.println(atmoTemp); Serial.print("[대기] 습도 "); Serial.println(atmoHumidity); Serial.print("[토양] 온도 "); Serial.println(토양 온도); Serial.print("[토양] 습도 "); Serial.println(토양습도); Serial.println("성공 - 데이터 덤프"); Serial.println("______________________________________________________"); Serial.println("");} 

    이 코드 섹션은 보드에 있는 모든 센서에서 데이터를 수집합니다. 대기 온도 및 습도, 토양 수분 및 온도 및 UV 지수, IR 광값 및 가시광선에 대한 센서와 접촉합니다.

    SD로 데이터 굽기

    bool burnData(문자열 데이터){ Serial.println("데이터 굽기"); Serial.println("______________________________________________________"); Serial.println("SD 카드에 데이터 굽기"); Serial.println(" 확인 - 파일 열기"); 파일 dataFile =SD.open("datalog.csv", FILE_WRITE); if(dataFile) { Serial.println(" OK - 파일이 있습니다."); Serial.print(" 확인 - 추가 "); Serial.println(데이터); Serial.println(" 확인 - 데이터 굽기"); dataFile.println(데이터); // SD 카드에 데이터 굽기 dataFile.close(); Serial.println("성공 - 데이터 추가됨"); Serial.println("______________________________________________________"); Serial.println(""); } else { Serial.println("오류 - 파일이 없습니다."); Serial.println(" OK - 5초 후에 다시 시도"); Serial.println("______________________________________________________"); Serial.println(""); 지연(5000); } 직렬.println("");} 

    이 기능은 이전에 a.csv 파일 라인으로 컴파일된 데이터를 SD 카드에 굽습니다. 데이터는 카드의 파일에 추가됩니다.

    Soracom에 데이터 보내기

    void parseData(String dataToSend){ Serial.println("데이터 보내기"); Serial.println("______________________________________________________"); Serial.println("소라콤에 데이터 보내기"); Serial.println(" 확인 - 연결 설정"); if(client.connect(url, 80)) // 연결 준비 및 형식 send { Serial.println(" OK - 연결 설정, 데이터 구문 분석"); client.println("포스트 / HTTP/1.1"); client.println("호스트:Harvest.soracom.io"); client.println("사용자 에이전트:Arduino/1.0"); client.println("연결:닫기"); client.print("내용 길이:"); client.println(dataToSend.length()); 클라이언트.println(""); client.println(dataToSend); Serial.println(" 확인 - 데이터 구문 분석"); } Serial.println(" OK - 응답 받기"); Serial.println(""); // 서버에서 다시 읽기 while(1) { if(client.available()) { char c =client.read(); Serial.print(c); } if(!client.connected()) { 휴식; } } Serial.println(" 성공 - 데이터가 구문 분석되었습니다"); Serial.println("______________________________________________________"); Serial.println("");} 

    마지막으로 데이터가 Soracom으로 전송됩니다. 장치는 서버와 연결을 설정한 다음 자격 증명을 준비합니다. 그런 다음 데이터가 서버로 전송되고 응답이 직렬 모니터로 인쇄됩니다.

    그런 다음 장치는 단계를 다시 반복하여 정의된 시간 동안 절전 모드로 전환됩니다.

    4단계:변수 설정

    사용자가 프로젝트를 사용하기 전에 몇 가지 변수를 편집해야 합니다. 편집 가능한 변수는 코드의 기본 파일에 있습니다. 아래에 설명되어 있습니다.

    <울>
  • 기기 이름 장치의 사용자 지정 이름을 나타냅니다. 이는 페이로드와 함께 Soracom으로 전송되며, 여러 장치를 관리할 때 장치를 구분하는 데 유용합니다.
  • 수면 시간 장치가 읽기 사이에 절전 모드로 전환되는 시간(밀리초)입니다. 기기는 배터리 소모를 줄이기 위해 읽기 사이에 절전 모드로 전환됩니다.
  • 프로디버그 버그가 발생하면 true로 설정되고 그렇지 않으면 false로 설정됩니다. proDebug가 활성화된 경우 장치가 작동하려면 직렬 모니터가 켜진 컴퓨터에 연결되어야 합니다. 디버깅할 때는 true로 설정하지만 필드에 있는 경우 false로 설정되어 있는지 확인합니다. proDebug가 false인 경우에도 장치는 계속 직렬로 인쇄됩니다.
  • 5단계:SD 카드 설정

    SD 카드는 장치와 함께 사용하기 전에 준비해야 합니다. SD 카드는 FAT 32로 포맷해야 합니다. SD 카드를 준비하려면 아래 단계를 따르세요.

    6단계:코드 업로드

    백엔드를 설정하기 전에 데이터를 백엔드로 보내야 합니다.

    이렇게 하려면 MKR GSM을 컴퓨터에 연결하고 코드를 장치에 업로드하고 이 설정에 대해 장치 모드가 1로 설정되어 있는지 확인하십시오. 코드가 업로드되면 모든 센서를 물에 넣습니다.

    이제 장치의 버튼을 누르고 데이터가 수집 및 전송될 때까지 기다립니다. 이 작업을 몇 번 반복하여 Soracom Air를 채웁니다.

    7단계:Soracom 설정

    이 단계는 2개의 섹션으로 나뉩니다. 첫 번째 섹션에서는 Soracom 계정을 만들고 SIM을 등록하고 다른 섹션에서는 Air에서 데이터를 수집하도록 Soracom Harvest를 설정하는 방법을 다룹니다. 이미 Soracom 계정이 있는 경우 첫 번째 섹션을 건너뛰세요.

    섹션 1:계정 만들기

    섹션 2:그룹 및 수확

    8단계:Soracom Lagoon 설정

    Soracom에서 마지막으로 설정할 것은 Lagoon입니다. 이것은 데이터를 시각화하고 데이터가 좋지 않을 경우 이메일 알림을 생성하는 데 사용할 도구입니다. 아래 단계를 따르세요.

    라이브러리

    <울>
  • ArduinoLowPower (c) 2016 Arduino LLC GNU Lesser General Public License 이 라이브러리는 공개 도메인입니다.
  • MKRGSM (c) 2016 Arduino AG GNU Lesser General Public License 이 라이브러리는 공개 도메인입니다.
  • Wire (c) 2006 Nicholas Zambetti GNU Lesser General Public License 이 라이브러리는 공개 도메인입니다.
  • OneWire (c) 2007 Jim Studt GNU General Public License 이 라이브러리는 공개 도메인입니다.
  • DallasTemperature GNU 일반 공중 라이선스 이 라이브러리는 공개 도메인입니다.
  • RTCZero (c) 2015 Arduino LLC GNU Lesser General Public License 이 라이브러리는 공개 도메인입니다.
  • SPI (c) 2015 Hristo Gochkov Lesser GNU Lesser General Public License 이 라이브러리는 공개 도메인입니다.
  • SD (C) 2010 SparkFun Electronics GNU General Public Licence this library is in the public domain
  • 최종

    Finally I designed an enclosure for the project, it would be preferable if the top of the enclosure would be transparent so that the UV sensor can be placed within the enclosure, I placed my sensor outside the enclosure to prevent any interference.

    Finally, ensure that all the variables are set and then place the device on the field, it should be ready to monitor all parameters now.

    Using an SD Card Module

    I have chosen to use the Arduino MKR MEM shield as it is easy to use and quite compact. An SD card module can also be used though most operate with 5v while the MKR GSM can only provide 3.3v, therefore a level convertor is needed to step up the 3.3v to 5v.

    배경

    I came up with this idea while going on a bus past fields. I remembered reading about new devices used to monitor agricultural fields but I was made aware of the costs which are mostly not affordable for farmers.

    So I decided to use the low cost Arduino to monitor multiple parameters on the farm and allow any farm, big or small to step into the age of IoT and smart farming.

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

    코드

    SmartAgro
    The Full Code

    회로도

    schematics_rrBJ3HiIfc.fzz

    제조공정

    1. Arduino 센서 – 유형 및 애플리케이션
    2. 가정에 무선 센서 네트워크 구축
    3. K30 센서로 CO2 모니터링
    4. 키는 얼마입니까?
    5. Arduino를 사용한 간단한 장애물 센서
    6. Arduino 또는 ESP8266이 있는 정전 용량 지문 센서
    7. Arduino 클라우드 센서 타워
    8. 모션 센서 물총
    9. PHP를 사용하여 Arduino와 통신하는 웹사이트를 만드는 방법
    10. Arduino가 있는 미니 레이더