Easy Module Shield v 1

Код:00795
Артикул:EMS-1
В наличии:есть
650 руб
1
Easy Module Shield v 1

Представляет многофункциональную плату расширения, выполненную в виде шилда для установки на Arduino UNO R3.
Связка Arduino + Ethernet shield позволяет создавать устройства, реализующие концепция Internet of things ("Интернет вещей"), согласно которой доступ к данным датчиков или управление  испонительными устройствами может быть обеспечено из любой точки мира. Но ни плата плата Arduino, ни Ethernet shield не содержат ни датчиков, ни исполнительных устройств. Их надо подключать. Easy Module Shield v 1- это универсальная плата для построения устройств для Интернета вещей (как измерение, так и управление), потому что на ней уже присутствуют  датчики и устройства.

Easy Module Shield

На плате установлены следующие датчики и устройства:

- цифровой датчик температуры и влажности DHT11 (подключен к D4);
- аналоговый датчик температуры LM35 (A2);
- аналоговый датчик освещенности (A1);
- приемник ИК сигналов с пульта (D6);
- динамик для генерации простейших звуковых сигналов (D5);
- две кнопки (D2, D3);
- потенциометр (A0);
- cветодиод синий D13;
- cветодиод красный D12;
- RGB светодиод (D9, D10, D11).

Есть возможность подключения еще одного аналогового датчика (например, датчика влажности почвы) и нескольких цифровых (например цифровой датчик температуры DS18B20).
Также можно подключить устройства с интерфейсом UART (GPS модуль или Bluetooth) и интерфейсом I2C (барометр или гироскоп).

Схема Easy Module Shield v 1

Easy Module Shield

Кроме того выведены разъемы для подключения еще одного аналогового датчика (контакт A3) и нескольких цифровых (контакты D7, D8). К аналоговому входу можно подключить, например датчик влажности почвы SoilMoisture, к цифровому входу можно подсоединить несколько датчиков температуры DS18B20. Также есть возможность подключать устройства с интерфейсом UART (например, GPS модуль или Bluetooth) и интерфейсом I2C (например, барометр или гироскоп).
Рассмотрим пример отправки данных влажности воздуха (DHT11) и температуры воздуха (LM35) с платы Easy Module Shield v 1 в облачный сервис data.sparcfun.com. Это бесплатный сервис для сохранения и отображения данных, отправляемых с IoT-устройств.
Переходим на основную страницу проекта http://data.sparcfun.com.

Easy Module Shield подключение

Для отправки данных в сервис необходимо создать поток. Нажимаем на кнопку CREATE и на открывшейся странице заполняем данные для нашего потока –
Название, описание, названия передаваемых в поток параметров (Fields), теги, местоположение.
Вводим в качестве параметров Fields:
  • dht11_humidity – для показаний влажности воздуха датчика DHT11;
  • lm35_temp – для показаний температуры датчика LM35.
Easy Module Shield  купить
 
 Для сохранения нажимаем кнопку Save. Открывается страница с данными для нашего потока. Для передачи данных с нашего устройства в сервис нам понадобятся следующие данные:
  • Public Key;
  • Private Key.
Формат отправки данных
http://data.sparkfun.com/input/[publicKey]?private_key=[privateKey]&dht11_humidity=[value]&lm35_temp=[value]
Страница для просмотра отправленных данных
https://data.sparkfun.com/streams/LQm5nXj7E1fjONaJLoGw
 
Easy Module Shield библиотека
 
Теперь собираем наше устройство (Arduino + Ethernet shield + Easy Module Shield), подключаем к сети Интернет и загружаем в него скетч (вам необходимо изменить параметры сетевого подключения на свои).
 
// датчик влажности воздуха
#define PIN_DHT 4    
// датчик температуры LM35
#define PIN_LM35 A2   
// dht
#include "DHT.h"
// тип датчика dht
#define DHTTYPE DHT11   
// создать экземпляр DHT
DHT dht(PIN_DHT, DHTTYPE);
 
