Sistema Simples de Notificação da ISS: 6 etapas (com imagens)
Sistema Simples de Notificação da ISS: 6 etapas (com imagens)
Anonim
Sistema Simples de Notificação ISS
Sistema Simples de Notificação ISS
Sistema Simples de Notificação ISS
Sistema Simples de Notificação ISS

O que é a Estação Espacial Internacional e por que você deseja prever onde ela está?

Para responder à primeira pergunta, podemos olhar o site da NASA para uma resposta. O que em resumo é:

A Estação Espacial Internacional é uma grande nave espacial. Ele orbita ao redor da Terra. É uma casa onde vivem astronautas. A estação espacial também é um laboratório de ciências. Muitos países trabalharam juntos para construí-lo. Eles também trabalham juntos para usá-lo. A estação espacial é feita de muitas peças. As peças foram montadas no espaço por astronautas. A órbita da estação espacial está a cerca de 220 milhas acima da Terra. A NASA usa a estação para aprender sobre como viver e trabalhar no espaço. Essas lições ajudarão a NASA a explorar o espaço.

www.nasa.gov/audience/forstudents/k-4/stor…

A segunda pergunta é um pouco mais difícil de responder - mas vou tentar.

Sou um operador de rádio amador (ou operador de radioamador) - uma coisa que sempre achei divertido foi usar um rádio portátil de baixa potência (5 watts ou menos) e me comunicar com os satélites em órbita. A ISS possui equipamento de rádio a bordo.

No início dos meus dias de amador, eu costumava me comunicar com os satélites um pouco, até mesmo fazendo alguns contatos apenas com a antena de patinho de borracha - algo muito difícil de fazer. Fiz alguns contatos com o ISS usando APRS (sistema de relatório automático de pacotes). Isso foi em 2013 - há muito tempo, estive muito inativo desde então. É algo que eu queria voltar para você.

Em 2013, escrevi alguns scripts PHP para a linha de comando que me informavam a localização do ISS e ajudavam a prever quando seria sobrecarregado. Naquela época, usei um blink stick e mudei as cores conforme a ISS se aproximava. Graças ao trabalho em https://open-notify.org e sua API, foi muito fácil fazer isso.

2018 - 5 anos depois, finalmente converti esses PHP para Arduino C (na verdade, foi muito fácil de fazer).

Meu projeto usa um D-Duino (que na verdade é um NodeMCU com um OLED a bordo), isso é tudo que há para fazer.

Ainda estou usando a mesma API de

Também escrevi um código para usar um D1 Mini e um escudo WS2812 (consulte meu Supervisor Eric Project para saber mais sobre isso).

Etapa 1: Hardware simples

Hardware simples
Hardware simples

D-Duino (NodeMCU)

www.aliexpress.com/item/NodeMCU-CP2102-ESP…

É isso, é tudo o que é necessário. Claro que você pode usar outro hardware - isso deve funcionar em qualquer dispositivo ESP8266 que possa usar um OLED I2C. O D-Duino é em sua maior parte um NodeMCU com a adição do OLED.

O código pode ser encontrado

Você precisará ter as placas ESP8266 instaladas no IDE do Arduino. Instruções podem ser encontradas aqui:

(a maneira mais fácil é com o gerenciador de placas)

Você também precisará de algumas bibliotecas - acho que todas elas podem ser encontradas no gerenciador de bibliotecas agora (mas não estou 100% certo disso).

Bibliotecas necessárias: ArduinoJson.h

Adafruit_NeoPixel

WifiManager.h

TimeLib.h

esp8266-oled-ssd1306

(Não tenho certeza de onde obtive o TImeLib, e talvez ele esteja incluído no IDE do Arduino ??)

A maneira mais simples de instalá-los é usando o gerenciador de biblioteca. Caso contrário, siga as instruções de cada biblioteca.

Etapa 2: os esboços

Os esboços
Os esboços

Atualmente, dois sketches e três scripts PHP estão incluídos no repositório github.

DDuino_ISS_notification que deve ser usado com o hardware D-Duino acima.

E EricISSnotification que usa meu anterior "Supervisor Eric" do projeto show "People of Earth". (Mais sobre isso mais tarde)

Em ambos os esboços próximos à linha 30 (ou em algum lugar bem próximo a ela) - você verá algumas variáveis flutuantes chamadas mylat e mylon. Você precisará alterar essas duas linhas com sua Latitude e Longitude - se você não souber seu Lat e Lon, você pode usar este site https://www.latlong.net O centro da sua cidade deve estar bem. Não precisa corresponder à sua latitude ou longitude exacta. Os esboços fazem alguns arredondamentos e outras matemáticas para chegar a uma distância aproximada do ISS em milhas americanas.

Acredito que essa é a única coisa que precisa ser mudada nos esboços.

A matemática para o cálculo da distância é baseada na distância do grande círculo entre dois pontos, e a forma formal pode ser encontrada aqui -

Este site fornece muitas informações sobre como calcular a distância entre duas latitudes e longitudes, bem como rumo. Não estamos usando nenhum cálculo de rolamento para isso.

Para que o formal funcione, precisamos obter um theta e converter algum grau em radiante e, ao contrário, radiante em grau. Como o Arduino não faz matemática tão bem, temos que ajudá-lo um pouco nas conversões.

void getDistance () {

flutuar teta, dist, milhas;

theta = mylon - isslon;

dist = sin (deg2rad (mylat)) * sin (deg2rad (isslat)) + cos (deg2rad (mylat)) * cos (deg2rad (isslat)) * cos (deg2rad (theta));

dist = acos (dist); dist = rad2deg (dist);

milhas = dist * 60 * 1,1515;

distância = milhas;

}

float deg2rad (float n) {

flutuante radiano = (n * 71) / 4068;

return radian;

}

float rad2deg (float n) {

grau de flutuação = (n * 4068) / 71;

grau de retorno;

}

A maior parte da matemática é feita perto da linha 127 - SE você quiser uma distância diferente (digamos KM ou Milhas Náuticas)

você pode alterar o "miles = dist * 60 * 1.1515;" linha.

Para KM seria algo como "milhas = (dist * 60 * 1,1515) * 1,609344;"

Para milhas náuticas algo como "milhas = (dist * 60 * 1,1515) * 0,8684;"

Provavelmente, você também desejará alterar a linha de impressão serial e a linha do display OLED que indicam milhas para sua nova medição.

Qual é a linha 86 e 96 no esboço DDuino_ISS_notification.

Etapa 3: O esboço de Eric

The Eric Sketch
The Eric Sketch
The Eric Sketch
The Eric Sketch
The Eric Sketch
The Eric Sketch

O supervisor Eric é um AI ou alienígena do Povo da Terra da TBS TV. Por favor, veja meu outro Instructable na minha construção.

O básico que você precisa para este sistema de notificação é um D1 Mini e o escudo WS2812 - tê-lo em uma bela caixa com uma boa lente faz com que pareça - bem legal.

Mais uma vez, qualquer ESP8266 com um pixel WS2812 deve funcionar, realmente não há mágica acontecendo aqui - O escudo WS2812 está conectado ao D2 no mini D1 (que eu acredito ser o pino 4 nas placas NodeMCU, e talvez outras placas ESP8266).

Para o esboço:

Como acima, você precisará alterar sua latitude e longitude no esboço próximo à linha 27. E como acima, este esboço também calcula uma distância entre a latitude e longitudes. Ao contrário do esboço acima, esta única tela é com o LED WS2812 Neopixel.

As matemáticas estão próximas da linha 96, mas, fora isso, são as mesmas acima. Ainda há saída serial se você quiser ver o que está acontecendo. Este esboço faz apenas cálculos de localização e distância ISS - ele não faz as previsões de passagem ou quantas pessoas estão no espaço.

* Deve-se observar que a distância aqui é em milhas, ela pode ser alterada se desejar, mas você precisará fazer mais algumas alterações em suas unidades. *

Perto da linha 116:

void setColor () {

if (distance = 1201) {colorDisplay (strip. Color (255, 0, 0), p);}

if (distance = 1151) {colorDisplay (strip. Color (255, 153, 0), p);} // parece mais amarelo para mim

if (distance = 951) {colorDisplay (strip. Color (255, 255, 0), p);} // parece verde / amarelo para mim

if (distance <= 950) {colorDisplay (strip. Color (0, 255, 0), p);}

if (distance> = 1351) {colorDisplay (strip. Color (0, 0, 0), p);}

}

As unidades estão em milhas, e se você precisar mudar para KM ou NM, você também vai querer mudar essas linhas.

O que está acontecendo aqui tu, A 1350 milhas, o ISS está apenas no horizonte e você pode simplesmente começar a ouvir os transponders do rádio - não é ótimo, e a comunicação neste ponto não pode realmente acontecer. O LED fica VERMELHO - isto é um alerta - o ISS está se aproximando.

Depois de um curto período de tempo, ou se o ISS estiver entre 1150 e 1200 milhas, o LED ficará laranja - isso realmente parece mais amarelo, mas é suporte para ser laranja. - A 1150 milhas você deve começar a ouvir um pouco mais - a comunicação bidirecional provavelmente ainda não será possível em um HT de 5 watts.

Entre 950 e 1150 milhas - O LED deve ficar amarelo - você tem uma chance razoável de fazer um contato - ainda não é ótimo, mas é pelo menos possível neste ponto (amarelo parece mais verde para mim do que amarelo - então algo mais funcione sobre)

Abaixo de 950 milhas, o LED será um VERDE sólido - e contatos bidirecionais podem ser feitos.

À medida que o ISS se afasta, o LED passa de Verde para Amarelo, Laranja, Vermelho e, finalmente, DESLIGADO.

Deve-se observar aqui que tudo isso acontece muito rapidamente - a maioria das passagens na minha área duram menos de 10 minutos e o tempo de contato utilizável normal é de menos de 5 minutos.

Também deve ser notado que o ISS pode mudar sua localização, e que a API pode ou não ser atualizada - então mesmo se você tiver uma luz verde - você pode não ouvir nada.

** A operação do equipamento amador também é opcional e voluntária, e enquanto eles tentam operar o equipamento, há momentos em que devem desligá-lo para alimentação, ou por causa do que precisam fazer. É sempre uma boa ideia verificar os sites da AMsat ou ARISS **

Etapa 4: o código PHP

O Código PHP
O Código PHP

No repositório github, incluí meu código PHP de 2013.

O código foi projetado para ser executado a partir da CLI (ou linha de comando). Já faz algum tempo desde que escrevi isso, mas acho que o único requisito era ter as extensões JSON habilitadas.

Os scripts ainda funcionam, e se você quiser executá-los, fique à vontade para fazê-lo!

Para usuários do Windows, há informações aqui sobre como instalar o PHP

Certifique-se de instalar a versão CLI. Acho que enquanto você instala, você pode selecionar quais extensões ativar.

Os usuários do Linux dependem da sua distribuição - eu uso uma distribuição baseada no Ubuntu - e do Synaptic como meu gerenciador de pacotes.

Você vai querer php7.0-common, php7.0-json, php7.0-cli, php7.0-curl

Eu não acho que usei o CURL com eles, então você pode não precisar dele. O restante deve ser encontrado no gerenciador de pacotes de sua escolha ou no site

Dois dos scripts precisarão ser editados com sua latitude e longitude - eles não são muito longos, e o que precisa ser alterado está logo no início do script. Eles são iss-location.php e iss-pass-api.php

iss-location.php tem minhas chamadas de pisca-pisca deixadas nele - eu não tenho certeza se elas funcionam mais - mas você pode ver que eu estava mudando o LED da mesma forma que faço com minha "Notificação de Eric". Não acho que eles estejam causando problemas, mas você pode querer comentá-los.

iss-pass-api.php usa a hora da época e fornece a hora local das passagens previstas. Com toda a honestidade, eu prefiro a versão PHP deste script em comparação com a versão DDuino (que agora só faz previsões UTC)

A versão PHP também é formatada de forma mais agradável para exibição - mas isso é realmente uma coisa menor.

O script PHP final é iss-people.php - e exibirá os nomes e em qual nave espacial eles estão. Isso é tudo o que faz. (E essa informação não muda com frequência)

Os princípios básicos da execução de um script PHP a partir da linha de comando são:

$ php iss-people.php

Os arquivos PHP são arquivos de texto e podem ser abertos por qualquer editor de texto. Usuários do Windows, acho que os salvei para que eles tenham retornos de linha e de carro. SE não https://www.editpadlite.com/ pode funcionar para eles.

Etapa 5: os vídeos e mais informações sobre ISS e Ham

Image
Image

Obtendo uma licença de presunto nos Estados Unidos:

Não está nos EUA? Cada país tem seu próprio conjunto de regras e guias de licença - verifique com quem governa suas comunicações (aqui nos EUA é a Comissão Federal de Comunicações da FCC)

Calcule a distância, rumo e mais entre os pontos de latitude e longitude.

Isso teria sido muito mais difícil de fazer sem as APIs muito úteis do Open Notify

Como ver a estação espacial do solo.

Satélite AMSAT Radioamador

Informações AMSAT sobre rádio na ISS

Rádio Amador ARISS na Estação Espacial Internacional

Fã Clube ISS - Frequências ISS

Entrada da Wikipedia em APRS

APRS.org

Etapa 6: Considerações Finais …

Este foi um projeto divertido, com um hardware muito simples.

Há algumas coisas que gostaria de mudar, mas no geral estou muito feliz com os resultados.

Coisas que precisam ser mudadas:

1) Descobrir uma maneira de passar as previsões na hora local, não no UTC

2) Encontre melhores números de código de cores para laranja e amarelo.

3) Atualização para funcionar com o ESP32 X-board, com OLED e 4 Neopixels.

Se você achar este ou qualquer um dos meus projetos úteis ou agradáveis, por favor, ajude-me.

Qualquer coisa que eu conseguir vai comprar mais peças e fazer mais / melhores projetos.

www.patreon.com/kd8bxp

ko-fi.com/lfmiller