메가 2560의 스마트 홈. Arduino를 사용하여 나만의 "스마트 홈" 설계 및 구성

과학과 기술이 활발히 발전하는 시대에 전자 기기는 점점 더 사람들의 삶에 침투하고 있습니다. 점차적으로 사람들이 자신의 손으로 수행하는 모든 기능은 기계의 철판 위에 놓이게 되며, 기계는 종종 더 나은, 더 빠른, 더 나은 품질로 작업을 수행합니다. 스마트 기계의 접근성이 높아지고 있으며 모든 가정에 스마트 기계가 들어갈 때가 다가오고 있습니다.

오늘날 거의 모든 사람은 특정 기본 지식이 있으면 일상 생활에 유용한 일종의 전자 장치를 자신의 손으로 조립할 수 있습니다. 인터넷에는 수많은 주제별 포럼, 자세한 권장 사항이 있는 사이트, 미리 만들어진 계획, 숙련된 디자이너가 공유하는 프로그램 코드. 기본적으로 이러한 집에서 만든 개발은 자신의 삶과 집을 더 쉽게 만들기 위해 만들어졌습니다. 따라서 이들은 특정 정보를 읽을 수 있고 이를 기반으로 특정 기능을 수행할 수 있는 장치인 다양한 컨트롤러가 됩니다. 집(아파트, 방)에 일상 생활의 다양한 측면을 제어할 수 있는 유사한 센서가 장착되어 있는 경우 이러한 집을 "스마트"라고 합니다.

현재 스마트 홈 프로젝트는 전 세계적으로 활발히 논의되고 구현되고 있습니다. 일반적으로 이들은 자원 효율성을 높이고 일상 생활에서 발생하는 모든 프로세스를 최대한 자동화한 주택입니다. 그러한 프로젝트에는 자체 비용과 적용 조건이 있습니다. 자신의 집을 얼마나 스마트하게 만들 수 있는지 이해하기 위해 무엇이 집에 "스마트함"을 주는지 더 자세히 이해해 봅시다.


'스마트' 홈이란 무엇인가요?

가장 극단적인 형태로 말하면, '스마트' 홈은 사람의 일상생활의 모든 영역이 기계에 의해 제어되는 구조입니다. SF 영화에서는 종종 컴퓨터가 사람을 깨우고, 일할 준비를 해주고, 아침 식사를 준비하고, 대화를 나누는 등의 집의 예를 보여줍니다. 불행하게도 기계가 아직 적절한 개발 수준에 도달하지 않았기 때문에 현대의 야심찬 프로젝트는 아직 구현되지 않았습니다. 따라서 그 기능은 집안의 빛, 에너지, 습도, 온도 등을 제어하는 ​​것으로 제한됩니다. 일반적으로 스마트 홈과 관련된 전문 회사의 프로젝트에는 상당한 비용이 듭니다. 큰돈광범위한 소비자에게 제공되지 않습니다. 그러나 언제나 그렇듯이 "스마트"홈을 직접 조립하는 또 다른 방법이 있습니다.


어떻게 해야 하나요?

"스마트" 홈은 단순히 정보를 읽고 이를 기반으로 특정 명령을 실행하는 연결된 센서가 있는 컨트롤러 세트라는 점을 이해해야 합니다. 예를 들어, 난방 컨트롤러. 센서가 특정 수준 이하로 온도가 떨어지는 것을 감지하면 실내에 열 공급을 켭니다. 자동 에어컨은 이 원리로 작동합니다. 그리고 "스마트" 홈에서는 센서가 장착된 컨트롤러가 어디에나 위치하므로 제어를 통해 최대 작업 수를 처리할 수 있습니다. 당연히 자신의 "스마트"집을 만들기 위해 먼저 개선하고 싶은 삶의 영역과 이를 위해 필요한 것이 무엇인지 정확히 고려하여 머릿속에 작은 프로젝트를 개발하게 됩니다.

따라서 집을 더욱 자급자족하게 만들려면 활용할 수 있는 컨트롤러가 필요합니다. 사실 구매하는 것만으로는 충분하지 않습니다. 프로그래밍하고 외부 정보 소스를 연결하고 구성해야합니다. 올바른 직업. 여기서는 특정 분야에 대한 지식 부족 문제가 발생합니다. 왜냐하면 이러한 장치 중 다수는 작동하기가 상당히 복잡하고 해당 장치를 사용할 수 있는 사람이 많지 않기 때문입니다. 그러나 수요가 발생하면(누가 작동하는 전자 장치를 자신의 손으로 조립하고 싶지 않겠습니까?) 그에 상응하는 공급이 나타납니다. 한 회사는 현재 실질적으로 사용자 친화적이고 이해하기 쉬운 제품을 제공하는 가장 인기 있는 공급업체입니다. 전자 기기. 아두이노 회사입니다.

이 시스템을 고려하기 전에 이 시스템에 대한 보편적인 스마트 홈 디자인이 없다는 점을 고려해야 합니다. 각 사용자는 자신만의 고유한 프로젝트를 만들고 자신만의 방식으로 구현합니다. 기술 솔루션. 이것은 아래에서 고려할 시스템의 장점 중 하나입니다.

Arduino 시스템이란 무엇입니까?

Arduino는 이제 편리한 전자 설계자이자 이해하기 쉬운 프로그래밍 환경이며 일반적으로 초보자와 전문가 모두를 위한 자신만의 설계를 생성할 수 있는 편리한 도구입니다. Arduino 플랫폼이 인기 있는 이유는 간단하고 이해하기 쉬운 언어로 프로그래밍되어 있고 프로그램이 USB를 통해 전송된다는 점입니다. 즉, 프로그래머가 필요하지 않습니다. 필요한 장치), 오픈 소스 코드(플랫폼이 생성되는 기반, 소프트웨어 코어, 모든 필요한 프로그램). 오픈 소스 Arduino 자체에서 제공하는 프로그램만 사용하는 것이 아니라 이를 기반으로 자신만의 "수제" 프로그램을 만들 수 있다는 점에서 사용자에게 유용합니다.


Arduino 기술의 본질은 무엇입니까? 이를 통해 일반 컴퓨터는 실제 공간에 "들어가" "느끼기" 시작할 수 있습니다. 이는 일부 수단(주로 무선)을 사용하여 다음에 대한 정보를 전송하는 센서를 통해 달성됩니다. 환경이를 바탕으로 그는 일부 제어 장치 관리에 대해 독립적인 결정을 내릴 수 있습니다. 따라서 이 기술은 거의 모든 것에 구성될 수 있습니다. 동시에 Arduino 제품은 보편적이며 상호 작용할 수 있습니다. 많은 수개인용 컴퓨터와 모바일 장치 모두에서 시스템. 특정 사용자는 작은 보드에서 충전재 자체를 구입하고 조립식 버전으로 추가하거나 필요한 구성 요소와 독립적으로 조립할 수 있습니다. Arduino 보드의 모든 커넥터는 최대한 표준화되어 있어 타사 제조업체가 호환되는 부품을 더 쉽게 생산할 수 있습니다. 모두 소프트웨어무료로 다운로드할 수 있어 인터넷에서 Arduino의 인기가 크게 높아졌습니다.

다양한 포럼과 커뮤니티에서 숙련된 홈 엔지니어는 "Arduino의 다재다능함은 돈, 시간, 신경을 절약하는 데 도움이 될 것입니다."라고 말합니다. 실제로 "스마트" 홈 프로젝트는 훨씬 더 쉬워질 것입니다. 기능이 열등하지 않은 간단하고 저렴한 부품을 다양하게 선택할 수 있다면 비싸고 희귀한 부품을 구입할 필요가 없기 때문입니다. 또한 시스템의 인기도 귀하에게 유리하게 작용합니다. 오늘날에는 전문가와 아마추어 모두가 수행하는 기성 코드, 계획 및 프로젝트가 적극적으로 개발되고 있습니다. 이 모든 것이 모든 취향에 맞는 기능을 찾을 수 있는 거대한 라이브러리로 결합되어 있습니다.


"스마트" 홈은 무엇을 할 수 있어야 합니까?

자신만의 "스마트" 집을 만드는 데 있어 Arduino는 오랫동안 거의 유명해졌으며 자동화 및 원격 제어자신의 삶. 이미 이 기술을 기반으로 하는 "가정" 사용자에 의해 수많은 개발이 이루어졌으며 그 목적은 단순히 조명을 켜고 끄는 것에서부터 복잡한 시스템 LED 컴퓨터처럼요.


우선, 공상과학 소설을 제쳐둔다면, "스마트" 주택이 가져야 할 특성과 가질 수 있는 특성이 무엇인지 결정해야 합니다. 결국, 집 디자인에서는 실제로 실현하기 어려운 것들을 제공할 수 있습니다. 업무용 옷을 자동으로 선택하는 시스템을 찾을 가능성은 거의 없습니다. 포럼과 웹사이트에 대한 조사를 한 후에는 그러한 하우스가 다음을 수행할 수 있어야 한다는 결론에 도달할 수 있습니다.

  1. 조명을 켜고 끄는 것을 제어해야 합니다. 가장 진보적인 개발 벡터에서는 리모콘의 신호나 소리 신호(박수)를 기반으로 전구를 끄는 것이 쉽지 않지만, 예를 들어 아무도 없을 때 자동으로 조명을 끄는 등의 작업을 수행합니다. 집에 있을 때나 집에 있는 사람들이 모두 자고 있을 때.
  2. 집 안의 온도를 조절하세요. 이는 자동화된 컴퓨터와 환기, 난방 및 유사한 시스템의 상호 작용입니다. 여기의 작동 원리는 매우 간단합니다. 센서에 의해 기록되는 온도가 변하면 시스템이 자동으로 켜지거나 꺼집니다. 필요한 장치. 예를 들어, 잠자리에 든 후 온도가 천천히 낮아지고(서늘한 방에서 깊은 단계에서 잠을 자는 것이 더 편안함), 깨어난 후에( 알람이 꺼짐) 반대로 증가합니다(따뜻한 방에서 일어나는 것이 더 즐겁습니다).
  3. 모니터링 외부 환경. 이러한 과학 용어 뒤에는 외부 온도의 정의, 비, 눈 등의 표시가 있습니다. 원칙적으로 모든 날씨 정보는 일부 화면에 표시되거나 다음과 함께 표시될 수도 있습니다. 소리 신호. 디자이너 중 한 명이 비가 오면 사람이 더 천천히 준비하고 직장이나 학교에 가는 데 더 오랜 시간이 걸리기 때문에 비가 올 때 더 일찍 일어나는 아이디어를 제안했습니다.
  4. 출입문 및 출입 통제. 이 범주에는 다음과 같은 상당히 다양한 장치가 포함됩니다. 보안 시스템(종종 이것은 초음파 및 적외선 센서사람이 있어서는 안되는 시간에 사람의 존재를 감지하는 것), 자동 도어 잠금 장치, 다양한 수정이 가능한 전자 잠금 장치(예: 지문 인식 기반) 및 간단한 장치함께 사는 사람이 뒤에서 문을 닫는 것을 잊어버린 경우 자동으로 문을 닫는 것과 같습니다.
  5. 다양한 누출 및 누출에 대한 경고 시스템에는 실내의 연기 및 화재를 감지하는 기능도 포함됩니다. 이러한 시스템은 소방서에 전화를 걸기 시작하는 지점까지 수정될 수 있습니다.
  6. 다른 시스템에는 매우 다양할 수 있습니다. 일반적으로 사용되는 시스템에는 장비 제어(예: 악기, TV 자동 켜기), 다양한 데이터 수집 시스템(예: 장치가 몇 분마다 수족관 물 온도에 대한 정보를 표시함)이 포함됩니다.