// Ethernet
#include
#include
// 1-dhcp, 0 - manual
#define DHCP 0   
// mac-адрес Ethernet shield
byte arduino_mac[] = { 0xFF, 0xFE, 0xFB, 0xFA, 0xF9, 0xF8 };
EthernetClient client;
// если адрес статический
// (установить #define DHCP 1)
int mip[4]={192,168,0,121};
int mmask[4]={255,255,255,0};
int mgateway[4]={192,168,0,28};
int mdns[4]={192,168,1,1};
// для data.sparkFun
char server[] = "data.sparkfun.com";   
const String publicKey = "LQm5nXj7E1fjONaJLoGw";
const String privateKey = "A19pd0zJeksbxBNVvnl9";
const byte NUM_FIELDS = 2;
const String fieldNames[NUM_FIELDS] = {"dht11_humidity", "lm35_temp"};
int fieldData[NUM_FIELDS];
 
void setup() {
  Serial.begin(9600);
  // установка сетевого соединения
  ethernet_begin();
  print_ip();
  // инициализация dht11
  dht.begin();
}
 
void loop() {
  fieldData[0]=get_dht11();
  fieldData[1]=get_lm35()-20;
  Serial.print(fieldNames[0]);Serial.print("=");
  Serial.println(fieldData[0]);
  Serial.print(fieldNames[1]);Serial.print("=");
  Serial.println(fieldData[1]);
  sendData();
  delay(30000);
}
 
// запустить ethernet 
void ethernet_begin()
  {
  if(DHCP==1)
    {
    if(Ethernet.begin(arduino_mac)==0)
      Serial.println("dhcp - error");
    else
      Serial.println("dhcp - ok");
    } 
  else
    { 
    IPAddress arduino_ip(mip[0],mip[1],mip[2],mip[3]);
    IPAddress dns_ip(mdns[0],mdns[1],mdns[2],mdns[3]);
    IPAddress gateway_ip(mgateway[0],mgateway[1],mgateway[2],mgateway[3]);
    IPAddress subnet_mask(mmask[0],mmask[1],mmask[2],mmask[3]); 
    Ethernet.begin(arduino_mac, arduino_ip, dns_ip, gateway_ip, subnet_mask);
    }
  }
// вывести ip-адрес
void print_ip()
  {
  Serial.print("My IP address: ");
  for (byte thisByte = 0; thisByte < 4; thisByte++) {
    // print the value of each byte of the IP address:
    Serial.print(Ethernet.localIP()[thisByte], DEC);
    Serial.print(".");
  }
  Serial.println();
  Serial.print("My SUBNET: ");
  for (byte thisByte = 0; thisByte < 4; thisByte++) {
    Serial.print(Ethernet.subnetMask()[thisByte], DEC);
    Serial.print(".");
  }
  Serial.println();
  Serial.print("My GATEWAYIP: ");
  for (byte thisByte = 0; thisByte < 4; thisByte++) {
    Serial.print(Ethernet.gatewayIP()[thisByte], DEC);
    Serial.print(".");
  }
  Serial.println();
  Serial.print("My DNS: ");
  for (byte thisByte = 0; thisByte < 4; thisByte++) {
    Serial.print(Ethernet.dnsServerIP()[thisByte], DEC);
    Serial.print(".");
  }
  Serial.println();
  }
// получить показания с датчика DHT
int get_dht11()
  {
    float fhumidity;
   
    fhumidity=dht.readHumidity();
    if (isnan(fhumidity))
      {
      return 1000;
      }
    return int(fhumidity);
  }
 // получить показания LM35 - датчик температуры
int get_lm35()
  {
    double val=analogRead(PIN_LM35);
    double voltage=val*5.00/1024;
    double temp=voltage*100-273;
   
    return int(temp);
  } 
// отправка данных
 void sendData()
{
  // Подключиться к хосту
  if (client.connect(server, 80))
  {
    // Host: data.sparkfun.comn
    // Connection: closen
    //
    client.print("GET /input/");
    client.print(publicKey);
    client.print("?private_key=");
    client.print(privateKey);
    for (int i=0; i     {
      client.print("&");
      client.print(fieldNames[i]);
      client.print("=");
      client.print(fieldData[i]);
    }
   
    client.println(" HTTP/1.1");
    client.print("Host: ");
    client.println(server);
    client.println("Connection: close");
    client.println();
    client.println();
    client.stop();
    client.flush();
  }
  else
  {
    Serial.println(F("Connection failed"));
    client.stop();
    client.flush();
  }
}
Вывод данных в последовательный порт

Internet of things
 
И на странице https://data.sparkfun.com/streams/LQm5nXj7E1fjONaJLoGw видим отображение поступающих данных.

Умный дом

Скачать данный скетч и библиотеку DHT11

Описание Easy Module Shield v 1  PDF


 
 




 
Вверх