Оглавление:

Raspberry Pi Planet Finder: 14 шагов (с изображениями)
Raspberry Pi Planet Finder: 14 шагов (с изображениями)

Видео: Raspberry Pi Planet Finder: 14 шагов (с изображениями)

Видео: Raspberry Pi Planet Finder: 14 шагов (с изображениями)
Видео: Микроконтроллер: RP2040 Raspberry Pi Pico Часть 1 Начало работы с Micropython в PyCharm и Thonny IDE 2024, Ноябрь
Anonim
Image
Image
Что вам нужно
Что вам нужно

За пределами научного центра в моем городе есть большая металлическая конструкция, которая может поворачиваться и указывать на то место, где находились планеты в небе. Я никогда не видел, чтобы это работало, но я всегда думал, что было бы волшебно узнать, где на самом деле находятся эти недостижимые другие миры по отношению к моему крошечному «я».

Когда я недавно проходил мимо этой давно умершей выставки, я подумал: «Могу поспорить, что смогу сделать это», и я так и сделал!

Это руководство о том, как сделать Planet Finder (с изображением Луны), чтобы вы тоже знали, куда смотреть, когда чувствуете трепет перед космосом.

Шаг 1. Что вам нужно

Что вам нужно
Что вам нужно

1 x Raspberry Pi (версия 3 или выше для встроенного Wi-Fi)

1 x ЖК-экран (16 x 2) (вот так)

2 шаговых двигателя с драйверами (28-BYJ48) (как эти)

3 x кнопки (как эти)

2 х фланцевые муфты (как эти)

1 х кнопочный компас (как это)

8 болтов и гаек M3

Детали корпуса и телескопа, напечатанные на 3D-принтере

Шаг 2: планетные координаты

Планетарные координаты
Планетарные координаты

Есть несколько различных способов описания местоположения астрономических объектов на небе.

Для нас наиболее целесообразно использовать горизонтальную систему координат, как показано на изображении выше. Это изображение взято со страницы Википедии, ссылка на которую имеется здесь:

en.wikipedia.org/wiki/Horizontal_coordinat…

Система горизонтальных координат дает вам угол от севера (азимут) и вверх от горизонта (высота), поэтому он различается в зависимости от того, откуда вы смотрите в мире. Таким образом, наш искатель планет должен учитывать местоположение и иметь какой-то способ найти Север в качестве ориентира.

Вместо того, чтобы пытаться вычислить высоту и азимут, которые меняются со временем и местоположением, мы будем использовать Wi-Fi-соединение на борту Raspberry Pi для поиска этих данных из НАСА. Они отслеживают такие вещи, поэтому нам не нужно;)

Шаг 3: доступ к данным о планетах

Мы получаем данные из Лаборатории реактивного движения НАСА (JPL) -

Для доступа к этим данным мы используем библиотеку AstroQuery, которая представляет собой набор инструментов для запросов к астрономическим веб-формам и базам данных. Документация для этой библиотеки находится здесь:

Если это ваш первый проект Raspberry Pi, начните с этого руководства по настройке:

Если вы используете Raspbian на своем Raspberry Pi (вы будете, если следовали приведенному выше руководству), значит, у вас уже установлен python3, убедитесь, что у вас установлена самая последняя версия (я использую версию 3.7.3). Нам нужно использовать это, чтобы получить pip. Откройте терминал и введите следующее:

sudo apt установить python3-pip

Затем мы можем использовать pip для установки обновленной версии astroquery.

pip3 install --pre --upgrade astroquery

Прежде чем продолжить остальную часть этого проекта, попробуйте получить доступ к этим данным с помощью простого скрипта Python, чтобы убедиться, что все нужные зависимости установлены правильно.

из astroquery.jplhorizons import Horizons

mars = Horizons (id = 499, location = '000', epochs = None, id_type = 'majorbody') eph = mars.ephemerides () print (eph)

Это должно показать вам подробную информацию о местоположении Марса!

Вы можете проверить, верны ли эти данные, используя этот сайт для поиска положений планет в реальном времени:

Чтобы немного разбить этот запрос, id - это число, связанное с Марсом в данных JPL, epochs - это время, когда нам нужны данные (None означает прямо сейчас), а id_type запрашивает основные тела солнечной системы. В настоящее время местоположение установлено в Великобритании, поскольку «000» - это код местоположения обсерватории в Гринвиче. Другие местоположения можно найти здесь:

Исправление проблем:

Если вы получили сообщение об ошибке: Нет модуля с именем 'keyring.util.escape'

попробуйте следующую команду в терминале:

pip3 install --upgrade keyrings.alt

Шаг 4: Код

К этому шагу прилагается полный скрипт Python, используемый в этом проекте.

Чтобы найти правильные данные для вашего местоположения, перейдите к функции getPlanetInfo и измените местоположение, используя список обсерваторий на предыдущем шаге.

def getPlanetInfo (планета):

obj = Horizons (id = planet, location = '000', epochs = None, id_type = 'majorbody') eph = obj.ephemerides () return eph

Шаг 5: Подключение оборудования

Подключение оборудования
Подключение оборудования
Подключение оборудования
Подключение оборудования
Подключение оборудования
Подключение оборудования

Используя макетные платы и перемычки, подключите два шаговых двигателя, ЖК-экран и три кнопки, как показано на принципиальной схеме выше.

Чтобы узнать, какое количество контактов на вашем Raspberry Pi, перейдите к терминалу и введите

распиновка

Это должно показать вам изображение выше с номерами GPIO и номерами плат. Мы используем номера плат, чтобы определить, какие контакты используются в коде, поэтому я буду ссылаться на номера в скобках.

В помощь принципиальной схеме вот штыри, которые подключены к каждой части:

1-й шаговый двигатель - 7, 11, 13, 15

2-й шаговый двигатель - 40, 38, 36, 32

Кнопка1 - 33

Кнопка2 - 37

Кнопка3 - 35

ЖК-экран - 26, 24, 22, 18, 16, 12

Когда все это подключено, запустите скрипт python

python3 planetFinder.py

и вы должны увидеть на экране текст настройки, а кнопки должны перемещать шаговые двигатели.

Шаг 6: Разработка корпуса

Разработка корпуса
Разработка корпуса
Разработка корпуса
Разработка корпуса
Разработка корпуса
Разработка корпуса

Корпус был разработан таким образом, чтобы его можно было легко напечатать на 3D-принтере. Он разбивается на отдельные части, которые затем склеиваются вместе, как только электроника будет закреплена на месте.

Отверстия рассчитаны на кнопки, которые я использовал, и болты M3.

Я распечатал телескоп по частям и позже склеил их, чтобы не было слишком много опорной конструкции.

К этому шагу прикреплены файлы STL.

Шаг 7: Проверка отпечатков

Тестирование отпечатков
Тестирование отпечатков
Тестирование отпечатков
Тестирование отпечатков
Тестирование отпечатков
Тестирование отпечатков
Тестирование отпечатков
Тестирование отпечатков

После того, как все напечатано, убедитесь, что все плотно прилегает друг к другу, прежде чем делать какие-либо склейки.

Установите кнопки на место, закрепите экран и шаговые двигатели болтами M3 и хорошо покачивайте все. Подпилите все шероховатости, разобрав все на части перед следующим шагом.

Шаг 8: Удлинение шагового двигателя

Расширение шагового двигателя
Расширение шагового двигателя
Расширение шагового двигателя
Расширение шагового двигателя
Расширение шагового двигателя
Расширение шагового двигателя

Шаговый двигатель, который будет управлять углом возвышения телескопа, будет располагаться над основным корпусом, и для его вращения требуется некоторое провисание проводов. Провода необходимо удлинить, разрезав их между шаговым двигателем и его платой драйвера и припаяв между ними провод новой длины.

Я вставил новый провод в опорную опору, используя кусок нити, чтобы протянуть его, так как провод, который я использую, довольно жесткий и все время застревает. Пройдя через него, его можно припаять к шаговому двигателю, следя за тем, какой цвет подключен, чтобы снова прикрепить нужные на другом конце. Не забудьте добавить к проводам термоусадку!

После пайки запустите скрипт python, чтобы убедиться, что все по-прежнему работает, затем протолкните провода обратно по трубке, пока шаговый двигатель не встанет на место. Затем его можно прикрепить к корпусу шагового двигателя с помощью болтов и гаек M3 до того, как задняя часть корпуса будет приклеена на место.

Шаг 9: Установите кнопки и ЖК-экран

Кнопки крепления и ЖК-экран
Кнопки крепления и ЖК-экран
Кнопки крепления и ЖК-экран
Кнопки крепления и ЖК-экран
Кнопки крепления и ЖК-экран
Кнопки крепления и ЖК-экран
Кнопки крепления и ЖК-экран
Кнопки крепления и ЖК-экран

Вставьте кнопки и затяните гайки, чтобы зафиксировать их на месте перед пайкой. Мне нравится использовать общий провод заземления, который проходит между ними для аккуратности.

Закрепите ЖК-экран болтами и гайками M3. ЖК-дисплею нужен потенциометр на одном из контактов, который я также припаял на этом этапе.

Протестируйте код еще раз! Прежде чем склеить все вместе, убедитесь, что все работает, так как на этом этапе исправить это намного проще.

Шаг 10: Добавление фланцев

Добавление фланцев
Добавление фланцев
Добавление фланцев
Добавление фланцев
Добавление фланцев
Добавление фланцев
Добавление фланцев
Добавление фланцев

Чтобы соединить детали, напечатанные на 3D-принтере, с шаговыми двигателями, мы используем 5-миллиметровую фланцевую муфту, которая устанавливается поверх конца шагового двигателя и удерживается на месте крошечными винтами.

Один фланец приклеен к основанию вращающейся башни, а другой - к телескопу.

Прикрепить телескоп к двигателю на вершине вращающейся башни просто, так как есть много места для доступа к маленьким винтам, удерживающим его на месте. Другой фланец закрепить сложнее, но между основным корпусом и основанием вращающейся башни имеется достаточный зазор, чтобы вставить небольшой шестигранный ключ и затянуть винт.

Попробуйте еще раз!

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

Шаг 11. Запуск при запуске

Вместо того, чтобы запускать код вручную каждый раз, когда мы хотим найти планету, мы хотим, чтобы это работало как отдельная выставка, поэтому мы собираемся настроить его для запуска нашего кода всякий раз, когда Raspberry Pi включается.

В терминале введите

crontab -e

В открывшемся файле добавьте следующее в конец файла, а затем новую строку.

@reboot python3 /home/pi/PlanetFinder/planetFinder.py &

Мой код сохранен в папке PlanetFinder, поэтому /home/pi/PlanetFinder/planetFinder.py - это расположение моего файла. Если ваш сохранен где-то еще, обязательно измените его здесь.

Знак & в конце важен, поскольку он позволяет коду работать в фоновом режиме, поэтому он не задерживает другие процессы, которые также происходят при загрузке.

Шаг 12: склейте все вместе

Склейте все вместе!
Склейте все вместе!
Склейте все вместе!
Склейте все вместе!

Все, что еще не приклеено, теперь должно быть закреплено.

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

Шаг 13: использование

использование
использование

Когда Planet Finder включается, он предлагает пользователю отрегулировать вертикальную ось. Нажатие кнопок вверх и вниз переместит телескоп, попытается выровнять его, направив вправо, затем нажмите кнопку ОК (внизу).

Затем пользователя попросят отрегулировать вращение, использовать кнопки, чтобы вращать телескоп, пока он не будет указывать на север согласно маленькому компасу, затем нажмите ОК.

Теперь вы можете перемещаться по планетам с помощью кнопок вверх / вниз и выбирать ту, которую хотите найти, с помощью кнопки ОК. Он отобразит высоту и азимут планеты, затем переместится и укажет на нее в течение нескольких секунд, прежде чем снова повернуться лицом к северу.

Шаг 14: Готово

Законченный
Законченный

Все сделано!

Наслаждайтесь знанием того, где находятся все планеты:)

Космический вызов
Космический вызов
Космический вызов
Космический вызов

Первый приз в космическом испытании

Рекомендуемые: