Лучший способ хранения дополнительных данных для проекта Arduino
Я новичок в arduino и пытаюсь создать систему оповещения о камерах контроля скорости. Она начнет издавать звуковой сигнал, если я превыслю ограничение скорости и подберусь близко к камере контроля скорости. На этом веб-сайте я могу получить все необходимые мне данные, координаты, направление и ограничение скорости для каждых 36000 камер контроля скорости в моей стране.
Мне потребуется дополнительное место в памяти, чтобы хранить все эти данные. Справится ли с этой задачей микросхема eeprom? и сможет ли он не отставать от цикла for, проходящего через все эти 36000 местоположений камер контроля скорости, чтобы проверить, приближаюсь ли я к нему и превышаю ли скорость?
Редактировать: поскольку процессору было бы сложно пройти через все эти местоположения в цикле, кто-то рекомендовал создать временный файл, который сузил бы этот список по направлению, и когда это направление изменилось бы, он пересчитал бы это временный файл. Вот что у меня получилось:
void setup() {
int tempDirection = gpsDirection;
writeTempFile();
}
void loop() {
// это пересчитает временный файл при изменении gpsDirection
if(gpsDirection > tempDirection +5 || gpsDirection < tempDirection -5){
tempDirection = gpsDirection;
writeTempFile();
}
for(temp file){
if(distance <= 100 && speed > speedlimit){
// начинаем пищать
}
}
}
void writeTempFile(){
// это запишет временный файл для каждой камеры с направлением, аналогичным направлению GPS
for(each line of the file){
if(gpsDirection + 10 > camDirection || gpsDirection - 10 < camDirection ){
add cam to temp file;
}
}
}
@Phamaral, 👍3
Обсуждение1 ответ
Лучший ответ:
Запись в EEPROM ограничена примерно 100 тыс. циклов. Они предназначены для постоянных или полупостоянных данных (например, вашего абсолютного порога скорости — 120 км/ч).
Здесь нельзя хранить базу камер контроля скорости.
Купите адаптер MicroSD и сохраните там свои данные. Зацикливание на 36000 местах ловушек скорости нанесет ущерб вашему процессору и памяти. Я рекомендую вам определить поле привязки (например, +/- 2 градуса) и сохранить временный файл только с теми ловушками внутри поля. перепроверяйте каждый раз, когда ваше положение меняется на полный градус (север/юг или восток/запад).
Примечание: в некоторых странах, например в Бразилии, распространение информации о расположении скоростных ловушек является незаконным (воспрепятствование правосудию).
Я отредактировал свой пост, добавив некоторый код, основанный на вашей идее связывающей коробки, чтобы улучшить обработку. Не могли бы вы поделиться своими мыслями по этому поводу?, @Phamaral
Работаю с GPS-приложениями с 1995 года: я бы не стал работать с направлением, вам придется заниматься более сложными вычислениями, которые съедят ваши часы. Вы можете хранить их по широте (file21S.txt, file22S.txt, file23S.txt,.. .) и, в зависимости от того, на какой широте вы находитесь, вы открываете конкретный файл. Или у вас могут быть файлы меньшего размера с latLon (file22S51W.txt, file22S52W.txt, file21S51W.txt и т. д.), @tony gil
- Получить доступ к EEPROM ATtiny с помощью кода Arduino?
- Spiffs против Eeprom на esp8266
- Энергонезависимое хранение nRF52/возврат переменной-есть ли простое решение?
- Почему EEPROM.get() не работает?
- Neo 6m выводит что-то, что я как нуб не могу понять
- EEPROM не соответствует перезагрузке
- Мусорные значения в EEPROM. при записи больших значений
- Является ли использование malloc() и free() действительно плохой идеей для Arduino?
SD-карта и заказанные данные, @Juraj
EEPROM будет работать. SD, вероятно, легче поддерживать в актуальном состоянии, и примерно такая же цена., @Gerben