Índice:

Raspberry Pi HomeLab e quem está em casa: 11 etapas
Raspberry Pi HomeLab e quem está em casa: 11 etapas

Vídeo: Raspberry Pi HomeLab e quem está em casa: 11 etapas

Vídeo: Raspberry Pi HomeLab e quem está em casa: 11 etapas
Vídeo: Upgrade your Raspberry Pi to a Homelab (instead of a Raspberry Pi 5) 2024, Novembro
Anonim
Raspberry Pi HomeLab e quem está em casa
Raspberry Pi HomeLab e quem está em casa
Raspberry Pi HomeLab e quem está em casa
Raspberry Pi HomeLab e quem está em casa
Raspberry Pi HomeLab e quem está em casa
Raspberry Pi HomeLab e quem está em casa
Raspberry Pi HomeLab e quem está em casa
Raspberry Pi HomeLab e quem está em casa

Este é meu primeiro indestrutível, mas este instrutível tem duas fases.

fase um: é configurar um pi para funcionar como um laboratório doméstico para o trabalho de IOT para uma equipe de alunos desenvolvedores.

fase dois: está usando o sistema para desenvolvimento, implementando uma demonstração usando nosso projeto who is home.

ao final disso, você terá um pi sem cabeça acessível remotamente que pode ser usado por pessoas para programar e trabalhar remotamente em dispositivos IOT.

agora aviso, que ao abrir o seu pi ao público sem a devida segurança você se expõe ao risco de ter sua rede doméstica atacada.

passaremos pela primeira fase nas etapas a seguir, mas este é um link para algumas informações sobre o nosso clube e o projeto de quem é a casa.

github.com/ValenciaRobotics/embeddedclub

WhoIsHome

o projeto Who Is home faz o seguinte: executa um script python que verifica os endereços mac dos dispositivos conectados à sua rede. ele usa o Nmap para isso. ele executa esses endereços em uma lista de endereços e, se o endereço listado estiver presente, ele envia um char para um arduino usando comunicações seriais. o arduino controla uma faixa de LED e quando recebe um char tem uma cor associada para aquele dispositivo e acende os LEDs dessa pessoa com base na presença deles.

nosso subsite de divisões

sites.google.com/view/valencia-robotics

sites.google.com/view/valencia-robotics/cl…

nosso site de clubes

sites.google.com/view/valenciatechclub

o script Python foi fornecido por: Jonathan De La Cruz

www.linkedin.com/in/jonathandelacruz96/

o script do Arduino e o acompanhamento e a configuração do laboratório doméstico foram feitos por: Dylan Poll

www.linkedin.com/in/dylan-poll-4a324a1a2/

Eu sou Dylan Poll, sou o atual presidente do clube de tecnologia da nossa faculdade e também sou o líder de sistemas embarcados.

Suprimentos

Um pi

Um arduino

Uma placa de ensaio

fios de ligação

Uma webcam

Faixa LED RGB individualmente endereçável

fonte de alimentação para seu pi, um teclado um mouse, computador para fazer a configuração inicial.

Etapa 1: Baixar e instalar os arquivos de configuração inicial

baixe e instale o putty (windows)

www.putty.org

baixe o rufus e instale

rufus.ie

baixe raspbian full buster e software recomendado (.zip)

www.raspberrypi.org/downloads/raspbian/

extraia o conteúdo do.zip este será o seu [arquivo de imagem].

pegue um cartão micro SD e use um dock ou um dispositivo microsd para usb e conecte-o ao computador formate o cartão SD

Etapa 2: parte dois: instalar o Raspbian usando Rufus

Parte dois: instalar o Raspbian usando Rufus
Parte dois: instalar o Raspbian usando Rufus

execute rufus selecione seu cartão SD no primeiro campo selecione o arquivo de imagem raspbian para o.iso /.img selecione iniciar e espere que ele termine.

Etapa 3: parte três: conectando o Pi

depois de fazer isso, retire o cartão SD, coloque-o no slot para cartão SD no pi, é no "fundo", conecte o cabo HDMI ao pi primeiro, do que um teclado e mouse e, por último, o cabo de alimentação. se você conectar a energia primeiro, ele pode não registrar seu monitor / tv.

Etapa 4: parte quatro: Configurando sua conta

faça login no pi! faça a configuração da primeira execução! não pule! selecione o teclado inglês dos EUA ou você não encontrará o símbolo @ mais tarde … se não o fizer, o símbolo @ é onde está o seu ". faça login no wi-fi no pi ainda não atualize. Tenho um motivo. pressione a tecla" do teclado do windows "e vá para preferências, vá para configuração pi. vá para a guia interfaces.

habilitar VNC…. e todo o resto não reinicia.

Etapa 5: parte cinco: Configurando seu Pi como sem cabeça (a melhor coisa de todos os tempos)

Parte cinco: Configurando seu Pi como sem cabeça (a melhor coisa de todos os tempos)
Parte cinco: Configurando seu Pi como sem cabeça (a melhor coisa de todos os tempos)

olhe para o canto superior direito da tela. você verá o logotipo preto e azul do VNC. abra isso. clique em entrar, criar e conta. adicione o pi. no seu desktop / laptop abra a pesquisa do navegador no google VNC viewer download install. Faça login na sua conta. verifique seu e-mail para o login e autorize-se. conecte-se ao seu pi (digite a senha do pi no segundo menu de login) se funcionar, desligue o seu pi. desligue seu pi e tudo. coloque o pi em um canto do seu quarto e conecte-o apenas com o cabo de alimentação. você pode se conectar ao pi usando o visualizador VNC. agora você tem um pi "sem cabeça". você também pode usar o SSH para ele. (consulte as informações de SSH na seção de coisas legais)

Etapa 6: parte seis: instalando todas as ferramentas essenciais para desenvolver em um Pi

Parte seis: Instalando todas as ferramentas básicas para desenvolver em um Pi
Parte seis: Instalando todas as ferramentas básicas para desenvolver em um Pi

usando SSH ou VNC (ou se você decidiu não ser legal e configurá-lo sem cabeça), faça o seguinte. Abra o terminal (esta próxima parte pode demorar um pouco …) execute esses comandos um de cada vez depois que cada um for CONCLUÍDO.