언뜻 보면 복잡하고 매우 환상적으로 보이는 이 모든 시스템은 이미 사용자가 집에서 다음을 사용하여 구현하고 있습니다. 아두이노 시스템. 요즘 스마트폰 시대에, 집 안을 제어한다는 아이디어는 휴대폰, 대부분의 경우 이러한 시스템은 운영 체제를 기반으로 생성됩니다. 모바일 시스템 Android는 개발자에게 가장 개방적이고 편리한 도구입니다. 따라서 예를 들어 전화를 걸면 트위터를 사용하여 동물에게 먹이를 주거나 도착하기 전에 방의 난방을 켤 수 있습니다.

따라서 Arduino를 사용하면 집의 거의 모든 개선을 위한 프로젝트를 구현할 수 있다고 말할 수 있습니다. 다양한 소프트웨어 제품과 상호 작용할 수 있는 광범위한 기능과 가장 중요한 시스템의 유연성은 계획을 실현하는 데 탁월한 도구 역할을 합니다.

"사실 Arduino는 프로젝트와 꿈을 실현하는 데 이상적인 도구입니다." 포럼에서 자신의 도시 및 프로젝트를 직접 발표하는 숙련된 디자이너가 말합니다. 시골집, 그들은 스스로 개발하고 구현했습니다.


왜 아두이노인가?

논리적인 질문이 생깁니다. 이러한 모든 시스템을 구입하고 설치 외에도 해당 시스템을 아름답게 설계할 수 있는 전문가에게 설치를 주문할 수 있습니다(예: 동일한 전선 숨기기). Arduino를 사용하여 직접 만드는 이유는 무엇입니까? 대답은 간단합니다. 가격과 편의성의 문제입니다. 일반적으로 이러한 시스템을 전문적으로 설치하는 회사는 구성 요소 및 유사한 장치 자체의 가격과 설치 비용 모두에서 매우 중요한 인상을 받습니다.

물론, 그들은 당신을 위해 모든 것을 해줄 것이고 충분히 빠를 것입니다. 그러나 먼저 당신은 당신의 취향에 맞게 무언가를 바꿀 기회를 잃게 될 것이며 동시에 어떤 종류의 고장이 발생할 경우 무언가를 수리할 것입니다. 거의 편리하게 표준화되고 통합되지 않았으며 사용하기 쉽지 않은 다른 시스템을 사용하십시오. Arduino 보드와 그 구성 요소 및 필요한 추가 부품의 비용은 훨씬 저렴하며 작동 방식을 확실히 이해해야 한다는 점을 고려하면 필요한 경우 고장을 수정하고 필요한 부품을 교체할 수 있습니다. 그리고 자신에게 맞게 시스템을 조정하세요.


동시에 Arduino 플랫폼은 정당한 인기로 인해 수많은 라이브러리를 보유하고 있으며 숙련된 사용자는 의심할 여지없이 모든 종류의 문제 해결을 용이하게 하는 잘 수정된 필수 프로그램 코드를 이미 추가했습니다. 귀하의 "스마트" 프로젝트에 이러한 시스템을 배치하는 과정에서 발생하는 문제입니다.

안녕하세요 여러분. 나는 오랫동안 아무것도 쓰지 않았습니다. 오늘은 데이터베이스에 대해 이야기하겠습니다. 예, 정확히 그들에 관한 것입니다. 이 주제가 관련성이 있게 된 이유는 무엇입니까? 시스템을 구현하는 동안 스마트 홈, 큰 문제에 직면했습니다. 시스템에 새 센서를 추가하는 것입니다. 이는 결국 다음에서 전송되어야 하는 새로운 매개변수와 데이터를 추가하게 됩니다.

모두 새해 복 많이 받으세요! 명절 전날에는 블루투스를 통해 태블릿이나 스마트폰으로 제어되는 새해 화환에 대해 이야기하겠습니다. 프로젝트 구성 요소 목록: RGB LED Arduino 제어 칩이 포함된 리본(화환) 프로 미니블루투스 모듈 안드로이드 기반 태블릿(스마트폰) 다양한 제품 판매 중 RGB 스트립, 다른 칩에. 다음은 우리가 사용할 수 있는 마이크로 회로 목록입니다.

DHT 습도 센서 지난 기사에서는 기존 포토레지스터를 사용하여 욕실 팬을 제어하는 ​​방법을 살펴보았습니다. 이제 스마트 홈 계획에 추가할 시간입니다. 새로운 유형감지기 습도 및 온도 센서 - DHT(핀 9,10). 센서 작업에 대한 설명과 예는 DHT 센서를 사용하여 욕실의 습도를 측정하는 기사에서 찾을 수 있습니다.

모션 센서와 광 센서(포토레지스터)를 사용하여 욕실에서 자동 야간 조명을 수행합니다. 발광 요소로 12v LED 스트립 프로필을 사용합니다. LED 스트립박스 내 모션 센서 포토레지스터(임시 설치) 제어 알고리즘은 매우 간단합니다. 어두워서 모션 센서가 작동되면 백라이트를 잠시 켜주세요. 외출시 케이스도 준비해야 하는데...

마지막 기사를 작성한 후 DS18B20 센서 중 하나가 과열되는 문제가 발생했습니다. 전원을 켠 후 여러 번 지나면 DS 센서의 데이터가 오지 않는다는 것을 알기 시작했습니다. 전체 시스템을 재부팅한 후 센서 중 하나가 35~40도를 나타냈고, 15분 안에 온도가 실제 온도까지 떨어졌습니다. 센서를 새 센서로 교체해 보았으나 소용이 없었습니다. 그럼 어떻게...

스마트 홈 설계의 다음 단계는 환기 제어 장치를 설계하는 것입니다. 180W 부하의 220 네트워크로 구동되는 팬 3개가 있습니다. - 화장실과 결합된 욕실의 팬 - 천장 환기용 주방의 팬 - 스마트 홈 제어 장치 및 데스크탑(PC, 납땜 공간)용 팬 ) 팬은 릴레이를 통해 제어됩니다.

인터넷, 스마트폰, 인터넷 등 기술을 사용하지 않는 현대 생활은 상상하기 어렵습니다. 주방용품및 시스템 스마트 홈" 후자에 아직 익숙하지 않거나 이러한 시스템을 직접 설치하려는 경우 아래 정보가 적합합니다.



태블릿에서 스마트 홈 제어하기

'스마트홈'이란?

대부분의 사람들은 그러한 프로젝트를 구매할 여유가 없습니다. 그러나 스마트 홈의 작동 원리를 익히면 이러한 프로젝트를 직접 개발하고 특수 응용 프로그램을 통해 직접 설치할 수 있습니다.

개념 또는 "스마트 홈"은 간단한 컨트롤러 및 센서 세트로 설명할 수 있습니다. 이러한 장치는 다음과 같이 작동할 수 있습니다. 열 에너지, 그리고 움직임에. 일반적으로 이러한 키트는 집 내부 장비 작동, 통신 및 보안 시스템을 제어합니다. 더 많은 "스마트" 프로젝트도 있습니다. 시스템이 일정에 따라 난방을 켜고 작업을 시작합니다. 가전제품기타 상상해 보세요. 집에 오면 전자레인지를 이용한 따뜻한 저녁 식사와 뜨거운 욕조가 이미 여러분을 기다리고 있습니다. 흥미로운? 그렇다면 스스로하는 것이 합리적입니다.



"스마트 홈"은 간단한 컨트롤러와 센서 세트로 설명할 수 있습니다.

센서와 컨트롤러는 어떻게 작동하나요?

이러한 장비는 정보를 읽고 다음을 사용하여 처리합니다. 특별 프로그램그리고 명령을 보냅니다. 센서는 움직임, 날카로운 소리 또는 온도에 반응할 수 있습니다.

모션 시스템의 가장 간단하고 잘 알려진 예는 다음에서 볼 수 있습니다. 아파트 건물, 계단에 있는 문을 열면 자동으로 조명이 켜집니다. 또한 화재 경보 단지의 모든 건물에서 컨트롤러 또는 센서를 볼 수 있습니다. 온도가 급격히 상승하면 경보가 작동됩니다.

집에 스마트 홈 시스템을 설치하기 전에 이러한 센서를 배치할 프로젝트를 개발해야 합니다. 이러한 유형의 많은 시스템에는 프로그래밍 및 전자 분야에 대한 특정 경험과 지식이 필요하므로 최대한 간단한 장비를 선택해야 합니다.

즉, 초보 사용자에게 적합합니다. Arduino 시스템은 바로 그러한 시스템이라고 부를 수 있습니다. 이 회사는 설치가 쉽고 안정적인 스마트 홈용 시스템을 공급합니다.



Arduino를 포함한 어떤 회사도 스마트 홈 프로젝트를 위한 범용 "스마트" 시스템을 제공하지 않습니다.

스마트 홈을 위한 Arduino 프로젝트 완료

시스템 장점 Arduino는 주로 명확한 인터페이스로 인해 프로그래밍과 거리가 먼 사람들 사이에서 큰 수요가 있습니다.

  • 스마트 홈 시스템의 다음과 같은 장점을 강조하는 것도 유용할 것입니다.
  • 소스 코드가 공개되어 있으므로 자신만의 프로그램을 만들 수 있습니다.
  • 간단한 프로그래밍 언어;

필요한 모든 프로그램은 USB 케이블을 사용하여 전송할 수 있습니다.

따라서 표준 기능 세트를 갖춘 하나의 프로그램만 구입하면 최대한 편리하게 사용자 정의할 수 있습니다.

Arduino Uno용 추가 소프트웨어는 인터넷을 통해 언제든지 무료로 다운로드할 수 있습니다. 일반 PC나 스마트폰을 이용해 전용 애플리케이션을 설치해 시스템을 제어할 수 있다. 센서는 무선 데이터 전송을 사용하여 명령 및 기타 정보를 컴퓨터 또는 스마트폰(태블릿)으로 전송합니다.특수 프로그램을 사용하여 데이터를 처리하고 필요한 명령을 실행합니다.



Arduino 시스템의 주요 센서인 중앙 센서는 직접 구매하거나 직접 조립할 수 있습니다. 보드의 커넥터는 표준 유형입니다. 이는 Arduino Uno 시스템의 구성 요소 선택을 크게 단순화합니다.

Arduino 시스템의 작동 원리

조립에 필요한 재료

  • 자신의 손으로 스마트 홈 프로젝트를 조립하기로 결정한 경우 다음이 필요합니다. 감지기;
  • 아두이노 우노
  • 이더넷 모듈 ENC28J60; 필요한 센서 및 제어아르 자형
  • 에스;
  • 모션 센서;
  • 연선 케이블;
  • 스위치;
  • 계전기;
  • 저항기;

이더넷 모듈용 케이블. 또한 잊지 마세요필요한 도구

인증된 판매점에서 Arduino의 스마트 홈 시스템용 키트를 구입하는 것이 더 좋습니다.

이러한 프로젝트의 작업에는 전기가 포함된다는 사실 때문에 위조품을 사용하는 것은 안전하지 않을 수 있습니다. 시스템 조정에 필요한 모든 프로그램은 인터넷에서 다운로드할 수 있습니다.



센서의 경우 여기에서 집안 온도 조절, 조명 켜기/끄기 등 "스마트" 시스템에 포함되어야 하는 항목 세트를 선택합니다.필수재료

자신의 손으로 "스마트 홈"을 조립하기 위해

설치 과정 Arduino Uno의 스마트 홈에는 다음이 있어야 합니다. LED 램프

. 기존 백열등은 사용하지 않는 것이 좋습니다. 부하를 견딜 수 없습니다.



프로젝트가 준비되면 필요한 컨트롤러와 센서를 Arduino에 연결할 수 있습니다. 이는 사용할 그림이나 다이어그램에 따라 엄격하게 수행되어야 합니다. 모든 접점은 잘 절연되어 있어야 합니다.

