Источник: 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 млн лет назад) либо ключевой момент истории Земли (появление приматов, злаков, насекомых, Пермское вымирание). Глобус покажет им, как выглядела в то время Земля. Уже на этой схеме пользователь может вбить название родного города и увидеть, где он находился миллионы лет назад.

Комментарии (6)


  1. REPISOT
    13.12.2019 06:16

    Демонстрация принципа работы глобуса-детектора МКС
    Не детектора, а индикатора.


  1. 2PAE
    13.12.2019 08:35

    Не ново, но вот так инженер и натянул сову на глобус!


  1. WFF
    13.12.2019 10:56

    Было бы прикольно сделать немного наоборот: чтобы земля (глобус) поворачивалась к наблюдателю так, как её (его) видно с МКС. А на глобусе бы подсвечивался диск- та часть земли, которая видна с МКС (или часть земли с которой можно увидеть МКС).


  1. mihmig
    13.12.2019 11:50

    Как я понимаю сервопривод из крайнего конечного положения резко перескакивает в начальное? А я-то думал, что инженер решил проблему плавного движения точки и подачи питания на механизм…


    1. dydyman
      13.12.2019 15:12

      Там по долготе шаговик, а не серво, так что можно рисовать непрерывную синусоиду без перескоков. Хотя как по мне, то лучше бы глобус поворачивался по долготе, а не лазер.


  1. Tachyon
    13.12.2019 12:08

    Красиво, и почти бесполезно, но хочу такой же.