Arduino ethernet shield на базе w5100 enc28j60

Подбираем комплектацию под проект на примере Arduino Mega 2560 R3

Для создания полноценной системы «Умный дом» и выполнения ею возложенных функций важно правильно подойти к комплектации и выбору оборудования

Что входит в комплект поставки?

Если ваша цель — «Умный дом» на базе Arduino, требуется подготовить следующее оборудование — саму плату Mega 2560 R3, модуль Ethernet (ENC28J60), датчик движения, а также другие датчики и контроллеры.

Кроме того, стоит подготовить кабель вида «витая пара», резистор, реле, переключатель и кабель для модуля Ethernet.

Необходимы и дополнительные инструменты — отвертки, паяльники и прочее.

Учтите, что покупать наборы для монтажа системы стоит в сертифицированных пунктах. Это объясняется тем, что при реализации проекта применяется электричество, а использование подделки может привести к снижению уровня безопасности.

Все программы для адаптации можно найти в сети на официальном сайте Arduino https://arduino.ru.  При выборе датчиков стоит ориентироваться на задачи, которая должен решать «Умный дом».

Как правило, требуются датчики движения, температуры, открытия дверей и освещенности. Роль датчика открытия дверей может выполнять обычный геркон.

Прошивается плата с помощью специального софта, предназначенного для различных операционных систем, в том числе и кабеля USB. При этом в программаторах нет необходимости.

Что касается ПО, которое применяется в Ардуино, оно написано на языке Си. На число байт имеются определенные ограничения, но текущей памяти достаточно для реализации поставленной задачи.

Что такое GSM розетка для умного дома, устройство, принцип работы, инструкция по подключению, как сделать своими руками

Загрузка через не Arduino загрузчики

Сперва может показаться, что PlatformIO умеет работать только с платами Arduino. Но это далеко не так. PlatfromIO, благодаря усилиям разработчиков и многочисленного сообщества может работать с сотнями плат и прошивать большинство их них прямо не выходя из среды.

В предыдущем абзаце я пояснил каким образом можно добавить свою плату для компиляции. Там же указывается и то, каким образом ее прошивать. Альтернативно те же самые условия можно указать и в файле конфигурации проекта platformio.ini.

Для примера рассмотрим все ту же банальную Atmega328P. В файле описании платы есть как минимум три важных блока:

1. Описание «железа» платы.

"build": {
      "core": "arduino",
      "extra_flags": "-DARDUINO_AVR_ATmega328P",
      "f_cpu": "8000000L",
      "mcu": "atmega328p",
      "variant": "standard"
    },

Как мы видим, в этом блоке мы прописываем дополнительные флаги для компиляции, указываем частоту процессора (в данном случае это 8 МГц, так как чип работает без внешнего осциллятора), собственно тип микроконтроллера и прочие специфические параметры конкретного тулчейна (тут он у нас AVR).

  "build": {
    "core": "esp8266",
    "extra_flags": "-DESP8266 -DARDUINO_ARCH_ESP8266 -DARDUINO_ESP8266_WEMOS_D1MINI",
    "f_cpu": "80000000L",
    "f_flash": "40000000L",
    "flash_mode": "dio",
    "ldscript": "eagle.flash.4m1m.ld",
    "mcu": "esp8266",
    "variant": "d1_mini"
  },

На коде выше приведен блок build от WeMos D1 R2 mini. Другой тулчейн, другие параметры. Отсюда сразу же напрашивается вывод о том, где посмотреть информацию по всем этим флагам — в описании тулчейна, где же еще. Нужно добраться до папки platforms в .platformio, там все тулчейны и устанавливаются.

2. Специфичная настройка железа микроконтроллера.

    "fuses": {
        "efuse": "0xFD",
        "hfuse": "0xD0",
        "lfuse": "0xD2",
        "lock": "0x0F"
      },