Arduino Uno의 '스마트 홈'에는 LED 램프만 있어야 합니다.

  • 일반적으로 작업의 추가 단계는 다음 알고리즘의 형태로 표현될 수 있습니다.
  • 프로그램 코드 설치;
  • 사용된 가젯에 대한 애플리케이션 구성
  • 라우터에서의 포트 전달;
  • 테스트;

편집(필요한 경우)

필요한 소프트웨어가 포함된 아카이브가 인터넷에서 다운로드되어 사용된 장비에 설치됩니다. 신뢰할 수 있는 소스에서 다운로드하는 것이 좋습니다. 모든 파일의 압축을 푼 후에는 애플리케이션에서 페이지를 새로 고치거나 장치 자체를 다시 시작해야 합니다. 응용 프로그램은 다음의 정보를 표시합니다.설치된 센서



. 필요한 경우 IP 주소 설정을 변경하고 경보를 활성화/비활성화할 수 있습니다. 동일한 응용 프로그램이 데이터를 귀하에게 전송합니다.

윈도우용 아두이노 프로그램

라우터 작업 라우터에서 포트를 열어야 합니다.

  • 이렇게 하려면 다음 단계를 따르세요.
  • 라우터 구성을 엽니다.
  • Arduino IP 주소를 등록하십시오.

포트 80을 열어주세요.



그런 다음 새 주소에 도메인 이름을 할당합니다. 이제 직접 만든 프로젝트 테스트를 시작할 수 있습니다.

라우터를 올바르게 설정하는 것이 성공의 열쇠입니다

이러한 종류의 프로젝트에서는 시스템이 인터넷을 통해 쉽게 해킹될 수 있으므로 공용 IP 주소를 사용할 수 없다는 점에 유의해야 합니다.

또한 Arduino는 다양한 프로그램 코드를 가진 수많은 라이브러리를 가지고 있는 이러한 종류의 몇 안 되는 시스템 중 하나라는 점에 유의해야 합니다. 따라서 인터넷을 통해 직접 손으로 조립하는 것은 어렵지 않습니다. 모든 구성요소를 구입하고 기성품이며 테스트된 프로그램 코드를 선택하기만 하면 됩니다.

다시 한번 안녕하세요, Habrozhiteliki! 매일 Habr을 읽으면서 Arduino와 이를 기반으로 한 DIY 프로젝트에 대한 기사를 반복적으로 접했습니다. 나는 전자 제품과 아무 관련이 없으며 내 전체 경험은 Ogonyok 십대 클럽 (Petrozavodsk)을 기반으로 한 라디오 서클을 방문하는 것으로 구성되었습니다. 어느 날 아두이노를 이용해 스마트폰(BT통신)용 센서(온도, 압력, 맥박)가 달린 팔찌를 만들기로 했는데요, 주문을 잘못해서 아두이노 본체와 압력센서만 왔습니다. 보드를 테스트하기 위해 가장 가까운 라디오 부품 매장에 가서 LED를 구입했는데, 거기에 자석식 도어 닫힘 센서가 눈에 들어왔습니다. 그는 나에게 방(아파트와 혼동하지 말 것)에서 생활하는 것이 조금 더 나아질 수 있다는 생각을 주었습니다. 시간을 낭비하지 않고 여러 센서를 사용하여 Ali에 주문했고 아두이노 메가.

신사용 센서 세트(온도, 습도, 릴레이, StarterKit, BT, 시계, 범위 측정기, IR 센서)를 주문한 후 다른 사람들이 스마트 홈을 어떻게 상상하는지 알아보기로 결정했습니다. 대부분은 샹들리에 제어와 따뜻한 바닥, 정말 멋진 기사가 있었지만. 가스나 누출 센서와 같이 아파트에 일반적인 기능 중 일부는 방에서 불필요한 것이었습니다. 스마트룸에 필요한 기능을 직접 만들기로 결정했습니다.

  • 조명 제어
  • 온도 조절
  • 다양한 방법으로 관리하세요
  • 도어 제어
  • 온도 모니터링
  • 기상 모니터링

필요한 모든 센서가 이미 주문되었으며 남은 것은 기다리는 것 뿐인 것으로 나타났습니다. 이제 모든 센서가 도착했습니다!

첫 번째 단계

이미 LED를 깜박이고 스마트 홈을 조립하기로 결정했다면 논리적인 단계는 방의 조명을 깜박이는 것이지만 초기 열기로 인해 온도 제어를 시작해야 했습니다. 우선 StarterKita에서 dht11을 연결해 보았습니다. 인터넷에 지침이 가득하다면 이보다 더 간단한 것은 무엇일까요? 결과적으로 dht11을 연결하기 위한 라이브러리가 많이 있지만 모두가 호환되는 것은 아닙니다. 최신 버전 IDE이지만 몇 시간 후에 콘솔에 표시된 온도에 감탄했고 몇 분 후에는 온도에 따라 LED가 깜박였습니다. (센서를 분리하고, 냉장고에 넣고, 냉장고에서 꺼내서 연결하고...)

첫 번째 문제는 선택한 dht11의 낮은 정확도였습니다. 양방향으로 2-3도 기울어져 있었습니다. 교체해야 했습니다(그 후 여러 버전의 센서를 주문하려고 합니다).

그러다가 LeroyMerlin에 가서 아주 간단한 선풍기를 샀어요. 몇 분 동안 전선과 플러그를 만지작거린 후 팬이 조립되었습니다. 이웃과 함께 창문을 떼어내고 빈 공간에 창문(이웃이 아닌 선풍기)을 설치했습니다. 플러그를 소켓에 꽂았더니... 팬이 회전하기 시작했습니다. 느리게. 매우 느립니다.
말할 필요도 없이 플러그를 잘못 꽂았는데 바람 때문에 팬이 돌더군요.


물론 수동 전류 차단도 가능합니다. 그렇다면 릴레이를 통해 팬을 제어하는 ​​가장 좋은 방법은 무엇일까요? 팬에 직접 연결하시겠습니까? 나는 소켓을 통해 팬을 릴레이에 연결하기로 결정했습니다. 이는 시스템에 유연성을 제공합니다(팬을 다른 것으로 교체할 수 있음).

환기 테스트

이제 코드가 LED에서 릴레이로 다시 작성되었습니다. 펌웨어가 로드되면 시작하는 데 필요한 온도를 예상하여 온도를 모니터링합니다. 이제 그 순간이 왔습니다! 릴레이가 클릭되고 COM 포트가 사라집니다. 분명히 전환하는 순간 USB의 부하가 증가하고 데이터 간섭이 발생합니다. 처음에는 220V 전선의 간섭 때문인 줄 알았는데 보드에서 충분한 거리에 위치해 있습니다. 결과적으로 이로 인해 많은 문제가 발생했습니다. 새 스케치를 업로드하려고 하면 Arduino가 재부팅되고 릴레이가 전환되어 COM 포트가 제거되어 업데이트 프로세스가 제거됩니다. 나는 이 문제를 결코 극복할 수 없었다.

원격 제어

물론, 팬을 계속해서 작동시키는 것은 곧 지루해졌고, 스위치를 통해 끄는 것은 쿨하지 않았습니다! 그래서 거기에서 스타터 키트와 리모콘을 꺼냈습니다. 사실 그 순간부터 문제가 발생하기 시작했습니다. 수신기가 어떻게 생겼는지 전혀 몰랐습니다. 하지만 몇 분 동안 인터넷 검색을 해서 그것을 찾는 데 도움이 되었고, 또 한 시간 후에는 즐겁게 리모컨으로 팬을 제어하고 있었습니다.

처음에는 플래그가 여러 개인 복잡한 알고리즘이었지만 결국에는 작은 결과를 얻었습니다.

타이머가 있는 알고리즘

만약 (신호 도착)
manual_control_time = 1800;
팬_모드 =! 팬_모드;
}
If (manual_control_time!= 0)(
manual_control_time--;
)그렇지 않으면(
만약(온도< 26){
팬_모드 = 거짓;
)그렇지 않으면(
fan_mode = 사실;
}
}


그러나 여기에도 문제가 있었습니다. 전선을 업데이트하는 동안 DATA에 5V를 적용했는데 매우 빨리 수신기가 손실되었습니다. 이것이 나를 다음 단계로 이끌었습니다.

BT 모듈을 통한 제어

곧 HC-06 BT 모듈을 연결하고 출력을 거기로 리디렉션하고 명령 읽기를 추가했습니다. 훨씬 어려울 줄 알았는데 로보크래프트 기사 덕분이에요.

효과가 있었어



이웃과 팬

이웃에게 스마트폰으로 시스템을 제어하도록 가르쳐주면 '야 추워' 문제가 해결될 거라 생각했는데... 스위치를 통해 팬의 전원을 끄는 건 참을 수 있었는데, 팬을 닫는다. 창문이 나를 미치게 만들었어요. 왜? 팬이 몇 센티미터 떨어진 유리창에 불어와 몹시 윙윙거렸다. 다행히 주변에 자기 센서가 있어서 시스템을 만들게 되었습니다. 단락된 센서는 Arduino에 팬을 켜서는 안 된다는 신호를 보냅니다. 아쉽게도 가끔 간섭이 있어서 간단한 확인을 해야만 했습니다. 닫힘 신호가 여러 번 연속으로 오면 창이 정말 닫혀 있는 것입니다.


조명 제어

이제 우리는 빛을 제어할 수 있습니다. 팬 뒤에는 복잡한 것이 없습니다. 상자, 두 개의 터미널 블록 및 조명은 이미 Arduino를 통해 제어됩니다(물론 기존 스위치를 통해 끌 수 있음). 나의 유일한 관심사는 릴레이가 전구를 제어하는 ​​가장 좋은 방법이 아니라는 것입니다.

사운드 문제

글쎄, 박수를 치지 않고 어떤 종류의 조명 제어가 있습니까? 마이크를 주문했습니다. 그게 제가 생각한 것입니다... 미경험에 대해 기억하시나요? 실제로 수동으로 임계값을 설정하는 소리 감지기를 주문했습니다. 내 목적에 적합한 것 같나요? 그러나 몇 가지 "그러나"가 있었습니다.
  • 작은 작동 반경: 박수는 단 10cm에서만 처리됩니다.
  • 짧은 신호 지속 시간: 긴 코드 실행 시간으로 인해 센서의 신호가 Arduino에서 감지될 시간이 없었습니다.

리모컨 반납

약간의 인터넷 검색, 매장 방문 및 소진된 VS1838B 대신 더 안정적인 TSOP1836을 구입했습니다. 이번에는 설치가 성공적이었고 모든 것이 즉시 작동했습니다.


밖으로 나가기

창문을 알아냈는데 그 뒤에는 무엇이 있나요? 납땜 인두로 무장하고 레인 센서와 또 다른 dht11을 5미터 VGA 케이블에 납땜했습니다. U자형 패스너 몇 개, 검정색 전기 테이프, 이끼 및 시스템이 전투 임무를 수행할 준비가 되었습니다.


또한 러시아어 텍스트를 표시할 수 있다는 것도 배웠습니다.

그것은 되었다



약간의 편리함

스마트폰은 항상 손에 있는 것 같지만 찾을 때까지, 연결할 때까지... 때로는 스위치를 통해 조명이나 팬을 끄는 것이 더 빠르지만 이로 인해 Arduino를 통한 제어가 불가능해집니다(임펄스 릴레이는 너무 비싸요) 그래서 일반 버튼 두 개를 추가했습니다.

약간의 안전

기술자 기숙사에 화재경보기가 없는 곳이 어디 있겠습니까? 경험이 없어서 연기감지기가 아닌 화재감지기를 구매했습니다. 물론 최대 30cm 거리에서 불타는 성냥을 감지하는 것은 멋지지만 충분하지 않습니다. 그래서 지금은 그것 없이 지냈어요.

