Подключение Arduino Pro Mini + Enc28j60 + DHT11 + DS18B20

Сломалась дома проводная китайская погодная станция. Решил сделать свою. Уже несколько раз смотрел на сервис narodmon.ru да повода не было.

Сервис умеет принимать данные от различных устройств и отображать их на карте. Меня конечно заинтересовала возможность видеть погоду за окном на экране адроида. Это возможно с помощью виджета, который доступен на народном мониторинге.

В конце должно получиться примерно так:

Сначал очень быстро сделал по примерам с сайта «градусник» на базе x-board v2. Это ардуина сразу с портом ethernet на борту. Чип на ней совместим со стандартной библиотекой Ethernet шилдов. Тем, кто мало знаком с ардуино, я рекомендую использовать стандартные ethernet шилды на базе чипа Wiznet. Их единственный недостаток, что они большие. Зато, они легко программируются, под них полно готовых примеров как для web- сервера, так и для клиента. Но я почему-то решил остановиться на меньшем по размеру сетевом модуле на базе Enc28j60 и маленькой Arduino Pro Mini. Намучался с Enc28j60, но теперь все работает. А Arduino Pro Mini — просто сказка!

Что я использовал:

1. Датчик температуры и влажности DHT-11

2. Датчик температуры для улицы DS18B20:

3. Arduino Pro Mini (3.3 вольта — это важно!)

4. Сетевой модуль Enc28j60 для отправки данных в интернет.

5. Макетная плата и соединительные провода.

6. Забыл про то, что плата Arduino Pro Mini (как и x-board) не имеет интерфейса USB для программирования, поэтому понадобится он (мой шел в комплекте с xboard), но они везде продаются отдельно:

Подключение:

Arduino Enc28j60
10 CS
11 SI
12 SO
13 SCK
3.3v 3.3V
GND GND

DHT11 подключаем по схеме как на первом рисунке Через резистор между питанием и дата. Вместо 5в можно использовать 3.3в. Датчик прекрасно работает. Дата пин=6.

DS18B20 так же подключаем через резистор по следующей схеме:

Он работает по протоколу 1Wire и к одному пину ардуины можно подключить несколько датчиков подряд. Аналогично питание датчика берем с 3.3в. Дата пин=2.

Программируем: (обратите внимание, что необходимо указать уникальный MAC адрес сетевого интерфейса, по нему сервис narodmon.ru будет идентифицировать ваше устройство и ip адрес и порт сайта narodmon.ru). По правилам narodmon.ru запрещается публиковать реквизиты на сторонних ресурсах. Посмотреть их можно тут:  В скетче адрес изменен.

static byte mac[] = { 0xE0, 0xCB, 0x11, 0xFF, 0x44, 0x77 }; //В этой строке задайте свой MAC адрес

static byte hisip[] = { 99,99,99,99,8080 };//Здесь надо указать IP адрес сайта narodmon.ru

Скетч для ардуины собирался из разных мест, поэтому в нем присутствует немного бардака. Не нашел описание работы Enc28j60 как клиента. К счастью, есть пример, где используется для этого объект Stash. И он отлично работает. Однако в самой библиотеке, в описании объекта есть фраза о том, что обычно его не надо использовать напрямую. Но мне кажется это единственный способ.

Понадобятся 4 библиотеки:

#include
#include
#include
#include

Они в приложении, в конце поста.

Вот такой график со временем будет на сайте народмон:

PS. Опытный ардуинщик заметит на первом фото радио-трансивер NRF24L01. О том как сделать беспроводной датчик, расскажу в следующем посте.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

wp-puzzle.com logo