Электронный компонент:Seeeduino Ethernet

Материал из Онлайн справочника
Перейти к: навигация, поиск

Перевод: Максим Кузьмин (Cubewriter)
Перевел 1852 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Ambox content.png Черновик


Seeeduino Ethernet[1]

Seeeduino ethernet-2.jpg

Seeeduino Ethernet – это компактная и многофункциональная плата, спроектированная на базе микроконтроллера MEGA328P (позволяет работать с платой аналогично Arduino) и модуля Wiz5100 (обеспечивает Ethernet-коммуникацию при помощи протоколов TCP и UDP). Кроме того, Seeeduino Ethernet оснащена модулем для SD-карты, что делает ее подходящей для проектов, где используется запись логов, а также обработка данных и их передача по сети.

В новой версии, как пишут разработчики, был уменьшен вес разъема RJ45, чтобы уравновесить плату с гребешками контактов. Кроме того, плата оснащена двумя контроллерами Grove, обеспечивающими коммуникацию через I2C и UART.

Купить плату Seeeduino Ethernet можно по этой ссылке.

Характеристики

Как пользоваться

Этот раздел расскажет, как использовать Ethernet-функции Seeeduino для записи/считывания информации с SD-карты, а также отправлять по сети цифровые/аналоговые данные.

Seeeduino ethernet-1.jpg

Шаг 1: Настройка оборудования

Сначала нужно подключить питание. Сделать это можно двумя способами.

Способ 1.

Воспользоваться одним комплектом пассивных PoE-кабелей (от «power over ethernet», что значит «питание по Ethernet»). Это позволит одновременно питать плату и обеспечить Ethernet-соединение с нею.

Подробнее смотрите на картинке ниже:

Seeeduino ethernet-3.jpg

Способ 2.

Воспользоваться отдельными кабелями для питания и Ethernet-коммуникации.

Seeeduino ethernet-4.jpg

Шаг 2: Программирование

Теперь давайте протестируем код. Ниже показан скетч, цель которого – протестировать функции записи и считывания данных с SD-карты, а также отправки аналоговых/цифровых данных по сети. Кроме того, этот скетч можно использовать в качестве отправной точки для тестирования других функций платы.

Примечания:

  1. Все заголовочные файлы (т.е. файлы с расширением «*.h») были предустановлены в IDE Arduino (1.0)
  2. Вставьте карту MicroSD. Убедитесь, что ее объем не израсходован, а также в том, что она отформатирована в FAT/FAT32. Форматирование лучше выполнить при помощи программы SD Formatter (ссылку на нее ищите ниже, в разделе «Полезные ссылки»)
  1. /*
  2.  
  3. Считывание и запись данных на SD-карту
  4.  
  5. Этот скетч-пример показывает, как считывать и записывать данные
  6. в файл, записанный на SD-карту.
  7.  
  8. Цепь:
  9.  
  10. * SD-карта, подключенная к шине SPI:
  11.    * Контакт MOSI – к контакту 11
  12.    * Контакт MISO – к контакту 12
  13.    * Контакт CLK – к контакту 13
  14.    * Контакт CS – к контакту 4
  15.  
  16. Веб-сервер
  17.  
  18. Простой веб-сервер, который показывает значения
  19. на входных аналоговых контактах
  20. при помощи шилда Arduino Wiznet Ethernet Shield.
  21.  
  22. Цепь:
  23.  
  24. * Ethernet-шилд, подключенный к контактам 10, 11, 12 и 13
  25. * Входные аналоговые контакты,
  26.   подключенные к контактам A0-A5 (опционально)
  27.  
  28. Создан 18 декабря 2009 года Дэвидом А. Меллисом (David A. Mellis),
  29. модифицирован 4 сентября 2010 года Томом Иго (Tom Igoe).
  30.  
  31. */
  32.  
  33. #include <SD.h>
  34. #include <SPI.h>
  35. #include <Ethernet.h>
  36.  
  37. //  вводим MAC-адрес и IP-адрес своего контроллера;
  38. //  IP-адрес зависит от вашей локальной сети:
  39. byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
  40. IPAddress ip(192,168,1,177);
  41.  
  42. //  инициализируем библиотеку «EthernetServer»
  43. //  при помощи IP-адреса и порта, которые мы хотим использовать
  44. //  (порт 80 используется для HTTP по умолчанию):
  45. EthernetServer server(80);
  46.  
  47. File myFile;
  48.  
  49. void setup()
  50. {
  51.     Serial.begin(9600);
  52.     Serial.print("Initializing SD card...");
  53.              //  "Инициализация SD-карты..."
  54.     //  на Ethernet-шилде CS-контактом является контакт 4,
  55.     //  и по умолчанию он выставлен в режим вывода данных (OUTPUT);
  56.     //  если вы не используете CS-контакт, аппаратный SS-контакт
  57.     //  (на большинстве Arduino это контакт 10, на Mega – контакт 53),
  58.     //  все равно нужно выставить на OUTPUT,
  59.     //  иначе функции библиотеки «SD» просто не будут работать:
  60.     pinMode(10, OUTPUT);
  61.     // pinMode(4,OUTPUT);
  62.     if (!SD.begin(4)) {
  63.         Serial.println("initialization failed!");
  64.                    //  "Инициализация не удалась!"
  65.         return;
  66.     }
  67.     Serial.println("initialization done.");
  68.               //  "Инициализация прошла успешно."
  69.  
  70.     //  откройте файл; одновременно может быть открыт
  71.     //  только один файл, поэтому перед открытием нового файла
  72.     //  нужно закрыть предыдущий:
  73.  
  74.     myFile = SD.open("test.txt",FILE_WRITE);
  75.     // если файл открыт или создан, то все окей, пишем на него:
  76.     if (myFile) {
  77.         Serial.print("Writing to test.txt...");
  78.                  //  "Запись на test.txt..."
  79.         myFile.println("testing 1, 2, 3.");
  80.                    //  "проверка 1, 2, 3."
  81.         // закрываем файл:
  82.         myFile.close();
  83.         Serial.println("done.");  //  "готово."
  84.  
  85.     } else {
  86.         // если файл не открыт, сообщаем об ошибке:
  87.         Serial.println("error opening test.txt");
  88.                    //  "ошибка с открытием test.txt"
  89.  
  90.     }
  91.  
  92.     // снова открываем файл – на этот раз для чтения:
  93.     myFile = SD.open("test.txt");
  94.     if (myFile) {
  95.         Serial.println("test.txt:");
  96.  
  97.         // читаем файл, пока не дойдем до конца:
  98.         while (myFile.available()) {
  99.             Serial.write(myFile.read());
  100.         }
  101.         // закрываем файл:
  102.         myFile.close();
  103.     } else {
  104.         // если файл не открыт, сообщаем об ошибке:
  105.         Serial.println("error opening test.txt");
  106.                    //  "ошибка с открытием test.txt"
  107.     }
  108.     // запускаем Ethernet-коммуникацию и сервер:
  109.     Ethernet.begin(mac, ip);
  110.     server.begin();
  111. }
  112. unsigned char buff[6];
  113. void loop()
  114. {
  115.     EthernetClient client = server.available();
  116.     if (client) {
  117.         boolean currentLineIsBlank = true;
  118.         while (client.connected()) {
  119.             if (client.available()) {
  120.                 char c = client.read();
  121.                 //  если дошли до конца строки
  122.                 //  (т.е. получили символ новой строки),
  123.                 //  и эта строка пуста, то это значит,
  124.                 //  что мы достигли конца HTTP-запроса;
  125.                 //  следовательно, можно отправлять ответ:
  126.                 if (c == '\n' && currentLineIsBlank) {
  127.                     //  отправляем заголовок стандартного HTTP-ответа:
  128.                     client.println("HTTP/1.1 200 OK");
  129.                     client.println("Content-Type: text/html");
  130.                     client.println();
  131.  
  132.                     //  показываем значение
  133.                     //  всех входных аналоговых контактов:
  134.                     for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
  135.                         client.print("analog input ");
  136.                                  //  "входной аналоговый контакт "
  137.                         client.print(analogChannel);
  138.                         client.print(" is ");
  139.                                  //  " имеет значение "
  140.                         client.print(analogRead(analogChannel));
  141.                         client.println("<br />");
  142.                         buff[analogChannel] = analogRead(analogChannel);
  143.                     }
  144.                     break;
  145.                 }
  146.                 if (c == '\n') {
  147.                     // начинаем новую строчку:
  148.                     currentLineIsBlank = true;
  149.                 }
  150.                 else if (c != '\r') {
  151.                     // на текущей строчке есть символ:
  152.                     currentLineIsBlank = false;
  153.                 }
  154.             }
  155.         }
  156.         // даем веб-браузеру время на прием данных:
  157.         delay(1);
  158.         // закрываем соединение:
  159.         client.stop();
  160.         myFile = SD.open("test.txt", FILE_WRITE);
  161.         if (myFile) {
  162.             Serial.println("test.txt:");
  163.             for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
  164.                 myFile.print("analog input ");
  165.                          //  "входной аналоговый контакт "
  166.                 myFile.print(analogChannel);
  167.                 myFile.print(" is ");
  168.                          //  " имеет значение "
  169.                 myFile.println(analogRead(analogChannel));
  170.             }
  171.             //  читаем файл, пока не прочитаем все содержимое:
  172.             myFile.close();
  173.         }
  174.         else {
  175.             //  если файл не открыт, сообщаем об ошибке:
  176.             Serial.println("error opening test.txt");
  177.                        //  "ошибка с открытием test.txt"
  178.         }
  179.  
  180.         myFile = SD.open("test.txt");
  181.         if (myFile) {
  182.             Serial.println("test.txt:");
  183.  
  184.             //  читаем файл, пока не прочитаем все содержимое:
  185.             while (myFile.available()) {
  186.                 Serial.write(myFile.read());
  187.             }
  188.             //  закрываем файл:
  189.             myFile.close();
  190.         }
  191.         else {
  192.             //  если файл не открыт, сообщаем об ошибке:
  193.             Serial.println("error opening test.txt");
  194.                        //  "ошибка с открытием test.txt"
  195.         }
  196.     }
  197. }

Шаг 3. Загрузка программы

Поскольку Seeeduino Ethernet не оснащена USB-коннектором, чтобы загрузить на нее скетч, нужно воспользоваться UartSBee (это адаптер USB-Serial).

Подключите UartSBee к Seeeduino Ethernet как показано на картинке ниже:

Seeeduinoethernet-11.jpg


Seeeduino ethernet-5.jpg

Шаг 4. Проверка результата

Убедитесь, что Seeeduino Ethernet и ваш ПК находятся в одной и той же локальной сети. Загрузив программу, откройте в IDE Arduino монитор порта. В нем должна появиться следующая информация:

Seeeduinoethernet-9.jpg

Откройте браузер и введите в адресной строке веб-адрес «192.168.1.177». Откроется страница веб-сервера, через которую можно проверять данные, которые отправляет Seeeduino Ethernet:

Ethernet shield2.jpg

Полезные ссылки

См.также

Внешние ссылки

  1. wiki.seeed.cc - Seeeduino Ethernet