Nintendo Wifi роутери: 17 кадам (сүрөттөр менен)
Nintendo Wifi роутери: 17 кадам (сүрөттөр менен)
Anonim
Nintendo Wifi роутери
Nintendo Wifi роутери

Эски Nintendo Entertainment системасынын корпусун колдонуп, RaspberryPI 3 колдонуп, абдан функционалдуу үй роутерин чыгарыңыз!

1 -кадам: RaspberryPi программасын орнотуңуз

Жаркыраган RaspberriPi Hard Disk / Керектүү Программаны Орнотуу (Ubuntu Linuxту колдонуу)

"RASPBIAN JESSIE LITE" жүктөп алуу

DashboardPI үчүн жаңы катуу дискти түзүңүз

USB адаптери аркылуу microSDди компьютериңизге киргизиңиз жана dd командасын колдонуп дисктин сүрөтүн түзүңүз

Киргизилген microSD картаңызды df -h буйругу аркылуу табыңыз, аны ажыратып, dd буйругу менен дисктин сүрөтүн түзүңүз.

$ df -h/dev/sdb1 7.4G 32K 7.4G 1%/медиа/XXX/1234-5678

$ umount /dev /sdb1

Эскертүү: буйруктун так экенине ишениңиз, бул буйрук менен башка дисктерге зыян келтире аласыз

if = RASPBIAN JESSIE LITE сүрөт файлы = microSD картаңыздын жайгашкан жери

$ sudo dd bs = 4M if =/path/to/raspbian-jessie-lite.img of//dev/sdb (note: in this case, it's this/dev/sdb,/dev/sdb1 was in the existing zavod partition on microSD) RaspberriPi орнотуу

Жаңы microSD картаңызды raspberrypiге салып, HDMI портуна туташкан монитор менен күйгүзүңүз

Кирүү

user: pi pass: raspberry Коопсуздук үчүн каттоо эсебиңиздин сырсөзүн өзгөртүңүз

sudo passwd pi RaspberriPi Advanced Options иштетүү

sudo raspi-config тандаңыз: 1 Файл системасын жайыңыз

9 Advanced Options

A2 Hostname аны "NESRouter" кылып өзгөртөт

A4 SSH SSH серверин иштетүү

A7 I2C i2c интерфейсин иштетүү Англисче/АКШлык баскычтопту иштетүү

sudo nano/etc/default/клавиатура Төмөнкү сапты өзгөртүңүз: XKBLAYOUT = "us" Жөнөкөй каталогду орноту l командасы [милдеттүү эмес]

vi ~/.bashrc

төмөнкү сапты кошуу:

каймана аты l = 'ls -lh'

source ~/.bashrc FIM VIM демейки синтаксисин белгилөө [милдеттүү эмес]

sudo vi/etc/vim/vimrc

төмөнкү сапка комментарий бербеңиз:

акыркы өзгөртүүлөрдү алуу үчүн PIди кайра жүктөө синтаксиси

жергиликтүү убакыт алкагынын жөндөөлөрүн жаңыртуу

sudo dpkg-кайра конфигурациялоо интерфейсинин жардамы менен убакыт алкагын тандаңыз

2 -кадам: WiFi кирүү чекитин түзүү

Көңүл буруңуз, бул роутер боло электе, биз төмөнкү пакеттерди орнотуу үчүн RaspberryPi'ди учурдагы тармакка анын Ethernet порту аркылуу туташтырабыз.

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

Sudo apt-get dnsmasq hostapd vim орнотуу

sudo apt-get install vim git python-smbus i2c-tools python-Imaging python-smbus build-essential python-dev rpi.gpio python3 python3-pip libi2c-dev

sudo vi /etc/dhcpcd.conf

Төмөнкү сапты кошуңуз:

denyinterfaces wlan0 sudo vi/etc/network/interfaces

Wlan0 бөлүмүн төмөнкүдөй кылып түзөтүңүз:

auto lo iface lo inet loopback

iface eth0 inet колдонмосу

авто wlan0 iface wlan0 inet статикалык дареги 10.0.10.1 netmask 255.255.255.0 тармак 10.0.10.0 уктуруу 10.0.10.255

auto eth1 iface eth1 inet static address 10.0.20.1 netmask 255.255.255.0 тармак 10.0.20.0 уктуруу 10.0.20.255 DHCP Serverди кайра жүктөө жана eth0 жана wlan0 туташуулары үчүн конфигурацияны секиртүү

sudo кызматы dhcpcd кайра

sudo ifdown eth0; sudo ifup wlan0

HOSTAPDди конфигурациялоо (ssid жана wpa_passphrase'ди өзүңүз тандаган баалуулуктарга өзгөртүү)

sudo vi /etc/hostapd/hostapd.conf

# Бул жогоруда конфигурацияланган WiFi интерфейсинин аты = wlan0

# Nl80211 драйверин brcmfmac драйверинин айдоочусу = nl80211 менен колдонуңуз

# Бул ssid = NintendoWiFi тармагынын аты

# 2.4GHz диапазонун колдонуңуз hw_mode = g

# 6 каналды колдонуу = 6 канал

# Иштетүү 802.11n ieee80211n = 1

# WMM иштетүү wmm_enabled = 1

# 20нс күзөт аралыгы бар 40МГц каналдарды иштетүү ht_capab = [HT40] [SHORT-GI-20] [DSSS_CCK-40]

# Бардык MAC даректерин кабыл алыңыз macaddr_acl = 0

# WPA аутентификациясын колдонуу auth_algs = 1

# Кардарлардан тармактын атын ignore_broadcast_ssid = 0 билүүсүн талап кылыңыз

# Колдонуу WPA2 wpa = 2

# Алдын ала бөлүшүлгөн ачкычты колдонуңуз wpa_key_mgmt = WPA-PSK

# Тармактын кирүүчү фразасы wpa_passphrase = сырсөз

# TKIPдин ордуна AESти колдонуңуз

sudo/usr/sbin/hostapd /etc/hostapd/hostapd.conf

sudo vi/etc/default/hostapd

Сапты табыңыз

#DAEMON_CONF = "" жана аны менен алмаштырыңыз

DAEMON_CONF = "/etc/hostapd/hostapd.conf" DNSMASQти конфигурациялоо

sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig

sudo vi /etc/dnsmasq.conf

bind-interfaces # Башка нерселерди жөнөтпөөбүз үчүн, интерфейске байлаңыз = 8.8.8.8 # DNS сурамдарын Google DNS доменине жөнөтүңүз -катталган дарек мейкиндиктери.

# IP даректерин чексиз ижарага берүү убактысын дайындоо (түзмөктү колдонуу статистикасы үчүн) dhcp-range = wlan0, 10.0.10.100, 10.0.10.200, 255.255.255.0, 10.0.10.255, чексиз dhcp-диапазону = eth1, 10.0.20.100, 10.0. 20.200, 255.255.255.0, 10.0.20.255, чексиз SET UP IPV4 FORWARDING

sudo vi /etc/sysctl.conf

[uncomment] net.ipv4.ip_forward = 1

Аны дароо sudo sh -c "echo 1>/proc/sys/net/ipv4/ip_forward" менен жандырыңыз

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

sudo iptables -А АЛГА -i eth0 -o eth1 -m мамлекет -мамлекет БАЙЛАНЫШТУУ, ТУРУЛГАН -j КАБЫЛ АЛЫҢЫЗ

sudo iptables -А АЛГА -i eth1 -o eth0 -j КАБЫЛ АЛ

sudo iptables -A FORWARD -i eth0 -o wlan0 -m state -мамлекет БАЙЛАНЫШТУУ, ТУРУЛГАН -j КАБЫЛ АЛЫҢЫЗ

sudo iptables -А АЛГА -i wlan0 -o eth0 -j КАБЫЛ АЛ

Кийинки кайра жүктөө үчүн iptables орнотууларын сактаңыз

sudo sh -c "iptables -save> /etc/iptables.ipv4.nat"

IPv4 эрежелери файлын түзүңүз (жаңы мазмун менен)

sudo vi/lib/dhcpcd/dhcpcd-hooks/70-ipv4-nat

iptables-restore </etc/iptables.ipv4.nat Кызматтарды кайра баштоо

sudo кызматы hostapd баштоо sudo кызматы dnsmasq баштоо

sudo кайра жүктөө

Статикалык IP дайындоо [Милдеттүү эмес]

Эгерде сиз тармагыңыздагы хосттордун статикалык ipsке ээ болушун кааласаңыз, төмөнкүлөрдү колдонуңуз

Азыркы учурда DHCP vi /var/lib/misc/dnsmasq.leases аркылуу туташкан хостторду Aquire

MAC дарегин кошуңуз (жогорудагы чыгармадан) жана аларды дайындагыңыз келген IP дарегин sudo vi /etc/dnsmasq.conf

# негизги рабочий dhcp-host = 12: 34: 56: 78: 9а: б.з..20.20. Тизмедеги IP дареги DHCP диапазонунда болушу шарт эмес, ошол эле тармакта. Менин башкы иш столум eth1: 10.0.20.0 субнетинде, ошондуктан мен ага 10.0.20.20 IP дарегин бердим.

UFW Firewall кошулууда

sudo apt-get ufw орнотуу

Жалпыга пайдалануу үчүн порт 22ге уруксат берүү (тармакка алыстан кирүү үчүн)

sudo ufw уруксат 22

Менин жергиликтүү тармагымдагы бардык портторго уруксат берүү

sudo ufw уруксат берүү 10.0.10.0/24 sudo ufw уруксат берүү 10.0.20.0/24 чейин

Бардыгына веб портторго уруксат берүү

sudo ufw 80ге уруксат берүү

Баарына коопсуз веб портторго уруксат берүү

443

UFW иштетүү жана абалын текшерүү

sudo ufw -күчтү иштетүү

sudo ufw абалы

UFW менен баштоодо башталбаган UFW менен мүчүлүштүктөрдү оңдоо

sudo su crontab -e

Төмөнкү сапты кошуңуз: @reboot /bin /sleep 60; ufw -күч менен иштетүү

3 -кадам: Керектелүүчү материалдар: Эски Broken Nintendo

Керектелүүчү материалдар: Эски Broken Nintendo
Керектелүүчү материалдар: Эски Broken Nintendo

Сынган NESтен эски Nintendo Case (корпустун ичиндеги бардык эски мазмунун алып салыңыз, бир гана сырткы алкакты, күч / баштапкы абалга келтирүү баскычтарын жана контроллер байланыштарын калтырып)

4 -кадам: Керектелүүчү материалдар: Raspberry Pi 3 Model B

Керектелүүчү материалдар: Raspberry Pi 3 Model B
Керектелүүчү материалдар: Raspberry Pi 3 Model B

5 -кадам: Керектелүүчү материалдар: 1.44 "Сериялык: UART/I2C/SPI TFT LCD 128x128 дисплей модулу

Керектелүүчү материалдар: 1.44
Керектелүүчү материалдар: 1.44
|

6 -кадам: Керектелүүчү материалдар: 5V 0.1A Mini Fan Raspberry Pi

Керектелүүчү материалдар: 5V 0.1A Mini Fan Raspberry Pi
Керектелүүчү материалдар: 5V 0.1A Mini Fan Raspberry Pi

7 -кадам: Керектелүүчү материалдар: Ugreen USB 2.0 10/100 Fast Ethernet Lan Wired Network Adapter

Керектелүүчү материалдар: Ugreen USB 2.0 10/100 Fast Ethernet Lan зымдуу тармак адаптери
Керектелүүчү материалдар: Ugreen USB 2.0 10/100 Fast Ethernet Lan зымдуу тармак адаптери

8 -кадам: Курулуш

Курулуш
Курулуш

NESтин ичине орнотуңуз

3D принтеринин жардамы менен Digest Display кадрын "NESPanel" басып чыгарыңыз. [Эгерде сизде 3D принтер жок болсо, анда Dremel куралы менен Digole Display үчүн төрт бурчтуу тешикти кылдаттык менен кесип алсаңыз болот] Кичи желдеткичти бекитүү үчүн корпустун арткы жана капталындагы төмөнкү тешиктерди кесип салыңыз. тарап жана күч/ethernet жана USB ethernet кабелдери артка кирүү үчүн.

9 -кадам: Курулуштун уландысы

Курулуш Конт
Курулуш Конт

NESтен оң жактын кара панелин чечип, дисплейиңизди орнотуу үчүн жетишерлик чоң чарчы тешикти кесип алыңыз. Hot Glue дисплейдин үстүндө "NESPanel" 3D басма фрейми бар.

10 -кадам: Курулуштун уландысы

Курулуш Конт
Курулуш Конт

RaspberryPi бош NES корпусунун түбүнүн ортосуна орнотуңуз, астына желим же кичине бурама менен бекиңиз. 270 ohm каршылыгын колдонуп, NESтин "LED күйгүзүүсүн" Raspberry Piдеги 5V жана GND казыктарына туташтырыңыз (кыска LED коргошун - бул жер). Кичинекей желдеткичти 5V жана GND казыктарына туташтырыңыз, ошону менен блок иштей баштаганда, желдеткичти капталдагы тешикке жабыштырыңыз.

11 -кадам: Дигол дисплейин туташтыруу

Кийинки казыктарды RaspberryPiдеги казыктарга туташтырыңыз

VCC 3v GND менен туташкан жер DATA SDA CLOCK SCL Азыр сиз i2cdetect буйругуңузда түзмөктү көрүшүңүз керек

i2cdetect -y 1 ал текст торчосунда 27 катары көрүнүшү керек

12 -кадам: Network Monitoring Tools & DB Logging орнотуу

sudo apt-get install ifstat memcached python-memcache postgresql postgresql-салым python-psycopg2

sudo vi /etc/postgresql/9.4/main/pg_hba.conf

Файлдын аягына төмөнкү сапты кошуңуз: local all pi password sudo -i -u postgres

psql

пи сырсөзүнүн паролун түзүү 'бул жерде';

пи кирүүнү өзгөртүү;

alter role pi superuser;

du

(берилген уруксаттар менен PI колдонуучуну көрүшүңүз керек) database_stats маалымат базасын түзүү;

q

чыгуу

psql -d network_stats

Төмөнкү сурамдарды иштетиңиз:

TABLE түзүү Traffic_per_minute (id сериясы, убакыттын белгиси убакыт алкагы жок NULL эмес, eth0_down реалдуу, eth0_up реалдуу, eth1_down реалдуу, eth1_up реалдуу, wan0_down реалдуу, wan0_up реалдуу);

Уникалдуу ИНДЕКС жаратуу time_idx ON traffic_per_minute (time); Бул долбоордун "журналга кирүү" папкасын RPi үй каталогуна көчүрүү

crontab -e

Бул линияны кошуу

@reboot /bin /sleep 60; nohup python /home/pi/logging/networkUsage.py>/dev/null 2> & 1

13 -кадам: Трафиктин корутунду отчетун орнотуңуз (Cronjob ар 5 мүнөт сайын иштейт)

crontab -e

төмөнкү сапты кошуу

*/5 * * * * python /home/pi/logging/trafficSummary.py

14 -кадам: Куралдар панелинин экранын орнотуңуз

Бул проекттен "дисплей" кодунун папкасын RPi үй каталогуна көчүрүү

Аны төмөнкүдөй иштетиңиз

$ python /home/pi/display/NESRouter.py Дисплей скриптин баштаганда иштетүү үчүн орнотуңуз

crontab -e

Бул линияны кошуу

@reboot nohup python /home/pi/display/NESRouter.py>/dev/null 2> & 1

Дисплей кайра жүктөөдө иштей баштаганын текшериңиз

sudo кайра жүктөө

15 -кадам: Жергиликтүү Колдонуу/Статистикалык Вебсайтты орнотуңуз [https://10.0.10.1]

Жергиликтүү колдонуу/статистика веб -сайтын орнотуңуз [https://10.0.10.1]

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

sudo apt-get apache2 орнотуу

sudo кызматы apache2 кайра

Демейки барактарды алып салуу

cd /var /www

sudo rm -rf html

Бул долбоордон 'webportal' папкасын RPiдеги үй папкаңызга көчүрүп, apache үчүн символдук шилтемени түзүңүз

cd /var /www

sudo ln -s/home/pi/webportal html

cd/var/www/html

chmod +x *.py

sudo a2enmod cgi

sudo vi /etc/apache2/sites-enabled/000-default.conf

Python CGI скриптин иштетүү

Тегдин ичине кошуңуз

Options +ExecCGI AddHandler cgi-script.py sudo кызматы apache2 кайра

Эми жергиликтүү HTTP сайтына кире аласыз [https://10.0.10.1]

Өркүндөтүлгөн тармак мониторингин орнотуу (IPFM аркылуу)

sudo apt-get update

sudo apt-get ipfm орнотуу

sudo mv /etc/ipfm.conf /etc/ipfm.conf-bak

sudo vi /etc/ipfm.conf

Төмөнкү мазмун менен түзүү:

# Глобалдык өзгөрмөлөр

# IPFM бир гана түзмөктү көзөмөлдөй алат. DEVICE eth0

# GLOBAL LOGGING КОНФИГУРАЦИЯЛОО ЖУРНАЛЫ

FILENAME "/var/log/ipfm/%Y_%d_%m/%H_%M"

# журналы мүнөт сайын АР БИР МҮНӨТТӨ ТҮШҮРҮҮ

# так статистика күн сайын ар бир 24 сааттык иреттөөнү тазалаңыз sudo кызматы ipfm баштоо

ОПЦИОНАЛДЫК: дисплейде көрсөтүү үчүн өзүңүздүн Nintendo сүрөттөрүңүздү түзүү

Өзүңүздүн 128x128 файлыңызды төмөнкү URLге жүктөңүз:

www.digole.com/tools/PicturetoC_Hex_convert…

Жүктөө үчүн сүрөт файлыңызды тандаңыз, экранда кандай өлчөмдө болушун кааласаңыз кошуңуз (Туурасы/Бийиктиги)

"Колдонуу үчүн" ачылуучу тизмесинен "256 Color for OLED/LCD (1 байт/пиксел)" тандаңыз.

Hex чыгарылышын алыңыз.

Он алтылык чыгууну дисплей/ куруу/ header (.h) файлына кошуңуз, башкаларын синтаксис үчүн колдонмо катары колдонуңуз.

Жаңы файлды digole.c файлына кошуңуз #include myimage.h

Сүрөт файлыңызга жаңы буйрук сабынын кайырмасын кошуңуз. Эскертүү: төмөндөгү буйрукта 10 пикселден ылдый 10 пикселдик абалда сүрөтүңүздү тартуу керек деп айтылат. Сиз аны башка X, Y координаттарына өзгөртө аласыз, ошондой эле 128, 128 маанилерин жаңы сүрөтүңүздүн өлчөмүнө өзгөртө аласыз.

} else if (strcmp (digoleCommand, "myimage") == 0) {drawBitmap256 (10, 10, 128, 128, & myimageVariableHere, 0); // myimageVariableHere сиздин (.h) файлыңызда аныкталган}

Эми жаңы сүрөттү төмөнкү буйрук менен көрсөтүү үчүн төмөндө кайра куруңуз (каталарга көңүл бурбаңыз).

$./digole myimage Re-Building [Камтылган] Digole Display Driver сиздин кошумча өзгөртүүлөрүңүз үчүн

$ cd дисплей/куруу $ gcc digole.c $ mv a.out../../digole $ chmod +x../../digole

Сунушталууда: