Перейти к содержанию
    

sim800l запись в файл по UART

Здравствуйте. работаю в среде Arduino IDE, припаял по uart модуль sim800l к esp32-cam. По задумке esp-шка делает снимок, сохраняет его в свою SPIFFS память, затем должна записать этот файл по uart в память sim800l. На модуле GSM создаю пустой файл командой AT+FSCREATE=file. Теперь если ввести команду, в мониторе порта, AT+FSWRITE=file,1,10,10 , то появляется приглашение набрать символы, нажать Enter и все набранное сохраниться. Это работает только через монитор порта. Наивно пробовал из esp32 отправлять данные Serial.print() и Serial.write(). но не получилось.
В сети предлагается для записи в память sim800l использовать специальные утилиты, но мне это не подходить. Нужно именно от ESP32-cam передать фото в память sim800l. Люди знающие, подскажите.
P.S. снимки в памяти esp32 занимают всегда не более 130kb. На модуле sim800l доступно 180kb

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

эта программа заливает файлы? это ни тот путь. мне нужно заливать файл с ESP32-cam на sim800l через uart. Или Вы предлагаете посмотреть как именно AmrFile загружает данные в sim800? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, Мутный said:

Вы предлагаете посмотреть как именно AmrFile загружает данные в sim800? 

конечно, запишите весь обмен и проанализируйте, если по описанию FSWRITE не работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Serial.println("AT+FSWRITE=file,1,10,10"); // отправлюю команду модулю на запись в файл

/* в терминале появляется '>'

delay(500); // делаю паузу, что бы модуль принял команду

Serial.print("abcdefgh"); // те символы которые хочу записать в файл

/* но в терминале порта выводятя

>

abcdefgh // а через 10 секунд

 

TimeOut

Изменено пользователем Мутный

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Файл в 800 серии в FS через UART однозначно пишется командой FSWRITE.

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

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

Возможно у Вас в 800L старая система команд для FS.

800L это вообще смерть програмиста, так как есть как несколько версий железа, так и прошивок. 

Смотрим апноты, пробуем.

 

AMR Play v1.00rus.pdf

 

SIM800 Series_FS_Application Note_V1.04.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дык если я через монитор порта отправляю команды, вписывая их руками, то все пишется в файл норм. Если программно, то не пишется, хотя приглашения выводится

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скорость модуля по UART фиксированную поставили?

Разбег скоростей контроллера и модуля не должен быть больше 2%

Ну и если пишется с компа файл, то однозначно модуль не причем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

57 minutes ago, Мутный said:

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

Serial.println("AT+FSWRITE=file,1,10,10"); // отправлюю команду модулю на запись в файл

/* в терминале появляется '>'

delay(500); // делаю паузу, что бы модуль принял команду

Serial.print("abcdefgh"); // те символы которые хочу записать в файл

/* но в терминале порта выводятя

>

abcdefgh // а через 10 секунд

 

TimeOut

 

То есть в команде задаёте, что 10 байт будете записывать, а сам отправлюете 8.

Вы уж тогда определитесь, или CTRL-Z в конце давайте или 10 отправлюйте.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

>>>>Serial.print("abcdefgh"); // те символы которые хочу записать в файл

 

Для записи в файл текстовых 0123456789, нужно в UART отправить шестнадцатеричную последовательность 30313233343536373839

Может принт не так работает как нужно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

23 minutes ago, CADiLO said:

Может принт не так работает как нужно?

Принт работает как нужно всегда. Скорее всего дело в другом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, x893 сказал:

Принт работает как нужно всегда. Скорее всего дело в другом.

не в теме, может не хватает команды терминатора конца файла? типа EOF какой-нить..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

44 minutes ago, Jury093 said:

не в теме, может не хватает команды терминатора конца файла? типа EOF какой-нить..

1. Взять программу и посмотреть, что она передает

2. Прочитать внимательно пост от Cadilo и перевести свои буквы в hex и отправить столько символов, сколько указали в команде

Например

FSWRITE....0,4,150

31323334

3. Заставить мозг чуть-чуть поработать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

55 minutes ago, Мутный said:

А может мне не париться, а попробовать ppp протокол. ? как считаете форумчане

А вот это можно.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...