Пока PlatrofmIO не умеет прошивать фьюзы и загрузчики, но ситуация может поменяться в ближайшем будущем. Для этих целей заранее можно прописать специфичные «предохранители» для конкретного микроконтроллера. Точное значение фьюзов на тех МК, где такую операцию можно проводить, необходимо добывать из официальных спецификаций. В приведенном выше примере Atmega328P настраивается на работу без чипа и с работающим вводом Reset. К слову, у WeMos такой штуки просто нет, все прошивается через загрузчик.

3. Специфика загрузчика.

    "upload": {
      "maximum_ram_size": 2048,
      "maximum_size": 32256,
      "protocol": "stk500v2",
      "require_upload_port": true,
      "speed": 57600,
      "flags": "-v -e"
    },

В этом блоке прописываются конкретные указания, как и чем прошивать. Соответственно для Atmega328P указываются максимальные значения по размерам кода и ОЗУ, указывается скорость, на которой стоит прошивать (МК без внешнего кварца шьется на пониженной скорости), указывается конкретный протокол прошивки. В моем случае это stk500v2, так как я использую программатор, работающий с этим протоколом.

  "upload": {
    "maximum_ram_size": 81920,
    "maximum_size": 4194304,
    "require_upload_port": true,
    "resetmethod": "nodemcu",
    "speed": 115200
  },

У WeMos указываются другие параметры, так нет протокола, он у них один, зато указывается способ сброса устройства. Какие протоколы используются можно глянуть в документации PlatformIO, там даны основные виды. Для AVR так же можно посмотреть, какие протоколы поддерживает avrdude (под AVR все шьется исключительно через него).

Таким образом система дает небывалую гибкость. Настроить получится не так быстро, как в оригинальном Arduino IDE, но если разобраться и прочувствовать весь доступный контроль, то будет уже трудно вернуться к классической среде разработки из Италии.

Что такое Arduino?

Arduino – это семейство электронных платформ, предназначенных для изучения проектирования электроники.

Arduino NANO – компактная платформа для прототипирования микроэлектронных устройств, предназначенная для использования с макетной платой. Функционал устройства во многом схож с Arduino UNO и отличается от нее лишь размерами платы и отсутствием отдельного разъема для питания.

Основа Arduino Nano – микроконтроллер на базе ATmega328, логическая микросхема для обработки данных с тактовой частотой 16 МГц, имеющая на борту 8 аналоговых и 14 цифровых контактов общего назначения, а также все необходимые интерфейсы: I2C, SPI и UART.

Ошибки библиотек

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

Ведь банально причина может быть в устаревшем синтаксисе скачанного плагина и, чтобы он заработал, необходимо переписать его практически с нуля. Это единственный выход из сложившейся ситуации. Но бывают и более банальные ситуации, когда вы подключили библиотеку, функции из которой затем ни разу не вызвали, или просто перепутали название.

Модули

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

Датчики

Датчик температуры и относительной влажности DHT11 и его собрат DHT22

Датчик температуры DS18B20 в обычном или защищённом корпусе

Датчик движения HC-SR505

Датчик расстояния ультразвуковой

Датчик газа MQ-6 (изобутан, пропан)

Датчик дождя

Дисплеи и индикаторы

Символьные дисплеи LCD 1602 и 2004

как вы догадались цифры обозначают количество отображаемых символов в строке и количество строк (1602 — 16 символов в 2 строки).

Точечные дисплеи

OLED дисплей 0,96 дюйма

Цветной TFT дисплей

Семисегментные индикаторы

Принцип работы Ethernet Shield и необходимые компоненты для подключения

Ethernet Shield связывает Arduino с сервером при помощи сети интернет или Wi-Fi роутера.
На данный момент мы будем использовать Wi-Fi роутер для передачи информации с датчиков и для управления светодиодом.
Вся информация будет выводиться на простейшем сайте, который мы сделали заранее.

Для нашей работы нам необходимы следующие компоненты:

  • Плата Arduino (мы используем Arduino UNO)
  • Ethernet Shield
  • Датчик влажности и температуры DHT11
  • Соединительные провода
  • Вспомогательная макетная плата — Breadboard
  • Любой Wi-Fi роутер
  • Сетевой кабель

