Sistema de notificación ISS simple: 6 pasos (con imágenes)
Sistema de notificación ISS simple: 6 pasos (con imágenes)
Anonim
Sistema de notificación simple de ISS
Sistema de notificación simple de ISS
Sistema de notificación ISS simple
Sistema de notificación ISS simple

¿Qué es la Estación Espacial Internacional y por qué quieres predecir dónde está?

Para responder a la primera pregunta, podemos buscar una respuesta en el sitio web de la NASA. Que en resumen es:

La Estación Espacial Internacional es una gran nave espacial. Orbita alrededor de la Tierra. Es un hogar donde viven los astronautas. La estación espacial es también un laboratorio de ciencias. Muchos países trabajaron juntos para construirlo. También trabajan juntos para usarlo. La estación espacial está hecha de muchas piezas. Las piezas fueron ensambladas en el espacio por astronautas. La órbita de la estación espacial está a unas 220 millas sobre la Tierra. La NASA usa la estación para aprender a vivir y trabajar en el espacio. Estas lecciones ayudarán a la NASA a explorar el espacio.

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

La segunda pregunta es un poco más difícil de responder, pero lo intentaré.

Soy un operador de radio aficionado (o un operador de radioaficionado): una cosa que siempre me ha parecido divertido era usar una radio de mano de baja potencia (5 vatios o menos) y comunicarme con satélites en órbita. La ISS tiene equipos de radio a bordo.

Al principio de mis días de aficionado, solía comunicarme bastante con los satélites, incluso haciendo algunos contactos solo con la antena de patito de goma, algo muy difícil de hacer. Hice algunos contactos con la ISS usando APRS (sistema automático de informes de paquetes). Eso fue en 2013; hace mucho tiempo, he estado muy inactivo desde entonces. Es algo en lo que he querido volver a entrar en ti.

En 2013 escribí un par de scripts PHP para la línea de comandos que me indicaban la ubicación de la ISS y me ayudaban a predecir cuándo estaría sobre la cabeza. En ese momento usé un blink stick y lo hice cambiar de color a medida que se acercaba la ISS. Gracias al trabajo en https://open-notify.org y su API, fue bastante fácil hacerlos.

2018 - 5 años después, finalmente convertí estos PHP a Arduino C (en realidad, fue muy fácil de hacer).

Mi proyecto usa un D-Duino (que en realidad es un NodeMCU con un OLED a bordo), eso es todo.

Sigo usando la misma API de

También escribí un código para usar un D1 Mini y un WS2812 Shield (vea mi Proyecto de Supervisor Eric para más información sobre eso).

Paso 1: Hardware simple

Hardware simple
Hardware simple

D-Duino (NodeMCU)

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

Eso es todo, eso es todo lo que se requiere. Por supuesto, puede usar otro hardware; esto debería funcionar en cualquier dispositivo ESP8266 que pueda usar un I2C OLED. El D-Duino es en su mayor parte un NodeMCU con la adición del OLED.

El código se puede encontrar

Necesitará tener las placas ESP8266 instaladas en el IDE de Arduino. Las instrucciones se pueden encontrar aquí:

(la forma más fácil es con el administrador de tableros)

También necesitará algunas bibliotecas; creo que todas estas se pueden encontrar ahora en el administrador de bibliotecas (pero no estoy 100% seguro de eso).

Bibliotecas necesarias: ArduinoJson.h

Adafruit_NeoPixel

WifiManager.h

TimeLib.h

esp8266-oled-ssd1306

(No estoy seguro de dónde obtuve TImeLib, ¿y tal vez esté incluido con Arduino IDE?)

La forma más sencilla de instalarlos es mediante el administrador de bibliotecas. De lo contrario, siga las instrucciones de cada biblioteca.

Paso 2: los bocetos

Los bocetos
Los bocetos

Actualmente hay dos bocetos y tres scripts PHP incluidos en el repositorio de github.

DDuino_ISS_notification que debe usarse con el hardware D-Duino de arriba.

Y EricISSnotification que utiliza mi anterior "Supervisor Eric" del proyecto "People of Earth" del programa. (Más sobre esto más adelante)

En ambos bocetos cerca de la línea 30 (o en algún lugar muy cercano a ella), verá un par de variables flotantes llamadas mylat y mylon. Deberá cambiar estas dos líneas con su latitud y longitud; si no conoce su latitud y longitud, puede usar este sitio web https://www.latlong.net. El centro de su ciudad debería estar bien. No tiene que coincidir con su latitud o longitud excavada. Los bocetos hacen algunos redondeos y otras matemáticas para llegar a una distancia aproximada de la EEI en millas estadounidenses.

Creo que esto es lo único que debe cambiarse en los bocetos.

Las matemáticas para el cálculo de la distancia se basan en la distancia del círculo máximo entre dos puntos, y el formal se puede encontrar aquí:

Este sitio proporciona mucha información sobre cómo calcular la distancia entre dos latitudes y longitudes, así como el rumbo. No estamos usando ningún cálculo de rumbo para esto.

Para que lo formal funcione, necesitamos obtener un theta y convertir algún grado en radiante y, al revés, radiante en grado. Dado que Arduino no hace las matemáticas tan bien, tenemos que ayudarlo un poco con las conversiones.

void getDistance () {

flotar theta, dist, millas;

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);

millas = dist * 60 * 1,1515;

distancia = millas;

}

float deg2rad (flotante n) {

radianes flotantes = (n * 71) / 4068;

devuelve radianes;

}

float rad2deg (flotante n) {

grado de flotación = (n * 4068) / 71;

grado de retorno;

}

La mayor parte de los cálculos se realizan cerca de la línea 127 - SI desea una distancia diferente (digamos KM o Millas náuticas)

puede cambiar "miles = dist * 60 * 1.1515;" línea.

Para KM sería algo como "millas = (dist * 60 * 1.1515) * 1.609344;"

Para millas náuticas, algo como "millas = (dist * 60 * 1.1515) * 0.8684;"

Probablemente también desee cambiar la línea de impresión serial y la línea de la pantalla OLED que dicen millas a su nueva medida.

Que es la línea 86 y 96 en el boceto DDuino_ISS_notification.

Paso 3: El boceto de Eric

El boceto de Eric
El boceto de Eric
El boceto de Eric
El boceto de Eric
El boceto de Eric
El boceto de Eric

El supervisor Eric es una IA o un extraterrestre de TBS TV People of Earth. Por favor, vea mi otro Instructable en mi compilación.

Lo básico que necesita para este sistema de notificación es un D1 Mini y el escudo WS2812; tenerlo en una bonita caja con una bonita lente hace que se vea bien.

Una vez más, cualquier ESP8266 con un píxel WS2812 debería funcionar, realmente no hay magia aquí: el escudo WS2812 está conectado a D2 en el D1 mini (que creo que es el pin 4 en las placas NodeMCU, y tal vez otras placas ESP8266).

Al boceto:

Como arriba, necesitará cambiar su latitud y longitud en el boceto cerca de la línea 27. Y como arriba, este boceto también calcula una distancia entre la latitud y la longitud. A diferencia del boceto anterior, esta única pantalla es con el LED Neopixel WS2812.

Las matemáticas están cerca de la línea 96, pero por lo demás son las mismas que las anteriores. Todavía hay salida en serie si desea ver qué está pasando. Este boceto solo realiza cálculos de ubicación y distancia de la ISS, no hace las predicciones de pases o cuántas personas hay en el espacio.

* Cabe señalar que la distancia aquí está en millas, se puede cambiar si lo desea, pero deberá realizar algunos cambios más en sus unidades. *

Cerca de la línea 116:

void setColor () {

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

if (distancia = 1151) {colorDisplay (strip. Color (255, 153, 0), p);} // me parece más amarillo

if (distancia = 951) {colorDisplay (strip. Color (255, 255, 0), p);} // me parece verde / amarillo

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

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

}

Las unidades están en millas, y si necesita cambiar a KM o NM, también querrá cambiar estas líneas.

¿Qué está pasando aquí? A 1350 millas, la ISS está justo en el horizonte y puedes comenzar a escuchar los transpondedores de la radio; no es genial, y la comunicación en este punto no puede suceder realmente. El LED se vuelve ROJO - esto es un aviso - la ISS se está acercando.

Después de un corto período de tiempo, o si la ISS está entre 1150 y 1200 millas, el LED se volverá naranja; esto realmente se verá más amarillo, pero es posible que sea naranja. - A las 1150 millas debería empezar a escuchar un poco más - la comunicación bidireccional probablemente aún no será posible en un HT de 5 vatios.

Entre 950 y 1150 millas: el LED debería volverse amarillo; tiene una posibilidad decente de hacer un contacto; aún no es excelente, pero al menos es posible en este punto (el amarillo me parece más verde que amarillo, así que algo más en lo que trabajar sobre)

Por debajo de las 950 millas, el LED será VERDE fijo y se pueden hacer contactos bidireccionales.

A medida que la ISS se aleja, el LED pasará de verde a amarillo, de naranja a rojo y finalmente a APAGADO.

Cabe señalar aquí que todo esto sucede muy rápido: la mayoría de los pases en mi área duran menos de 10 minutos y el tiempo de contacto utilizable normal es de menos de 5 minutos.

También debe tenerse en cuenta que la ISS puede cambiar su ubicación y que la API puede o no actualizarse, por lo que incluso si tiene luz verde, es posible que no escuche nada.

** El funcionamiento del equipo de aficionados también es opcional y voluntario, y mientras intentan hacer funcionar el equipo, hay momentos en que tienen que apagarlo por energía o por lo que necesitan hacer. Siempre es una buena idea consultar los sitios web de AMsat o ARISS **

Paso 4: el código PHP

El código PHP
El código PHP

En el repositorio de github, he incluido mi código PHP de 2013.

El código fue diseñado para ejecutarse desde la CLI (o línea de comandos). Ha pasado un tiempo desde que escribí estos, pero creo que el único requisito era tener habilitadas las extensiones JSON.

Los scripts aún funcionan, y si desea ejecutarlos, ¡no dude en hacerlo!

Para los usuarios de Windows, hay información aquí sobre la instalación de PHP

Asegúrese de instalar la versión CLI. Creo que mientras lo instalas puedes seleccionar qué extensiones activar.

Los usuarios de Linux dependen de su distribución (yo uso una distribución basada en Ubuntu) y synaptic como mi administrador de paquetes.

Querrá php7.0-common, php7.0-json, php7.0-cli, php7.0-curl

No creo que haya usado CURL con estos, por lo que es posible que no lo necesite. El resto debe encontrarse en el administrador de paquetes de su elección o en el sitio web

Dos de los guiones deberán editarse con su latitud y longitud; no son muy largos y lo que debe cambiarse está justo en la parte superior del guión. Son iss-location.php y iss-pass-api.php

iss-location.php tiene mis antiguas llamadas de blink stick en él - no estoy seguro de que funcionen más - pero pueden ver que estaba cambiando el LED de la misma manera que lo hago con mi "Notificación de Eric". No creo que estén causando ningún problema, pero es posible que desee comentarlos.

iss-pass-api.php usa el tiempo de época y da una hora local de los pases predichos. Honestamente, prefiero la versión PHP de este script en comparación con la versión DDuino (que en este momento solo hace predicciones UTC)

La versión de PHP también tiene un formato más agradable para la visualización, pero eso es realmente una cosa menor.

El script PHP final es iss-people.php, y mostrará los nombres y la nave espacial en la que se encuentran. Eso es todo lo que hace. (Y esta información no cambia con frecuencia)

Los conceptos básicos para ejecutar un script PHP desde la línea de comandos son:

$ php iss-people.php

Los archivos PHP son archivos de texto y se pueden abrir con cualquier editor de texto. Los usuarios de Windows creo que los guardé para que tengan retornos de línea y de carro. SI no https://www.editpadlite.com/ podría funcionar para ellos.

Paso 5: Los videos y más información sobre ISS & Ham

Image
Image

Obtener una licencia de radioaficionado en los Estados Unidos:

¿No estás en los EE. UU.? Cada país tiene su propio conjunto de reglas y guías de licencia; consulte con quién gobierna sus comunicaciones (aquí en los EE. UU. Es la Comisión Federal de Comunicaciones de la FCC)

Calcule la distancia, el rumbo y más entre los puntos de latitud y longitud.

Esto habría sido mucho más difícil de hacer sin las muy útiles API de Open Notify

Cómo ver la estación espacial desde tierra.

Radioaficionado AMSAT Satélite

Información AMSAT en radio en la ISS

ARISS Radio Amateur en la Estación Espacial Internacional

Club de fans de la ISS - Frecuencias de la ISS

Entrada de Wikipedia sobre APRS

APRS.org

Paso 6: Pensamientos finales …

Este fue un proyecto divertido, con hardware muy simple.

Hay un par de cosas que me gustaría cambiar, pero en general estoy muy contento con los resultados.

Cosas que deben cambiarse:

1) Encuentre una manera de tener predicciones pasadas en la hora local, no en UTC

2) Encuentre mejores números de código de color para naranja y amarillo.

3) Actualización para trabajar con la placa ESP32 X, con OLED y 4 Neopixels.

Si encuentra este o alguno de mis proyectos útil o agradable, por favor apóyenme.

Todo lo que consigo se destina a comprar más piezas y hacer más / mejores proyectos.

www.patreon.com/kd8bxp

ko-fi.com/lfmiller