기숙사 화재경보기 얘기가 나와서 말인데...


  • 가끔 사이렌이나 죽은 사람의 쌕쌕거림을 내는 스피커
  • 지역 연기 감지기
  • 네트워크 연기 감지기(보안 콘솔에 연결됨)

일반보기







컴퓨터 케이스에 놓으면 큰 단점이 있습니다. 단락. 따라서 곧 보드가 개인 선반으로 이동하고 판지 대신 HDD 케이스로 만든 수제 케이스가 생길 것입니다.

스케치 코드

현황

#포함하다
#포함하다
#포함하다
#포함하다
#define DHT_PIN 2 //온도계 핀...
#define DHT2_PIN 52 //실외 온도계 핀...
#define RAIN_PIN 53 //레인 센서 핀
#define RECV_PIN 3 //IR 수신기 연결용 핀
#define FAN_PIN 4 //릴레이 연결 핀
#define LAMP_PIN 5 //릴레이 연결 핀
#define SOUND_PIN A0 //마이크 연결 핀
#define WINDOW_PIN A1 //창 핀

#define LAMP_BUT_PIN 50 //마이크 연결 핀
#define FAN_BUT_PIN 51 //창 핀

#DHTTYPE DHT11 정의

#TIMER_FAN 0 정의
#TIMER_WINDOW 1 정의

IRrecv irrecv(RECV_PIN);
decode_results 결과;
정수 타이머;
bool FAN_FLAG = 거짓;
bool LAMP_FLAG = 참;
int WINDOW_VAL = 0;

부울 WINDOW_OPEN = 거짓;
부울 WINDOW_FLAG = 거짓;
bool RAIN_FLAG = 거짓;

Char 수신바이트;

DHT dht(DHT_PIN, DHTTYPE);
DHT dht2(DHT2_PIN, DHTTYPE);

DS1302 rtc(49, 46, 48);
무효 설정() (
Serial1.begin(9600);

Rtc.halt(false);
rtc.writeProtect(false);
//rtc.setDOW(일요일); // 요일을 금요일로 설정
//rtc.setTime(0, 37, 40); // 시간을 0:37:00(24시간 형식)으로 설정합니다.
//rtc.setDate(25, 5, 2014); // 날짜를 5월 25일로 설정

타이머 = 0;
타이머 = 0;

핀모드(RAIN_PIN, INPUT);
pinMode(LAMP_BUT_PIN, INPUT);
pinMode(FAN_BUT_PIN, INPUT);

핀모드(FAN_PIN,OUTPUT);
핀모드(LAMP_PIN,OUTPUT);

디지털쓰기(FAN_PIN,LOW);
irrecv.enableIRIn(); // 수신기를 켭니다.

Dht.begin();
dht2.begin();
}
정수 볼륨;
무효 루프() (
WINDOW_VAL = 아날로그읽기(WINDOW_PIN); //자기 센서
if(WINDOW_VAL > 950)(
if(WINDOW_FLAG)(
타이머++;
if(타이머>10)(
WINDOW_OPEN = 거짓;
}
)또 다른(
WINDOW_FLAG=참;
}
)또 다른(
WINDOW_OPEN = 사실;
WINDOW_FLAG = 거짓;
타이머=0;
}

If(디지털읽기(RAIN_PIN)==HIGH)(
RAIN_FLAG=참;
)또 다른(
RAIN_FLAG=거짓;
}

볼륨 = 아날로그읽기(SOUND_PIN);
if(볼륨<40){
LAMP_FLAG = !LAMP_FLAG;
}

If(디지털읽기(LAMP_BUT_PIN)==HIGH)(
입력_신호(1);
}
if(digitalRead(FAN_BUT_PIN)==HIGH)(
입력_신호(0);
}

If (irrecv.decode(&결과))
{
if (results.value == 16750695) //버튼 코드
{
입력_신호(0);
}
if (results.value == 16756815) //버튼 코드
{
입력_신호(1);
}
irrecv.resume(); //다음 값을 구한다
}
//Serial.println(rtc.getTime().hour);
//Serial.println(rtc.getTime().min);
Serial1.print(rtc.getDOWStr());
Serial1.print(" ");
Serial1.print(rtc.getDateStr());
Serial1.print(" - ");
Serial1.println(rtc.getTimeStr());

If (Serial1.available() > 0) (
수신바이트 = Serial1.read();
if(incomingByte == "0") (
Serial1.println("수동 모드 비활성화됨");
입력_신호(0);
)else if(incomingByte == "1") (
Serial1.println("수동 모드 활성화");
입력_신호(0);
)else if(incomingByte == "2") (
입력_신호(1);
}
}

플로트 h = dht.readHumidity();
float t = dht.readTemperature();

If (isnan(t) || isnan(h)) (
Serial1.println("내부 온도계 판독 오류");
) 또 다른 (
if(타이머<=0){
만약 (t<26){
FAN_FLAG = 거짓;
) 그렇지 않으면 (t>26)(
FAN_FLAG = 참;
}
)또 다른(
타이머--;
}
Serial1.print(h);
Serial1.println(“ %\t”);
Serial1.print(t);
Serial1.println(“ *C”);
}

If(타이머>0)(
Serial1.print("수동 모드는 계속 작동합니다: );
Serial1.print(타이머);
Serial1.println("초");
)또 다른(
Serial1.println("수동 모드 비활성화");
}
if (FAN_FLAG && WINDOW_OPEN)(
digitalWrite(FAN_PIN,HIGH);
Serial1.println("팬 켜짐");
)또 다른(
digitalWrite(FAN_PIN,LOW);
Serial1.println("팬 꺼짐");
}

만약(WINDOW_OPEN)(
Serial1.println("창이 열려있습니다.");
)또 다른(
Serial1.println("창이 닫혔습니다.");
}

만약(LAMP_FLAG)(
디지털쓰기(LAMP_PIN,HIGH);
)또 다른(
digitalWrite(LAMP_PIN,LOW);
}

H = dht2.readHumidity();
t = dht2.readTemperature();
Serial1.println("창 밖:");
if (isnan(t) || isnan(h)) (
Serial1.println("실외 온도계 판독 오류");
) 또 다른 (
Serial1.print("습도: );
Serial1.print(h);
Serial1.println(“ %\t”);
Serial1.print("온도: );
Serial1.print(t);
Serial1.println(“ *C”);
}
if (RAIN_FLAG) (
Serial1.println("비 없음");
)또 다른(
Serial1.println("비");
}

Serial1.println("*****");
지연(100);
}

무효 input_signal(int 신호)(
스위치(신호)(
사례 0:
if(rtc.getTime().hour> 1 && rtc.getTime().hour< 8){
타이머 = 1800;
)또 다른(
타이머 = 18000;
}
FAN_FLAG = !FAN_FLAG;

Serial1.println("팬이 전환됨");
부서지다;
사례 1:
LAMP_FLAG = !LAMP_FLAG;
Serial1.println("조명 스위치");
부서지다;
}
}

코드에 결함이 있으면 어떻게 되나요?

정상적으로 닫힌 릴레이를 사용하고 있습니다. 즉, 기본적으로 모든 것이 켜져 있습니다. Arduino를 네트워크에서 연결 해제하고 간단한 스위치를 사용할 수 있습니다.

개발 계획

제가 나열한 것은 진정한 스마트룸의 기초일 뿐입니다. 결국 모든 AI는 온도에 따라 팬을 켜고 끄는 것입니다. 나는 방을 더 편안하고 "자립적"으로 만들기 위해 다음을 계획하고 있습니다.
경보
시스템에 시계를 추가하면 다음 알람 시계가 그 다음 줄에 추가됩니다. 신호로 피에조 신호음, 표시등 깜박임 및 팬 켜기라고 가정합니다. 물론, 밖에 비가 오면 일찍 일어나게 됩니다(이동 속도 -10).

이러한 모듈을 사용하여 SD 카드에 경보를 저장하는 시스템을 추가합니다(정전 시).

컴퓨터 및 스마트폰용 애플리케이션 + 위젯
스마트폰이나 컴퓨터로 제어할 수 없는 스마트홈이란?

나는 다음과 같은 것을 추측하고 있습니다 :


Wi-Fi는 왜 안되나요? 너무 비싸요.

Arduino 자체 전원 공급 장치 출력
댓글은 불필요하다고 생각합니다. USB가 소진될 위험이 있고 다른 장치에 대한 지속적인 간섭이 있습니다. 또한 보드의 전원을 특수 어댑터로 전달하고 싶습니다.
콘센트를 통해 라우터 제어
오래된 Asus RT56U는 특히 여름에 워밍업을 좋아합니다. 그래서 밤에 몇 시간 동안 자동으로 전원이 꺼지도록 하고 싶습니다.
존재감 모니터링 추가
저는 현재 오래된 초전형 적외선 센서와 초음파 거리 센서 두 개를 가지고 있습니다. 이는 간단한 존재 제어에 충분할 수 있습니다.

두 사람이 방에 살고 있습니다. 각각에는 4가지 상태가 있습니다.

  • 컴퓨터에서
  • 소송 비용
  • 침대에 누워
  • 결석한

적외선 센서는 실내의 존재를 감지하고, 초음파 센서는 구역(침대/테이블)의 존재를 감지하여 출입하는 사람의 수를 모니터링합니다.

이를 통해 가장 간단한 시나리오를 구현할 수 있습니다.

  • 저녁에 왔는데 이웃이 자지 않고 있어요. 불을 켜주세요
  • 모두 떠났다: 불을 꺼라
  • 모두 누워서 움직이지 않는다: 불을 꺼라
감광성 저항기 추가
장르의 고전: "At the Computer" 구역에 방에 누군가가 있고 방이 어두우면 자동으로 조명이 켜집니다.
추가하다 전기 기계식 잠금 장치그리고 더 가까이
당신은 어떨지 모르겠지만, 저는 항상 열쇠를 찾기에는 너무 게을러서 근접 카드 판독기나 지문 센서와 결합된 전자 기계식 잠금 장치를 꼭 설치하고 싶습니다. 호스텔 입장은 전자 패스를 사용하여 이루어집니다. 주파수를 알고 Arduino용 리더기를 쉽게 주문할 수 있지만 카드는 복제하기가 매우 쉽기 때문에(저도 이를 위한 장치가 있습니다) 때가 되면 지문 손가락에 정착할 가능성이 높습니다.

이웃은 종종 부엌/화장실/욕실에 들어가 문을 닫지 않습니다. 나는 입구 반대편에 앉아 있는데 지나가는 사람들이 모두 내 팬티를보고 방의 성향을 생각하는 것이 마음에 들지 않습니다. 제어식 도어 클로저는 이러한 상황에 대한 탁월한 솔루션이 될 것입니다.

창을 업그레이드하세요
이미 쓴 것처럼 온도가 특정 한도를 넘으면 팬이 켜집니다. 하지만 방에 아무도 없고 온도가 이미 20도 미만이라면 어떻게 될까요? 시스템에 창 열기/닫기를 추가하고 싶습니다. 아마도 단순한 모터 + 낚싯줄이 될 것입니다.

전구를 식힌 뒤 켜면 폭발할 확률이 높다고 알려져 있다. 이렇게 하면 신경과 전구도 보호할 수 있습니다.

온도 조절 시스템에 도달하지 못한 전구


DHT11 교체
이미 쓴 것처럼 센서 등을 이해하지 못합니다. 그래서 저는 제가 처음으로 접한 온도 센서인 dht11을 구입했습니다. 이제 방의 경우 dht22로, 거리의 경우 dht21로 바꾸고 싶습니다. dht22는 오류가 더 작으며 dht21은 거리에 중요한 음의 온도와 보호 하우징을 지원합니다. dht11 거리는 이미 때때로 길을 잃기 시작했습니다.
학생 태그 추가