Все эти элементы можно приобрести по низкой цене и с высоким качеством в интернет магазине SmartElements.

Для большего удобства вы можете кликнуть мышкой по названию в списке выше, чтобы перейти к покупке товара.

Как подключить модуль Ethernet к Arduino

Подключение модулей w5100 к ардуино осуществляется  через SPI. При наличии некоторого опыта работы c платформой никаких трудностей это вызвать не должно. В самом простом случае нужно просто “надеть” плату шилда, вставив в соответствующие разъемы платы Uno или Nano. В случае использования отдельного модуля подключить w5100 к ардуино можно через стандартные SPI-выводы.

Нужно помнить, что в Arduino Uno для SPI выделены пины 11, 12, 13. В Arduino Mega – 50, 51, 52. На шилде для Uno SS сигнал связан с 10 пином. На плате Mega за SS отвечает пин 53, но он не используется. Не смотря на этой, вам нужно обязательно установить его в режим OUTPUT с помощью функции pinMode.

Распиновка шилда с описанием элементов платы для Arduino  Uno представлена на следующем рисунке.

После подключения внешнего модуля к арудино нужно будет подключить его к уже существующей сетевой инфраструктуре через витую пару с RJ45 разъемом. Причем подключать можно и к WiFi роутеру, что позволяет вашему проекту выходить на связь в беспроводном режиме (провод от ардуино до роутера все равно понадобится).

Выполнив физическое подключение, останется сделать только последний, но самый сложный и важный шаг. Нужно написать и загрузить в плату соответствующий скетч, который превратит плату в сервер, отвечающий на запросы удаленных устройств или в клиента, собирающего данные с серверов или отправляющего на них данные.

Полезные страницы

  • Набор GyverKIT – большой стартовый набор Arduino моей разработки, продаётся в России
  • Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
  • Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
  • Полная документация по языку Ардуино, все встроенные функции и макросы, все доступные типы данных
  • Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
  • Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете
  • Поддержать автора за работу над уроками
  • Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту ([email protected])

Ответы на частые вопросы

Ардуину можно прошить только один раз? Нет, несколько десятков тысяч раз, всё упирается в ресурс flash памяти. А он довольно большой.

Как стереть/нужно ли стирать старую прошивку при загрузке новой? Память автоматически очищается при прошивке. Старая прошивка будет автоматически удалена.

Можно ли записать две прошивки, чтобы они работали вместе? Нет, при прошивке удаляются абсолютно все старые данные.

Можно ли “вытащить” прошивку с уже прошитой Ардуины? Теоретически можно, но только в виде машинного кода, в который преобразуется прошивка на С++ при компиляции, т.е. вам это НИКАК не поможет, если вы не имеете диплом по низкоуровневому программированию. Так что нет, нельзя.

В этой инструкции, для примера, рассмотрим начало работы в операционной системе Windows. Для операционных систем Microsoft (Windows 2000/Vista) различия незначительны, они в основном относятся к названиям вкладок в Диспетчере устройств. В прочих операционных средах, таких как Linux, FreeBSD, Mac OS X и т.д, порядок настройки значительно отличается. При необходимости организовать работу с этим программным обеспечением, рекомендуем искать ответы на вопросы на основном сайте разработчика //www.arduino.cc .

2. Teensy 3: быстрая альтернатива Arduino

Говоря о быстрых альтернативах Arduino, трудно найти что-то лучшее, чем диапазон досок Teensy. Теперь на итерации 3.6 эти маленькие платы похожи по форме на меньшие платы Arduino Nano и Arduino Micro, но имеют скрытый удар.

В последней версии Teensy 3.6 используется 32-разрядный процессор ARM Cortex-M4 с тактовой частотой 180 МГц, обеспечивающий поразительный уровень вычислительной мощности для своего размера. Последний выпуск поставляется с встроенным слотом для карт памяти microSD для дополнительной встроенной памяти. Teensy также является приемлемой альтернативой с точки зрения стоимости, плата 3.6 стоит чуть более 30 долларов. YouTuber MickMake имеет подробное видео-тестирование доски и демонстрирует некоторые из его возможностей:

Как упомянуто в видео выше, уже мощный встроенный процессор может быть разогнан, что придает еще большую скорость этой чудо-доске. Эти платы стали популярными для многих тинкеров, поскольку они совместимы с IDE Arduino с использованием библиотеки Teensyduino . Это работает в тандеме с собственным программным обеспечением для загрузки Teensy, что делает написание и загрузку кода знакомым всем, кто работал с платами Arduino.

Teensy также работает как USB HID-устройство, очень похожее на Arduino Pro Micro. Это делает его идеальным для сборок, которые требуют распознавания платы таким же образом, как наш проект пользовательских кнопок быстрого доступа .

Популярность досок Teensy растет, и легко понять почему!

Варианты программирования

От поставщика многие (возможно, все) модули ESP8266 загружаются с прошивкой «AT» и могут программироваться через простую программу консоли. Если вы используете модуль в первую очередь для использования его Wi-Fi возможностей и управления им с помощью другого микроконтроллера, это может быть всё, что вам нужно.

Более сложный вариант доступен от NodeLua, который предлагает прошивку с открытым исходным кодом на основе языка программирования Lua. NodeLua всё еще находится в разработке, но уже содержит обширные возможности. Другие варианты включают в себя Python, BASIC и Arduino IDE, которая представлена в данной статье.

Элементы платы

Arduino Nano состоит из множества элементов, в числе которых:

  • микросхемы;
  • пассивные элементы (резисторы, конденсаторы, диоды);
  • разъемы;
  • регуляторы.

Микросхема платы FT232R

Микросхема позволяет подключать плату через USB. Чип, установленный в AN, не может работать напрямую с USB-интерфейсом, поэтому FT232R преобразует его в UART-интерфейс.

Сердце платформы — микроконтроллер ATmega328P

ATmega328P — главный элемент управления платой. В него загружается написанный программистом скетч, и контроллер рассылает команды различным элементам платы. Например, микроконтроллер заставляет диоды мигать, реле — переключаться, а пьезоэлемент — издавать звуки.

Светодиодная индикация

В плату встроено 4 светодиода, у каждого из которых свое назначение:

  1. RX- и TX-светодиоды мигают, когда происходит передача данных по UART.
  2. L-диод зажигается, когда на него подается высокий уровень сигнала, и гасится при низком уровне.
  3. ON-светодиод горит при наличии питания на плате.

Дополнительно практически на любой пин микроконтроллера можно завести другие светодиоды, 7-сегментные индикаторы или даже дисплеи.

Разъем mini-USB

С помощью разъема mini-USB плату можно подключить к персональному компьютеру. Также AN может получать через этот интерфейс питание от внешних источников.

Линейный понижающий регулятор напряжения 5 В

В качестве регулятора используется микросхема LM1117MPX-5.0. Она обеспечивает преобразование сигнала питания AN в сигнал питания микроконтроллера ATmega и других логических элементов, которые не поддерживают питание более 5 В. Например, элементы транзисторно-транзисторной логики (ТТЛ) запитываются от сигнала такой величины.

ICSP-разъем для ATmega328

Этот интерфейс позволяет загружать прошивку в микроконтроллер стандартным способом. Специальный шлейф одним концом подключается к программатору, подсоединенному к ПК, а другим — к ICSP-разъему.

Веб-сервер на Ардуино

Как уже понятно, для связи Ардуино по LAN сети нужна специальная плата расширения.

Так выглядит шилд Ethernet Shield w5100:

Работа с этим сетевым шилдом проще всего осуществляется с платы Arduino UNO R3. Безусловно, вы можете использовать её и с другими платами, на фото изображено подключение на примере самой распространённой версии. При использовании с другими вариантами, например, Nano нужно соединить соответствующие выводы на плате и шилде с помощью перемычек.

Ардуино выступает в роли сервера, поэтому нужно обеспечить подключение к сети, для этого используется Ethernet кабель. Сразу стоит отметить, что при подключении витой пары, кабеля RJ-45, непосредственно к плате, а не через роутер, вы должны использовать вариант обжимки «Crossover».

Работает плата расширения на скоростях 10 или 100 мбит/с, при работе на высшей скорости вы можете видеть уведомление – об этом сигнализирует светодиод «100M». Он расположен ниже сетевого разъёма.

На шилде расположен слот для SD-карты – вы можете получить доступ к данным через сеть. Таким образом, вы получите домашнее облако на Arduino.

С картой памяти микроконтроллер работает по той же SPI шине, что и с шилдом. Определите, какие выводы на вашей плате работают с этим интерфейсом, и не забудьте о том, что их нельзя задействовать при разработке вашей умной системы. Например, для платы Arduino Mega выводы: 50, 51, 52, а для Duemilanove: 12, 12, 13.

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

Синтаксические требования

Что касается синтаксиса, он мало чем отличается от C ++. Первое сходство, которое вы можете заметить, это использование фигурных скобок для переноса блоков кода. Если вы пропустили закрывающую фигурную скобку после использования открывающей, система выдаст ошибку. К счастью, IDE Arduino выделит закрывающую скобку, если вы нажмёте на открывающую скобку, поэтому проверить её довольно просто. Как и в случае с C ++, Arduino также требует заканчивать ваши операторы точками с запятой. Пропуск одного из них приводит к возникновению ошибки.

Ещё одно явное сходство — способ ввода комментариев. Есть два способа сделать это на языке Arduino, в зависимости от того, нужен ли вам однострочный или блочный комментарий. Если вам нужно закомментировать только одну строку, начните её с двух косых чёрт:

Если одной строки слишком мало для ваших заметок, вы можете вставить многострочный комментарий, начав его с косой черты и звёздочки, и заканчивая звёздочкой и косой чертой:

Когда вы добавляете комментарии, помните, что компилятор Arduino будет полностью их игнорировать. Это означает, что он не будет экспортировать их в процессор и использовать память микроконтроллера.

Где в России добывают палладий

Палладий является одним из самых ценных металлов на земле. Он относится к платиновой группе, имеет серебристо-белый цвет. Крупнейшее его месторождение находится в Норильске. Палладий получают путем переработки сульфидных руд таких металлов, как никель, серебро и медь.

Россия добывает более половины от мировой добычи палладия. Правда США закупает его у разных стран — Канады, ЮАР, а также сами добывают на Аляске. Однако Россия покрывает 35% от потребностей страны. Поэтому, в случае наложения ответных санкций, это так же станет серьезной проблемой.

Кроме палладия Россия также может перестать поставлять гелий, фтор и скандий. В результате это может стать серьезным ударом по производству смартфонов, автомобильных запчастей и даже ракет. С учетом того, что на рынке полупроводниковой продукции и так наблюдается дефицит, выпуск данной продукции может быть поставлен под угрозу. Таким образом без высокотехнологичной продукции может остаться не только Россия, но и весь мир.

Разумеется, если США все равно введут санкции, проблему с чипами в России остановка поставок сырья не решит. Собственные заводы должны быть построены только к 2030 году, причем на них будут производиться чипы по 16-нанометровому техпроцессу, который уже сейчас считается устаревшим. К примеру, компания Intel представила Core i9, созданный по 14-нанометровому техпроцессу еще в 2018 году. Поэтому остается надеяться лишь на то, что до введения санкция дело все же не дойдет.

Россия ограничила экспорт инертных газов до конца года

Аrduino для начинающих

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

Тут я постараюсь дать сжатый минимум для того, что бы вы понимали принципы работы с Arduino

Для более полного погружения в мир программируемых микроконтроллеров обратите внимание на другие разделы и статьи этого сайта. Я буду оставлять ссылки на другие материалы этого сайта для более подробного изучения некоторых аспектов

Что такое Arduino и для чего оно нужно?

Arduino — это электронный конструктор, который позволяет любому человеку создавать разнообразные электро-механические устройства. Ардуино состоит из программной и аппаратной части.

Программная часть включает в себя среду разработки (программа для написания и отладки прошивок), множество готовых и удобных библиотек, упрощенный язык программирования.

Аппаратная часть включает в себя большую линейку микроконтроллеров и готовых модулей для них. Благодаря этому, работать с Arduino очень просто!

Начиная с простых мигалок, метеостанций, систем автоматизации и заканчивая системой умного дома, ЧПУ станками и беспилотными летательными аппаратами.

Возможности не ограничиваются даже вашей фантазией, потому что есть огромное количество инструкций и идей для реализации.

проекты на Arduino

Стартовый набор Arduino

Для того что бы начать изучать Arduino необходимо обзавестись самой платой микроконтроллера и дополнительными деталями. Лучше всего приобрести стартовый набор Ардуино, но можно и самостоятельно подобрать все необходимое. Я советую выбрать набор, потому что это проще и зачастую дешевле. Вот ссылки на лучшие наборы и на отдельные детали, которые обязательно пригодятся вам для изучения:

Базовый набор ардуино для начинающих: Купить
Большой набор для обучения и первых проектов: Купить
Набор дополнительных датчиков и модулей: Купить
Ардуино Уно самая базовая и удобная модель из линейки: Купить
Беспаечная макетная плата для удобного обучения и прототипирования: Купить
Набор проводов с удобными коннекторами: Купить
Комплект светодиодов: Купить
Комплект резисторов: Купить
Кнопки: Купить
Потенциометры: Купить

Среда разработки Arduino IDE

Для написания, отладки и загрузки прошивок необходимо скачать и установить Arduino IDE. Это очень простая и удобная программа. На моем сайте я уже описывал процесс загрузки, установки и настройки среды разработки. Поэтому здесь я просто оставлю ссылки на последнюю версию программы и на статью с подробной инструкцией.

Версия Windows Mac OS X Linux
1.8.2 ZipInstaller Installer
  • 32 bits
  • 64 bits
  • ARM

Язык программирования Ардуино

Когда у вас есть на руках плата микроконтроллера и на компьютере установлена среда разработки, вы можете приступать к написанию своих первых скетчей (прошивок). Для этого необходимо ознакомиться с языком программирования.

Для программирования Arduino используется упрощенная версия языка C++ с предопределенными функциями. Как и в других Cи-подобных языках программирования есть ряд правил написания кода. Вот самые базовые из них:

  • После каждой инструкции необходимо ставить знак точки с запятой (;)
  • Перед объявлением функции необходимо указать тип данных, возвращаемый функцией или void если функция не возвращает значение.
  • Так же необходимо указывать тип данных перед объявлением переменной.

8 или 32 бита

Основные сражения происходят между 8 и 32 битными платами.

8-бит: Uno, Nano, and Mega

32-бит: Zero, MKR, ESP8266 и ESP32

В отличие от ранних видеоигровых консолей, выбор процессора не так прост, и не ограничивается только выбором количества бит. В целом, 8-битные процессоры предлагают базовые возможности при потреблении более низкой энергии.

Более простые архитектуры означают, что регистры прямого программирования, как правило, относительно легки. 32-разрядные процессоры предлагают более высокие тактовые частоты вместе с большим количеством ОЗУ, ПЗУ и последовательной периферии. Их архитектура может усложнить программирование. К счастью, такие структуры, как библиотека Arduino и CircuitPython, зарывают большую часть этой сложности.

Выбор микропроцессора только потому, что он является 8-битным или 32-битным, может быть, скажем так, довольно «близоруким»

Поэтому важно подумать о том, как вы планируете использовать его

Допустим, вы уже в курсе, как обращаться с проводами, контактами и микросхемами. Поэтому разберемся с самыми популярными платами на сегодняшний день.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Семинар по технике
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: