Программирование, радиоэлектроника,
саморазвитие и частичка из моей жизни здесь...

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

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

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

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

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

Содержание:

  1. Основные характеристики и возможности
  2. Комплектующие
  3. Принципиальная схема
  4. Печатная плата для крепления кнопок
  5. Крепление кнопочной панели
  6. Устанавливаем RGB-светодиод
  7. Подключение и крепление пьезозуммера (пищалки)
  8. Выводим свободные GPIO на корпус устройства
  9. Крепление дисплея SSD1306
  10. Подготовка и крепление модуля часов DS1307
  11. Сборка корпуса устройства
  12. Самодельные патч-корды RJ-45
  13. Питание коммутатора (свича)
  14. В завершение

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

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

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

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

Технические характеристики:

  • Raspberry Pi 3 model B (BCM2837 64bit 4x1.2GHz CPU, 1GB, Bluetooth, Wi-Fi);
  • OLED дисплей 128x64 - 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 с разрешением 128x64 пикселей - экономичен, небольшой по размерам, есть в разных цветах и умеет работать с шиной I2C. Отличный выбор для самодельного мини-сервера!

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

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

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

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

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

Плюсы DS1307:

  • Встроенная литиевая батарейка (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-светодиода подключен через гасящие резисторы R1-R3, о подборе их сопротивления расскажу дальше в статье.

Модули SSD1306 и DS1307 питаются от линии +5В и подключены к общей шине I2C. Вывод "DS" модуля DS1307 - это интерфейс 1-wire датчика температуры, он подключен к отдельному GPIO.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Разводку печатной платы выполнил быстрым классическим методом - простым карандашом на бумаге в клеточку (на которой был нарисован трафарет боковой панели корпуса).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Прежде чем заняться подключением и креплением модуля DS1307, его нужно немножко подготовить. Поскольку к одной шине I2C будут подключены два модуля, то подтягивающие резисторы нужно оставить только на одном из них. Об этой особенности я рассказывал в статье по PCF8591 и шине I2C. Было принято решение выпаять подтягивающие резисторы R2 и R3 на модуле DS1307.

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

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

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

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

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

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

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

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

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

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

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

К модулю DS1307 с одной стороны контактов была подключена плата модуля SSD1306, а выводы с другой стороны подключены к шине I2C и коннекторам питания +5В и GND. Выводы VCC, GND, SCL, SDA по краям DS1307 соединены на плате параллельно.

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

Самодельный роутер на Raspberry Pi + SSD1306 + DS1307 внутри

Рис. 52. Самодельный роутер на Raspberry Pi + SSD1306 + DS1307 внутри (клик для увеличения).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Смотрим схему:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Сначала пробовал питать коммутатор от USB-порта Raspberry Pi 3 - при высоком трафике это приводит к перезагрузке или зависанию малинки.

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

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

В завершение

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