Menu English Ukrainian Russo Início

Biblioteca técnica gratuita para amadores e profissionais Biblioteca técnica gratuita


ENCICLOPÉDIA DE RÁDIO ELETRÔNICA E ENGENHARIA ELÉTRICA
Biblioteca gratuita / Esquemas de dispositivos radioeletrônicos e elétricos

Projeto de um sistema automatizado de controle de acesso. Enciclopédia de rádio eletrônica e engenharia elétrica

Biblioteca técnica gratuita

Enciclopédia de eletrônica de rádio e engenharia elétrica / Microcontroladores

Comentários do artigo Comentários do artigo

Hoje, o mercado de componentes eletrônicos oferece amplas oportunidades para a criação de sistemas para diversos fins. Porém, surge a pergunta: como escolher os componentes ideais para um determinado sistema? O artigo publicado discute o projeto de um sistema automatizado de controle de acesso usando componentes baratos e amplamente disponíveis.

Então, por onde começar? O desenvolvimento de qualquer sistema começa com a elaboração de uma lista de requisitos que deve cumprir. Para o sistema descrito no artigo, a lista pode ser semelhante a esta. O sistema deve:

  1. Controle o acesso à sala através de uma porta.
  2. Fornecer identificação única para cada usuário.
  3. Mantenha um registro de passagens com registro do tempo de passagem e ID do usuário.
  4. Forneça trabalho com três categorias de usuários.

Vamos determinar quais componentes o sistema deve conter. Para fazer isso, considere os requisitos listados acima. Do ponto 1 segue-se que será necessária uma linha de entrada/saída para controlar o mecanismo de abertura/fechamento da porta e um dispositivo para inserir um identificador.

A escolha da tecnologia de identificação do usuário (cláusula 2) influencia significativamente características do sistema como segurança (para evitar que terceiros acessem o objeto selecionando uma chave/código eletrônico), facilidade de uso (o tempo que os usuários gastarão na identificação processo), custa o próprio sistema e sua operação posterior. Exemplos de possíveis soluções aqui incluem inserir uma senha por meio de um teclado, usando cartões com tarja magnética e chaves eletrônicas iButton da Dallas Semiconductor [1,2].

Inserir uma senha através do teclado é o mais simples e barato de implementar, embora não seja muito conveniente ou seguro, pois os usuários podem esquecer a senha ou outra pessoa pode espioná-la. Além disso, com acesso frequente às instalações, inserir uma combinação de código leva muito tempo.

Os cartões plásticos são mais convenientes de usar e tal sistema é mais difícil de “hackear”, porém, sua implementação requer dispositivos adicionais para leitura das informações do cartão, bem como equipamentos especiais para registro das informações do mesmo, que serão utilizados quando adicionando um novo usuário. Isso aumenta significativamente o custo do sistema final.

Vamos considerar a última opção. A chave iButton é um circuito integrado alojado em uma caixa de metal para tablet MicroCan com diâmetro de 18 e altura de 6 mm. A gama de produtos produzidos neste design é bastante extensa: relógios em tempo real, sensores de temperatura, memória não volátil e muito mais. O iButton é barato (cerca de US$ 2) e a implementação do leitor também é bastante simples - essencialmente, o barramento de dados é conectado diretamente a uma única linha de E/S da porta do microcontrolador. Neste caso, basta implementar o protocolo 1-Wire em software. A facilidade de uso de tal sistema também é óbvia - para que o código seja lido, o usuário só precisa tocar o contact pad com o “tablet”. Para o sistema descrito, foi escolhida a modificação DS1990, que não executa nenhuma outra função além da identificação, ou seja, o chip contém apenas um código único que pode ser lido enviando um comando especial ao dispositivo.

Voltemos aos requisitos de funcionalidade. Decorre do parágrafo 3 que você precisará controlar o tempo e registrar informações sobre o acesso do usuário ao objeto de segurança. Naturalmente, é necessário prever possíveis cortes de energia, por isso o mecanismo de tempo e registro deve ser resistente a problemas deste tipo. Como o DS1990 foi selecionado como identificador do usuário e em qualquer caso você terá que implementar o protocolo 1-Wire programaticamente, faz sentido usar outra modificação do iButton - DS1994 - como relógio em tempo real. Este chip contém uma bateria de lítio integrada que garante que o relógio funcione por 10 anos.

