Мобильная версия Форум Arduino Документация Гарантийные условия 0 0
UA RU
График работы магазина:
Пн-Пт: 8.00 - 19.00
Сб: 10.00 - 17.00
Вс: выходной
Каталог
Напиши статью и получи скидку!

Роутер на Raspberry Pi 3 с дисплеем

2017-02-22

Все статьи →

Владимир Соколов

В проекте используются Raspberry Pi 3 и OLED (SSD1306 128x64 I2C или SPI). Для корпуса используется акриловый «сэндвич», так наглядней, и обычный 5-вольтовый источник питания силой тока около 0,5 А (этого вполне достаточно: устройство потребляет не более 350 мА даже на максимальных нагрузках канала).

Установка точки доступа

1. Установите Raspbian Jessie Lite на microSD карту с помощью Win32DiskImager (из-под Виндоус).

2. Создайте файлик-семафор 'ssh' корневой директории на флешке.

3. Подключите RPi к любому роутеру и найдите его IP (например, отлично себя рекомендовала программка ipscan24, которую можно запускать даже без инсталляции).

4. С помощью Putty подключитесь к RPi по SSH с настройками по умолчанию:

putty.exe pi@<RPi IP> -pw raspberry

5. Смените пароль на более стойкий:

sudo passwd pi

6. Обновите систему:

sudo apt-get update && sudo apt-get upgrade

7. Настройте сетевые интерфейсы в файле:

sudo nano /etc/network/interfaces

Добавьте строки:

auto lo

iface lo inet loopback

auto eth0

allow-hotplug eth0

iface eth0 inet manual

auto wlan1

allow-hotplug wlan1

iface wlan1 inet manual

wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan0

iface wlan0 inet static

address 10.0.0.1

network 10.0.0.0

netmask 255.255.255.0

broadcast 255.0.0.0

Для сохранения нажмите Ctrl+O, а для выхода из файла — Ctrl+X.

8. Установите dnsmasq:

sudo apt-get install dnsmasq

9. Настройте DNS:

sudo nano /etc/dnsmasq.conf

Добавьте строки:

no-resolv

interface=wlan0

except-interface=eth0

dhcp-range=10.0.0.3,10.0.0.20,12h

server=8.8.8.8

server=8.8.4.4

log-facility=/var/log/dnsmasq.log

log-queries

10. Enable packet forwarding:

sudo nano /etc/sysctl.conf

Добавьте строки:

net.ipv4.ip_forward=1

net.ipv6.conf.all.forwarding=1

11. Настройте NAT между wlan0 и eth0:

sudo nano /etc/rc.local

Добавьте строки:

SOURCE=eth0

DEST=wlan0

iptables -t nat -A POSTROUTING -o $SOURCE -j MASQUERADE

iptables -A FORWARD -i $SOURCE -o $DEST -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A FORWARD -i $DEST -o $SOURCE -j ACCEPT

exit 0

12. Установите hostapd:

sudo apt-get install hostapd

13. Добавьте путь к файлу настроек Wi-Fi карты в качестве точки доступа:

sudo nano /etc/default/hostapd

Добавьте строки:

DAEMON_CONF="/etc/hostapd/hostapd.conf"

14. Настройте точку доступа:

sudo nano /etc/hostapd/hostapd.conf

Добавьте строки (измените пароль на свой):

interface=wlan0

driver=nl80211

ssid=Pi3-AP

hw_mode=g

channel=6

ieee80211n=1

wmm_enabled=1

ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]

macaddr_acl=0

auth_algs=1

ignore_broadcast_ssid=0

wpa=2

wpa_key_mgmt=WPA-PSK

wpa_passphrase=raspberry

rsn_pairwise=CCMP

15. Перегрузите систему:

sudo reboot

16. Найдите точку доступа Pi3-AP и подключитесь к ней.

Добавление дисплея

1. Подключите OLED к RPi.

RPi (I2C OLED)

GPIO3 (5) - SCK

GPIO2 (3) - SDA

3V3 (1) - VCC

GND (6) - GND

RPi (SPI OLED)

GPIO25 (22) - RES

GPIO9 (21) - D/C

GPIO10 (19) - DIN (SDA)

GPIO8 (24) - CS

GPIO11 (23) - CLK (SCK)

3V3 (17) - VCC

GND (20) - GND

2. Активируйте SPI или I2C в системе:

sudo raspi-config

Выберите меню "5 Interfacing Options " и нужное подменю "P4 SPI" или/и "P5 I2C".

