Índice:

Roteador Nintendo Wifi: 17 etapas (com imagens)
Roteador Nintendo Wifi: 17 etapas (com imagens)

Vídeo: Roteador Nintendo Wifi: 17 etapas (com imagens)

Vídeo: Roteador Nintendo Wifi: 17 etapas (com imagens)
Vídeo: Mobile main Wireless Display ko kaise On karen || How to On Wireless Display connected using wi-fi. 2024, Novembro
Anonim
Roteador Nintendo Wifi
Roteador Nintendo Wifi

Usando uma caixa de sistema Old Nintendo Entertainment, produza um roteador doméstico altamente funcional usando um RaspberryPI 3!

Etapa 1: instale o software RaspberryPi necessário

Disco Rígido RaspberriPi Flashing / Instalar Software Requerido (Usando Ubuntu Linux)

Baixe "RASPBIAN JESSIE LITE"

Crie seu novo disco rígido para o DashboardPI

Insira o microSD em seu computador via adaptador USB e crie a imagem de disco usando o comando dd

Localize o cartão microSD inserido por meio do comando df -h, desmonte-o e crie a imagem de disco com o comando disk copy dd

$ df -h / dev / sdb1 7,4G 32K 7,4G 1% / media / XXX / 1234-5678

$ umount / dev / sdb1

Cuidado: certifique-se de que o comando é totalmente preciso, você pode danificar outros discos com este comando

if = localização do arquivo de imagem RASPBIAN JESSIE LITE de = localização do seu cartão microSD

$ sudo dd bs = 4M if = / path / to / raspbian-jessie-lite.img de = / dev / sdb (nota: neste caso, é / dev / sdb, / dev / sdb1 era uma partição de fábrica existente no microSD) Configurando seu RaspberriPi

Insira seu novo cartão microSD no raspberrypi e ligue-o com um monitor conectado à porta HDMI

Conecte-se

usuário: pi pass: raspberry Altere a senha da sua conta por segurança

sudo passwd pi Ativar opções avançadas do RaspberriPi

sudo raspi-config Escolha: 1 Expandir Sistema de Arquivos

9 opções avançadas

Nome do host A2 altere-o para "NESRouter"

SSH A4 Habilitar Servidor SSH

A7 I2C Habilita interface i2c Habilita o teclado inglês / americano

sudo nano / etc / default / keyboard Altere a seguinte linha: XKBLAYOUT = "us" Configure o diretório simples l comando [opcional]

vi ~ /.bashrc

adicione a seguinte linha:

alias l = 'ls -lh'

source ~ /.bashrc Corrige o realce da sintaxe padrão do VIM [opcional]

sudo vi / etc / vim / vimrc

descomente a seguinte linha:

sintaxe em Reinicializar seu PI para obter as últimas alterações

rebootUpdate as configurações de fuso horário local

sudo dpkg-reconfigure tzdata selecione seu fuso horário usando a interface

Etapa 2: Criação do ponto de acesso WiFi

Observe que, antes que ele se torne um roteador, estamos conectando o RaspberryPi a uma rede existente por meio de sua porta Ethernet para instalar os seguintes pacotes

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

sudo apt-get install 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

Adicione a seguinte linha:

denyinterfaces wlan0 sudo vi / etc / network / interfaces

Edite a seção wlan0 para que fique assim:

auto lo iface lo inet loopback

manual iface eth0 inet

auto wlan0 iface wlan0 inet endereço estático 10.0.10.1 máscara de rede 255.255.255.0 rede 10.0.10.0 transmissão 10.0.10.255

auto eth1 iface eth1 inet endereço estático 10.0.20.1 máscara de rede 255.255.255.0 rede 10.0.20.0 transmissão 10.0.20.255 Recarregue o servidor DHCP e salte a configuração para conexões eth0 e wlan0

sudo service dhcpcd restart

sudo ifdown eth0; sudo ifup wlan0

Configure o HOSTAPD (altere ssid e wpa_passphrase para os valores de sua escolha)

sudo vi /etc/hostapd/hostapd.conf

# Este é o nome da interface WiFi que configuramos acima interface = wlan0

# Use o driver nl80211 com o driver brcmfmac driver = nl80211

# Este é o nome da rede ssid = NintendoWiFi

# Use a banda de 2,4 GHz hw_mode = g

# Use o canal 6 canal = 6

# Enable 802.11n ieee80211n = 1

# Enable WMM wmm_enabled = 1

# Habilita canais de 40 MHz com intervalo de guarda de 20 ns ht_capab = [HT40] [SHORT-GI-20] [DSSS_CCK-40]

# Aceite todos os endereços MAC macaddr_acl = 0

# Use autenticação WPA auth_algs = 1

# Requer que os clientes saibam o nome da rede ignore_broadcast_ssid = 0

# Use WPA2 wpa = 2

# Use uma chave pré-compartilhada wpa_key_mgmt = WPA-PSK

# A senha da rede wpa_passphrase = senha

# Use AES, em vez de TKIP rsn_pairwise = CCMP Podemos verificar se está funcionando neste estágio executando (mas ainda não tem conectividade total com a Internet):

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

sudo vi / etc / default / hostapd

Encontre a linha

# DAEMON_CONF = "" e substitua por

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

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

sudo vi /etc/dnsmasq.conf

bind-interfaces # Vincule-se à interface para garantir que não estamos enviando coisas para outro lugar server = 8.8.8.8 # Encaminha as solicitações de DNS para o domínio DNS do Google - necessário # Não encaminhe nomes curtos bogus-priv # Nunca encaminhe endereços no -Espaços de endereço roteados.

# Atribuir endereços IP com tempo de concessão infinito (para estatísticas de uso do dispositivo) dhcp-range = wlan0, 10.0.10.100, 10.0.10.200, 255.255.255.0, 10.0.10.255, infinite dhcp-range = eth1, 10.0.20.100, 10.0. 20.200, 255.255.255.0, 10.0.20.255, infinito CONFIGURAR ENVIO IPV4

sudo vi /etc/sysctl.conf

[descomente] net.ipv4.ip_forward = 1

Ative-o imediatamente com sudo sh -c "echo 1> / proc / sys / net / ipv4 / ip_forward"

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

sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELACIONADO, ESTABELECIDO -j ACEITAR

sudo iptables -A FORWARD -i eth1 -o eth0 -j ACEITAR

sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELACIONADO, ESTABELECIDO -j ACEITAR

sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACEITAR

Salve as configurações de iptables para a próxima reinicialização

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

Criar arquivo de regras ipv4 (com novos conteúdos)

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

iptables-restore </etc/iptables.ipv4.nat Reiniciar serviços

sudo service hostapd start sudo service dnsmasq start

sudo reboot

Atribuição de IPs estáticos [opcional]

Se você gostaria que os hosts em sua rede tivessem ips estáticos, use o seguinte

Adquira os hosts atualmente conectados via DHCP vi /var/lib/misc/dnsmasq.leases

Adicione o endereço MAC (da saída acima) e o endereço IP que você gostaria de atribuir a sudo vi /etc/dnsmasq.conf

# main desktop dhcp-host = 12: 34: 56: 78: 9a: bc, 10.0.20.20 Observação: isso atribuirá a interface de rede com o endereço MAC: 12: 34: 56: 78: 9a: bc ao endereço IP 10.0.20.20. O endereço IP listado NÃO precisa estar no intervalo de DHCP fornecido, apenas na mesma sub-rede. Minha área de trabalho principal acima está na sub-rede eth1: 10.0.20.0, então dei a ela o endereço IP de 10.0.20.20.

Adicionando UFW Firewall

sudo apt-get install ufw

Permitir a porta 22 para uso público (para acesso remoto à rede)

sudo ufw allow 22

Permitir todas as portas da minha rede local

sudo ufw allow de 10.0.10.0/24 sudo ufw allow de 10.0.20.0/24

Permitir portas da web para todos

sudo ufw allow 80

Permitir portas da web seguras para todos

sudo ufw allow 443

Habilite o UFW e verifique o status

sudo ufw --force enable

sudo ufw status

Corrigir BUG com UFW que não inicia na inicialização

sudo su crontab -e

Adicione a seguinte linha: @reboot / bin / sleep 60; ufw --force enable

Etapa 3: suprimentos necessários: velho Nintendo quebrado

Suprimentos necessários: velho Nintendo quebrado
Suprimentos necessários: velho Nintendo quebrado

Caixa Nintendo antiga de um NES quebrado (remova todo o conteúdo antigo de dentro da caixa, deixando apenas a moldura externa, os botões liga / desliga / reset e as conexões do controlador)

Etapa 4: suprimentos necessários: Raspberry Pi 3 modelo B

Suprimentos necessários: Raspberry Pi 3 Modelo B
Suprimentos necessários: Raspberry Pi 3 Modelo B

Etapa 5: Suprimentos necessários: Série de 1,44 ": Módulo de exibição UART / I2C / SPI TFT LCD 128x128

Suprimentos necessários: 1,44
Suprimentos necessários: 1,44
Suprimentos necessários: 1,44
Suprimentos necessários: 1,44

Etapa 6: suprimentos necessários: 5 V 0,1 A Mini Ventilador Raspberry Pi

Suprimentos necessários: 5V 0.1A Mini Fan Raspberry Pi
Suprimentos necessários: 5V 0.1A Mini Fan Raspberry Pi

Etapa 7: Suprimentos necessários: Adaptador de rede com fio LAN Ugreen USB 2.0 a 10/100 Fast Ethernet

Suprimentos necessários: Adaptador de rede com fio LAN Ugreen USB 2.0 a 10/100 Fast Ethernet
Suprimentos necessários: Adaptador de rede com fio LAN Ugreen USB 2.0 a 10/100 Fast Ethernet

Etapa 8: construção

Construção
Construção

Instale dentro do NES

Usando uma impressora 3D, imprima o quadro Digole Display "NESPanel" na pasta / construction / display-frame /. [se você não tiver uma impressora 3D, você pode cortar delicadamente um orifício quadrado para o visor Digole com uma ferramenta Dremel] Corte os seguintes orifícios abertos na parte traseira e lateral do gabinete para permitir que o pequeno ventilador seja preso no lateral e os cabos de alimentação / Ethernet e USB Ethernet para entrar pela parte traseira.

Etapa 9: Construção Cont

Cont. De construção
Cont. De construção

Desparafuse o painel preto superior direito do NES e corte um orifício quadrado grande o suficiente para montar seu display digole. Cole a tela com cola quente no lugar com a moldura impressa em 3D "NESPanel" por cima.

Etapa 10: Construção Cont

Cont. De construção
Cont. De construção

Monte o RaspberryPi no meio da parte inferior da caixa vazia do NES, prenda com cola ou um pequeno parafuso na parte inferior. Usando um resistor de 270 ohms, conecte o "LED de energia" do NES aos pinos de 5 V e GND no Raspberry Pi (o fio do LED curto é o aterramento). Conecte o pequeno ventilador aos pinos 5V e GND também para que funcione quando a unidade for inicializada, cole o ventilador contra o orifício na lateral para ele.

Etapa 11: Conectando o Display Digole

Conecte os seguintes pinos aos pinos do RaspberryPi

VCC está conectado a 3v GND é aterrado DATA é SDA CLOCK é SCL Agora você deve ver o dispositivo em seu comando i2cdetect

i2cdetect -y 1 deve aparecer na grade de texto como 27

Etapa 12: instalar ferramentas de monitoramento de rede e registro de banco de dados

sudo apt-get install ifstat memcached python-memcache postgresql postgresql-contrib python-psycopg2

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

Adicione a seguinte linha ao final do arquivo: local all pi senha sudo -i -u postgres

psql

criar a senha do papel pi 'senha aqui';

alterar o login do papel pi;

alterar papel superusuário pi;

du

(você deve ver seu usuário PI com as permissões concedidas) criar banco de dados network_stats;

q

saída

psql -d network_stats

Execute as seguintes consultas:

CRIAR TABELA traffic_per_minute (id serial, timestamp de tempo sem fuso horário NOT NULL, eth0_down real, eth0_up real, eth1_down real, eth1_up real, wan0_down real, wan0_up real);

CRIAR ÍNDICE ÚNICO time_idx ON traffic_per_minute (time); Copie a pasta "logging" do código deste projeto para o diretório home do seu RPi

crontab -e

Adicione esta linha

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

Etapa 13: Instale o Relatório de Resumo de Tráfego (executado a cada 5 minutos por Cronjob)

crontab -e

adicione a seguinte linha

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

Etapa 14: instalar a tela do painel

Copie a pasta "display" do código deste projeto para o diretório inicial do seu RPi

Execute-o da seguinte maneira

$ python /home/pi/display/NESRouter.py Configure o script de exibição para ser executado na inicialização

crontab -e

Adicione esta linha

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

Verifique se o monitor começa a funcionar na reinicialização

sudo reboot

Etapa 15: Instale o site de uso local / estatísticas [https://10.0.10.1]

Instale o site de estatísticas / uso local [https://10.0.10.1]

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

sudo apt-get install apache2

sudo service apache2 restart

Remover páginas padrão

cd / var / www

sudo rm -rf html

Copie a pasta 'webportal' deste projeto para sua pasta inicial em seu RPi e crie o link simbólico para o apache usar

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

Habilitar Scripting CGI Python

Adicionar dentro da tag

Opções + ExecCGI AddHandler cgi-script.py sudo serviço apache2 restart

Agora você pode visitar o site HTTP local [https://10.0.10.1]

Configure o monitoramento de rede avançado (via IPFM)

sudo apt-get update

sudo apt-get install ipfm

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

sudo vi /etc/ipfm.conf

Crie com o seguinte conteúdo:

# Variáveis globais

# O IPFM pode monitorar apenas um dispositivo. DISPOSITIVO eth0

# REGISTRO DE CONFIGURAÇÃO DE LOGGING GLOBAL

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

# log a cada minuto DESCARGA A CADA 1 minuto

# limpar estatísticas a cada dia LIMPAR A CADA 24 horas CLASSIFICAR NA RESOLUÇÃO sudo serviço ipfm start

OPCIONAL: Criar suas próprias imagens Nintendo para renderizar na tela

Faça upload do seu próprio arquivo 128x128 para o seguinte URL:

www.digole.com/tools/PicturetoC_Hex_convert…

Escolha o arquivo de imagem para fazer o upload, adicione o tamanho que deseja que fique na tela (largura / altura)

Selecione "256 cores para OLED / LCD colorido (1 byte / pixel)" no menu suspenso "Usado para"

Obtenha a saída hexadecimal.

Adicione a saída hexadecimal a um arquivo display / build / header (.h), use os outros como guias de sintaxe.

Incluir o novo arquivo no arquivo digole.c #include myimage.h

Inclua um novo gancho de linha de comando em seu arquivo de imagem no. Nota: o comando abaixo está dizendo para desenhar sua imagem na posição 10 pixels sobre 10 pixels para baixo. Você pode alterá-lo para diferentes coordenadas X, Y, você também pode alterar os valores 128, 128 para qualquer tamanho que sua nova imagem realmente tenha.

} else if (strcmp (digoleCommand, "myimage") == 0) {drawBitmap256 (10, 10, 128, 128, & myimageVariableHere, 0); // myimageVariableHere é definido em seu arquivo (.h)}

Agora reconstrua (ignore os erros) abaixo para que sua nova imagem seja renderizada com o seguinte comando.

$./digole myimage Re-Building [Incluído] Driver de exibição Digole para suas alterações opcionais

$ cd display / build $ gcc digole.c $ mv a.out../../digole $ chmod + x../../digole

Recomendado: