Спидометр, тахометр, одометр для любой техники (с GPS модулем).

progrik
Offline
Зарегистрирован: 30.12.2018

v258 пишет:
Перебирать всю EEPROM при старте? А что, кузяво )))...
но не нужно скакать по всей памяти и вычислять, где что лежит ;)
ой, да, и подмигивает, такой)) целый килобайт прочитать, да? нифигасебе...
ну, на время загрузки можно отключать функцию майнинга криптовалюты, чтоб быстрее отработало...
это же целые строки четыре кода и _меньше_ миллисекунды...

какие-то данные: Чтение одного байта занимает ~0.4 мкс (микросекунды)

1000*0,4 = 400 _микро_секунд...
из за 400 микросекунд один раз при включении ты готов писать кучу ненужного кода и нерационально использовать память...
может и ножками не дергать, чтоб целее были? ты свои ардуино в морозилке держишь?))))
ну ты и жадный...)))

да уж. в лифт, сконструированный тобой я не сяду)))

Vladikas
Offline
Зарегистрирован: 25.07.2013

Сейчас появились десятигерцовые GPS приёмники. Я бы на таком собирал, если бы надо было сейчас такое устройство.

b707
Offline
Зарегистрирован: 26.05.2017

прогрик, опять ты шумишь:)

Тут было высказано правильное решение проблемы - переходить на FRAM. стоит копейки. число записей практически неограничено.

И чего спорить про хитрые методы сохранения ЕЕПРОМ, когда есть метод лучше? :)

Prony
Offline
Зарегистрирован: 12.01.2021

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

Может кто-то имел опыт работы с блютус модулем НС05? В сети много информации по нему и максимально развернутой, но никак не могу организовать автоматическое подключение модуля к телефону ((.  Чтобы телефон и НС05 работали в связке, как телефон и блютус автомобиля (при нахождении в зоне действия происходит подключения без участия пользователя).

Если сможете чем-то помочь буду весьма признателен.

serhiy58
Offline
Зарегистрирован: 19.06.2019

b707 пишет:

переходить на FRAM. стоит копейки

Интересня мысль, а такая пойдет? 

b707
Offline
Зарегистрирован: 26.05.2017

serhiy58 пишет:

Интересня мысль, а такая пойдет? 

Вполне

Vladikas
Offline
Зарегистрирован: 25.07.2013

Prony пишет:

...Хочу с позволения автора продолжить данный проект и дополнить его функционалом.

Ребята, я для этого и выложил на форум. Делайте конечно что хотите. Если какие-то места в коде вызывает вопросы, то отвечу.

Green
Offline
Зарегистрирован: 01.10.2015

b707 пишет:

... переходить на FRAM. стоит копейки. число записей практически неограничено.

И чего спорить про хитрые методы сохранения ЕЕПРОМ, когда есть метод лучше? :)


Я бы побитно писал метры в еепром. Тогда одна перезапись на 8 км. 800 000 км вряд ли кто наездит.)

b707
Offline
Зарегистрирован: 26.05.2017

Какая разница, побитно или нет? Все равно байт целиком переписывается, или я не прав?

Green
Offline
Зарегистрирован: 01.10.2015

Ну, смотря как писать. Т.е., пишешь через WO - 1 в 0, а затем, когда весь буфер записан, стираешь через EO.

  Table 7-1. EEPROM Mode Bits
  EEPM1 EEPM0 Programming Time  Operation
    0     0         3.4 ms      Erase and Write in one operation (Atomic Operation)
    0     1         1.8 ms      Erase Only
    1     0         1.8 ms      Write Only
    1     1           –         Reserved for future use
andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

b707 пишет:
Какая разница, побитно или нет? Все равно байт целиком переписывается, или я не прав?
Целиком переписывается вся страница.

progrik
Offline
Зарегистрирован: 30.12.2018

andriano пишет:
Целиком переписывается вся страница.
есть один тест...
для ленивых и людей с плохим зрением - тестируются первые 8 байт EEPROM, с 0 по 7 - это 2 страницы. байты проверяются последовательно - пишется и проверяется одна ячейка до первого сбоя, потом следующая...
теперь по ссылке можно посмотреть картинки...)
https://chipenable.ru/index.php/programming-avr/174-test-eeprom-pamyati-...

если при записи одного байта насилуются все 4, то как каждый последующий тестируемый байт на странице выдерживает сумму нагрузок и от всех предыдущих ячеек? 3+3+6+4 = 16 млн записей? и на второй странице все тоже ровно, 14 млн...

есть объяснение?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

progrik пишет:

есть объяснение?

Объяснение чего?

Почему во вторую ячейку автору удалось сделать 6 млн записей, тогда как в нулевую - только 3 млн?

progrik
Offline
Зарегистрирован: 30.12.2018

andriano пишет:
Почему во вторую ячейку автору удалось сделать 6 млн записей, тогда как в нулевую - только 3 млн?
я Это не спрашивал.
а ты точно читаешь перед ответом?

я вот что написал ПРЯМО ОТДЕЛЬНЫМ АБЗАЦЕМ: если при записи одного байта насилуются все 4, то как каждый последующий тестируемый байт на странице выдерживает сумму нагрузок и от всех предыдущих ячеек? 3+3+6+4 = 16 млн записей? и на второй странице все тоже ровно, 14 млн...

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

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

progrik, Вы внимательно читали статью, на которую ссылаетесь?

Вас не насторожило, что при

Цитата:
 даже после появления сбоев, EEPROM памятью еще можно пользоваться. Некоторое время ошибки возникают достаточно редко 

автор использует методику

Цитата:

до появления первой ошибки

?

Так что ответ на Ваш вопрос из сообщения №2 может быть лишь таким: Бессмысленно пытаться найти объяснение результатам некорректно поставленного эксперимента.

Ну и просто совет на будущее: не следует верить всему, что написано.

progrik
Offline
Зарегистрирован: 30.12.2018

andriano пишет:
Вы внимательно читали статью, на которую ссылаетесь?
а что не так с экспериментом?
чел потестил 8 байт до первой ошибки каждого из байт.
потом потестил отдельно взятый байт до 50к ошибок.
раз ты такой умный, будь любезен, изложи внятно и понятно свое видение процесса и объясни, где ты видишь ошибку. пространные шизофазические намеки на кривость эксперимента я не понимаю.

Green
Offline
Зарегистрирован: 01.10.2015

К чему этот наезд? Эксперимент показывает что всё что заявлено в ДШ подтверждается, даже с большим запасом. Какие могут быть претензии? А почему именно так, думаю, нужно спрашивать у представителей Атмел/Микрочип.

progrik
Offline
Зарегистрирован: 30.12.2018

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

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

надо провести этот-же тест, но с хитро заполненными соседними ячейками... 255, f0 и 0f, потом так-же хитро проверить - можно будет установить, даже если ресурс имеют отдельные биты, а не байты, и тем более страницы...

ЗЫ: andriano, пожалуйста, перестань мне давать свои никчемные советы. это выглядит как если пьющему воду человеку на серьезных щах заявить "мой тебе совет на будущее: захочешь воды - попей". ну это трындец.
меня это просто бесит. ты никто, зовут тебя никак. или по делу, или молчим, договорились? это единственный вариант не вызвать у меня мгновенное желание стрельнуть тебе в голову)))

sadman41
Offline
Зарегистрирован: 19.10.2016

Я тоже не понимаю - ради чего тут срач устраивать. Atmel обещал "Write/erase cycles: 10,000 flash/100,000 EEPROM" - Atmel сделал. А реальных 3, 6, 9000 млн циклов - может обуславливаться чем угодно. Литографией, взаимным расположением ячеек в массиве, браком конкретного экземпляра, партии, особенностью данной ревизии. Может просто китаец носок грязный уронил в бак с раствором памяти. Или нулевую ячейку памяти долбят на заводе для теста. Для точного ответа необходима конструкторская документация, точное знание произошедших техпроцессов и ещё тысяч нюансов помельче. 

Простым пенетрейшен-тестом наврядли представляется возможным выявить достоверные причины.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

progrik пишет:

andriano пишет:
Вы внимательно читали статью, на которую ссылаетесь?
а что не так с экспериментом?
чел потестил 8 байт до первой ошибки каждого из байт.
потом потестил отдельно взятый байт до 50к ошибок.
И что? какие из этого следуют выводы?

В том то и дело, что, кроме подтверждения ресурса, декларируемого производителем, эти "эксперименты" ничего не доказывают.

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

Такого не бывает.

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

Разница между скрипачом и экспериментатором лишь в том, что фальшь скрипача способен услышать и неквалифицированный слушатель, а вот с экспериментатором это, увы, не так. Поэтому и изобилует Интернет просто массой статей об "экспериментах", без сожаления на которые смотреть нельзя.

progrik
Offline
Зарегистрирован: 30.12.2018

andriano  я понимаю, что тяжело жить с грузом знаний, когда вокруг все тупят.
но на форуме люди делятся мыслями и знаниями.
а не как ты: "это вода. это пшеница. поэтому и хлеб такой подгоревший"...
ну, молодец. сразу видно, что ты не снизойдешь до простого объяснения происходящего в опыте, дабы не ослепить своими непререкаемыми полными и абсолютными знаниями простолюдинов. но при этом не забываешь общаться сверху вниз, хотя совсем не факт, что у тебя не очередная проблема. видел, летал...

ладно, все как я и ожидал, бла бла бла...

ЗЫ: перестань мене выкать. я не собираюсь, и тебе не надо.

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

progrik пишет:

Вопщем, я понял, твой понос надо чистить весь.  Не трудись сюда писать больше. 

progrik
Offline
Зарегистрирован: 30.12.2018

да да да. не забудь забанить.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

progrik пишет:

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

Я встряну в ваш диспут? Мне собсно - пох..р, согласен ты или нет ;))

1. На разных форумах - по разному. Ты тут хоть и давно мелькаешь, но делаешь ту же  ошибку, что и новички. У нас хоббийный форум, просто для общения по интересам. Нет рекламы, нет рейтинга, нет кармы. Интересен ты - с тобой будут общаться, нет - на нет и суда нет. ;)) Ты движешься к "нет", если что.

2. На форуме, даже на хоббийном, не все равны. Просто по уровню знаний о предмете. Не надо спорить со мной о математике, с ЕвгениемП о программировании, с ВН об электронике ... ну и так далее. Твои знания, и знания Андриано - даже по порядку величины не сопоставимы. Если Андриано сказал тебе, что эксперимент фуфло и выводы из него делать не стоит, то так и есть. Можешь вежливо поинтересоваться - "Почему так?". Твое желание понять почему у одного мудака что-там получилось - инфантильная "пытливость ума". Ну как ножки у паука-сенокосца отрывать. ;))

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

progrik пишет:

да да да. не забудь забанить.

Ты просишь? Этого не трудно добиться "токсичными" - как теперь модно говорить, постами. Только преследуемая тобой цель не ясна.

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

progrik
Offline
Зарегистрирован: 30.12.2018

wdrakula пишет:
Если Андриано сказал тебе, что эксперимент фуфло и выводы из него делать не стоит, то так и есть..... как ножки у паука-сенокосца отрывать. ;))
ножки я дергал. вон, благодаря вырванным ножкам теперь и андриано знает, что компилятор не будет приводить операнды правой части в byte=byte+byte к int, не смотря на 47-ю страницу стандарта языка Си...
внемли: я дал андриано новые знания)) а не наоборот))

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

для себя я второй раз уяснил, уже на 104%, с андриано более ни слова... проехали...

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

progrik пишет:

внемли: я дал андриано новые знания)) а не наоборот))

Самонадеянное заявление.

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

И еще: Ваше сегодняшнее заявление тоже дало мне некоторые новые знания. Но, увы, в той же области, что и раньше.

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

progrik
Offline
Зарегистрирован: 30.12.2018

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

Lucky Guy
Offline
Зарегистрирован: 20.04.2021

Всем привет! Нужна помощь! При компиляции останавливается на этой строке-#define smallfont SystemRus5x7    Что не так делаю?

Vladikas
Offline
Зарегистрирован: 25.07.2013

Какая именно ошибка. Библиотеку SSD1306Ascii использовал из архива или устанавливал из IDE?

Lucky Guy
Offline
Зарегистрирован: 20.04.2021

Спасибо за помощь! Библиотеку(SSD1306Ascii) вроде заменил на ту что из архива...Не особо силен в программировании. Как здесь вставить фото? 

Vladikas
Offline
Зарегистрирован: 25.07.2013

Залить на http://ipic.su/ и сюда ссылку.

Lucky Guy
Offline
Зарегистрирован: 20.04.2021
Vladikas
Offline
Зарегистрирован: 25.07.2013

Не видит библиотеку. В папке мои документы, вроде, по-умолчанию есть папка ардуино с библиотеками. Надо туда кинуть папку SSD1306Ascii.

Lucky Guy
Offline
Зарегистрирован: 20.04.2021

Спасибо!!!! Все получилось! Я менял библиотеку в папке где программа установлена.... Мне тахометр на дизель нужен.Можно изменить предел до 3000 об.мин.?

Vladikas
Offline
Зарегистрирован: 25.07.2013

Предел там 10к вроде по цифрам. Или имеется ввиду нижняя полоска?

У меня есть отдельно тахометр, если надо. При включении ничего переключать не нужно.

Lucky Guy
Offline
Зарегистрирован: 20.04.2021

Мне нужны максимальные показания полоски тахометра 3000об.мин. Где можно посмотреть Ваш тахометр , тот что отдельный?

Vladikas
Offline
Зарегистрирован: 25.07.2013
bar = map(constrain(RPM,0,10000), 0, 10000, minCol, maxCol);//вычислить длину полоски тахометра

10000 поменять на 3000, это 993 строка.

Отдельный тахометр я не выкладывал. Вот ссылка https://disk.yandex.ru/d/qw0BGd2yaYprEw

 

Lucky Guy
Offline
Зарегистрирован: 20.04.2021

А 64 я строка-static const uint16_t GPSBaud = 57600;//скорость GPS, это прием данных с GPS? Я правильно понял? У меня модуль 10ти герцовый, но 10 герц не работает со спидометром. Для 10ти герц нужна скорость 115200, но все что получилось это 8герц обновление и скорость 57600. В скетче меняю( в модуле GPS тоже) скорость на 115200 и все глухо...Хотя разницы при езде 1 и 8гц-не заметил.Не сохраняет пробег, наверное из за маленькой емкости в 1000мкф .Попробую увеличить как по схеме-3300мкф.

Vladikas
Offline
Зарегистрирован: 25.07.2013

Lucky Guy пишет:

это прием данных с GPS?

Да. У меня вообще 9600, поэтому проверить на более скоростном не могу... Строчка 32 закомментирована?

//#define SOFT_UART

 

 

А разницы и не будет, скорость на экране обновляется раз в секунду. Можно попробовать сделать так.

432 строчка    speedScreen(cycle1s||buttonFlag);

заменить на speedScreen(cycle100ms||buttonFlag);

или speedScreen(cycle500ms||buttonFlag);

Если я правильно помню, то экран будет в режиме спидометра обновляться чаще.

 

Lucky Guy
Offline
Зарегистрирован: 20.04.2021

Чаще обновление не нужно! Поигрался и оставил как есть , иначе спидометр начинает мельтешить как тахометр.Но одометры не сохраняются. Что не так?

Vladikas
Offline
Зарегистрирован: 25.07.2013

Надо подумать как отследить проблему. Скорее всего что-то не так со схемой отслеживания отключения питания.

Lucky Guy
Offline
Зарегистрирован: 20.04.2021

Скажите, что изменить в скетче для дисплея 0.96?

Vladikas
Offline
Зарегистрирован: 25.07.2013

Это ничего не значит. Нужно правильно инициализировать контроллер экрана и всё.

Snowhorg
Offline
Зарегистрирован: 03.02.2022

Доброе время суток
я понимаю тема старая, но у меня вопрос к автору или к тому кто поможет
Собираю gps спидометр, одометр, всё сделал, всё показывает, координаты, скорость, время, даже температуру воздуха...
Но вот ни как не могу понять, как рассчитывать пройденное расстояние с момента включения, воть хоть убей не понимаю формулу в скетче, киньте кто нибудь ссылку на нормальную формулу расчёта расстояния, или на пальцах объясните что к чему складывать и что из чего вычитать, как это потом складывать я сам разберусь 

Vladikas
Offline
Зарегистрирован: 25.07.2013

	if(gps.location.isValid() && lastlat!=0 && lastlng!=0 && speedTrue){
		//если координаты вычислены, то вычислить расстояние от предыдущей точки, если ТС движется выше мин. скорости
		//и приплюсовать к одометру
		unsigned long distance =
		(unsigned long)TinyGPSPlus::distanceBetween(gps.location.lat(),
													gps.location.lng(),
													lastlat,
													lastlng);

		//добавить дистанцию между прошлым и текущим измерением к одометрам
		totalOdometer+=distance;
		currentOdometer+=distance;
		oilOdometer+=distance;
		fuelOdometer+=distance;
		}

Вроде всё прямым текстом написано. Библиотека даёт расстояние между двумя координатам. Складываются и всё.

Borumaas
Offline
Зарегистрирован: 21.04.2022

Подскажите, пожалуйста. На схеме выход GPS-модуля подключен к RX0, а в скетче указан D4, как Soft Serial. Какой вариант правильный? 

Vladikas
Offline
Зарегистрирован: 25.07.2013

Оба варианта правильные. Скетч в архиве настроен на работу с аппаратным последовательным портом. Если подключать к D4, то надо раскомментировать строчку //#define SOFT_UART. Но это нужно, если заниматься отладкой. Подключайте к RX0, всё должно работать.

Borumaas
Offline
Зарегистрирован: 21.04.2022

Спасибо за ответ. Я начинающий, поэтому пока многое не известно. А какой формат данных должен быть у GPS-модуля? У меня U-blox 6m, ставлю UBX-NMEA на UART. На стартовой странице пакеты идут, а данные спутников не определяются.

Vladikas
Offline
Зарегистрирован: 25.07.2013

Сложно сказать. У меня был самый дубовый приёмник, где вообще никаких настроек не было. Слегка погуглив, я вижу, что u-blox имеет какие-то настройки, типа изменение версии NMEA. Может попробовать что-то пониже установить?

В общем надо разобраться, в принципе библиотека TinyGPSplus понимает этот формат или нет. Можно погонять скетчи примеров от неё.