13 December 2019

Инженер собрал глобус, который показывает текущее положение МКС

Developing for ArduinoSystems engineering

Источник: Instructables.com

Инженер Майкл Саво собрал конструкцию из лазера, глобуса и напечатанной на 3D-принтере базы, которая показывает текущее положение МКС над Землей. Пошаговую инструкцию, в том числе часть о программном коде, он выложил на сайте instructables.com.

Саво рассказал, что его всегда интересовало, где сейчас находится МКС. Он решил проблему с инженерным подходом — собрал глобус, который показывает текущее положении станции лазером.

Сначала инженер соорудил внутренности глобуса. Он взял схемы деталей с сайта Thingiverse и распечатал на 3D-принтере. Получилось три части:

  • Основа для степпера, двигающегося по долготе (The Support Stepper Longitude). На нее монтируется мотор, микроконтроллер Wemos, медная трубка и светодиодная лента Neopixels.
  • База для переключателя. На нее монтируется концевой переключатель, передающий мотору значения долготы.
  • Основа для сервопривода. На нее ставится сервопривод, который двигает лазер по широте.

Все три части были распечатаны на принтере Prusa I3 MK2S из черного филамента PETG.

Затем Саво собрал электронные компоненты конструкции. Система работает от источника напряжением 5 В и силой тока 3А. По схеме, указанной на фото, к источнику последовательно подключается мотор, лазер, лента Neopixels и контроллер Wemos. Следом все элементы системы подключаются к контроллеру.



Чтобы моторы направляли лазер на нужную точку, автору устройства нужно было определять положение МКС в реальном времени. Для этого он использовал API из Open Notify. Искомое значение местоположения МКС Саво получил с помощью парсера с ArduinoJsonlibrary.

#include <ESP8266WiFi.h
#include <ESP8266HTTPClient.h
#include <ArduinoJson.h

// WiFi Parameters
const char* ssid = "XXXXX"; 
const char* password = "XXXXX";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid,password);
while (WiFi.status()!= WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting...");
    }
}

Саво показал код программы, которая подключает NodeMCU к WiFi, а затем к API. После этого полученные данные передаются от платы Arduino по последовательному порту.

void loop() {

if (WiFi.status() == WL_CONNECTED) // Check WiFi Status
	{HTTPClient http;  //Object of class HTTPClient
	http.begin("http://api.open-notify.org/iss-now.json");
	int httpCode = http.GET();   //Check the returning code

if (httpCode >0) { // Parsing
		const size_t bufferSize = JSON_OBJECT_SIZE(2) + JSON_OBJECT_SIZE(3) + 100;
		DynamicJsonBuffer jsonBuffer(bufferSize);
		JsonObject& root = jsonBuffer.parseObject(http.getString());		// Parameters
		const char* message = root["message"];
		const char* lon = root["iss_position"]["longitude"];
		const char* lat = root["iss_position"]["latitude"];		// Output to serial monitor

Serial.print("Message:");
		Serial.println(message);
		Serial.print("Longitude: ");
		Serial.println(lon);
		Serial.print("Latitude: ");
		Serial.println(lat);
	}
	http.end();   //Close connection
}
delay(50000);
}

Наконец, Саво нужен был код для Arduino, который передавал бы полученное значение моторам, двигающим лазер. Вдобавок к этому он добавил в программу функцию определения положения Солнца. С помощью ленты Neopixels и этой функции освещается та часть глобуса, которая соответствует части Земли, повернутой к Солнцу. Код на Arduino автор проекта прикрепил отдельным файлом.

Наконец, Саво надел на конструкцию белый глобус, на поверхности которого хорошо видна синяя точка от лазера.


Демонстрация принципа работы глобуса-детектора МКС
В июле 2019 года Брайан Кокфилд выложил на hackday схему простого и дешевого детектора МКС за $60 долларов. Для него нужны аккаунты на io.adafruit.com и ifttt.com, а также Tokymaker — программируемая компактная электронная станция. С помощью предустановленного приложения на ifttt.com и уведомлений на Adafruit, Tokymaker будет посылать сигнал каждый раз, когда МКС пролетает над указанной точкой планеты. Уведомления можно заменить на движение сервопривода — в варианте Кокфилда он поднимал вверх миниатюрного астронавта.

Ян Вебстер из Калифорнии создал интерактивный виртуальный глобус. Вебстер соединил данные проекта Paleomap (состояние Земли в разное время) и данные проекта LocationQ по поиску адреса. В итоговом варианте пользователь может выбрать геологическую эпоху вплоть до раннего Неопротерозоя (720 млн лет назад) либо ключевой момент истории Земли (появление приматов, злаков, насекомых, Пермское вымирание). Глобус покажет им, как выглядела в то время Земля. Уже на этой схеме пользователь может вбить название родного города и увидеть, где он находился миллионы лет назад.
Tags:arduinoинженерияинженерные решениягеографиямксгеолокация
Hubs: Developing for Arduino Systems engineering
+25
6.5k 13
Comments 6