Rock Pi S: крошечный одноплатник для IoT-проектов

Подробный гайд по Rock Pi S: от распаковки до создания датчика с веб-интерфейсом. Настройка Armbian, работа с GPIO, интеграция с Home Assistant. Идеальный выбор для умного дома.
В мире одноплатников царит культ мощности: больше ядер, больше гигагерц, больше оперативки. Но что, если твоему проекту не нужна вся эта вычислительная мощь, а нужны скромные аппетиты, компактность и надёжность? Именно здесь на сцену выходит Rock Pi S — миниатюрный, но удивительно способный одноплатник, который я всё чаще выбираю для своих IoT-задач. Это не конкурент Raspberry Pi 4 в гонке за производительность, это специалист узкого профиля: тихий, экономный и всегда на посту.
Я использую Rock Pi S в качестве мозгов для датчиков, простого MQTT-брокера, контроллера для реле через GPIO и даже как мини-шлюз для устройств Zigbee или 433 МГц. Его главные козыри — размер (всего 35x35 мм), наличие встроенной флеш-памяти (до 16 ГБ eMMC) и очень низкое энергопотребление. Давайте разберём его по косточкам и настроим для реальной задачи.
Что в коробке? Технические характеристики и распиновка
Rock Pi S построен на процессоре Rockchip RK3308 с 4 ядрами Cortex-A35. Это ARMv8, но без неонового блока, что важно для некоторых оптимизированных сборок. Варианты памяти: 256 или 512 МБ оперативной памяти DDR3. Этого достаточно для headless-работы (без монитора) под управлением лёгкой ОС.
Ключевые порты и интерфейсы: * Встроенная память: 8 или 16 ГБ eMMC (это не SD-карта, а распаянный чип — быстрее и надёжнее). * MicroSD-слот: Для загрузки альтернативной ОС или расширения хранилища. * Сеть: 10/100 Ethernet (контроллер RTL8211E) — это важно, Wi-Fi нет в базовой версии. * USB: Один порт USB 2.0 Type-A (хост) и один USB 2.0 OTG (обычно используется для питания). * Аудио: Встроенный кодек, есть выход на наушники (3.5 мм) и встроенный микрофон (плюс разъём для внешнего). * GPIO: 26-контактный разъём, совместимый по распиновке с Raspberry Pi Model A/B (но не Zero!). Это огромный плюс для использования шилдов и хатов. * Питание: Через порт USB-C (рекомендуется) или через контактные площадки на плате. Нужен стабильный источник 5V/2A.
Важный момент по питанию: Из-за крошечных размеров на плате нет полноценного линейного стабилизатора. Используйте качественный блок питания с USB-C. Слабая зарядка от старого повербанка может привести к нестабильной работе и "плавающим" ошибкам.
Выбор и установка операционной системы
Для IoT идеально подходят минималистичные ОС. Официально поддерживаются: 1. Debian (Armbian) — мой основной выбор. Стабильная, огромное сообщество, актуальные пакеты. 2. DietPi — сверхлёгкая и оптимизированная система. Если ваш проект требует абсолютного минимума ресурсов — это лучший кандидат. Кстати, у меня есть отдельная статья про DietPi на одноплатниках, где я разбираю её преимущества. 3. Ubuntu Core — для проектов, требующих высокой безопасности и обновлений через снапы.
Установка Armbian на eMMC (рекомендуемый способ)
Скачиваем последний образ Armbian для Rock Pi S с официального сайта. Чаще всего это файл с именем, подобным Armbian_23.11.1_Rockpi-s_jammy_current_6.1.63.img.xz.
Шаг 1: Запись на SD-карту и первичная загрузка.
Вставляем SD-карту в компьютер и записываем образ с помощью balenaEtcher или dd. Вставляем карту в Rock Pi S, подключаем Ethernet, питание и ждём загрузки.
Шаг 2: Первый вход и смена пароля.
Находим IP-адрес платы через роутер или сканер сети (например, nmap -sn 192.168.1.0/24). Подключаемся по SSH:
ssh root@192.168.1.100
Пароль по умолчанию: 1234. При первом входе система предложит сменить пароль и создать нового пользователя. Сделайте это обязательно!
Шаг 3: Флеш-инсталляция на eMMC. Это ключевая команда, которая переносит систему с SD-карты на встроенную, более быструю память.
sudo nand-sata-install
В появившемся текстовом меню выбираем пункт Boot from eMMC - system on eMMC. Скрипт скопирует систему и настроит загрузчик. После завершения выключите плату командой sudo poweroff, извлеките SD-карту и снова включите. Теперь система грузится с eMMC.
Типичная ошибка: Пытаться запустить nand-sata-install без загрузки с SD-карты. Это не сработает. Процесс всегда идёт с карты на eMMC.
Базовая настройка и "приведение в чувство"
Обновляем систему и устанавливаем базовые утилиты:
sudo apt update && sudo apt upgrade -y
sudo apt install -y vim htop git curl wget network-manager ufw
Настройка статического IP (опционально, но желательно для сервера): Редактируем конфиг Netplan (актуально для новых версий Armbian/Ubuntu).
sudo vim /etc/netplan/01-netcfg.yaml
Приводим файл к виду (подставив свои значения):
network:
version: 2
renderer: networkd
ethernet:
eth0:
dhcp4: no
addresses: [192.168.1.150/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
Применяем настройки:
sudo netplan apply
Включаем базовой фаервол:
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80,443/tcp # Если планируете веб-сервер
sudo ufw --force enable
Практический проект: Создаём датчик температуры/влажности с веб-интерфейсом
Давайте сделаем что-то осязаемое. Подключим популярный датчик DHT22 (AM2302) к GPIO и выведем данные на простую веб-страничку.
Необходимое железо: * Rock Pi S * Датчик DHT22 * Резистор 10 кОм (подтяжка Data к VCC) * Малка (breadboard) и провода
Схема подключения: * VCC (DHT22, пин 1) -> Pin 1 (3.3V) на Rock Pi S * DATA (DHT22, пин 2) -> Pin 7 (GPIO4) на Rock Pi S (через подтягивающий резистор к 3.3V) * GND (DHT22, пин 4) -> Pin 9 (GND) на Rock Pi S
Шаг 1: Установка необходимого ПО.
sudo apt install -y python3-pip python3-venv git nginx
sudo pip3 install Adafruit_DHT flask
Комментарий: Мы ставим питоновскую библиотеку для работы с датчиком и микро-фреймворк Flask для создания веб-сервера. Nginx будет работать как обратный прокси для стабильности.
Шаг 2: Пишем скрипт для чтения с датчика и веб-сервера.
Создаём файл ~/sensor_app.py:
#!/usr/bin/env python3
import Adafruit_DHT
from flask import Flask, jsonify
import time
app = Flask(__name__)
SENSOR = Adafruit_DHT.DHT22
PIN = 4 # GPIO4, он же физический пин 7
def read_sensor():
"""Чтение данных с датчика DHT22."""
humidity, temperature = Adafruit_DHT.read_retry(SENSOR, PIN)
if humidity is not None and temperature is not None:
return {'temperature': round(temperature, 1), 'humidity': round(humidity, 1)}
else:
return {'error': 'Failed to read sensor'}
@app.route('/')
def index():
data = read_sensor()
html = f"""
<html><body>
<h1>Rock Pi S Sensor</h1>
<p>Temperature: <strong>{data.get('temperature', 'N/A')} °C</strong></p>
<p>Humidity: <strong>{data.get('humidity', 'N/A')} %</strong></p>
<p><small>(Updates on refresh)</small></p>
</body></html>
"""
return html
@app.route('/api/data')
def api_data():
"""JSON endpoint для Home Assistant или других систем."""
return jsonify(read_sensor())
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000, debug=False)
Делаем его исполняемым: chmod +x ~/sensor_app.py
Шаг 3: Настраиваем автозапуск через systemd.
Создаём сервисный файл: sudo vim /etc/systemd/system/sensor.service
[Unit]
Description=Rock Pi S DHT22 Sensor Web Service
After=network.target
[Service]
Type=simple
User=your_username # Замените на имя вашего пользователя!
WorkingDirectory=/home/your_username
ExecStart=/usr/bin/python3 /home/your_username/sensor_app.py
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
Активируем и запускаем сервис:
sudo systemctl daemon-reload
sudo systemctl enable sensor.service
sudo systemctl start sensor.service
Шаг 4: Настраиваем Nginx как обратный прокси (опционально, но для надёжности).
Редактируем конфиг: sudo vim /etc/nginx/sites-available/sensor
server {
listen 80;
server_name rockpi.local; # или ваш IP
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Активируем конфиг и перезапускаем Nginx:
sudo ln -s /etc/nginx/sites-available/sensor /etc/nginx/sites-enabled/
sudo nginx -t # Проверяем конфигурацию на ошибки
sudo systemctl restart nginx
Проверка результата
-
Проверяем работу сервиса:
bash sudo systemctl status sensor.serviceВ выводе должна быть строкаactive (running). -
Проверяем данные через API:
bash curl http://localhost:5000/api/dataДолжен вернуться JSON вида{"humidity": 45.2, "temperature": 22.1}. -
Открываем веб-интерфейс: В браузере переходим по IP-адресу вашего Rock Pi S (например,
http://192.168.1.150). Вы должны увидеть страницу с текущими показаниями температуры и влажности.
Что пошло не так? Типичные проблемы:
* Failed to read sensor: Чаще всего проблема в плохом контакте на макетке или отсутствии подтягивающего резистора. Проверьте схему.
* Could not open /dev/mem: Недостаточно прав. Убедитесь, что скрипт запускается от обычного пользователя, который состоит в группе gpio (в Armbian это обычно уже сделано).
* Nginx выдаёт 502 ошибку: Сервис Flask не запущен. Проверьте systemctl status sensor и логи journalctl -u sensor.service.
Интеграция с умным домом (Home Assistant)
Созданный нами JSON-эндпоинт (/api/data) идеально подходит для интеграции. В Home Assistant добавляем сенсор через RESTful Integration.
В configuration.yaml:
sensor:
- platform: rest
resource: http://192.168.1.150/api/data
name: RockPi S DHT22
scan_interval: 60
value_template: '{{ value_json.temperature }}'
unit_of_measurement: "°C"
- platform: rest
resource: http://192.168.1.150/api/data
name: RockPi S Humidity
scan_interval: 60
value_template: '{{ value_json.humidity }}'
unit_of_measurement: "%"
После перезагрузки HA данные с вашего самодельного датчика появятся в интерфейсе. Это отличная альтернатива беспроводным датчикам, когда нужна стабильность проводного подключения. Для более сложной автоматизации можно связать эти данные с другими устройствами через Node-RED + Home Assistant.
Заключение: Когда выбирать Rock Pi S?
Rock Pi S — это не универсальная плата. Это инструмент для конкретных задач. Я выбираю его, когда: * Нужен маленький, всегда включённый сетевой узел (MQTT-брокер Mosquitto, сервер времени NTP). * Проект требует максимальной стабильности (eMMC надёжнее SD-карты) и проводного Ethernet. * Задача — сбор данных с GPIO (датчики, реле) и их отправка в сеть. * Ограничен бюджет на электроэнергию (потребляет в простое менее 1Вт).
Если же вам нужен Wi-Fi, больше вычислительной мощности для медиа или полноценный веб-сервер с базой данных — посмотрите на более старшие модели, например, NanoPi M4V2. Но для десятков скучных, рутинных задач в умном доме или лаборатории, Rock Pi S оказывается идеальным, неприхотливым работягой, который просто делает своё дело.
Его главная магия — в простоте и отсутствии лишнего. Нет лишних интерфейсов, которые нужно отключать, нет кулеров, нет проблем с перегревом. Просто подключил, настроил и забыл — на месяцы. А в мире IoT это и есть высшая похвала.
Понравилась статья?
Поставьте лайк и сохраните полезный материал в закладки.
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Orange Pi Zero 3: самый доступный одноплатник для умного дома
Radxa Zero 3W: Маленький одноплатник с WiFi 6 для ваших DIY-проектов
Домашний кластер из микрокомпьютеров: собираем и находим применение
ROCK Pi 4B: установка Armbian и подключение по SSH без монитора
NanoPi NEO3: ваш крошечный и мощный сервер для IoT и автоматизации
Orange Pi vs Raspberry Pi: Что выбрать для DIY-проектов в 2024 году?