Публикации сообщества

Сергей Косаченко • 3 февраля 2019

Первое включение контроллера fischertechnik ROBOBTICS TXT Controller и первая программа

Произведем первое включение контроллера fischertechnik ROBOBTICS TXT Controller (далее TXT). Для этого из набора берем сам контроллер и блок питания (БП) на 9 Вольт и 2,5 Ампера.
На шилдике БП есть такие обозначения:

fischertechnik 
Model: MTX-30-090-2500 
Pri: 230VAC 50Hz 0.4A
Sec: 9VDC 2.5A

В гнездо «9V- IN» на верхней торцевой панели контроллера TXT вставляем разъем от БП, включаем БП в розетку 220 Вольт и нажимаем, удерживая 2 секунды, на TXT кнопку ON/OFF пока кнопка не засветится синим цветом. 
После включения и начала загрузки операционной системы на экране TXT будет виден статусбар, показывающий ход загрузки, затем мы увидим верхнюю статусную строку, в верхней половине экрана «NO PROGRAM», ниже три пункта «File», «Setting», «Test».

Экран контроллера TXT при старте


Экран TXT сенсорный, поэтому нажимая на пункты меню, мы можем в них войти.
«File» - здесь пока пусто, но в будущем здесь будут размещены программы для запуска.

Раздел "Files"


«Settings» - это экран настройки TXT, позволяет выбрать:

  • «Role» - роль контроллера TXT (Master — ведущий, Extension — добавочный),
  • «Language» - язык надписей (русского нет),
  • «Network» - сеть, для настройки BlueTooth соединения (pairing code), и WLAN Setup — для настройки WiFi, как точка доступа или как клиент.
  • «Info» - номера версий контроллера Id, App, Sys. Нажав в верхнем правом углу стрелку вниз, можно прокрутить экран до информации по WiFI (SSID — имя WiFi-точки запущенной на TXT, security key — пароль WiFi) и BT (device name — BT имя устройства контроллера TXT, pairing code — код для подключения устройств (ПК, смартфон и т.д.) к TXT по BT).
  • «Date & time» - прокрутив экран ниже, увидим пункт настройки даты и времени на TXT. На тыльной стороне корпуса TXT есть гнездо для установки батарейки CR2032 3Вольт для питания встроенных часов реального времени. Если вставить батарейку и установить дату и время, то часы на контроллере TXT будут точно работать даже после отключения БП.
раздел "Settings"

«Test» - позволяет проиграть звуки, записанные в память TXT.

Соединение с ПК

После первого включения и осмотра пунктов меню TXT, подключил его кабелем mini-USB к ноутбуку под управлением Linux Ubuntu. На экране ноутбука сразу же всплыло системное сообщение «Проводное соединение 2 Соединение установлено». Так, очень интересно! Уточним в терминале командой ifconfig детали:

eth2      Link encap:Ethernet  HWaddr 00:54:58:54:ff:02 
          inet addr:192.168.7.1  Bcast:192.168.7.3  Mask:255.255.255.252
          inet6 addr: fe80::254:58ff:fe54:ff02/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:57 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:656 (656.0 B)  TX bytes:10105 (10.1 KB)

Во второй строчке видно (выделил жирностью), что ноутбук получил от TXT ip-адрес 192.168.7.1 с маской сети 255.255.255.252. Прямо классическая задачка из ЕГЭ по информатике, из которой мы легко высчитываем, что с такой маской сети может быть всего 4 уникальных хоста, при этом адреса 192.168.7.0 и 192.168.7.3 — это широковещательные адреса (broadcast), следовательно ip-адрес самого контроллера TXT по моим расчетам должен быть — 192.168.7.2. Проверяю это командой ping 192.168.7.2:

$ ping 192.168.7.2
PING 192.168.7.2 (192.168.7.2) 56(84) bytes of data.
64 bytes from 192.168.7.2: icmp_req=1 ttl=64 time=0.549 ms
64 bytes from 192.168.7.2: icmp_req=2 ttl=64 time=0.384 ms
64 bytes from 192.168.7.2: icmp_req=3 ttl=64 time=0.359 ms
64 bytes from 192.168.7.2: icmp_req=4 ttl=64 time=0.400 ms

Пинг проходит, значит, TXT с таким IP-адресом работает!

Чуть позже нашел информацию в интернет, что номера IP-адресов ПК и TXT зависят от типа соединения:
через USB кабель IP-адрес ПК - 192.168.7.1, IP-адрес TXT -  192.168.7.2,
через WiFi IP-адрес ПК - 192.168.8.1, IP-адрес TXT -  192.168.8.2,
через Bluetooth IP-адрес ПК - 192.168.9.1, IP-адрес TXT -  192.168.9.2.

Загрузка файлов с ПК на TXT

Составлять программы для TXT на ПК и потом загружать в TXT можно программой ROBO Pro, идущей в комплекте с набором. Однако, во-первых, это ПО работает только под Windows, а у меня на ноутбуке Linux. Во-вторых, на TXT работает операционная система Linux, поэтому он гарантированно будет работать с Linux на ПК. В-третьих, для преимущества в соревнованиях лучше программировать роботов на текстовых языках, например, C/C++. В-четвертых, правительство РФ приняло план на 2018-2020 по переходу на отечественное ПО, в т.ч. и ОС, а в реестре российского программного обеспечения из ОС присутствуют только дистрибутивы Linux. Поэтому я буду пробовать кросспрограммирование контроллера TXT с Linux-ноутбука.

Сначала пробую подключиться с ПК (ноутбук под Linux) к TXT для удаленного управления по SSH (https://ru.wikipedia.org/wiki/SSH). Воодушевил меня на это пост Григория Зайцева на форуме сайта Пакпак про программирование TXT С-компилятором linaro и загрузки откомпилированной программы в TXT по SSH. В этом же тексте было написано, что при подключении к TXT нужно вводить login ROBOPro и пароль ROBOPro. На ПК в терминале ввожу команду, подтверждаю, что хочу продолжать соединение, ввожу пароль и вижу:

$ ssh ROBOPro@192.168.7.2
The authenticity of host '192.168.7.2 (192.168.7.2)' can't be established.
ECDSA key fingerprint is d0:79:84:13:81:5f:07:62:11:23:33:8e:57:22:fa:45.
Are you sure you want to continue connecting (yes/no)? y
Please type 'yes' or 'no': yes
Warning: Permanently added '192.168.7.2' (ECDSA) to the list of known hosts.
ROBOPro@192.168.7.2's password: 
 _____ _____     _        _   
|  ___|_   _|   | |___  _| |_ 
| |_    | |_____| __\ \/ / __|
|  _|   | |_____| |_ >  <| |_ 
|_|     |_|      \__/_/\_\\__|
                              
Welcome to FT-txt

$ 

Ура! Подключились! В сеансе соединения по SSH можно теперь в терминале на ПК вводить команды — они будут выполняться прямо на контроллере TXT.

Введем команду ls — показать список файлов и папок в текущей папке:
$ ls
ROBOProFiles    SoundFiles      TxtControlMain  run.sh          update.sh

В этом списке видим папки ROBOProFiles (для программ TXT) и SoundFiles (для звуковых файлов), файл  TxtControlMain — это скорее всего главная программа управления контроллером TXT, которая запускается на TXT при запуске, файлы run.sh и update.sh  - полагаю, что это скрипты для запуска и обновления.

Далее я выяснил, что при подключении текущая папка имеет путь /opt/knobloch/ , следовательно файлы программ TXT нужно будет загружать в папку /opt/knobloch/ROBOProFiles/.

Кросскомпилятор Linaro

Попробую написать простую программу HelloWorld.c откомпилировать ее кросскомпилятором linaro, загрузить в TXT и запустить.

Скачал на linux-ноутбук кросскомпилятор Linaro, введя в терминале команду wget:

wget https://releases.linaro.org/components/toolchain/binaries/7.2-2017.11/arm-linux-gnueabihf/gcc-linaro-7.2.1-2017.11-i686_arm-linux-gnueabihf.tar.xz

К слову, по ссылке https://releases.linaro.org/components/toolchain/binaries/7.2-2017.11/a… могут найти для себя версию кросскомпилятора linaro и пользователи Wibdows.

Затем распаковал этот архив. Кросскомпилятор к работе готов. Пробую написать простую программу, сохранив ее в файл hellotxt.c:

 #include <stdio.h>
    int main(int argc, char* argv) {
        printf("Hello TXT\n");
        return 0;
    }

Теперь компилируем ее, войдя в папку, куда распаковали архив с Linaro, и введя в терминале такую команду:

$ ./bin/arm-linux-gnueabihf-gcc hellotxt.c -o hellotxt

В папке появился скомпилированный исполняемый файл hellotxt.
Теперь его нужно скопировать в контроллер TXT в папку /opt/knobloch/ROBOProFiles/ через ssh-соединение командой scp (регистр символов важен) логин ROBOPro и пароль ROBOPro:

$ scp hellotxt ROBOPro@192.168.7.2:/opt/knobloch/ROBOProFiles/
ROBOPro@192.168.7.2's password: 
hellotxt                                   100%   12KB  12.4KB/s   00:00
$

Этот файл теперь даже видно через пункт «File» на экране TXT, правда, запуск этого файла через тачскрин контроллера никакого видимого эффекта не производит, но его можно запустить с ПК через SSH и увидеть текст, который он выводит.

Давайте запустим эту программу через ssh-сеанс, для этого применим команду cd (сменить текущий каталог) и ls (вывести список файлов/папок):

$ cd ROBOProFiles/
$ ls
hellotxt
$ ./hellotxt
Hello TXT
$

 Ура! Надпись «Hello TXT » выводится. Программа работает!

Далее хотелось бы в своих программах на C/C++ задействовать устройства TXT, а именно: экран, тач, динамик, внешние датчики и моторы.

Будем экспериментировать с fischertechnik дальше.

Кол-во комментариев: (2)

Андрей Корягин
Хорошая статья, процесс настройки и подключения чем то схож с подключением raspberry pi, да и со всеми микрокомпьютерами с операционной системой linux, что не может не радовать.
  • Войдите или зарегистрируйтесь, чтобы оставлять комментарии
  • Сергей Косаченко
    Спасибо! Процесс настройки Linux для разных устройств действительно схож, и уже хотя бы поэтому его стоит изучать со школьниками. )))
  • Войдите или зарегистрируйтесь, чтобы оставлять комментарии