Para armazenar o registro de passes, foi selecionada uma série de memórias Flash da Atmel AT45 [3]. A leitura/escrita de dados na memória deste tipo é realizada utilizando o protocolo serial SPI, o número total de linhas de entrada/saída envolvidas é 7. Dos microcircuitos disponíveis desta série, foi selecionado o AT45D041 com capacidade de memória de 4 Mbit.

É necessário um teclado para gerenciar as configurações do sistema. Neste caso, uma matriz 3x4 de botões com números 0...9 e os símbolos “*” e “#” é suficiente. Tal teclado exigirá outras 3+4=7 linhas de E/S do microcontrolador.

A última coisa que você precisa ter no sistema é um pequeno display para visualizar o log de passes e configurar o sistema. A gama de monitores baratos produzidos atualmente é bastante extensa, mas no nosso caso a saída gráfica não é necessária, portanto um LCD é suficiente para exibir informações alfanuméricas. Os mais populares hoje são os LCDs baseados no controlador HITACHI HD44780 [4]. Eles se diferenciam pela facilidade de conexão e baixo custo. Os dados são transmitidos através de uma interface de oito ou quatro bits (dependendo do modo usado), além de mais três linhas de E/S serem necessárias para transmitir sinais de controle. Para economizar linhas de E/S, foi selecionada uma interface de quatro bits, portanto, o número total de linhas de E/S para controle do LCD também é 7.

Isso completa a seleção de periféricos. Agora você precisa escolher um microcontrolador que possa controlar efetivamente todos os dispositivos acima. Primeiro, vamos calcular o número de linhas de entrada/saída necessárias que serão utilizadas no sistema (Tabela 1). O resultado obtido não é definitivo, pois no futuro (durante a operação) poderão ser necessárias linhas de entrada/saída adicionais, por exemplo, para conectar LEDs, um cabeçote de alto-falante dinâmico, etc. / linhas de saída além das especificadas na tabela 1.

Projeto de um sistema de controle de acesso automatizado

Do ponto de vista da programação, os microcontroladores que implementam a chamada tecnologia ISP (IP-System Programming - programação em circuito) são muito atrativos. Para carregar o novo código do programa no microcontrolador, ele não precisa ser removido da placa: a programação é feita no circuito através de pinos especiais. Além disso, para algumas modificações você nem precisa de um programador - o “firmware” é feito através da porta paralela do computador. Naturalmente, a solução mais aceitável é usar exatamente esse microcontrolador no sistema, o que não requer fundos adicionais para firmware.

Para implementar esta tarefa, foi selecionado o microcontrolador AT89S8252, que é totalmente compatível em código e layout de pinos com microcontroladores da família 8051. Possui 8 KB de memória de programa flash programável em circuito com recurso de 1000 ciclos de reescrita, 2 KB de EEPROM integrada (memória somente leitura programável apagável eletricamente), 256 bytes de RAM, 32 linhas de E/S, três temporizadores, temporizador de watchdog, hardware suporta interface SPI. Frequência de clock - Cerca de...24 MHz (um ciclo de máquina é executado em 12 ciclos de clock, portanto, o desempenho máximo é de dois milhões de operações por segundo).

A escolha deste microcontrolador específico é justificada da seguinte forma. Os microcontroladores da série 8051 possuem um extenso conjunto de instruções, o que os torna fáceis de programar em baixo nível (por exemplo, operações em bits individuais são suportadas [5]). A tecnologia ISP acelera a depuração e facilita o desenvolvimento; o suporte de hardware para a interface SPI permite conectar a memória flash da série AT45 selecionada sem programação adicional deste protocolo. 2 KB de EEPROM integrada podem ser usados ​​para armazenar informações, cuja segurança deve ser garantida independentemente da presença de energia externa. 32 linhas de E/S são suficientes para implementar o sistema descrito. A presença de temporizadores permite a implementação flexível do protocolo 1-Wire, uma vez que requer atrasos de tempo precisos.

O temporizador watchdog garante a funcionalidade do sistema quando exposto a fortes interferências eletromagnéticas, que podem causar o congelamento do controlador. Um temporizador watchdog é um subsistema independente em um microcontrolador que verifica o estado de um bit no registro de status do microprocessador a cada N ciclos de clock. Se este bit for energizado, o microcontrolador é redefinido ao seu estado inicial e, se for redefinido, é definido como 1 e o teste é interrompido. Conseqüentemente, o programa executado deve redefinir este bit em intervalos não superiores a N ciclos de clock. Caso isso não aconteça, significa que o funcionamento do microcontrolador foi interrompido por interferência externa e na próxima vez que o temporizador watchdog for acionado, o microcontrolador será redefinido ao seu estado inicial.

Antes de passarmos à implementação do software, voltemos mais uma vez à arquitetura do ponto de vista de sua eficácia no desempenho das funções imediatas do sistema. O sistema projetado suportará duas formas de inserção de informações: através do teclado (comandos para configuração do sistema, visualização do registro de passes) e através do contact pad da interface 1-Wire. Como o objetivo principal do sistema é o controle de acesso, o tempo para sondar o teclado 1-Wire deve exceder o tempo alocado para sondar o teclado.

Considerando a especificação do protocolo 1-Wire, pode-se perceber que duas situações fundamentalmente diferentes são possíveis: a primeira, quando há apenas um dispositivo na linha, e a segunda, quando há mais deles. Para determinar o número de dispositivos na linha e seus identificadores, existe um mecanismo de busca especial especificado na especificação do protocolo 1-Wire. Consiste na triagem sequencial dos dispositivos da linha e na varredura bit a bit do espaço de endereçamento (o espaço identificador do “Botão”). Além disso, este procedimento deve ser realizado novamente após cada ciclo de comunicação com os dispositivos conectados (desde sua composição pode mudar).

Como já mencionado, nosso sistema está planejado para ter uma linha de 1 fio, que será utilizada para conectar o relógio de tempo real e as chaves de identificação, e o relógio de tempo real, que faz parte do sistema, será conectado em todas as vezes. Isso significa que temos uma situação em que pode haver mais de um dispositivo na linha. Levando em consideração o exposto e a presença de linhas livres de portas de entrada/saída, é razoável alocar linhas no sistema para o protocolo 1-Wire: um relógio de tempo real está permanentemente conectado a uma delas, e a segunda é usado apenas para apresentar identificadores de usuário. Essa configuração garante que haja apenas um dispositivo em cada linha por vez, simplificando bastante a implementação do sistema, reduzindo o tempo de resposta e economizando espaço na memória do programa.

O relógio de tempo real DS1994 possui um contador de cinco bytes que aumenta 256 vezes por segundo. Quando transborda, a contagem regressiva continua a partir de zero. 5 bytes são suficientes para 136 anos de operação antes que o contador transborde. Devido ao fato de o usuário necessitar exibir a hora em um formato que lhe seja conveniente, e também ser necessário fornecer a possibilidade de acertar o relógio, o sistema embarcado deve suportar a conversão de data e hora do formato interno para o formato de texto e vice-versa. A data escolhida como ponto de referência é 01.01.2000/00/00 00:2136:XNUMX, o que garante o funcionamento do relógio e registro até aproximadamente XNUMXhXNUMX.

E mais um ponto que você deve prestar atenção. Concordamos que o log de passes será armazenado em memória flash externa, mas ainda precisamos determinar um local para armazenar a lista de direitos de acesso. Na descrição do microcontrolador foi mencionada a EEPROM embutida de 2 KB, ideal para esse fim, pois a lista de acesso é mais valiosa que o log de passes e se, por exemplo, este último puder ser removido (fisicamente) do sistema removendo o chip correspondente da placa, então a lista de direitos de acesso só pode ser removida removendo o microcontrolador, sem o qual o sistema não pode funcionar. No sistema descrito, a quantidade de memória especificada foi suficiente para acomodar 168 contas, ou seja, o número máximo de usuários é 168.

O log de passes é implementado como uma lista circular e, quando transborda, as entradas mais antigas são excluídas. O tamanho de uma entrada de log é de 12 bytes (4 bytes para o tempo de trânsito e 8 bytes para o identificador). Isso significa que haverá memória de log suficiente para registrar aproximadamente 45 passagens antes que ocorra o primeiro estouro de log.

Durante o processo de desenvolvimento, outro componente foi adicionado ao sistema - um interruptor reed na porta. É necessário para que o sistema determine se a porta está aberta ou fechada, bem como para desligar temporariamente a alimentação do eletroímã. O seguinte algoritmo para abertura da porta é implementado: a tensão é aplicada à bobina solenóide e o sistema espera até que a porta seja aberta ou até que um retardo de 5 s tenha expirado, após o qual a alimentação de tensão é interrompida.

O diagrama esquemático do dispositivo desenvolvido é mostrado na figura.

Projeto de um sistema de controle de acesso automatizado

Como você pode ver, além do microcontrolador DD1, ele contém um chip de memória Flash DS1, um teclado de 12 botões SB1 - SB12 e um LCD HG1. A frequência do clock do microcontrolador é definida pelo ressonador de quartzo ZQ1 em 24 MHz. A porta P0 é utilizada para inserir informações do clock do iButton (conectado ao soquete X1) e do identificador (conectado ao X2), controlar o relé (através de uma chave transistor) que fornece energia ao eletroímã da fechadura, o LED HL1, que sinaliza a porta é aberta e registra o estado definido em seu interruptor reed. As informações são trocadas com o chip de memória Flash DS1 através da porta P1. O teclado é atendido pela porta P2, o indicador HG1 é a porta P5. O dispositivo é alimentado por uma tensão estabilizada de 16 V. Para alimentar o relé que controla o funcionamento do eletroímã, é necessária uma fonte de tensão de 20...XNUMX V.

O dispositivo é montado em uma placa de dimensões adequadas. Para conectar o microcontrolador DD1 e o chip de memória DS1, é aconselhável utilizar os soquetes apropriados. A placa montada é colocada em uma caixa de plástico ou metal, e um teclado e um display LCD são colocados no painel frontal. O dispositivo está instalado dentro de uma área protegida.

Códigos de firmware do microcontrolador e códigos-fonte do programa

Depois de ligar o dispositivo, a lista de itens de menu mostrada na tabela é exibida no LCD. 2. Como o indicador possui apenas duas linhas, as teclas “#” e “*” são usadas para rolar horizontalmente. Para executar qualquer um desses comandos são necessários privilégios de administrador, e após selecionar um item de menu pressionando a tecla apropriada, você deve apresentar uma chave com direitos de administrador, caso contrário o comando solicitado será ignorado.

Projeto de um sistema de controle de acesso automatizado

Durante o trabalho no dispositivo, surgiram problemas em vários estágios de desenvolvimento. Gostaria de observar os seguintes pontos.

Parte de hardware. Qualquer microprocessador possui valores máximos permitidos para a corrente de entrada e saída das portas de entrada/saída. Por exemplo, se você precisar usar um LED no sistema, a maioria dos microcontroladores não será capaz de fornecer a corrente necessária para a porta de E/S se o estado ativo for log. 1. Nesse caso, é necessário tornar o estado do log ativo. 0 conectando o ânodo LED ao barramento de energia. Também não devemos esquecer de limitar a corrente conectando um resistor com resistência de aproximadamente 2 kOhm em série com a carga. Se você ainda precisar usar o log. 1 como o estado ativo e a carga for muito grande, uma chave de transistor deve ser usada para ligar a carga.

Ao implementar um barramento de 1 fio, é necessário “puxar” o barramento de dados através de um resistor para a tensão de alimentação. Isso é necessário para que durante a transição de um estado baixo para um estado alto, a linha atinja rapidamente o limite de comutação para o log. 1. O valor do resistor deve estar entre 4,7...5,1 kOhm. Se os fios forem longos o suficiente (vários metros), a resistência do resistor pode ser reduzida.

Não devemos esquecer a corrente máxima que pode ser consumida por todos os dispositivos conectados às portas do microcontrolador. É necessário considerar o caso em que todos eles estão no estado ativo e calcular se o microcontrolador pode fornecer tal potência de saída. Se exceder o valor máximo permitido, os dispositivos simplesmente não ligarão na hora certa.

Parte de software. Grande parte do processo de desenvolvimento depende de qual compilador é usado, quão bem ele otimiza o código e o coloca na memória, se permite depurar programas em seu próprio emulador e também rastrear o tempo de execução do programa, etc.

Se um programa utiliza constantes de string, então, devido à quantidade limitada de RAM, é necessário utilizar diretivas especiais para indicar ao compilador que elas devem estar localizadas na área de memória do programa. Por exemplo, para o compilador Keil uVision é assim: 'const char code sz[6] = "Hello"', onde o modificador "code" informa ao compilador que a string deve ser colocada na memória do programa.

Para operações de tempo crítico, é melhor usar um temporizador, pois neste caso a ligação à frequência do clock ocorre através da introdução de uma constante, que pode ser facilmente ajustada se a frequência mudar.

Não se deve criar funções com grande número de parâmetros passados, pois quando são chamadas a transferência ocorre através de registradores (e quando há muitos parâmetros, através de áreas fixas na memória). Cada chamada requer código adicional para armazenar valores de registro antes de chamar a função e para recuperar esses parâmetros dentro da função. Uma solução pode ser usar variáveis ​​globais, mas tome muito cuidado se a função chamada por sua vez chamar uma função que use os mesmos parâmetros.

Se você estiver usando uma linguagem de programação de alto nível, é útil avaliar o código assembly resultante do ponto de vista da otimização (se você se deparar com um problema de pouca memória).

Os compiladores modernos geram código assembly bastante compacto e rápido ao escrever programas em uma linguagem de alto nível, portanto, não é necessário escrever todo o código em linguagem assembly. No entanto, o uso do assembler é razoável em procedimentos críticos em termos de tempo (em termos de velocidade e precisão).

Naturalmente, o sistema descrito no artigo pode ser melhorado em diversas direções. Por exemplo, adicionar restrições de acesso com base na hora do dia, registrar tentativas de acesso não autorizado (apresentação de um identificador sem direitos de acesso), adicionar suporte para controle de acesso a um segundo objeto (isso exigirá três linhas de entrada/saída adicionais), no entanto, como você sabe, não há limite para a perfeição, mas a quantidade de memória de programa no microcontrolador é limitada. O principal objetivo do artigo é mostrar, a partir de um exemplo específico, o ciclo completo de criação de um sistema embarcado, bem como dar alguns conselhos práticos para a resolução de problemas que possam surgir durante o seu desenvolvimento.

Literatura

  1. Documentação técnica da Dallas Semiconductor. - .
  2. Sinyutkin A. Bloqueio eletrônico nas teclas do tablet iButton. - Rádio, 2001, nº 2, p. 31-33; Nº 3, pág. 30.
  3. Documentação técnica Atmel AT45D041. - .
  4. Documentação técnica da Hitachi "HD44780U (LCD-11) (controlador/driver de display de cristal líquido de matriz de pontos) ADE-207-272(Z) '99.9 Rev. CO".
  5. Predko M. Guia de microcontroladores. Volume 1. - M.: Postmarket, 2001.

Autor: A. Rantsevich, Minsk

Veja outros artigos seção Microcontroladores.

Leia e escreva útil comentários sobre este artigo.

<< Voltar

Últimas notícias de ciência e tecnologia, nova eletrônica:

Máquina para desbastar flores em jardins 02.05.2024

Na agricultura moderna, o progresso tecnológico está se desenvolvendo com o objetivo de aumentar a eficiência dos processos de cuidado das plantas. A inovadora máquina de desbaste de flores Florix foi apresentada na Itália, projetada para otimizar a etapa de colheita. Esta ferramenta está equipada com braços móveis, permitindo uma fácil adaptação às necessidades do jardim. O operador pode ajustar a velocidade dos fios finos controlando-os a partir da cabine do trator por meio de um joystick. Esta abordagem aumenta significativamente a eficiência do processo de desbaste das flores, proporcionando a possibilidade de adaptação individual às condições específicas do jardim, bem como à variedade e tipo de fruto nele cultivado. Depois de testar a máquina Florix durante dois anos em vários tipos de frutas, os resultados foram muito encorajadores. Agricultores como Filiberto Montanari, que utiliza uma máquina Florix há vários anos, relataram uma redução significativa no tempo e no trabalho necessários para desbastar flores. ... >>

Microscópio infravermelho avançado 02.05.2024

Os microscópios desempenham um papel importante na pesquisa científica, permitindo aos cientistas mergulhar em estruturas e processos invisíveis aos olhos. Porém, vários métodos de microscopia têm suas limitações, e entre elas estava a limitação de resolução ao utilizar a faixa infravermelha. Mas as últimas conquistas dos pesquisadores japoneses da Universidade de Tóquio abrem novas perspectivas para o estudo do micromundo. Cientistas da Universidade de Tóquio revelaram um novo microscópio que irá revolucionar as capacidades da microscopia infravermelha. Este instrumento avançado permite ver as estruturas internas das bactérias vivas com incrível clareza em escala nanométrica. Normalmente, os microscópios de infravermelho médio são limitados pela baixa resolução, mas o desenvolvimento mais recente dos pesquisadores japoneses supera essas limitações. Segundo os cientistas, o microscópio desenvolvido permite criar imagens com resolução de até 120 nanômetros, 30 vezes maior que a resolução dos microscópios tradicionais. ... >>

Armadilha de ar para insetos 01.05.2024

A agricultura é um dos sectores-chave da economia e o controlo de pragas é parte integrante deste processo. Uma equipe de cientistas do Conselho Indiano de Pesquisa Agrícola-Instituto Central de Pesquisa da Batata (ICAR-CPRI), em Shimla, apresentou uma solução inovadora para esse problema: uma armadilha de ar para insetos movida pelo vento. Este dispositivo aborda as deficiências dos métodos tradicionais de controle de pragas, fornecendo dados sobre a população de insetos em tempo real. A armadilha é alimentada inteiramente por energia eólica, o que a torna uma solução ecologicamente correta que não requer energia. Seu design exclusivo permite o monitoramento de insetos nocivos e benéficos, proporcionando uma visão completa da população em qualquer área agrícola. “Ao avaliar as pragas-alvo no momento certo, podemos tomar as medidas necessárias para controlar tanto as pragas como as doenças”, diz Kapil ... >>

Notícias aleatórias do Arquivo

HP vai colocar a produção de impressoras 3D em funcionamento 27.03.2014

A Hewlett-Packard anunciou que entrará no mercado de massa de impressoras 3D este ano.

Na reunião anual com acionistas desta terça-feira, a presidente-executiva Meg Whitman disse que em junho devemos esperar um "grande anúncio de tecnologia" sobre o início dos trabalhos nesse segmento. Whitman disse que finalmente conseguiram resolver uma série de problemas técnicos que não permitiam falar sobre o uso de processos de alta tecnologia para a produção de impressoras. Esta é uma limitação na qualidade dos substratos utilizados no processo de produção, o que acaba por afetar a durabilidade do produto final.

"Nós realmente achamos que resolvemos esses problemas", disse Whitman. "O maior potencial está no segmento corporativo, onde peças e protótipos podem ser produzidos em um nível que não era possível antes."

O chefe da HP não entrou em detalhes sobre os planos planejados: "É tudo o que podemos dizer no momento".

De acordo com cálculos de analistas da HP, as vendas de impressoras 3D e software relacionado, juntamente com serviços, serão de cerca de US$ 2021 bilhões em 11, enquanto em 2012 esse valor foi de US$ 2,2 bilhões.

O nascente mercado de impressão 3D agora é dominado por empresas menores como a MakerBot. Esta divisão da Stratasys Corporation vende dispositivos acessíveis aos consumidores. No entanto, alguns fabricantes contratados, como a Flextronics, já estão usando projetos internos para ajudar os clientes corporativos a criar peças e dispositivos protótipos.

Outras notícias interessantes:

▪ Samsung Class Terrace Full Sun Neo QLED 4K TV externa à prova d'água

▪ Carregar dispositivos vestíveis a partir da respiração do usuário

▪ Fibra espiral em um microchip

▪ Super audição para humanos

▪ Pequenos chips lógicos de porta única

Feed de notícias de ciência e tecnologia, nova eletrônica

 

Materiais interessantes da Biblioteca Técnica Gratuita:

▪ seção do site Materiais elétricos. Seleção de artigos

▪ artigo Terra Prometida. expressão popular

▪ artigo O que é uma rosa dos ventos? Resposta detalhada

▪ Artigo do comerciante. Descrição do trabalho

▪ artigo Outra vida da porta LPT. Parte 2. Enciclopédia de rádio eletrônica e engenharia elétrica

▪ artigo Transformação em caixa de fósforos. Segredo do foco

Deixe seu comentário neste artigo:

Имя:


E-mail opcional):


Comentário:





Todos os idiomas desta página

Página principal | Biblioteca | Artigos | Mapa do Site | Revisões do site

www.diagrama.com.ua

www.diagrama.com.ua
2000-2024