sudo apt-get update; sudo apt-get upgrade instalando ffmpeg {sudo apt-get install ffmpeg

Etapa 7: parte sete: instalando o Adafruit WebIDE

Parte sete: Instalando o Adafruit WebIDE
Parte sete: Instalando o Adafruit WebIDE

curl https://raw.githubusercontent.com/adafruit/Adafruit-WebIDE/master/scripts/install.sh | sudo sh abre um navegador em sua área de trabalho principal. aponte o URL do seu navegador para "https://***.*.*.***: 8080" substitua o "*" pelo endereço IP local do seu Pi. faça um nome de usuário e passe. agora você tem a configuração do adafruit webIDE.

Etapa 8: parte oito: atualizar Node-red e Node.js

update-nodejs-and-nodered o próximo código fará com que o nodered seja executado na inicialização, assim como o adafruit webIDE, isso é importante se você deseja desenvolver essas coisas. sudo systemctl enable nodered.service restart the Pi

Etapa 9: parte nove: instalando o IDE do Arduino

Parte nove: Instalando o Arduino IDE
Parte nove: Instalando o Arduino IDE

você pode fazer isso via linha de comando, mas…. não será a versão completa.. significando que você não pode usar a ferramenta de importação / pesquisa da biblioteca, para instalar a versão completa você precisa ir ao site do arduino e baixar a versão para o seu modelo pi. será o ARM32bit para o pi3, obtenha a versão estável. abra o terminal. (substitua os * pelas informações de versão) execute esses comandos.

www.arduino.cc/en/Main/Software

cd Downloads / tar -xf arduino-1. *. * - linuxarm.tar.xz sudo mv arduino-1. *. * / opt sudo /opt/arduino-1.*.*/install.sh

Etapa 10: Parte Dez: Ffmpeg

Parte Dez: Ffmpeg
Parte Dez: Ffmpeg

1x webcam logitech

(os próximos itens não incluem o que você precisa para executar um fluxo 24 horas por dia, 7 dias por semana) 1x protoboard uma segunda tira de LED framboesa pi modelo 3 b (com cartão SD) individualmente endereçável. Arduino nano jumper wire habilita VNC viewer em ambos Pi (s)

preferências pi, habilitar vnc fazer uma conta com visualizador VNC IMPORTANTE: no pi que você planeja usar como uma bancada de trabalho público, vá para as configurações do servidor vnc, opções, guia especialista e faça o tempo limite inativo: 0 segundos, está definido para fechar Vnc se o visualizador ficar inativo após uma hora, isso impedirá que sua janela feche no meio do fluxo, instale o visualizador vnc no streamer pi no terminal.

sudo apt-get install vnc-java y

conecte sua webcam e … instale sua webcam.

sudo apt install fswebcam

instalar ffmpeg sudo apt-get install ffmpeg y

é aqui que suas próprias escolhas entram em jogo. no terminal, execute este script para abrir uma janela na área de trabalho do seu streamer pi para a sua webcam.

ffplay -window_title "pi-cam" / dev / video0 -video_size 1920x1080 -vf crop = 400: 500: 300: 50 -framerate 20 ffplay permitirá que você veja isso em uma janela chamada pi-cam, a webcam que está mostrando a você no local dev / video0 e seu tamanho original é 1920x1080. Eu só quero ver o crop = width: height: topleft_X: topleft_Y e uma taxa de quadros de 20 é o suficiente para mim. o próximo código será transmitido para twitch.

ffmpeg -f x11grab -video_size 1280x1024 -framerate 24 -i $ DISPLAY -f alsa -vf scale = 1280x720 -c: v h264 -g 24 -b: v 2M -preset ultrarrápido -c: a aac -pix_fmt yuv420p -f flv " rtmp: //live-lax.twitch.tv/app/ (insertyourstreamkeyhere)"

-f x11grab é usado para capturar sua tela. a resolução da minha tela está definida para 1280x1024. Quero exibi-la no formato de vídeo 1280x720, portanto, -vf.

2m = taxa de upload de 2 mgb. -f flv é para formatar o vídeo em.flv para que o twitch possa usá-lo.

agora você pode fornecer à sua equipe suas credenciais VNC para o ambiente de trabalho Pi e eles podem ver as mudanças na faixa de led remotamente. Grite para esse cara ~! o vídeo dele me ajudou a entrar no caminho, mas eu ainda tinha que descobrir como abrir minha webcam … e descobrir mais sobre o ffmpeg X /

Arthur Reeder https://www.youtube.com/embed/kb_5_9GkwZc NOTA: Não sou a pessoa mais informada, isso simplesmente funciona para minhas necessidades, se alguém tiver conselhos construtivos, eu adoraria ouvir, mas por favor, não ser um dos caminhos possíveis para levar isso adiante, seria usar esse mecânico para transmitir isso e usar outro pi e o feixe de luz de extensão cromada para buscar esse fluxo e, em seguida, alimentar a webcam naquele ou de qualquer outra maneira. https://www.youtube.com/embed/kb_5_9GkwZc TAMBÉM: se quiser adicionar áudio, como visto no vídeo do youtube do homem, pode usar esta string, não queria que minha casa fosse gravada e enviado para twitch, fica na minha sala, então eu não transmito nenhum áudio, também ajuda a diminuir a carga no pi.

ffmpeg -f x11grab -video_size 1280x1024 -framerate 24 -i $ DISPLAY -f alsa -i default -af acompressor = threshold = 0.089: ratio = 9: attack = 200: release = 1000 -vf scale = 1280x720 -c: v h264 - g 24 -b: v 2M -preset ultra-rápido -c: a aac -pix_fmt yuv420p -f flv "rtmp: //live-lax.twitch.tv/app/ (insertyourstreamkeyaqui)"

Etapa 11:

Imagem
Imagem
Imagem
Imagem
Imagem
Imagem
Imagem
Imagem

agora para a reta final, implementando comunicação serial arduino e pi com python.

--- o projeto who is home --- O projeto usa um script python que executa o nmap no terminal, copia o conteúdo dele, analisa o texto que não precisamos e compara os endereços mac na rede com os listados endereços mac e se houver correspondência, essa pessoa está em casa. os endereços mac foram encontrados por meio de um trabalho investigativo no roteador, mas a ferramenta nmap fornece informações sobre os dispositivos no arquivo de texto gerado pelo código. se o usuário estiver presente, ele envia um caractere para o arduino, e o arduino espera até que a lista de verificação seja concluída e acende LEDs correspondentes aos perfis listados para os endereços mac dos dispositivos presentes. você pode adicionar outras coisas, como fazer com que os bots do discord executem comandos sobre as pessoas que entram ou saem com esse mesmo código, usando o operador de subprocesso para executar comandos de terminal em seu script Python. então primeiro instalamos o nmap sudo apt-get install nmap. em seguida, você vai querer baixar os arquivos em nossos clubes Git-Hub.

github.com/ValenciaRobotics/embeddedclub

para o código python, a instalação raspbian vem com tudo usado neste código, então você não precisa de nada adicional instalado. usamos import re, import subprocess, import time, import serial. É importante notar que python usa indentação para separar blocos de código, então esteja ciente de que se você decidir mudar a forma como o código é escrito:) o py vem com thonny ide e algumas outras opções, acho que rodar o script no thonny é realmente simples, se você clicar no arquivo e tentar executá-lo, foi sugerir ou assumir que thonny é o que você queria usar. antes de executar o programa, você precisará editar o seguinte. linha 14: os símbolos * são usados para mascarar as informações do meu próprio roteador, você terá que substituí-los por seu próprio ip local. seria igual ao que você usa para se conectar ao roteador. linhas 28, 38, 48, 58: todas usam o símbolo * para mascarar os endereços mac dos dispositivos listados na minha rede, você deve alterá-los para os endereços mac dos dispositivos da sua própria rede para detectar as conexões. por que endereços mac? porque, sem reservar locais para o seu dispositivo, eles com certeza permanecerão os mesmos, a menos que alguém esteja falsificando. problemas com esse código, ele só detectará enquanto uma conexão estiver ativamente usando a Internet, portanto, pode não ser detectado apesar da presença de um usuário. no código do arduino, você desejará alterar o seguinte. primeiro, você vai querer ir para a guia de ferramentas, selecionar o gerenciador de bibliotecas, pesquisar por "fastLED" e instalar a biblioteca por "fastLED". em seguida, você precisará carregar o código "quem está em casa".ino da página do github e alterar o seguinte conforme desejar. linha 86: mude as cores com base no que você deseja que seus usuários anexem:)

// ligue o que você precisa

if (d == 1) {leds [0] = 0xdd8bff; // leds roxos [1] = 0xdd8bff;}

if (l == 1) {leds [2] = CRGB:: Verde; leds [3] = CRGB:: Verde;}

if (k == 1) {leds [4] = CRGB:: Vermelho; leds [5] = CRGB:: Vermelho; }

if (j == 1) {leds [6] = CRGB:: Azul; leds [7] = CRGB:: Azul;}

FastLED.show (); atraso (30000); // 10 segundos de espera na caixa de troca, uma breve explicação sobre como adicionar mais usuários é a seguinte

void loop () {

if (Serial.available ()> 0) {

Serial.println ();

pessoa = Serial.read ();

atraso (1000);

switch (pessoa) {

caso 'D': d = 1;

pessoa = 'F';

contagem = contagem + 1;

pausa;

case'd ':

d = 0;

pessoa = 'F';

contagem = contagem + 1;

pausa;

o D maiúsculo é o caractere recebido do script python, então ele sabe que o usuário está presente porque a letra recebida é o D maiúsculo, então ele muda o valor do INTEGER d para 1, se for minúsculo então ele sabe que eles estão ausentes, portanto o INTEGER é definido como 0. a condição para a iluminação dos leds no script anterior usa uma declaração de que IF d é 1 então acenderá o led, mas se não for esse led permanece "preto", o que significa apagado. este código usa a biblioteca "fastLED" e há muita documentação sobre isso. note que se você alterar os caracteres, adicionar ou remover caracteres, terá que alterar o script python para retornar aqueles que você alterou também, você também terá que alterar a condição no loop void. if (count == 4) {holdup ();}} a contagem terá que refletir o número de dispositivos que você está "rastreando". no meu caso é 4, então ele espera até que 4 dispositivos sejam declarados como presentes ou ausentes e então atualiza a faixa de LED. no código python, as linhas 31, 34, 41, 44, 51, 54, 61, 64 têm a seguinte linha ser.write (b '*') #sends caractere convertido como byte sobre serial onde * é um caractere que é enviando para o arduino. altere isso se você alterar o código no arduino ou vice-versa:)

Mais uma vez, como declaração final, quero dar crédito ao meu companheiro de equipe Jon, ele fez um ótimo trabalho em compensar a folga quando precisávamos.

O script Python foi fornecido por: Jonathan De La Cruzhttps://www.linkedin.com/in/jonathandelacruz96/

o Arduino Script e o acompanhamento e a configuração do laboratório doméstico foram feitos por: Dylan Poll

www.linkedin.com/in/dylan-poll-4a324a1a2/

Tomara que ganhemos pelo menos uma camiseta! Estarei atualizando isso com comandos shell para fazer o download automático e instalar a maior parte disso, o site de nossos clubes tem scripts shell para download para fazer as operações do ffmpeg.

Esse projeto demorou muito, eu fundei essa divisão do clube do zero, então posso dizer com orgulho que esse momento me traz muita alegria.:) obrigado pelo seu tempo, temos uma plataforma de trabalho a desenvolver agora no meu clube por causa deste projeto.

Recomendado: