Ссылка: HTWIFI
Краткая инструкция:
- файл netconfig_sample.h переименовать в netconfig.h и отредактировать: добавить название сети и пароль
- тем, у кого динамические адреса wifi (таких большинство, я думаю), вместо строки IPAddress selfIp(192, 168, 1, 100); прописать IPAddress selfIp(0, 0, 0, 0);
- в строке IPAddress destIp(192, 168, 2, 5); прописать адрес своего компьютера
- компиляция. Моя среда редактирования - Eclipse с плагином Arduino, но и в обычном Arduino IDE должно компилироваться без проблем
- в Opentrack выбрать протокол "UDP Over Network", порт 5550
Затестил. Ругается на отсутствие файла "networking.h". Я так понял это файл со всеми заголовками "networking.cpp" - так что попробую сам написать его.
ОтветитьУдалитьКстати, а есть возможность заставить скетч работать без WiFi? По USB.
Удалитьсм. п.1
Удалитьпо USB - #ok в терминале
УдалитьНе. Не "netconfig", a "networking"
УдалитьДействительно пропущен. Добавил в репозиторий
УдалитьТеперь все ок. Прошился, к WiFi подключился. Но на выводе "#YPR=nan,nan,nan". Датчик вроде живой, с простым, проверочным скриптом работает.
УдалитьСейчас нечем протестировать, GY-85 испортился. Правда, и в таком виде, выдавал цифры, не nan
УдалитьСтранно, заметил, что после подключения в WiFi одна строка с цифрами, а за ней все NaN.
ОтветитьУдалить"Starting output stream
#YPR=-133.36,33.51,0.49
#YPR=nan,nan,nan"
возможно, прошивка не видит плату. надо попробовать какой-нибудь i2cscan, убедиться, что разъемы для I2C правильно указаны
УдалитьДа вроде все правильно. Скан дает те же адреса, только в другом порядке, но он не пишет, что за устройство. Менял адреса местами - без изменений. Попробовал поменять порты SDA and SCL в настройках или поменять Wire.begin(PIN_SDA, PIN_SCL); на Wire.begin();. Все равно на выводе первая строка с цифрами, остальные NaN.
Удалитьi2cscan должен находить как минимум 3 адреса - акселерометр, гироскоп и магнитометр. Если находит, то нужно убедиться, что порты в i2scan и в программе трекера совпадают
УдалитьСкан находит 3 адреса, все верные, но какой чей - не понятно. Простым скриптом я снял данные с гироскопа, и с адресами разобрался (некоторые в даташитах указаны). Вот насчет пинов не уверен. В скетче указаны SDA - 14, SCL - 12. Но вроде же должны быть 4 и 5. Во всяком случае с любыми (в том числе и вообще без указания пинов) ничего не работает.
УдалитьПины могут быть разные. Нужно указывать те, с которыми нашлись датчики
УдалитьПодключил к пинам 14 и 12. Скан все находит, прошиваю с этими же пинами скетч - на выводе NaN. I2C Адреса верные. :(
УдалитьЕсли ресет на плате нажать, данные те же идут? Меняется ли что-либо, если сенсор отключить?
УдалитьМне сейчас нечем проверить - сгорел то ли сенсор, то ли WeMos (или оба), придется новые заказывать.
При нажатии reset или отключении датчика ничего не меняется. Подключение происходит, на вывод nan.
УдалитьНедели через три если получу новое железо, смогу заняться. Сейчас могу только посоветовать попробовать как-нибудь тестовый скетч, чтобы убедиться, что данные с датчиков действительно приходят.
УдалитьВроде бы все правильно соединил, в мониторе серийного порта видны данные, пишет, что к сети подключился успешно. Номер порта проверял и в прошивке и в OpenTrack. Тем не менее ОТ данных не принимает (ошибок не показывает, но все по нулям). Что может быть проблемой?
ОтветитьУдалитьВ репозиторий добавил утилиту readsocket.py
УдалитьНадо поменять в ней адрес на свой и запустить. При работающем трекере должны начать приходить данные. Если приходят, то что-то с опентреком.
Спасибо (только скобки после print два раза забыты).
ОтветитьУдалитьНе видит данных. Видимо, что-то в прошивке я напутал. Странно, потому что монитор серийного порта все равно показывает данные.
Надо смотреть, действительно ли трекер подсоединяется к сети, может, пингануть его. Ещё брандмауэры (firewalls) всякие могут мешать, либо антивирусы.
УдалитьУ меня без скобок всё работает.
Есть в прошивке такие строчки (output.cpp):
Удалить//int output_mode = OUTPUT__MODE_UDP;
int output_mode = OUTPUT__MODE_ANGLES;
int output_format = OUTPUT__FORMAT_TEXT;
точно не надо ничего раскомментить/закомментить?
Попробуйте включить UDP и выключить TEXT. Хуже не будет, я думаю
УдалитьА во такой вариант подойдёт? https://ru.aliexpress.com/item/WeMos-D1-Esp-Wroom-02-Motherboard-ESP8266-Mini-WiFi-Nodemcu-Module-18650-Battery/32821749383.html?src=google&albslr=201164481&isdl=y&aff_short_key=UneMJZVf&source=%7Bifdyn:dyn%7D%7Bifpla:pla%7D%7Bifdbm:DBM&albch=DID%7D&src=google&albch=shopping&acnt=494-037-6276&isdl=y&albcp=657872107&albag=38867178172&slnk=&trgt=61865531738&plac=&crea=ru32821749383&netw=g&device=c&mtctp=&gclid=CjwKCAiAx57RBRBkEiwA8yZdUIomlmaU2CjVvpOCs6CATDnt_JejWtxQHLZTUpsYSuTwbFZ_87EfORoCC8AQAvD_BwE
ОтветитьУдалитьТут вроде как и сразу под акб бокс есть... весьма удобно
Если только научились в него из Arduino IDE заливать. Насколько я помню, не работало оно с ардуиновским софтом.
УдалитьСобрал на Wemos d1, скетч рабочий, но есть нюансы.
ОтветитьУдалить1. В файле settings.h нужно корректно указать пины:
В моем случае были:
PIN_SDA 04
PIN_SCL 05
воткнул согласно даташиту, если не сработает, то i2cscan в помощь.
2. Чтобы данные отправлялись по сети, нужно закоментить строку:
int output_mode = OUTPUT__MODE_ANGLES
и раскоментить:
int output_mode = OUTPUT__MODE_UDP
3. У меня не заработало со статическим ipником, только с динамическим, но это может быть косяк моего роутера.
Автору большое спасибо за скетч и идею. =)
по п.3 - в большинстве роутеров включено автоматическое выделение адреса, так что это не косяк.
Удалитьне могу с 6050 (GY521) запустить, датчик вродебы и считывает, но показания в монитор выводит нулевые:
ОтветитьУдалитьIP Address: 192.168.1.125
Connected to wifi
Reading EEPROM
Starting output stream
#A-C=0.00,0.00,0.00
#M-C=inf,inf,ovf
#G-C=0.00,0.00,0.00
#define SENSOR_DEVICE MPU6050 в settings прописал.
магнитометра на датчике нету.
подскажите что не так у меня, может подправить что надо.
Для 6050 не реализовано пока.
Удалитьа какие датчики сейчас поддерживаются?
Удалитьи когда планируется поддержка 6050, 9250 ?
Сейчас только GY-85. 6050 займусь, когда соберусь возвращаться к полетам, ближе к лету, скорее всего. Для 9150/9250 вряд ли буду сам делать, т.к. преимуществ не вижу. Магнитометр у них хуже, чем HMC5830L, общая точность акселерометра и гироскопа вроде бы такая же. А стоят дороже.
Удалитьа что за чип такой HMC5830L ? даже гугл такого не знает.
УдалитьGY-85 сейчас на али стоит 500руб. MPU-9250 9-Axis Attitude +Gyro+Accelerator+Magnetometer тамже 185руб. Если делать на MPU-6050 то это надо брать GY-521 и GY-271 60p + 140p соответственно, да еще и колхозить две платы. Так что MPU-9250 самый дешевый, удобный и выгодный по функционалу.
Неправильно написал - HMC5883L
УдалитьК MPU9250 давно не приценивался, когда брал себе на пробу, они стоили раза в 3 дороже, чем сейчас. За 200р конечно же выгоднее 9250. И при должном программировании, точнее.
купил датчик GY-85, подключил, нет данных с магнитометра. Стал разбираться, выяснил что на новых модулях ставят не HMC5883L, а QMC5883L, у него другая структура регистров. С регистрами разобрался, данные с магнитометра снимаются:
ОтветитьУдалить#A-C=138.41,11.53,190.84
#M-C=inf,inf,ovf это обработанные
#G-C=4.00,-4.00,2.00
241.00 253.00 251.00 Это сырые данные с магнитометра
#A-C=138.41,11.53,190.84
#M-C=inf,inf,ovf
#G-C=4.00,-4.00,2.00
241.00 253.00 251.00
но дальше идет обработка, а так как я не програмер разобраться самому сложно. Может кто подскажет как поправить скетч?
В секции sensors.cpp
// MSB byte first, then LSB; Y and Z reversed: X, Z, Y
int16_t x,y,z;
x = (int16_t) buff[4] << 8; x |= buff[5];
y = (int16_t) buff[0] << 8; y |= buff[1];
z = (int16_t) buff[2] << 8; z |= buff[3];
данные должны идти так: LSB,MSB порядок X,Y,Z
ну и возможно еще где то подправить надо.
Вот я нашел библиотеку для QMC:
Удалитьhttps://github.com/dthain/QMC5883L
лучше бы конечно разнести все модули по отдельным файлам. У меня сейчас времени нет, к сожалению
https://github.com/luckypm/commn-informations/blob/master/%E5%9C%B0%E7%A3%81%E6%96%87%E6%A1%A3/%E8%88%AA%E7%BA%AC5983%E6%9B%BF%E4%BB%A3%E6%96%99%E8%B5%84%E6%96%99/QMC5883L%20Datasheet%201.0%20.pdf здесь даташит на QMC5883
ОтветитьУдалитьЭтот комментарий был удален автором.
ОтветитьУдалитьЭтот комментарий был удален автором.
ОтветитьУдалитьОбновился Razor AHRS, добавили новых датчиков, улучшили синхронизацию и много чего еще.
ОтветитьУдалитьhttps://sites.google.com/site/diyheadtracking/home/razor-ahrs-20180306
Нет желания пересобрать проект на новой сборке?
На ардуине уже не буду трекер делать, это точно.
УдалитьESP8266, RTL8710 или STM32
вообще я имел в виду ESP8266. Ваш проект ведь создан на базе razor ahrs, только старой версии. Имелось ввиду взять новую версию ahrs, поправить типы переменных под ESP и добавить модули вифи из данного проекта.
УдалитьНовый код не видел, поэтому не могу сказать пока что, буду ли на нем продолжать. Старая кодовая база мне не очень нравилась, использовал в основном из-за возможности калибровки.
УдалитьЭтот комментарий был удален автором.
ОтветитьУдалитьПару бы часов к суткам...
УдалитьЭтот комментарий был удален автором.
ОтветитьУдалитьГоспода, свершилось! я смог это сделать... Но не могу справиться с магнитометром.. данные не идут
ОтветитьУдалить#A-C=-263.19,10.49,-59.77
#M-C=0.00,0.00,0.00
#G-C=33.00,-34.00,1.00
подскажите пожалуйста, где что сунуть и где что переписать? нехочется останавливаться на достигнутом, надо до ума довести
Какой датчик магнитометра?
УдалитьКогда на Али покупал, в описании было написано HMC5883L
Удалитьна нём самом написано "L883 2535" существуют какие-то варианты узнать наверняка?
Вариант такой: загрузить i2cScan и посмотреть, совпадают ли адреса с адресами 5883. Если нет, то ищем по адресам марку
Удалитьэто QMC5883, правленая библиотека для него лежит в репозитории Razor AHRS, ссылку я давал выше.
Удалитьне сочтите за кретина, что с ней делать?! Я понимаю что надо в корень положить, но надо что-то прописать =) или нет?
Удалитьtu4kin от вас ссылка только на даташит по QMC5883
УдалитьЭтот комментарий был удален автором.
ОтветитьУдалитьhttps://sites.google.com/site/diyheadtracking/home/diy_ahrs_razor_20170701/download
ОтветитьУдалитьв корень ее ложить бесполезно, в ней описаны значения для обращения к регистрам QMC, использовать в качестве примера, а править надо секцию sensors.cpp (возможно еще чтото), у меня не получилось до ума довести, а автору некогда.
Я себе нашел другой проект на базе esp8266 на модуле 12 версии с 4м памяти (lolin или wemos) с датчиками 6050 или 9150, с веб интерфейсом, все настройки по ОТА, очень удобно что прошивка не привязана к настройкам сети.
ну вот и славно... теперь я спокоен =) буду дальше на ардуино сидеть =) авось на вартандер хватает =)
Удалитьна ардуине razor? или чтото другое? я сейчас жду SPP Bluetooth модуль, прикручу его к новой версии razora и буду сравнивать с вышеописанным трекером на ESP. Так что если интересно велком в личку.
Удалитьвыяснил что у меня точно HMC5883L I2Cscan ловит пакеты в таком виде
ОтветитьУдалить0x1E)
0x53)
0x68)
По идее всё так, как должно быть... что этой собаке надо??!!
Нашел в скетче строку с дополнительными сведениями на магнитометр.
ОтветитьУдалитьСведенияф были закоменчены. Раскоментил - получил следующее
#A-C=259.00,-3.15,-41.94
#M-C=0.00,0.00,0.00
#G-C=32.00,-36.00,0.00
-666.00 1174.00 -11.00
Стало ясно что не в тот адрес данные падают. Копаюсь, ищу что дальше делать.
P.S. - понимаю что никто не поможет, отчитываюсь для будующих конструкторов
ну да, это сырые данные с магнитометра, если они изменяются когда крутишь датчик то он подключен и работает нормально. до этого момента я тоже дошел, дальше засада, начинается арифметика усреднения, сравнения с опорными значениями (ofset), смешивания с данными Акселя и гиро и в итоге выходные значения магнитометра уходят в переполнение (overflow), здесь мозг закипел и я бросил.
УдалитьЖдем с нетерпением результатов твоих изысканий!
да я уже начинаю думать о том чтобы связаться с Разором, заплатить ему - чтобы он доделал, ибо третий день до 3-х ночи сижу - и всё безрезультатно
ОтветитьУдалитьЧёрт возьми, Автор! Ну давай мы скинемся, тебе заплатим, ну помоги... Уже желание есть две фазы на вимос подать, может заработает?!
ОтветитьУдалитьДрузья,
Удалитья смогу выделить время на трекер после 12го июня. Очень хотелось бы к этому времени четко сформулированный список хотелок, отсортированный по степени важности.
Ну. Коли все молчат, я начну.
УдалитьДоработать интеграцию под все платы Wemos (чтобы всё работало)
Реализовать возможность калибровки (хоть как нибудь)
Добавить возможность установки других датчиков (необязательно, ИМХО GY-85 - лучшее решение)
И последнее, самое важное, но, я полагаю, самое сложное - реализовать смещение.
я уже говорил выше, но могу повторить, все описанные вами хотелки уже реализованы в Razor AHRS новой сборки, и большое количество датчиков и программа для калибровки и много других плюшек: https://sites.google.com/site/diyheadtracking/home/razor-ahrs-20180306
Удалитьтак как данный проект реализован на какойто ранней сборке Razor AHRS, самое простое решение (для автора) было бы добавить свой сетевой модуль в новую версию RAZOR AHRS и поменять переменные под стандарт ESP1866, а в идеале и под ESP32. Это займет минимальное количество времени и удовлетворит всех. Если же у автора есть желание пилить все с нуля, то видимо следует обратить внимание опять же на проект RAZORa? ну и вот еще очень неплохой проект со своими очевидными плюсами: https://github.com/scrodev/HeadTracker
Разор, это ардуино. Ардуино - это дно! Нормальные пацацы пишут на ЕСП, а вообще молодчики на СТМ. Я не нашел ни одного проэкта на есп или стм (окромя этого) где была бы реализована "нормальная" безпроводная составляющая (ибо блютуз это тоже дно) а здесь это работает! и работает превосходно! Нужно только доделать!
ОтветитьУдалитьчукча видимо не читатель, чукча видимо пейсатель!
Удалитьхорошо, открой код из первого поста и читай первые 10 строк до полного просветления.
Чукча не читатель, но чукча нашел проблему!
ОтветитьУдалитьчукча просто молодец! :)
Удалитьсерьезно, за проделанную работу - респект!
На самом деле респект не мне, а товарищу по имени GO63 (форум тундры), который помог мне в определении проблемы.
УдалитьКороче, всё оказалось очень просто... Скетч прошит с калибровкой - которая должна записываться в епромку! Но так как в епромке ничего нет, то функция производит умножение на ноль! А если умножать на ноль, то, сук, получается ноль!!! Короче говоря во вкладке Sensors.cpp 358-ю и во вкладке HTWIFI 238-ю строку надо вместо ТРУ написать неТРУ!
ОтветитьУдалитьЭтот комментарий был удален автором.
УдалитьЭтот комментарий был удален автором.
ОтветитьУдалитьнашел ошибку
ОтветитьУдалитьhttp://prntscr.com/jufv5s
Разобрался с епромом.
ОтветитьУдалитьНа примере единичной матрицы.
В мониторе порта ввести:
#cp [Отправить]
Поток остановится.
и дальше вводить по одному числу:
0 [Отправить]
0 [Отправить]
0 [Отправить]
Это ввели magn_ellipsoid_center
Дальше еще 9 чисел magn_ellipsoid_transform:
1.0 [Отправить]
0 [Отправить]
0 [Отправить]
0 [Отправить]
1.0 [Отправить]
0 [Отправить]
0 [Отправить]
0 [Отправить]
1.0 [Отправить]
Здесь поток опять потечет.
Дальше нужно сохранить в еепром:
#cs
Проверить обычно:
#o0#cd
Запустить поток
#o1
И да. процессинг подвязывется нормально, то есть можно без проблем снять данные. И после того как вобъёте их в епром - можно смело ставить взад ТРУ и всё будет работать.
ОтветитьУдалитьВсё. вчерашней ночи мне хватило за глаза чтобы понять что проэкт сырой... Автор - в каком положении должен находиться датчик? Такого положения просто не существует. Оси гироскопа не паралельны осям магнитометра. какое положение я только не подбирал, перепробовал все комбинации с формулами плюсами и минусами по всем осям. Проэкт хорош. но мне не хватило сил, я многого достиг в нём, но это уже перебор =) Дальше сами.
ОтветитьУдалитьДрузья. Любезно предлагаю Вам к скачиванию абсолютно рабочий скетч автора. За что ему большое спасибо ибо идея действительно отличная! А так же большое спасибо "GO63" (форум Вартандер) за доработку и правку. (Ну, и меня тоже можно похвалить, авось не в носу ковырялся)
ОтветитьУдалитьhttps://drive.google.com/file/d/11QbLHhc2V6BIcB0POLlZuuUJb-cNymVa/view?usp=sharing
В архиве найдте текстовый документ со скриптом для Auto Hot Key (не стал особо заморачиваться, авось и так работает) в котором Вам нужно будет указать данные улучшенной калибровки магнитометра и запилить их в Епром. (Калибровка и улучшенная калибровка обязательны) После того как Вы запишите их в блокнот, меняете расширение на ahk, запускаете и наведя курсор в мониторе порта на область печати жмаете кнопку <> как только данные впишутся и пойдёт поток данных - жмёте <> Всё, данные в епроме.
Как пользоваться Auto Hot Key говорить не буду, на ютюбе толпа школьников расскажет.
Жмёте кнопку хоум, а потом енд.
ОтветитьУдалитьПерезалил
ОтветитьУдалитьhttps://drive.google.com/file/d/1jhHRUodwMghRs0Aib-BuZI2eX1glUE_p/view?usp=sharing