И выйдите из программы.

3. Установите пакеты для Python 3:

sudo apt-get install build-essential python-dev python-pip python-imaging python-smbus git

sudo apt-get install python3-pip python3-dev

4. Установите библиотеку RPi.GPIO:

sudo pip3 install RPi.GPIO

5. Загрузите и соберите библиотеку для JPEG:

wget http://www.ijg.org/files/jpegsrc.v8c.tar.gz

tar xvfz jpegsrc.v8c.tar.gz

cd jpeg-8c

./configure --enable-shared --prefix=$CONFIGURE_PREFIX

make

sudo make install

cd ..

6. Перелинкуйте библиотеку:

sudo ln -s /usr/lib/arm-linux-gnueabi/libjpeg.so /usr/lib

sudo ln -s /usr/lib/arm-linux-gnueabi/libfreetype.so /usr/lib

sudo ln -s /usr/lib/arm-linux-gnueabi/libz.so /usr/lib

7. Установите оставшиеся библиотеки, такие как freetrype и zlib:

sudo apt-get install libjpeg-dev libfreetype6 libfreetype6-dev zlib1g-dev

8. Установите питоновские библиотеки для работы с изображениями и сбора системной информации:

sudo pip3 install image

sudo pip3 install psutil

9. Установите шрифты:

sudo apt-get install fontconfig

10. Сделайте клон библитеки с Гитхаба и установите ее:

git clone https://github.com/Oestoidea/Adafruit_Python_SSD1306.git

cd Adafruit_Python_SSD1306/

sudo python3 setup.py install

11. Запустите пример (I2C или SPI):

sudo python3 examples/statisticsI2C.py

Или:

sudo python3 examples/statisticsSPI.py

Если все прошло успешно, то вы увидите в консоли нечто похожее:

1 1485124450.46 | 0.39 0.50 0.23 119 tasks | Mem: 34.8MB SD: 18% | CPU: 39.7°C/103°F | SSID: Pi3-AP 2 clients | 10.0.0.1 6ch 31dBm | 109.162.126.180 43.0ms

2 1485124451.71 | 0.39 0.50 0.23 119 tasks | Mem: 34.5MB SD: 18% | CPU: 39.7°C/103°F | SSID: Pi3-AP 2 clients | 10.0.0.1 6ch 31dBm | 109.162.126.180 43.0ms

3 1485124452.96 | 0.39 0.50 0.23 119 tasks | Mem: 34.8MB SD: 18% | CPU: 39.7°C/103°F | SSID: Pi3-AP 2 clients | 10.0.0.1 6ch 31dBm | 109.162.126.180 43.1ms

...

А на экране будет отображать статистика.

12. Установите автозапуска скрипта при старте системы:

sudo nano /etc/rc.local

Добавьте в конце файла строку (до "exit 0") для I2C дисплея:

python3 /home/pi/Adafruit_Python_SSD1306/examples/statisticsI2C.py

Или для SPI:

python3 /home/pi/Adafruit_Python_SSD1306/examples/statisticsSPI.py

13. Перегрузите систему:

sudo reboot

Устройство уже полтора месяца работает в домашних условьях (количество пользователей — до 5) и радует глаз.

И за это время выявились несколько недостатков:

– небольшой радиус действия (его можно увеличить, если использовать USB сетевую карту c внешней антенной);

– так как есть лишь одна антенна, то MIMO недоступен;

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

Раз в пять минут экран дисплея моргает. При передачи данных на экран может сбиваться его инициализация (особенно этим «славится» I2C протокол).

Данный экранчик носит информационный характер, потому если и возникнет сбой передачи, то его последствия будут отображаться не более пяти минут. Изменить время можно в файлах примеров. Для этого увеличьте измените количество итераций (каждая занимает около 1,5 с) или удалите проверку вовсе:

if times >= 200:

times = 0

disp.begin()

Ваша оценка статьи:

Отлично
Хорошо
Удовлетворительно
Плохо
Очень плохо

Общая оценка:

Оценка "Роутер на Raspberry Pi 3 с дисплеем"
3 из 5
сделана на основе 2 оценок 2 клиентских отзывов.

Благодарим Вас за обращение! Ваш отзыв появится после модерации администратором.
C
24.07.2024 17:53:50
Цікава стаття, але хтілось побачити як це все працюватиме на відео хоча б
Василий
29.08.2020 23:03:31
Да, точно при чем здесь роутер?
оплата картами Visa и MasterCard