Самодельный роутер и мини-сервер на Raspberry Pi — Часть 1 (железо)

Содержание

Описан процесс сборки самодельного универсального мини-сервера, по совместительству роутера, на основе Raspberry Pi. К устройству мы добавим OLED дисплей SSD1306, часы реального времени DS1307, датчик температуры DS18B20, пищалку, а также набор из пяти кнопок и RGB светодиод для управления и индикации различных событий.

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

Приведена принципиальная схема устройства, рассказано как все соединить и поместить в миниатюрный корпус, описан процесс изготовления коротеньких и надежных патч-кордов RJ-45.

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

Основные характеристики и возможности

Данный мини-сервер изготавливался прежде всего для использования в качестве универсального маршрутизатора к проводному и 3G интернет-каналам, для раздачи его по проводам (RJ45) и Wi-Fi.

Самодельный маршрутизатор на основе Raspberry Pi 3 model B с дисплеем, кнопками и часами

Рис. 1. Самодельный маршрутизатор на основе Raspberry Pi 3 model B с дисплеем, кнопками и часами.

  • Raspberry Pi 3 model B (BCM2837 64bit 4×1.2GHz CPU, 1GB, Bluetooth, Wi-Fi);
  • OLED дисплей 128×64 — SSD1306;
  • RTC часы DS1307 + датчик температуры DS18B20;
  • 5 не фиксируемых кнопок для управления и выбора режимов;
  • RGB-светодиод для индикации и оповещения о событиях;
  • Пьезозуммер (пищалка) для подачи звуковых сигналов;
  • 20 свободных GPIO, выведенных наружу (IO, I2C, SPI, 3V, 5V, GND).

Раньше я уже рассказывал что такое Raspberry Pi (малинка) и как можно использовать этот миниатюрный компьютер размером в кредитную карту.

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

  • Маршрутизатор (роутер) для сетей Ethernet, 3G, Wi-Fi;
  • Вывод статистики и состояния устройства на дисплей (загрузка CPU и памяти, внешний IP-адрес и т.п.);
  • Вывод часов и температуры внутри устройства на дисплей;
  • Звуковые оповещения различных событий (упал проводной интернет-канал, пришла почта, не доступен сайт и т.п.);
  • Медиа-архив, торрент-клиент (с внешним USB-SSD накопителем);
  • Включение/выключение различных электронных устройств (домашняя автоматика);
  • Вся мощь ОС GNU/Linux + огромное количество различных программ;
  • .

Для подключения к такому роутеру нескольких устройств по кабелю (витая пара) нужно докупить небольшой свич (ethernet switch) на 5 и более портов, желательно с питанием от +5В. Также к малинке можно подключать различные флешки, USB HDD/SSD, веб-камеры и прочую USB-электронику.

Для добавления к малинке еще одиного порта Ethernet нужно будет приобрести небольшой внешний адаптер USB-Ethernet. Как правило, все такие адаптеры без проблем распознаются операционной системой GNU/Linux, с Raspbian тоже проблем быть не должно.

К такому сетевому адаптеру можно будет подключить внешний проводной интернет-канал, а к интегрированному в малинку Ethernet-порту — коммутатор на 5 портов для подключения ПК, ноутбука и других устройств домашней сети.

Комплектующие

Все комплектующие для сборки подобного мини-сервера удобнее всего покупать в интернет-магазинах. С покупкой платформы Raspberry Pi проблем быть не должно. Можно использовать как 2-ю, так и 3-ю версию малинки.

Raspberry Pi 3 model B - внешний вид, порты и важные компоненты

Рис. 2. Raspberry Pi 3 model B — внешний вид, порты и важные компоненты.

Наиболее сложно доставаемая штука в данном случае — это хороший корпус для raspberry pi. Здесь не стоит жалеть денег и лучше сразу брать хороший алюминиевый корпус. Корпус из металла — прочный, хорошо отводит тепло, а также выступает в качестве экрана и его можно удобно переделать под свои цели.

Важно чтобы в таком корпусе были учтены отверстия под светодиодные индикаторы и Wi-Fi (Bluetooth) антенну, которые расположены на плате малинки.

Мною был куплен корпус Eleduino для Raspberry Pi черного цвета. В продаже также есть цвета: синий, красный, серый и серебристый. В комплекте с корпусом идут маленькие алюминиевые радиаторы для установки на чипы малинки, а также силиконовые подкладки под корпус (ножки).

Eleduino - хороший металлический корпус для Raspberry Pi 2/3

Рис. 3. Eleduino — хороший металлический корпус для Raspberry Pi 2/3.

OLED дисплей SSD1306 с разрешением 128×64 пикселей — экономичен, небольшой по размерам, есть в разных цветах и умеет работать с шиной I 2 C. Отличный выбор для самодельного мини-сервера!

Рис. 4. OLED дисплей SSD1306 — готовый модуль для подключения по шине I2C.

Для подключения часов реального времени (RTC, Real Time Clock) можно купить специализированную микросхему, например DS1307Z, но удобнее взять готовый модуль на этой микросхеме — DS1307.

Модуль часов реального времени - DS1307 + 2C EEPROM 24C32

Рис. 5. Модуль часов реального времени DS1307 + 2C EEPROM 24C32.

  • Встроенная литиевая батарейка (CR2032-210mAh);
  • Чип энергонезависимой памяти — I2C EEPROM 24C32 (32 KBit);
  • Интерфейс для подключения датчика температуры — DS18B20;
  • Низкая стоимость.

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

Похожий пьезоэлектрический звукоизлучающий элемент можно извлечь из наручных электронных часов или музыкальной открытки.

Пьезозуммеры - в корпусе и без корпуса

Рис. 6. Пьезозуммеры: в корпусе и без корпуса.

Микрокнопки — 5 штучек с размерами 6х6мм, высота цилиндра 3-5мм, каждая содержит по четыре ножки для припаивания к плате. Их также можно извлечь из нерабочей оргтехники и других электронных плат.

Микрокнопки 6х6мм, 4 вывода

Рис. 7. Микрокнопки 6х6мм, 4 вывода DIP.

Все эти детали и блоки можно заказать на AliExpress:

Принципиальная схема

Рассмотрим принципиальную схему самодельного сервера-маршрутизатора на основе Raspberry Pi.

Принципиальная схема роутера на Raspberry Pi, SSD1306, DS1307, DS18B20, кнопки, светодиод и пищалка

Рис. 8. Принципиальная схема включения модулей Raspberry Pi, SSD1306, DS1307, DS18B20, кнопок, светодиода и пищалки.

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

В сопротивлениях резисторов R4-R13 допустимы небольшие отклонения от указанных значений, к примеру можно использовать пары на 750 Ом и 16 кОм.

Каждый из каналов RGB-светодиода подключен к пинам GPIO через гасящие резисторы R2-R4, дальше в статье я расскажу о подборе их сопротивления.

Датчик температуры D18B20 (DALLAS) подключен к "1-Wire" интерфейсу — пину IO4 (7-й вывод GPIO), также к нему подключен подтягивающий резистор R1, необходимый для обеспечения работы данного интерфейса.

Модуль SSD1306 питается от напряжения +3,3В и напрямую подключен к выводам шины I 2 C малинки. Модуль часов DS1307 питается от линии +5В (от напряжения +3,3В он работать не сможет) и подключен к общей шине I 2 C через нормализатор логических уровней, выполненный на полевых транзисторах Q1 и Q2.

В одной из статей я описал зачем нужна нормализация логических уровней и как подключать к шине I 2 C устройства с разным напряжением питания.

Вы могли заметить что здесь на схеме не изображены подтягивающие резисторы, подключаемые к линиям питания +3,3В и +5В — эти резисторы уже установлены на модулях SSD1306 и DS1307, установка дополнительных резисторах не понадобится.

Свободные GPIO будут выведены на корпус устройства при помощи массива из 20 гнезд. Пьезоэлектрический зуммер подключен к общему (GND) и одному из выводов GPIO — IO18.

Хочу добавить что для более надежного подавления дребезга контактов между каждым из выводов GPIO, что подключен к кнопке, и землей (GND) желательно добавить по конденсатору на 100нФ (0,1мкФ). Об этом подробнее рассказано во тут.

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

В более раннем варианте схемы было использовано не безопасное подключение модулей к шинам I 2 C и 1-Wire. Все модули питались от напряжения +5В, в то время как высокий логический уровень напряжения (1) для шины I2C и пина 1-Wire малинки — это +3,3В.

Датчик DS18B20 был впаян в модуль DS1307, на этом модуле вывод "Data" датчика также подтянут резистором к линии питания +5В, что является опасным при подключении его к шине 1-Wire на малинке.

Схема с опасным подключением моделей питающихся от +5В к шине I2C Raspberry Pi

Рис. 9. Опасное, но рабочее экспериментальное подключение модулей с питанием от +5В к шине I2C Raspberry Pi.

Тем не менее, такая схема уверенно работала на протяжении многих месяцев, спасало скорее всего то, что на одном из модулей были выпаяны подтягивающие резисторы и ток с напряжением +5В был достаточно мал чтобы выжечь ключи внутри контроллера GPIO.

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

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

Печатная плата для крепления кнопок

Пять кнопочек управления решил разместить с обратной стороны корпуса — над отверстиями для светодиодных индикаторов и антенны Wi-Fi.

Чтобы все спланировать, обрисовал боковую панель на листе бумаги в клеточку:

Чертеж контуров боковой панели корпуса, где будут крепиться кнопки

Рис. 10. Чертеж контуров боковой панели корпуса, где будут крепиться кнопки.

Разместив кнопочки на трафарете панели, можно прикинуть оптимальные расстояния между ними. В моем случае кнопки можно равномерно разместить через одну клеточку.

Прикидываем размещение кнопок на трафарете панели корпуса

Рис. 11. Прикидываем размещение кнопок на трафарете панели корпуса. (кликабельно)

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

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

Разметка платы для кнопок, проверка размещения в корпусе с помощью трафарета

Рис. 12. Разметка платы для кнопок, проверка размещения в корпусе с помощью трафарета. (клик для увеличения)

Для сборки схемы с кнопками решил применить SMD резисторы, выбрал пары сопротивлений 820 Ом и 15 кОм.

Кнопки и SMD-резисторы для сборки кнопочной панели

Рис. 13. Кнопки и SMD-резисторы для сборки кнопочной панели.

Разводку печатной платы можно выполнить в одной из специализированных программ (KiCad, Sprint Layput и других) и потом изготовить методом Лазерно-Утюжной Технологии (ЛУТ).

Я же выполнил рисунок этой маленькой печатной платы быстрым классическим методом — простым карандашом на бумаге в клеточку (на которой был нарисован трафарет боковой панели корпуса).

Печатная плата для кнопочной панели, разводка дорожек карандашом

Рис. 14. Печатная плата для кнопочной панели, разводка дорожек карандашом.

Важно: на печатной плате нет конденсаторов по 0,1мкФ для подавления дребезга контактов, о котором я писал при обзоре принципиальной схемы, эти конденсаторы можно просто подопаивать сверху со стороны дорожек.

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

Заготовка под печатную плату для панели с кнопками

Рис. 15. Заготовка под печатную плату для панели с кнопками.

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

С помощью ножниц вырезаем нарисованный трафарет печатной платы (рисунок 14) и небольшими капельками клея ПВА приклеиваем его к заготовке из стеклотекстолита.

Клеим трафарет печатной платы на заготовку из стеклотекстолита

Рис. 16. Клеим трафарет печатной платы на заготовку из стеклотекстолита.

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

Переносим точки для сверления на стеклотекстолит при помощи керна

Рис. 17. Переносим точки для сверления на стеклотекстолит при помощи керна.

Вот что получилось:

Точки для сверления отверстий в стеклотекстолите намечены

Рис. 18. Точки для сверления отверстий в стеклотекстолите намечены.

Можно приступать к сверлению отверстий. Нужно сделать отверстия под кнопки, а также два отверстия под крепление платки. Подобрав сверла нужного диаметра можно приступать к работе.

Для сверления использовал самодельную микродрель, состоящую из мощного микродвигателя (извлек из какого-то копира) и латунного цангового патрона для тонких сверл.

Готовимся к сверлению отверстий в будущей платке для кнопок

Рис. 19. Готовимся к сверлению отверстий в будущей платке для кнопок.

Подобный набор из патрона и цанг можно поспрашивать в магазинах электроинструмента, а также заказать в китайском интернет-магазине вот ТУТ (1-2$).

Бывает что сверло очень тонкое и в патрон его зажать невозможно, в таком случае поможет небольшая хитрость: наматываем на сверло виток к витку и с натяжкой медную проволоку диаметром примерно 0,3мм (рисунок 19), теперь сверло с такой "катушкой" зажмется достаточно надежно.

Отверстия в стеклотекстолите просверлены (сверла 0,8мм и 3мм).

Рис. 20. Отверстия в стеклотекстолите просверлены (сверла 0,8мм и 3мм).

Раньше (еще до знания технологии ЛУТ) для рисования дорожек я использовал лак в котором разводил чернило из шариковой ручки.

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

Набор подручных средств для рисования печатной платы: лак для ногтей, растворитель, шприц, иголка

Рис. 21. Набор подручных средств для рисования печатной платы: лак для ногтей, растворитель, шприц, иголка.

В соответствии с трафаретом, нарисовал лаком на стеклотекстолите все дорожки. Подождал пока лак высохнет и подкорректировал форму дорожек при помощи иглы. Вот что получилось:

Нарисованные лаком для ногтей дорожки самодельной печатной платы

Рис. 22. Нарисованные лаком для ногтей дорожки самодельной печатной платы.

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

Готовая вытравленная печатная плата для кнопочной панели роутера на Raspberry Pi

Рис. 23. Готовая вытравленная печатная плата для кнопочной панели роутера на Raspberry Pi.

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

Готовая панель для пяти кнопок, подключаемых к Raspberry Pi

Рис. 24. Готовая панель для пяти кнопок, подключаемых к Raspberry Pi. (кликабельно)

Крепление кнопочной панели

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

Наметка точек для сверления в корпусе отверстий к которым будет прикреплена плата

Рис. 25. Наметка точек для сверления в корпусе отверстий к которым будет прикреплена плата.

Просверлив отверстия и прикрутив плату с кнопками к металлу, можно выполнить пометку мест для сверления отверстий под сами кнопки.

Наметка точек для сверления отверстий под кнопки

Рис. 26. Наметка точек для сверления отверстий под кнопки.

Готовая разметка для сверления отверстий под кнопки

Рис. 27. Готовая разметка для сверления отверстий под кнопки.

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

Чтобы плата держалась устойчиво и не висела на корпусах кнопок, были подобраны пластиковые стойки-шайбы. Две одинаковые найти не удалось, поэтому добавил к меньшей стойке одну металлическую шайбу. 🙂

Чтобы гайки со стороны дорожек ничего не закоротили, добавил две диэлектрические прокладки. К плате были припаяны соединительные проводники МГТФ (в изоляции из фторопласта). В конце все проводники можно зафиксировать вместе, поместив на них небольшой кусочек термоусадки. Получается вот такой план крепления:

План крепления готовой печатной платы с кнопками к корпусу будущего роутера

Рис. 28. План крепления готовой печатной платы с кнопками к корпусу будущего роутера.

Все закреплено и четко вписывается в корпус будущего сервера:

Панель с кнопками в металлическом корпусе для Raspberry Pi

Рис. 29. Панель с кнопками в металлическом корпусе для Raspberry Pi.

Устанавливаем RGB-светодиод

Трехцветный RGB-светодиод подключается через гасящие резисторы (рисунок 8). Подобрать сопротивление гасящего резистора можно экспериментально, подключив светодиод через переменный резистор на 3 кОм к источнику питания 3,3В (на пинах GPIO у нас будет именно такое напряжение при высоком уровне).

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

Подбираем сопротивление гасящего резистора для светодиода

Рис. 30. Подбираем сопротивление гасящего резистора для светодиода.

Светодиод светится ярко, а его ток потребления составляет меньше 1мА! После отключения переменного резистора я померил его сопротивление — примерно 1кОм.

Припаиваем резисторы и проводники к RGB-светодиоду

Рис. 31. Припаиваем резисторы и проводники к RGB-светодиоду.

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

Подключаем коннекторы для GPIO к светодиоду

Рис. 32. Подключаем коннекторы для GPIO к светодиоду.

Светодиод размещен между USB разъемами малинки, его свечение через корпус прекрасно видно, тем более в темноте (можно использовать как мини ночник).

Расположение RGB-светодиода в корпусе для Raspberry Pi

Рис. 33. Расположение RGB-светодиода в корпусе для Raspberry Pi.

Подключение и крепление пьезозуммера (пищалки)

На рисунке ниже показаны два типа пищалок. Первая из них — электродинамическая, подключать ее напрямую к GPIO очень опасно — можно спалить порт.

А вот подключать напрямую пьезоэлектрическую пищалку вполне можно попробовать! К тому же, пьезоэлемент имеет плоскую форму и он очень тонкий, его удобно крепить к стенкам устройств.

 Два типа пищалок, электродинамическая и пьезоэлектрическая

Рис. 34. Два типа пищалок, электродинамическая и пьезоэлектрическая.

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

Крепление зуммера к корпусу Raspberry Pi с помощью двухстороннего скотча

Рис. 35. Крепление зуммера к корпусу Raspberry Pi с помощью двухстороннего скотча.

Пьезозуммер закреплен на металлическом корпусе роутера

Рис. 36. Пьезозуммер закреплен на металлическом корпусе роутера.

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

Выводим свободные GPIO на корпус устройства

Покопавшись в хламе с различными коннекторами, разъемами и клеммами я не смог найти ничего подходящего, чем бы можно было удобно вывести 10-20 пинов GPIO наружу металлического корпуса для Raspberry Pi. Решил порыться в коробке с компьютерным хламом и нашел нечто интересное.

Коллекция коннекторов: D-15 (VGA), COM-порт, USB

Рис. 37. Коллекция коннекторов: D-15 (VGA), COM-порт, USB.

Можно использовать шлейф с коннектором на 16 пин или же два коннектора от COM-портов, но я выбрал более удобный и удачный вариант — коннекторы от USB, два отдельных блока по 10 гнезд (на рисунке справа один из них).

Все проводники били откушены от коннекторов, а внутренние контактные пластинки изъяты для извлечения остатков проводников и пайки новых — во фторопластовой изоляции (МГТФ).

Коннекторы от USB панельки (для подключения к пинам материнской платы)

Рис. 38. Коннекторы от USB панельки (для подключения к пинам материнской платы).

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

Коннекторы от передних панелей системных блоков и готовые разъемы с припаянными проводниками

Рис. 39. Коннекторы от передних панелей системных блоков и готовые разъемы с припаянными проводниками.

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

Для этого два черных коннектора были временно связаны вместе кусочком провода и размещены над платой малинки там, где они будут установлены. В моем случае, разъем будет установлен сразу за USB, с той же стороны что и гребенка GPIO.

Теперь берем по одному проводнику и измеряем его достаточную длину до нужного пина GPIO (с небольшим запасом), откусываем и припаиваем коннектор, параллельно записывая схематично на листе бумаги его название и расположение на разъеме. Делаем так 20 раз!

Когда все готово, можно приступать к вырезанию отверстия под разъем в корпусе. Здесь важно точно все измерить и не полениться проверить несколько раз, корпус должен хорошо закрываться с установленным разъемом.

Готовый разъем для GPIO и разметка под отверстие в корпусе Raspberry Pi

Рис. 40. Готовый разъем для GPIO и разметка под отверстие в корпусе Raspberry Pi.

После разметки прямоугольника где будет отверстие под разъем, сверлим в нем по середине отверстие диаметром примерно 6-10мм.

Подготовка к выпиливанию отверстия в металлическом корпусе

Рис. 41. Подготовка к выпиливанию отверстия в металлическом корпусе.

Используя надфили выпиливаем отверстие под разъем. Особенно аккуратно работать нужно в самом конце, разъем должен плотно и точно помещаться в отверстие, не болтаться.

Готовое отверстие под разъем для вывода 20 пинов GPIO на корпус

Рис. 42. Готовое отверстие под разъем для вывода 20 пинов GPIO на корпус.

Для фиксирования разъема в отверстии корпуса можно применить клей или же плавкий силикон.

Крепление дисплея

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

Таким образом, над разъемами HDMI и Audio останется достаточно места под платку с часами реального времени — DS1307.

Новенький дисплей SSD1306 и заготовка из органического стекла для окошка в корпусе

Рис. 43. Новенький дисплей SSD1306 и заготовка из органического стекла для окошка в корпусе.

Суть идеи по креплению дисплея:

  • вырезаем в корпусе прямоугольное отверстие;
  • вырезаем из оргстекла пластину под это отверстие с запасом по краям;
  • стачиваем края пластины чтобы ее середина вписывалась в отверстие на корпусе;
  • крепим пластину клеем;
  • прикладываем дисплей к пластине и фиксируем его плавким силиконом.

Более хорошо понять суть идеи можно из рисунка:

Схема крепления дисплея SSD1306 к металлическому корпусу роутера

Рис. 44. Схема крепления дисплея SSD1306 к металлическому корпусу роутера.

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

Разметка и резка оргстекла с помощью самодельного резака из ножовочного полотна

Рис. 45. Разметка и резка оргстекла с помощью самодельного резака из ножовочного полотна.

Теперь нужно убрать слой оргстекла вокруг окошка до толщины примерно 1,2мм. Данный процесс был выполнен с помощью скальпеля и набора надфилей. Поработать придется не мало.

Панелька из оргстекла для крепления и защиты дисплея SSD1306

Рис. 46. Панелька из оргстекла для крепления и защиты дисплея SSD1306.

Теперь пришло время для вырезания в корпусе окошка под дисплей. Размеры окошка будут такие же как и прозрачное окошко на панельке из органического стекла — 26х15мм.

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

Выпиливание окна под дисплей в металлическом корпусе с использованием лобзика

Рис. 47. Выпиливание окна под дисплей в металлическом корпусе с использованием лобзика.

Если нет лобзика то можно насверлить отверстий по периметру будущего окошка и потом напильником и надфилями выпилить серединку.

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

Панелька из органического стекла под дисплей в металлическом корпусе

Рис. 48. Панелька из органического стекла под дисплей в металлическом корпусе.

Панелька из оргстекла была приклеена к корпусу клеем. Дисплей SSD1306 приложен к панельке и зафиксирован по периметру несколькими кусочками плавкого силикона.

Дисплей SSD1306 прикреплен к металлическому корпусу для Raspberry Pi

Рис. 49. Дисплей SSD1306 прикреплен к металлическому корпусу для Raspberry Pi.

Подготовка и крепление модуля часов DS1307

Прежде чем заняться подключением и креплением модуля DS1307, его нужно немножко подготовить. Так же как и мордул дисплея, он будет подключен к шине I 2 C, но через нормализатор логических уровней.

Я рекомендую увеличить сопротивления подтягивающих резисторов, которые установлены на модуле, примерно в 2 раза, чтобы уменьшить нагрузку на каналы устройств, подключенных к шине I 2 C!

К примеру, если бы мы подключали к шине I 2 C малинки два устройства с питанием от +3,3В без схемы нормализации логических уровней (напрямую), то на одном из модулей подтягивающие резисторы желательно было бы выпаять. Об этой особенности я рассказывал в статье по PCF8591 и шине I 2 C.

Таким образом, выпаиваем из модуля DS1307 подтягивающие резисторы R2 и R3 (4,7 кОм) и на их место запаиваем резисторы сопротивлением примерно 10-12 кОм.

Платка DS1307 также содержит литиевую батарейку CR2032 — это не аккумулятор и поэтому заряжать ее нельзя. Остается загадкой почему производитель модулей DS1307 оставил включенным схему зарядки продавая в комплекте литиевую батарейку. Для отключения зарядки нужно выпаять еще один из резисторов — R5.

Отпаиваем резисторы для шины I2C и зарядки батарейки на модуле DS1307

Рис. 50. Отпаиваем резисторы для шины I2C и зарядки батарейки на модуле DS1307.

Также на платке есть место под установку термодатчика DS18B20, который работает по шине 1-Wire.

Установка датчика температуры DS18B20 на модуль часов DS1307

Рис. 51. Установка датчика температуры DS18B20 на модуль часов DS1307.

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

ds1307-cutting-wires-for-sensor-ds18b20

Рис. 52. Отключаем подтягивающий резистор и питание +5В к датчику DS18B20 DS1307.

С другой стороны (где расположены электронные компоненты) между ножками "Data" и "VCC" нужно запаять резистор на 4,7-10К. Теперь к выводу "VCC" датчика можно припаять проводник, который будет подключен к линии питания +3,3В.

Отверстие для подключения, маркируемое как "DS" и расположенное со стороны датчика, теперь можно использовать для подключения провода данных, идущего к шине 1-Wire Raspberry Pi.

На платке Raspberry Pi нужно выкрутить один из винтов крепления к корпусу (тот что около аудио разъема) и на его место установить небольшую цилиндрическую стойку, на которой будет закреплен модуль DS1307.

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

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

Варианты комплектов крепежа для установки модуля часов DS1307

Рис. 53. Варианты комплектов крепежа для установки модуля часов DS1307.

Прикрутив платку DS1307 к корпусу получилась следующая картинка:

Крепление модуля DS1307 внутри самодельного роутера на основе Raspberry Pi

Рис. 54. Крепление модуля DS1307 внутри самодельного роутера на основе Raspberry Pi (клик для увеличения).

Нормализатор логических уровней

Схема нормализации логических уровней для модулей с питанием от +3,3В и +5В собрана на двух полевых транзисторах и подтягивающих резисторах, которые уже были установлены на платках изначально. Осталось как-то закрепить и подключить транзисторы BSS138.

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

Цоколевка полевых транзисторов BSS138

Рис. 55. Цоколевка полевых транзисторов BSS138.

На бумаге в клеточку быстро начертил два варианта печатной платки, изготавливаемой из кусочка стеклотекстолита:

Варианты печатных платок для подключения транзисторов BSS138 в схеме нормализации логических уровней

Рис. 56. Варианты печатных платок для подключения транзисторов BSS138 в схеме нормализации логических уровней.

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

Транзисторы BSS138 на миниатюрной платке

Рис. 57. Транзисторы BSS138 на миниатюрной платке.

Осталось все соединить и позаботиться об изоляции контактов платы. Здесь можно применить изоляционную ленту и даже строительный скотч:

Платка нормализатора логических уровней припаяна к схеме и готова к изоляции

Рис. 58. Платка нормализатора логических уровней припаяна к схеме и готова к изоляции.

Схема полностью в сборе!

Сборка корпуса устройства

Осталось собрать корпус соединив верхнюю и нижнюю крышки, а потом прикрутив боковые панели восемью винтами.

Мини сервер и роутер на Raspberry Pi, осталось собрать корпус

Рис. 59. Мини сервер и роутер на Raspberry Pi, осталось собрать корпус.

Корпус в сборе уже был показан на рисунке 1, вот еще одно фото готового устройства:

Внешний вид готового устройства

Рис. 60. Внешний вид готового устройства.

Самодельные патч-корды RJ-45

Для подключения Raspberry Pi к сетевому коммутатору (Switch) было решено изготовить короткие и надежные патч-корды под разъемы RJ-45.

Поскольку скорость передачи данных Ethernet-порта малинки — 100 МБит, то можно обойтись всего двумя парами проводников.

Длина проводников будет достаточно не большая (15см — до 1м), поэтому можно применить прочный телефонный кабель, содержащий 4 разноцветные жилки (жилы попарно не скручены как в кабеле UTP).

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

Коннекторы RJ-45, обжимной инструмент и телефонный кабель на 4 жилы

Рис. 61. Коннекторы RJ-45, обжимной инструмент и телефонный кабель на 4 жилы.

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

Нумерация и подключение жилок телефонного кабеля к коннектору RJ-45:

  • 1 — желтый;
  • 2 — бирюзовый;
  • 3 — розовый;
  • 6 — черный.

Распиновка RJ-45 для патч-корда из телефонного кабеля на 4 жилы

Рис. 62. Распиновка RJ-45 для патч-корда из телефонного кабеля на 4 жилы.

Попробовав обжать кабель как есть я увидел что держится он в коннекторе очень не надежно. Решил применить разноцветные термоусадки — это усилит крепление кабеля в коннекторе и позволит пометить коннекторы/патч-корды разными цветами.

На каждый коннектор RJ-45 нужно подготовить два кусочка термоусадки — один короткий, другой примерно в 1,5 раза длиннее.

Готовим термоусадки для хорошей обжимки кабеля в коннекторе RJ-45

Рис. 63. Готовим термоусадки для хорошей обжимки кабеля в коннекторе RJ-45.

Кабель был очищен от внешней изоляции, оставив примерно 2см проводников для обжимки. На край изоляции была надета и прогрета коротенькая термоусадка, а затем на нее надет и нагрет более длинный кусочек термоусадки. Термоусадку, что подлиннее, желательно греть паяльником не касаясь ее, получится аккуратно и красиво.

Подготовка кабеля для самодельного патч-корда с коннекторами RJ-45

Рис. 64. Подготовка кабеля для самодельного патч-корда с коннекторами RJ-45.

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

Получилось надежно и симпатично:

Готовые самодельные патч-корды (2 пары жил) с коннекторами RJ-45

Рис. 65. Готовые самодельные патч-корды (2 пары жил) с коннекторами RJ-45.

Питание малинки и коммутатора (свича)

Коммутатор (5 портов) был куплен с расчетом на питание от линии +5В и током потребления — примерно 0,5А. В в интернет магазинах есть разные модели коммутаторов, но напряжение питания зачастую нигде не указано, а оно может быть и +12В, +9В, +7,5В.

Поэтому, более надежный вариант покупки — прогуляться по магазинам и самому почитать параметры маршрутизаторов и их источников питания. Пример модели с питанием от +5В: D-Link DES-1005.

Чтобы коммутатор можно было питать от USB-разъемов разных устройств (ноутбук, power-bank, адаптер питания с USB-поратми) его шнур питания нужно переделать.

Я отрезал от провода питания маршрутизатора сетевой адаптер и припаял к этому проводу USB-коннектор, который взял от нерабочей мышки A4TECH X7 (качественный коннектор, большое сечение жилок). Отрезанный маломощный блок питания от свича на +5В пригодится для других экспериментов и самоделок.

Если вы планируете питать маршрутизатор через адаптер только от сети 220В, то эту переделку можно и не выполнять.

Подготовка кабеля питания для свича от USB-порта компьютера или сетевого адаптера

Рис. 66. Подготовка кабеля питания для свича от USB-порта компьютера или сетевого адаптера.

Сначала попробовал питать коммутатор от USB-порта Raspberry Pi 3 — при большом трафике это приводит к перезагрузке или зависанию малинки. Ethernet-switch содержит внутренние преобразователи напряжения и потребляет не мало тока, он вполне способен перегрузить USB-порт малинки по линии питания.

В данной ситуации, самое лучшее решение — это покупка небольшого адаптера с двумя USB портами для питания малинки и коммутатора. Выходные параметры адаптера должны быть примерно такими: напряжение +5В, ток 2,5А и более.

Хочу отдельно обратить ваше внимание на кабели-переходники USB-miniUSB для питания Raspberry Pi — они должны быть качественными, из более дорогих, содержащие жилки достаточного сечения для пропускания через них тока 2-2,5А при напряжении 5В, что примерно равно мощности 10-13Вт.

Не пожалейте денег на качественный блок питания и соединительный кабель для малинки, это важно!

Также всю связку можно будет питать от пауер-банка (Power Bank) — как аварийный вариант, когда нет штатного питания из сети переменного тока.

В завершение

На этом "железная" часть по изготовлению самодельного мини-сервера и роутера на Raspberry Pi завершена. В следующей статье я расскажу как настроить операционную систему и все необходимые программы, приведу скрипты и эксперименты с кнопками, дисплеем, пищалкой, Wi-Fi, 3G.


Источник: ph0en1x.net