Jump to content

    
Мутный

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

Recommended Posts

Здравствуйте. работаю в среде 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

Share this post


Link to post
Share on other sites

AmrFile Download.exe

и смотрите, что передается.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
2 hours ago, Мутный said:

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

>

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

 

TimeOut

Edited by Мутный

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

 

AMR Play v1.00rus.pdf

 

SIM800 Series_FS_Application Note_V1.04.pdf

Share this post


Link to post
Share on other sites

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

 

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites
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 отправлюйте.

Share this post


Link to post
Share on other sites

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

 

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

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

Share this post


Link to post
Share on other sites
23 minutes ago, CADiLO said:

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

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

Share this post


Link to post
Share on other sites
1 час назад, x893 сказал:

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

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

Share this post


Link to post
Share on other sites
44 minutes ago, Jury093 said:

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

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

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

Например

FSWRITE....0,4,150

31323334

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
55 minutes ago, Мутный said:

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

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

 

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.