Mudanças entre as edições de "Curso Técnico em Telecomunicações - Projeto Integrador IV (PJI4)"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
 
(18 revisões intermediárias por 7 usuários não estão sendo mostradas)
Linha 1: Linha 1:
==Totem==
 
* Referência: [[Imagem:TCC_MuriloBauer.pdf]]
 
* Script <tt>/etc/init.d/gourmet</tt> com permissões 755:
 
 
<syntaxhighlight lang=bash>
 
#!/bin/bash
 
 
if [ "${3}" = "" ]
 
then
 
  echo "Use: ${0} map <interface_mesh> <interface_ap>"
 
  echo "    ${0} mpp <interface_mesh> <interface_internet>"
 
  exit 1
 
else
 
  TIPO=${1}
 
  MESH=${2}
 
  AP=${3}
 
  INTERNET=${3}
 
fi
 
 
function basico(){
 
  service network-manager stop
 
  ip link set ${1} down
 
  iw dev ${1} interface add mesh0 type mp mesh_id Gourmet-Backhaul
 
  # iw dev mesh0 set channel 9
 
  iw dev mesh0 set freq 5190 HT40+
 
  ip link set mesh0 up
 
}
 
 
function map(){
 
  brctl addbr br0
 
  brctl addif br0 mesh0
 
  ip link set br0 up
 
  ip -4 address add 10.0.0.X/8 dev br0
 
  ip -4 route add 0.0.0.0/0 via 10.0.0.1
 
  killall -TERM hostapd
 
  sleep 1
 
  killall -KILL hostapd
 
  echo "interface=${2}" > /etc/hostapd.conf
 
  echo "bridge=br0" >> /etc/hostapd.conf
 
  echo "driver=nl80211" >> /etc/hostapd.conf
 
  echo "ssid=Gourmet" >> /etc/hostapd.conf
 
  echo "channel=3" >> /etc/hostapd.conf
 
  echo "ctrl_interface=/var/run/hostapd" >> /etc/hostapd.conf
 
  hostapd -B /etc/hostapd.conf
 
}
 
 
function mpp(){
 
  ip link set mesh0 up
 
  ip -4 address add 10.0.0.1/8 dev mesh0
 
  iw mesh0 set mesh_param mesh_gate_announcements 1
 
  iw mesh0 set mesh_param mesh_hwmp_rootmode 1
 
  restart isc-dhcp-server
 
  ip link set ${2} up
 
  dhclient ${2}
 
  sysctl -w net.ipv4.conf.all.forwarding=1
 
  iptables -t nat -F
 
  iptables -t nat -A POSTROUTING -o ${2} -j MASQUERADE
 
}
 
 
case ${TIPO} in
 
  "map")
 
    basico ${MESH}
 
    map ${MESH} ${AP}
 
    ;;
 
  "mpp")
 
    basico ${MESH}
 
    mpp ${MESH} ${INTERNET}
 
    ;;
 
esac
 
</syntaxhighlight>
 
 
 
* Para usar no servidor: adicionar a seguinte linha no começo do arquivo /etc/rc.local:
 
<syntaxhighlight lang=bash>
 
/etc/init.d/gourmet mpp wlan2 eth0
 
</syntaxhighlight>
 
 
* Para usar no totem: adicionar a seguinte linha no começo do arquivo /etc/rc.local:
 
<syntaxhighlight lang=bash>
 
/etc/init.d/gourmet map wlan2 wlan0
 
</syntaxhighlight>
 
 
para verificar o funcionamento da rede sem fio:
 
<syntaxhighlight lang=bash>
 
watch -n1 'iw dev mesh0 station dump | egrep "(Station|inactive|rx|tx)"; echo; iw dev mesh0 mpath dump; echo; hostapd_cli all_sta | egrep "(:|connected_time)"'
 
</syntaxhighlight>
 
 
==Monitoramento de qualidade==
 
===Monitor===
 
Arquivo <tt>/usr/local/bin/indicador.py</tt>:
 
<syntaxhighlight lang=python>
 
#!/usr/bin/env python
 
 
import subprocess
 
import time
 
 
while True:
 
#
 
# Conta quantos usuarios conectados no AP.
 
# Armazena na variavel "usuarios".
 
p = subprocess.Popen('hostapd_cli all_sta |grep aid|wc -l', shell=True,
 
                      stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
 
for line in p.stdout.readlines():
 
num_usuarios = int(line.strip())
 
if num_usuarios < 10:
 
usuarios = '0' + str(num_usuarios)
 
else:
 
usuarios = str(num_usuarios)
 
retval = p.wait()
 
#
 
# Mede a qualidade do sinal na rede mesh.
 
# Armazena na variavel "qualidade".
 
p = subprocess.Popen('iw dev mesh0  station dump | grep signal: | cut -d : -f 2 | cut -d d -f 1', shell=True,
 
                    stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
 
for line in p.stdout.readlines():
 
num_qualidade = 80 + int(line.strip())
 
if num_qualidade < 10:
 
qualidade = '0' + str(num_qualidade)
 
else:
 
qualidade = str(num_qualidade)
 
retval = p.wait()
 
print "MSG:" + usuarios + ":" + qualidade
 
time.sleep(1)
 
</syntaxhighlight>
 
 
===Arduino===
 
Para configurar a interface serial do Arduino usando o Linux<ref>http://playground.arduino.cc/Interfacing/LinuxTTY</ref>:
 
<code>
 
stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts
 
</syntaxhighlight>
 
e depois basta enviar para o arquivo <tt>/dev/ttyACM0</tt>:
 
<code>
 
/usr/local/bin/indicador.py > /dev/ttyACM0
 
</syntaxhighlight>
 
 
===Código Arduino===
 
Programa desenvolvido para comunicação do Arduino com o display de LCD 16x2:
 
<syntaxhighlight lang=c>
 
//Carrega a biblioteca LiquidCrystal
 
#include <LiquidCrystal.h>
 
 
//Define os pinos que serão utilizados para a ligação ao display
 
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
 
 
//Define o caracter da barra de intensidade de sinal
 
byte bar[8] = {
 
  B11111,
 
  B11111,
 
  B11111,
 
  B11111,
 
  B11111,
 
  B11111,
 
  B11111,
 
};
 
 
 
void setup() {
 
  //configura a comunicação serial com 9600 bps
 
  Serial.begin(9600);
 
  //Criar caracter
 
  lcd.createChar(0, bar);
 
  //Define o número de colunas e linhas do LCD
 
  lcd.begin(16, 2);
 
}
 
 
 
// Função que lê uma string da Serial e retorna o seu valor */
 
String leStringSerial(){
 
  String conteudo = "";
 
  char caractere;
 
 
 
  // Enquanto receber algo pela serial
 
  while(Serial.available() > 0) {
 
    // Lê byte da serial
 
    caractere = Serial.read();
 
    // Ignora caractere de quebra de linha
 
    if (caractere != '\n'){
 
      // Concatena valores
 
      conteudo.concat(caractere);
 
    }
 
    // Aguarda buffer serial ler próximo caractere
 
    delay(10);
 
  }
 
  return conteudo;
 
}
 
 
void IntensidadeSinal(int porcent){
 
  if(porcent >= 0 && porcent < 30){
 
    lcd.setCursor(1, 1);
 
    lcd.print("SINAL REDE:");
 
    lcd.setCursor(12, 1);
 
    lcd.write(byte(0));
 
  }
 
 
 
  if(porcent >= 30 && porcent < 55){
 
    lcd.setCursor(1, 1);
 
    lcd.print("SINAL REDE:");
 
    lcd.setCursor(12, 1);
 
    lcd.write(byte(0));
 
    lcd.setCursor(13, 1);
 
    lcd.write(byte(0));
 
  }
 
 
 
  if(porcent >= 55 && porcent <= 100){
 
    lcd.setCursor(1, 1);
 
    lcd.print("SINAL REDE:");
 
    lcd.setCursor(12, 1);
 
    lcd.write(byte(0));
 
    lcd.setCursor(13, 1);
 
    lcd.write(byte(0));
 
    lcd.setCursor(14, 1);
 
    lcd.write(byte(0));
 
  }
 
}
 
 
void loop() {
 
  // Se receber algo pela serial
 
  if (Serial.available() > 0){
 
    // Lê toda string recebida
 
    String recebido = leStringSerial();
 
     
 
    if (recebido.substring(0,3) == "MSG"){
 
      //Limpa a tela
 
      lcd.clear();
 
      //Posiciona o cursor na coluna 3, linha 0
 
      lcd.setCursor(1, 0);
 
      //Envia o texcto entre aspas para o LCD
 
      lcd.print("USER ACCESS:");
 
      lcd.setCursor(13, 0);
 
      lcd.print(recebido.substring(4,6));
 
      int aux_sinal = atoi(recebido.substring(7,10).c_str()); //c_str vai retornar a versão C da string para o uso na função atoi.
 
      IntensidadeSinal(aux_sinal);
 
  }
 
}
 
</syntaxhighlight>
 
 
 
==Documentação==
 
==Documentação==
  
Linha 239: Linha 5:
 
*[[PJI4-TecTel (Plano de Ensino) | Plano de Ensino]]
 
*[[PJI4-TecTel (Plano de Ensino) | Plano de Ensino]]
  
==Cronograma das Atividades==
 
 
{{collapse top| bg=lightgreen |Semestre 2015-2}}
 
{| border="1" cellpadding="2"
 
!Semana
 
!Aula 1
 
!Aula 2
 
|-
 
|1
 
|| -
 
|| -
 
|-
 
|2
 
|| ?
 
|| ?
 
|-
 
|3
 
|| ?
 
|| Discussão da disciplina e projeto integrador.
 
|-
 
|4
 
|| ?
 
|| Revisão de sistemas operacionais. Início dos trabalhos do projeto integrador.
 
|-
 
|5
 
|| ?
 
|| Instalação do sistema operacional em rede e primeiros serviços: Cron, Syslog, NTP e SSH.
 
|-
 
|6
 
||
 
|| Instalação do sistema operacional em rede e primeiros serviços: Cron, Syslog, NTP e SSH.
 
|-
 
|7
 
|| Programação para a Web.
 
|| Serviços para a Internet: LAMP (Linux + Apache + MySQL + PHP).
 
|-
 
|8
 
||
 
|| VoIP.
 
|-
 
|9
 
||
 
|| VoIP.
 
|-
 
|10
 
||
 
|| Serviços de telefonia IP.
 
|-
 
|11
 
||
 
|| Serviços de telefonia IP.
 
|-
 
|12
 
||
 
|| Serviços de comunicação da Internet: correio eletrônico, bate-papo e outros.
 
|-
 
|13
 
||
 
|| Serviços de comunicação da Internet: correio eletrônico, bate-papo e outros.
 
|-
 
|14
 
||
 
|| Convergência.
 
|-
 
|15
 
||
 
|| Convergência.
 
|-
 
|16
 
||
 
|| Gerência de rede.
 
|-
 
|17
 
||
 
|| Gerência de rede.
 
|-
 
|18
 
|| Projeto: documentação final e apresentação.
 
|| Projeto: documentação final e apresentação.
 
|-
 
|19
 
|| Folga para feriados e erros no dimensionamento da carga horária.
 
|| Folga para feriados e erros no dimensionamento da carga horária.
 
|-
 
|20
 
|| Folga para feriados e erros no dimensionamento da carga horária.
 
|| Folga para feriados e erros no dimensionamento da carga horária.
 
|}
 
{{collapse bottom}}
 
 
<!--
 
PROFESSOR: COPIAR TODO ESSE BLOCO PARA CRIAR NOVOS CRONOGRAMAS. O COMENTÁRIO ABAIXO DEVE SER RETIRADO PARA A CRIAÇÃO DE NOVAS LINHAS NA TABELA
 
-->
 
{{collapse top| bg=lightgreen | Planejamento da disciplina}}
 
<!--
 
{{Cronograma-top}}
 
{{Cl|1 |12/04 | 4 | Apresentação da Disciplina  | Aula expositiva}}
 
{{cronograma-botton-int |36}}
 
-->
 
 
Conhecimentos sobre Telefonia IP para tratar no PI
 
<center><graphviz>
 
digraph VoIP
 
{
 
subgraph clusterIP
 
{
 
  label="Redes"
 
  IP
 
  SIP
 
  DNS
 
  SDP
 
  RTP
 
}
 
 
DNS -> SIP
 
Tarifação -> "Telefonia IP"
 
VoIP -> "Telefonia IP"
 
SIP -> VoIP
 
SDP -> VoIP
 
RTP -> VoIP
 
IP -> SIP
 
IP -> SDP
 
IP -> RTP
 
Binário -> IP
 
Codec -> SDP
 
Modulação -> Codec
 
Sinais -> Modulação
 
Criptografia -> SIP
 
Segurança -> Criptografia
 
QoS -> RTP
 
"Plano de Numeração" -> Tarifação
 
"Telefonia IP" -> Asterisk
 
Sinalização -> SIP
 
}
 
</graphviz></center>
 
 
 
 
Atividades em dois dias por semana (divididas em duas aulas de 1:30 h/ 20 semanas por semestre;
 
 
{| border="1" cellpadding="2"
 
!Semana
 
!Aula 1
 
!Aula 2
 
|-
 
|1
 
|| Proposta do problema: convergência: cenário-problema.
 
|| Proposta do problema: convergência: cenário-problema.
 
|-
 
|2
 
|| S.O.: administração de sistemas.
 
|| S.O.: administração de sistemas.
 
|-
 
|3
 
|| Serviços: Compartilhamento (SMB/CIFS e HTTP).
 
|| Serviços: Compartilhamento (SMB/CIFS e HTTP).
 
|-
 
|4
 
|| Serviços: Compartilhamento (HTTP e DHTML).
 
|| Serviços: Compartilhamento (HTTP e DHTML).
 
|-
 
|5
 
|| Serviços: Comunicação (SMTP e IMAP).
 
|| Serviços: Comunicação (SMTP e IMAP).
 
|-
 
|6
 
|| Serviços: Comunicação (SoftPBX).
 
|| Serviços: Comunicação (SoftPBX).
 
|-
 
|7
 
|| Serviços: Comunicação (SoftPBX).
 
|| Serviços: Comunicação (SoftPBX).
 
|-
 
|8
 
|| Serviços: Comunicação (SoftPBX e ''hardware'').
 
|| Serviços: Comunicação (SoftPBX e ''hardware'').
 
|-
 
|9
 
|| Serviços: Comunicação (SoftPBX, ''hardware'' e tipos de sinalização).
 
|| Serviços: Comunicação (SoftPBX, ''hardware'' e tipos de sinalização).
 
|-
 
|10
 
|| Serviços: Comunicação (protocolos de VoIP).
 
|| Serviços: Comunicação (protocolos de VoIP).
 
|-
 
|11
 
|| Serviços: Comunicação (protocolos de VoIP).
 
|| Serviços: Comunicação (protocolos de VoIP).
 
|-
 
|12
 
|| Gerência de rede: monitoramento.
 
|| Gerência de rede: monitoramento.
 
|-
 
|13
 
|| Gerência de rede: contabilização.
 
|| Gerência de rede: contabilização.
 
|-
 
|14
 
|| Convergência: plano de numeração.
 
|| Convergência: plano de numeração.
 
|-
 
|15
 
|| Convergência: serviços (conferência, DISA).
 
|| Convergência: serviços (conferência, DISA).
 
|-
 
|16
 
|| Convergência: mensagens unificadas.
 
|| Convergência: mensagens unificadas.
 
|-
 
|17
 
|| Convergência: tarifação.
 
|| Convergência: tarifação.
 
|-
 
|18
 
|| Projeto: documentação final e apresentação.
 
|| Projeto: documentação final e apresentação.
 
|-
 
|19
 
|| Folga para feriados e erros no dimensionamento da carga horária.
 
|| Folga para feriados e erros no dimensionamento da carga horária.
 
|-
 
|20
 
|| Folga para feriados e erros no dimensionamento da carga horária.
 
|| Folga para feriados e erros no dimensionamento da carga horária.
 
|}
 
{{collapse bottom}}
 
 
==Diário de bordo==
 
{{collapse top| bg=lightgreen | expand=true |Semestre 2016-1}}
 
 
{{collapse bottom}}
 
 
{{collapse top| bg=lightgreen|Semestre 2015-2}}
 
* Dia 04/11/2015:
 
** Configuração da BIOS:
 
*** Garantia de que o sistema iniciará sem teclado, mouse ou vídeo.
 
*** Restauração do sistema após queda de energia.
 
** Instalação do sistema operacional.
 
** Configuração da rede:
 
*** IP: 200.135.37.X (92 = Adriano, 93 = Taís, 94 = Cláudio)
 
*** Máscara de sub-rede: 255.255.255.192 ou /26
 
*** Gateway ou rota-padrão: 200.135.37.126
 
*** Servidores DNS: 200.135.37.72 e 200.135.37.65
 
** Particionamento:
 
*** Primeira partição primária de 20GB para "/".
 
*** Segunda partição primária, com o restante do disco, para LVM.
 
** Instalação do GRUB na MBR do disco rígido (no caso, /dev/sda).
 
** Arquivos após a instalação:
 
*** /etc/apt/sources.list
 
<code>
 
deb http://debian.pop-sc.rnp.br/debian/ stable main contrib non-free
 
deb http://security.debian.org/ stable/updates main contrib non-free
 
</syntaxhighlight>
 
** Comandos após a instalação:
 
<code>
 
apt-get update
 
apt-get install ssh
 
apt-get install ntp
 
vi /etc/ntp.conf
 
</syntaxhighlight>
 
*** Mudar as linhas com a expressão <tt>server</tt> por:
 
<code>
 
server pool.ntp.br iburst prefer
 
server ntp.cais.rnp.br iburst
 
server ntp.ufsc.br iburst
 
</syntaxhighlight>
 
*** E reiniciar o serviço:
 
<code>
 
systemctl restart ntp
 
</syntaxhighlight>
 
{{collapse bottom}}
 
  
 
==Material de Aula==
 
==Material de Aula==
Programação:
 
* [[Media:Introducao_a_Programacao.pdf | Algoritmos - Parte 01]]
 
* [[Media:Exercícios_Introdução_Programação.pdf | Exercícios - Parte 01]]
 
* [[Media:Introdução ao PHP2.pdf | Introdução ao PHP - Parte 02]]
 
* [[Media:Intro_MySQL2015_1.pdf | Introdução ao MySQL - Parte 03]]
 
* [[Media:AtividadesAdicionaisPIV.pdf | Atividades Adicionais - Nova opção Menu]]
 
 
 
Linux:
 
* [http://www.guiafoca.org/cgs/guia/avancado/index.html Guia Foca]
 
 
Comandos HTML:
 
* [http://www.lsi.usp.br/~help/html/comandos.html Principais comandos]
 
 
<references/>
 
  
{{VOLTAR |Curso Técnico em Telecomunicações - Páginas das Disciplinas}}
+
*[[PJI011104_-_Projeto_Integrador_IV_-_2022-1|2022-1]]
{{TECTELECO}}
+
*[[PJI4-2020-2|2020-2]]
 +
*[[PJI4-2019-2|2019-2]]
 +
*[[PJI4-2019-1|2019-1]]
 +
*[[PJI4-2018-2|2018-2]]
 +
*[[PJI4-2018-1|2018-1]]
 +
*[[PJI4-2017-2|2017-2]]
 +
*[[PJI4-2017-1|2017-1]]
 +
*[[PJI11104-2016-2|2016-2]]
 +
*[[PJI11104-2016-1|Materiais de semestres anteriores]]

Edição atual tal como às 21h59min de 24 de maio de 2022