Raspberry pi & Азбука Морзе

Парусник “NaN” сигналит SOS (See Our Success) Raspberry Pi, азбука Морзе и MQTT: вместе веселее


Меня зовут Вова Балакин, я из московской школы на Юго-Востоке имени Маршала В.И.Чуйкова (классов “Силаэдр”: vk.com/silaedr), закончил 5 класс, интересуюсь программированием и техникой. Я хочу рассказать, что я делал этой весной. У меня был парусник, он назывался “Not a Number”(“NaN”). Выходить в море без сигнализации опасно, поэтому я подумал, что ему на мачте не хватает сигнальных огней. А лучше — сигнальных огней, которыми можно управлять удаленно. А лучше — удаленно из любой точки мира! У меня был Raspberry Pi — и тогда я придумал…



Чего мне захотелось (Постановка задачи)


… что можно прикрепить к мачте светодиод, соединить его с Raspberry Pi и запрограммировать так, чтобы из Интернета было возможно отсылать паруснику любое сообщение — и оно переводилось в код Морзе — и диод на мачте мигал в соответствии с этим кодом. И на ту же мачту закрепить фоторезистор — декодер кода Морзе, чтобы другой компьютер в Интернете мог получить переданный код.

Что у меня вышло (Результат)


После двух месяцев проб и ошибок у меня получилось написать программу, которая через MQTT-брокер(http://www.hivemq.com/demos/websocket-client/) позволяет любому человеку в Интернете, знающему Topic — секретный ключ для передачи сообщения клиенту, — отправить абсолютно любое сообщение написанное латиницей — и светодиод на мачте моего промигает его азбукой Морзе!


Вот в целом как это работает: мы пишем сообщение и отправляем его MQTT-серверу, а он в свою очередь отправляет его на Raspberry pi, который переводит его в код Морзе и подмигивает светодиодом в соответствии с кодом.

Вот код на Node.js на гитхабе.

Как мне пришлось помучиться (Инструменты и методы)


Сначала я писал на Python3. Но подключить питон к MQTT у меня не получилось — не нашел нужной документации — и я перешёл на платформу Node.js.

Кроме того, на протяжении суток я пытался сделать дешифратор световых сигналов азбуки Морзе (с помощью фоторезистора) и установить его на ту же мачту того же парусника, но это не вышло, потому что фоторезистор (по крайней мере, тот, что был у меня) не способен различить свет даже от 5 светодиодов (разница напряжений при включенных и выключенных светодиодах была слишком мала).

Полезные советы тем, кто будет делать что-то подобное (Обсуждение).

Пишите сразу на Node.js, если хотите связывать потом код с MQTT. Законнектить Python с MQTT — задача не из легких.

Что сделано человечеством (Литобзор)


Перед тем, как начать, я погуглил, как такое сделать. Все части этого проекта по отдельности в Интернете описаны, всё вместе — не нашел.


Благодарю за ценные замечания и крутые советы моих учителей робототехники и информатики и старшеклассников моей школы!
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 20

    0
    Кроме того, на протяжении суток я пытался сделать дешифратор световых сигналов азбуки Морзе (с помощью фоторезистора) и установить его на ту же мачту того же парусника, но это не вышло, потому что фоторезистор (по крайней мере, тот, что был у меня) не способен различить свет даже от 5 светодиодов (разница напряжений при включенных и выключенных светодиодах была слишком мала).

    Беги, юный друг! Беги от болота аппаратуры! Иначе руки и нос покроются ожогами, ржавыми гвоздями в голове засядут Закон Ома и правила Кирхгофа, старшие будут больно бить по самолюбию и явным недостаткам твоих первых схем, ...


    Лирическое отступление

    В общем — "начал играть в орлянку и покатился" (м/ф "Остров Сокровищ").


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


    А так, принять сигнал — не такая уж тривиальная задача. Учет внешней засветки, диаграмм направленности излучателей и приёмников, скорости срабатывания и многого другого.
    Для начала — надо использовать не фоторезистор, а фотодиод и усилитель

      +3
      Модулированный сигнал много проще выделить и усилить.
      –3
      Буханкатролейбус.jpg, уж извините…
        +5
        Есть нюанс:
        закончил 5 класс


        Проблема в том, что сейчас детей привлекают всякими кружками робототехники и подобным, не сообщая, что вообще-то использованные там технологии требуют образования в области электроники. Поэтому ребёнок собирает обманчиво простые работающие конструкции и уверяется, что всё действительно просто. Вместо этого стоило бы начинать с советских книжек типа Борисова «Юный радиолюбитель» и подобных. Познакомиться с полупроводниками, познакомиться с аналоговой электроникой, потом открыть какое-нибудь «Искусство схемотехники» и перейти от транзисторов к ОУ. Вот только это совсем не 5 и даже не 11 класс (оцените устойчивость схемы с обратной связью?). Вот поэтому-то и получается «потому что фоторезистор (по крайней мере, тот, что был у меня) не способен различить свет даже от 5 светодиодов». Слишком рано браться за такие задачи без соответствующей подготовки. Мигать светодиодом с Raspberry PI тоже несколько странно. ESP8266 для этой цели (с передачей в инет) куда больше подойдёт, но в идеале потребует Си++ для своей IDE (всякие lua и micropython + at-команды не лучший выбор для ESP8266). Только в 5 классе это сделать вряд ли получится самостоятельно.
          +4
          Часто вижу это мнение. Если следовать этому подходу и сейчас, то получится, что как минимум половину времени нам надо уделить на литографию и всё вот это вот… Четно — сам не знаю как лучше. Возможно все подходы рулят, нужно развивать разное
            +1
            Нет, не на литографию. А на схемотехнику. А иначе получается вот такое вот. Автор той статьи, межу прочим, позиционирует себя как «Hardware разработчик». И пишет:
            Точный расчет величины сопротивления резистора является трудным, конечно, существуют специальные формулы, но я предлагаю подобрать резистор опытным путем.

            Каково?
            Полно книжек, даже для детей. Поляков, например, писал «Посвящение в радиоэлектронику» — да прочтите же хоть кто-нибудь, прежде чем лабать схемы на ардуине и распберри с ESP! Но нет, лёгкость вхождения приводит к закономерному результату — зачем понимать, как это работает, если вот он, китайский модуль со всей обвязкой.
              +1
              Разный подход, на самом деле. Если я не получаю хоть какой, но быстрый результат — дело не идёт. Ну и задачи опять же. У меня куча знакомых с ардуинкой решили свои задачи будучи совсем не в теме. Правда глянув на схемы, пробовал немного там за безопасность откомментить — гальваническая развязка, защиты минимальные — да какое там. Уже и сам начал сомневаться, т.к. мои схемы все получаются громозскими из за того что всё питание обычно обмазано LC фильтрами, аналог, цифра разделены, пины хотя бы в диодах и керамике, а AVR иногда просто в розетку включают (не шучу!).
              0
              Нельзя начинать обучение простым вещам на навороченном железе иначе потом эти малины поселятся в фонариках, погодных датчиках, умных кнопках и прочих простых устройствах наплевав на необходимость и потребление.
              Для подобных устройств и задач есть среда Ардуино, платы ардуино нано или ESP8266, к ESP8266 легко подключается Blynk.
              +5

              Так для детей то действительно нужно начинать с того чтобы показать что это просто. Если сразу лезть в дебри, то можно просто отбить желание. Мой поход в радиотехнический кружок где то в 5-6 классе этим и закончился — положили передо мной учебник и сказали что сначала нужно изучить вот это. А мне хотелось что нибудь собрать самому. Если бы с этого начали бы, то потом уже проснулся бы интерес к чему то более сложному и сам бы понял что надо изучать матчасть.
              Это как с программированием. Можно попытаться сначала изучить механизмы импорта, а можно просто сказать, сделай import turtle, а далее по ходу уже углубляться.

                +1
                Однако, обычно люди на этом простом и останавливаются. «Зачем любить? Зачем страдать?» Цель-то достигнута. И остаётся привычка всё так делать всегда.
                  +3
                  Ну и что в этом плохого?
                  Те, кому будет интересно, будет углубляться в тему, но есть еще немало людей, для которых это просто хобби.
                  Я вот недавно чтобы помигать светодиодом (реле) взял платку esp32. Они у меня валяются (зачем то купил 10 штук), на решение задачи ушло ровно 5 минут, включая мою говнопайку. Изделие не серийное и одноразовое. Мог бы конечно не стрелять из пушки по воробьям, съездить за каким нибудь 555, изучить, расвести плату и пр… Но зачем? Это для меня хобби.
                    0
                    В этом плохого то, что человек точно так же начинает решать промышленные задачи (когда они внезапно возникают). Помните, тут был цикл статей про очередной конструктор (с электродами к голове вроде бы) и там был детальный разбор массы нарушений правил безопасности подобной электроники? Так вот, этот тот самый случай.
                      +1

                      Я думаю, что автор статьи еще успеет изучить основы, прежде чем уйти в промышленную электронику :)

                +1
                А вот тут сложная ситуация. У преподавателя четкий KPI — сколько ходит, сколько в процессе сбежало (и перестало платить :) — в случае с платниками или просто удержание аудитории, в случае бесплатного кружка по интересам.

                Сейчас поколение Z и дальше, если у ребенка сразу не получилось, то сбежит дальше. Крайне редкий суперзамотивированный пойдет прогрызаться через аналоговую электронику до расчета и постройки первого мультивибратора. Остальные сбегут раньше, если на первом занятии у них не получится чего-то работающего.

                Когда я вел аналогичные курсы, планировал так, что показываю фундаментальные вещи и тут же их применение. Дал закон Ома, подбираем светодиоду резистор, чтобы не спалить.
                Тепловое действие электрического тока — а давайте к грифелю карандаша батарейку подключим…

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

                  Если это можно взять и использовать, почему нет? Вы же когда машину покупаете, не идете в техникум или универ, где изучаете фундаментальную теорию создания сложных технических устройств? Нет, конечно, вы просто изучаете мануал к автомобилю. Тут так же, для учебных проектов, чтобы зайти в область — нормально. И можно только порадоваться стремлению к инженерному делу. Дальше надо дать конструктивные советы по плану более глубокого изучения этого дела. Чтобы человеку было понятно, куда двигаться дальше. Как раз будет чем заняться до конца школы.

                    +1
                    Если это можно взять и использовать, почему нет? Вы же когда машину покупаете, не идете в техникум или универ, где изучаете фундаментальную теорию создания сложных технических устройств?


                    «Все аналогии ложны». Машину ведь вы не используете в построении на её базе другого устройства. А эти компоненты используете, не понимая их сути, ограничений и возможностей. В результате, рождённое комбинацией этих элементов новое качество оказывается весьма странным, неоптимальным, небезопасным, громоздким и прочее, прочее.

                    Тут так же, для учебных проектов, чтобы зайти в область — нормально.


                    «Царского пути в геометрию нет.» Вы не заходите в область, вы просто соединяете чёрные ящики не понимая происходящих в них процессов со всеми вытекающими. Например, вы берёте китайский модуль источника питания 220 В->5 В. Подключаете к ардуине и модулю усилителя. Провода подключаете, как в уже упомянутой выше мной статье, к голове и записываете сигналы. Но вы не в курсе, что в китайском блоке питания стоит просто резистор и конденсатор и гальванической развязки вовсе нет (что это такое вы тоже не знаете — никто ж не сказал, как надо делать, а вы не изучали). Или вы берёте непонятный для вас фоторезистор и ждёте отклика от него в распберри. Он отклика не даёт. Вы недоумеваете. Почему? А всё дело в том, что вы понятия не имеете, что такое фоторезистор и какими параметрами он обладает.

                    Чтобы человеку было понятно, куда двигаться дальше. Как раз будет чем заняться до конца школы.


                    В данном случае, это просто развлечение. «Приколько, да». Никакого развития от такого применения китайских блоков не будет. Будет просто потребление впечатлений «вау, я от wi-fi управляю не изучав ничего, нихрена не понимая, что там внутри, что такое wi-fi, как работает светодиод и простейший транзисторный ключ, а так же целая ОС в распберри». Почему ругают ардуинщиков? Потому что они применяют свои скетчи, сделанных другими людьми, не понимая как вообще работает их устройство (даже в самых общих чертах). И на этом они и останавливаются. Почему останавливаются? Потому что дальше требуется изучать и развиваться, а до этого момента работает это самое потребление впечатлений (то самое «вау, работает само»). Примерно такую же функцию несли советские наборы радиокубиков и электронных конструкторов. Вы можете собрать схему из альбома, но как это работает вы не поймёте никак. Просто развлечение, не более.
                      0

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


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


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

                        +1
                        Вот, что бы вы посоветовали ему изучить и в каком порядке, каких авторов и какие книги в ближайшие 5 лет?


                        Сейчас рано ещё читать книжки, а если и читать, то только что-то совсем простое и в игровой форме (типа энциклопедии профессора Фортрана, только по электронике). Потому что пятый класс недостаточен от слова совсем для чего-либо, кроме как для соединения готовых блоков. В пятом классе ещё физика в школьном курсе только-только началась (и не с электричества). То есть, курс с упором на развлечение пока что никуда не девается. Но в этом курсе надо обязательно (так как без этого человек начнёт считать, что он постиг дзен :) и начнёт полагаться на свой текущий опыт при построении любых схем без каких-либо сомнений и колебаний — а вот это и приводит к дилетантским решениям и соответствующим статьям) делать акцент на том, что реальная электроника гораздо сложнее, а сейчас они просто играют, и если кто-либо захочет ей заниматься, то следует обратиться к ней года через 3-4 (электричество в физике как раз в 8 классе проходят) и начать хоть с того же Полякова и Борисова. На этом, наверное, всё для школьного уровня (хотя собирать по альбому типовые схемы получится и у школьника). Дальнейшие изыскания доступны, наверное, только с соответствующем институтским образованием (электроника — это где-то аж 3-4 курс университета, хотя ТОЭ это где-то 2 курс).
                0
                Полезные советы тем, кто будет делать что-то подобное (Обсуждение).

                Тут, вероятно, планировалась ссылка и забылась/не вставилась/etc
                  +1
                  А с чем проблема возникла на Питоне? Я использовала библиотеку paho-mqtt, работало без проблем.

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

                  Самое читаемое