Índice:
- Etapa 1: instale o software RaspberryPi necessário
- Etapa 2: Criação do ponto de acesso WiFi
- Etapa 3: suprimentos necessários: velho Nintendo quebrado
- Etapa 4: 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
- Etapa 6: suprimentos necessários: 5 V 0,1 A Mini Ventilador Raspberry Pi
- Etapa 7: Suprimentos necessários: Adaptador de rede com fio LAN Ugreen USB 2.0 a 10/100 Fast Ethernet
- Etapa 8: construção
- Etapa 9: Construção Cont
- Etapa 10: Construção Cont
- Etapa 11: Conectando o Display Digole
- Etapa 12: instalar ferramentas de monitoramento de rede e registro de banco de dados
- Etapa 13: Instale o Relatório de Resumo de Tráfego (executado a cada 5 minutos por Cronjob)
- Etapa 14: instalar a tela do painel
- Etapa 15: Instale o site de uso local / estatísticas [http://10.0.10.1]
Vídeo: Roteador Nintendo Wifi: 17 etapas (com imagens)
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:39
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
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
Etapa 5: Suprimentos necessários: Série de 1,44 ": Módulo de exibição UART / I2C / SPI TFT LCD 128x128
Etapa 6: suprimentos necessários: 5 V 0,1 A Mini Ventilador Raspberry Pi
Etapa 7: Suprimentos necessários: Adaptador de rede com fio LAN Ugreen USB 2.0 a 10/100 Fast Ethernet
Etapa 8: 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
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
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:
Flip Machining no roteador DMS CNC: 5 etapas (com imagens)
Usinagem flip no roteador CNC DMS: Depois de pensar sobre o potencial da usinagem flip de 3 eixos, decidi construir uma pintura em relevo tridimensional de compensado laminado. Esta peça seria visível de qualquer lado e, embora os dois lados estivessem relacionados um ao outro
Use Raspberry Pi 3 como roteador: 10 etapas (com imagens)
Use Raspberry Pi 3 como roteador: de acordo com a Wikipedia, um roteador é um dispositivo de rede que encaminha pacotes de dados entre redes de computadores. Se desmontarmos um roteador sem fio, provavelmente encontraremos um processador específico de aplicativo que lida com pacotes de dados e um segmento RF que
Adicionar um tacômetro óptico baseado em Arduino a um roteador CNC: 34 etapas (com imagens)
Adicione um tacômetro óptico baseado em Arduino a um roteador CNC: Construa um indicador óptico de RPM para seu roteador CNC com um Arduino Nano, um sensor de fotodiodo LED / infravermelho e um display OLED por menos de $ 30. Eu me inspirei no Measure RPM - Optical Tachometer Instructable do eletro18 e queria adicionar um tacômetro
Conversão de roteador Power Over Ethernet: 4 etapas (com imagens)
Conversão de roteador Power Over Ethernet: A ideia que impulsiona este projeto é transformar qualquer roteador padrão em uma unidade com capacidade para Power Over Ethernet (PoE) (descrição da Wikipedia) [] sem comprar nenhum adaptador ou hardware adicional. algo bastante comum em muitos negócios / off
Fique on-line sem ser espionado: Tor (o roteador Onion): 4 etapas (com imagens)
Fique on-line sem ser espionado: Tor (o roteador Onion): quando você fica on-line, deixa rastros em todos os lugares. Você pode estar conversando com amigos em mensagens instantâneas, visitando sites ou baixando músicas. Se você mora em um país onde os bisbilhoteiros estão intrometendo-se no que os cidadãos comuns fazem online (como, hum, os EUA