Логгер на даче я собирал из модулей: SD-карта, часы реального времени, дисплей — три платы, три связки проводов, сорок минут сборки и один вялый контакт на линии выбора карты, из-за которого носитель пропадал из системы раз в час. Сосед по гаражу достал data logging shield, надел на Uno сверху, вставил карту — и через четыре минуты у него писался тот же лог. В тот вечер я посчитал, сколько времени съела паутина проводов, которой гордился, и на кого был потрачен вечер перед выездом.
Шилд — плата расширения в форм-факторе основной платы: у неё те же два ряда гнёзд, она надевается сверху и забирает пины по своей внутренней разводке. Магии внутри нет — те же модули, только соединённые печатными дорожками вместо ваших перемычек. Платите вы не за функции, а за собранные и проверенные производителем связи и за конструкцию, которая не рассыпается от первого касания. Дорожки паяны на заводе, поэтому сборка занимает минуты и переживает переезды, которых макетка не выдержит вовсе.
Разберём, что предлагают популярные шилды, что они съедают из пинов и когда шилд проигрывает россыпи модулей. Заодно возьмём приём, который шилды принесли в обиход: резисторная лестница, на которой пять кнопок делят один аналоговый вход. Считать её умеет каждый, кто прошёл урок про делитель напряжения.
Что шилд берёт и что оставляет
У каждого шилда есть карта пинов — список входов и выходов, которые он занимает. LCD Keypad Shield забирает D4–D10 под шину дисплея и A0 под кнопки. Motor Shield на L293D садится почти на всю цифровую гребёнку. Ethernet W5100 живёт на SPI — D10–D13 — и делит D4 с SD-картой. Пока карта не прочитана, покупка — лотерея: шилд может встать физически, но взять пины, на которых у вас уже сидит датчик. И названия на карте не совпадают с логикой скетча: у дисплея свой RS и Enable, у SD-карты свой выбор на том же SPI — карта читается как таблица, а не как картинка.
Сверху шилды обычно отдают всё, что заняли: сквозные гнёзда позволяют надеть второй шилд или воткнуть провода дальше по шине. Отсюда правило стекирования: совместимы шилды, чьи карты пинов не пересекаются. По шинам — отдельная арифметика: два I2C-устройства спокойно делят A4 и A5, а два хозяина одного вывода выбора на SPI — гарантированная беда. Высота стопки тоже имеет предел: два-три шилда с высокой периферией уже не влезают в типовой корпус. Ток считается отдельно: мотор-шилд с сервами от USB не живёт — ему нужен внешний источник и бюджет тока на бумаге до включения.
Земля у шилда общая с платой через гребёнку, но силовая нагрузка — моторы, реле — своим минусом приходит на винтовые клеммы шилда, и путь тока не должен петлять по тонким дорожкам сигнальной части: силовой минус идёт кратчайшим путём к минусовой клемме. Почему общий провод — узкое место любой сборки, мы разбирали в уроке про GND.
| Шилд | Занимает | Сильная сторона | Когда брать |
|---|---|---|---|
| LCD Keypad | D4–D10, A0 | дисплей с меню без единого провода | приборы с настройкой и меню |
| Motor Shield L293D | почти вся цифровая гребёнка | два шаговых или четыре коллекторных мотора | роботы и платформы |
| Ethernet W5100 | D10–D13 (SPI), D4 (SD) | сеть и карта в одной стопке | стационарные логгеры, веб-панели |
| Data Logging (SD + RTC) | SPI плюс I2C (A4/A5) | лог с меткой времени | метеостанции, счётчики |
| Sensor Shield | только гребёнки | 3-пиновые линейки для серв | много серво; под датчики — переплата |
| Prototype Shield | поле под пайку | перфплата в форм-факторе Uno | когда нужен и шилд, и своя разводка |
Пять кнопок на один вход: резисторная лестница
Резисторная лестница — фирменный приём шилдов. Кнопки LCD Keypad подключены не к пяти цифровым пинам, а к цепочке резисторов на A0: каждая кнопка замыкает свою точку делителя, и аналоговый вход видит своё напряжение. Скетч читает значение и по порогам узнаёт кнопку: примерно до 50 — RIGHT, до 200 — UP, до 400 — DOWN, до 600 — LEFT, до 850 — SELECT, выше — ничего не нажато. Точные пороги зависят от номиналов конкретного шилда, поэтому их калибруют по монитору порта. Границы делают широкими не от щедрости: кнопки дребезжат, резисторы имеют разброс, и узкие пороги превратили бы каждое нажатие в лотерею между двумя клавишами.
Цена экономии пинов — невозможность нажать две кнопки сразу: напряжение между двумя точками лестницы промежуточное, и скетч увидит третью кнопку. Для меню это неважно, для игры — уже компромисс. Тот же приём стоит взять на вооружение и для собственных плат: когда пинов не хватает, лестница из трёх-пяти резисторов освобождает половину гребёнки. Для своей лестницы я беру одинаковые резисторы: шаг в 1 кОм между ступенями даёт равные пороги, которые считаются в голове без калькулятора.
const int PIN_KNOPOK = A0; int chitaemKlavishu() { int v = analogRead(PIN_KNOPOK); if (v < 50) return 1; // RIGHT if (v < 200) return 2; // UP if (v < 400) return 3; // DOWN if (v < 600) return 4; // LEFT if (v < 850) return 5; // SELECT return 0; // ничего не нажато}Шилд оправдан, когда его функция совпадает с задачей целиком. Один датчик температуры проще взять модулем за треть цены шилда; проект на Nano или ESP32 вообще не примет Uno-шилд физически — там свои форм-факторы и свои платы расширения. Сенсорные шилды с линейками 3-пиновых разъёмов я покупаю только под серво: под датчики это переплата, потому что датчик всё равно заканчивается проводом до входа. И цена вопроса: шилд с картой и часами стоит в полтора-два раза дороже тех же модулей россыпью — вы платите за разведённую плату и готовый форм-фактор.
Обратная сторона — ремонтопригодность. Сгорел драйвер на мотор-шилде — меняется весь шилд; сгорел L293D на собственной плате — меняется копеечная микросхема. Шилд — это скорость сборки, купленная ценой гибкости: для прототипа, выставки и подарка — да; для прибора, который планирую чинить сам, моя дорога чаще ведёт на перфплату из урока про перманентный монтаж.
Чек-лист выбора шилда у меня короткий. Первый вопрос — совпадает ли его функция с задачей целиком: логгер — берём data logging, робот — мотор-шилд. Второй — карта пинов против текущего проекта: пересечения выписываются до оплаты. Третий — питание: что шилд ждёт на силовых клеммах и откуда это возьмётся. Четвёртый — библиотека: если для шилда нет живой библиотеки с примерами, вы купили плату, а не решение — и будете писать драйвер вечерами.
Закрепление: соберите лестницу из трёх резисторов и кнопки на макетке, постройте таблицу порогов по монитору порта; затем добавьте «второй шилд» — датчик, и проверьте, не пересекаетесь ли вы по пинам. Второе упражнение отрабатывает главную привычку темы: карта пинов пишется до сборки, а не после первого молчания.
- 1. Что шилд даёт по сравнению с россыпью модулей на макетке?
- 2. Пять кнопок LCD Keypad подключены к...
- 3. Два шилда можно стекировать, когда...
- 4. Почему мотор-шилд с сервами не живёт от USB?
- 5. Что увидит скетч при нажатии двух кнопок лестницы сразу?
- Шилд — те же модули, но связи собраны дорожками: скорость сборки ценой гибкости
- До покупки читаем карту пинов; стекируем только шилды без пересечений
- I2C спокойно делит A4/A5; два хозяина одного вывода выбора SPI — беда
- Моторы и сервы — внешний источник и бюджет тока на бумаге до включения
- Резисторная лестница: пять кнопок на один аналоговый вход, пороги калибруются по монитору
Частые вопросы по теме урока
- Что шилд даёт по сравнению с россыпью модулей на макетке?
- Функции те же — платите за готовые дорожки и жёсткую сборку. Пины шилд, наоборот, отнимает. Собранные и проверенные связи вместо паутины проводов
- Пять кнопок LCD Keypad подключены к...
- Цепочка резисторов на A0: каждая кнопка даёт своё напряжение, скетч различает их по порогам. Один вход вместо пяти — плата за это: две кнопки одновременно не прочитать. одному аналоговому входу через резисторную лестницу
- Два шилда можно стекировать, когда...
- Сквозные гнёзда есть почти у всех, но занятые пины могут совпасть — совместимость определяется картой пинов. их карты пинов не пересекаются
- Почему мотор-шилд с сервами не живёт от USB?
- Пусковые токи моторов и серв бьют выше полампера — порт гасится. Внешнее питание и бюджет тока считаются заранее. Стартовые токи превышают лимит порта — нужен внешний источник
- Что увидит скетч при нажатии двух кнопок лестницы сразу?
- Между двумя точками лестницы напряжение промежуточное: скетч различит другую клавишу. Для меню это не помеха, для игр — компромисс, о котором стоит помнить заранее. Промежуточное напряжение — третью «кнопку»