Jump to content
Vladimir1960

USART-Передача данных.

Recommended Posts

В ‎19‎.‎02‎.‎2017 в 17:58, Vladimir1960 сказал:

 Помогите передать данные ADC по SMS.

UART.zip

Я делал так:

после того как убедились, что GSM модуль полностью запустился и готов к работе

		Str_Uart_Send("ATE0\r"); // выключаем эхо
		Str_Uart_Send("AT+CMGF=1\r"); // текстовый формат
		Str_Uart_Send("AT+CSCS=\"GSM\"\r"); // кодировка GSM (ASCII)
Str_Uart_Send("AT+CMGS=\"+79100000000\"\r");
Str_Uart_Send("Battery: ");
unsigned char battery_wrem = battery;
unsigned char desyatok = 0;
while(battery_wrem >= 10){battery_wrem = battery_wrem - 10; desyatok++;}
UARTSend(0x30 + desyatok); _delay_ms(200);
UARTSend(0x2E); _delay_ms(200); // точка
UARTSend(0x30 + battery_wrem); _delay_ms(200);
UARTSend(0x1A); // код конца текста смс и отправка

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

Бонус:

Str_Uart_Send("ATD+79100000000;\r"); // дозвон
...
Str_Uart_Send("ATH\r"); // кладем трубку


Str_Uart_Send("ATD#100#\r"); // запрос баланса

 

Share this post


Link to post
Share on other sites

 void SMS()
    {
    void UART_String(const char *msg);
    void UART_CMD(const char *msg);
    UART_String("AT+CMGF=1");
    UART_String("AT+CMGS= +79876543210\r\n");
    Wait(1);
    UART_String("AT+CMGF=1\r\n");
    Wait(1);
    UART_String(" ATE0\r\n");
    Wait(3);
    
     UART_Char(PCF_hour/10+0x30);  //Преобразуем часы
    UART_Char(PCF_hour%10+0x30);  //Преобразуем часы
    UART_Char(':');
    UART_Char(PCF_min/10+0x30);   //Преобразуем минуты
    UART_Char(PCF_min%10+0x30);   //Преобразуем минуты
    UART_Char(':');
    UART_Char(PCF_sec/10+0x30);   //Преобразуем секунды
    UART_Char(PCF_sec%10+0x30);   //Преобразуем секунды
    UART_Char(0x0D);
    UART_Char(PCF_day/10+0x30);   //Преобразуем число 
    UART_Char(PCF_day%10+0x30);   //Преобразуем число 
    UART_Char('.');
    UART_Char(PCF_month/10+0x30); //Преобразуем месяц
    UART_Char(PCF_month%10+0x30); //Преобразуем месяц
    UART_Char('.');
    UART_Char('2');               //Преобразуем век
    UART_Char('0');               //Преобразуем век
    UART_Char(PCF_year/10+1+0x30);//Преобразуем год
    UART_Char(PCF_year%10+6+0x30);//Преобразуем год
    UART_Char(0x0D);
    UART_String("Ip ");
    Wait(1);
    UART_Char(read_adc(4)/10*(2.56*(50/2.56)/1023)+0x30); //Десятки ток 
    Wait(1); 
    UART_Char(read_adc(4)%10*(2.56*(50/2.56)/1023)+0x30);//Еденицы ток
    Wait(1);
    UART_Char('.');
    Wait(1);
    UART_Char(read_adc(4)%10*(2.56*(50/2.56)/1023)+0x30); //Десятые ток
    Wait(1);
    UART_String(" A");
    UART_Char(0x0D);
    UART_String("Up ");
    UART_Char(read_adc(3)/10*(2.56*(50/2.56)/1023)+0x30);   //Десятки
    Wait(3);
    UART_Char(read_adc(3)%100*(2.56*(50/2.56)/1023)+0x30);   //Еденицы
    Wait(3);
    UART_Char('.');
    Wait(3);
    UART_Char(read_adc(3)/10*(2.56*(50/2.56)/1023)+0x30);   //Десятые
    Wait(3);
    UART_String(" V");
    UART_Char(0x0D);

         Где-то что-то я пропустил .

      

Share this post


Link to post
Share on other sites

Металл-композит как альтернатива ферриту: дроссели Panasonic семейства ETQP

Современные электронные устройства требуют все более компактных и эффективных компонентов. Новые металл-композитные дроссели обладают рядом преимуществ перед дросселями с ферритовым сердечником. Они не имеют ярко выраженного насыщения, обладают отличными частотными свойствами и способны работать при температурах до 150°C и выше. Все это делает их альтернативой стандартным дросселям с ферритовым сердечником в широком спектре автомобильных и промышленных приложений.

Подробнее

как минимум

UART_String("AT+CSCS=\"GSM\"\r"); // кодировка GSM (ASCII)

и номер обрамляется в кавычки UART_String ("AT+CMGS=\"+79100000000\"\r");

что у вас за модуль? вы его на компе в терминалке гоняли?

Share this post


Link to post
Share on other sites

Ребята. У не пожалейте рабочий код отправки смс в atmel studio c, уже все перепробовал, ни чего не получается. SIM800

Share this post


Link to post
Share on other sites
                     

Новые литиевые ХИТы Fanso работают даже при +150ºС!

Когда приходится учитывать работу в экстремальных условиях, к выбору электронных компонентов подходишь с особой тщательностью. Высокие температуры, большие перепады давления, труднодоступность – все это требует специальной продукции. Склад КОМПЭЛ пополнился новыми литиевыми ХИТами Fanso, стабильно работающими даже при температуре до 150 ºС. Батарейки имеют номинальное напряжение 3,6 В, обладают ёмкостью от 700 до 14000 мАч, работоспособны в широком температурном диапазоне -20…150ºС и имеют низкий саморазряд (не более 3% в год в нормальных условиях хранения).

Подробнее о высокотемпературной линейке

чуть выше выкладывал пример отправки смс

на команду AT\r модуль выдает ответ ОК?

покажите как вы отправляете?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By artos5
      Приветствую всех на этом форуме!
      Есть необходимость измерять сигнал при помощи данного АЦП. С помощью этого АЦП можно измерять 4 аналоговых не дифференциальных сигнала . Схема следующая:
      Schematic_Temp_opto_sens_V2_20190817124112.pdf
      Картинками с более низким разрешением:
      библиотеку за основу взял эту:
      https://github.com/nsaspook/nidaq700/blob/master/supermoon/example/ADS1220.c
      Путем незначительного допиливания, получилась такая библиотека:
       
      Поправил только эти функции:
      void ADS1220SendByte(unsigned char Byte) { unsigned char Result = 0x01, i=0, flg=0; MOSI_LO; Delay_us(1); for(i=0;i<8;i++) { SCK_LO; //ADC_CLK=0 Delay_us(4); if (flg) MOSI_LO; Delay_us(1); SCK_HI; //ADC_CLK=1 Delay_us(1); if (Byte&Result){ MOSI_HI; flg=1; } else MOSI_LO; Delay_us(4); Result<<=1; } SCK_LO; //ADC_CLK=0 } unsigned char ADS1220ReceiveByte(void) { unsigned char Result = 0, i=0; for(i=0;i<8;i++) { Result<<=1; SCK_LO; //ADC_CLK=0 Delay_us(5); //Delay_us(5); SCK_HI; //ADC_CLK=1 Delay_us(3); if (MISO) Result++; Delay_us(2); } SCK_LO; //ADC_CLK=0 return Result; } И добавил эту функцию:
      void ADS1220Config_MUX_GAIN(uint8_t mux, uint8_t gain) { unsigned Temp; ADS1220ReadRegister(ADS1220_0_REGISTER, 0x01, &Temp); // clear prev value; Temp &= 0x0f; Temp |= gain; Temp |= mux; // write the register value containing the new value back to the ADS ADS1220WriteRegister(ADS1220_0_REGISTER, 0x01, &Temp); ADS1220ReadRegister(ADS1220_1_REGISTER, 0x01, &Temp); // clear prev DataRate code; Temp &= 0x1f; Temp |= (ADS1220_DR_600 + ADS1220_CC); // Set default start mode to 600sps and continuous conversions // write the register value containing the new value back to the ADS ADS1220WriteRegister(ADS1220_1_REGISTER, 0x01, &Temp); } ADS1220.h :
      в результате получаю такую осциллограмму :

      То есть , постоянно считывается 0.
      А вот регистры конфигурации:
      Задаю номер входа MUX и усиление :
       

       
      Читаю данные так:
      ADS1220Config_MUX_GAIN(ADS1220_MUX_0_G, ADS1220_GAIN_1); HAL_Delay(10); temp_[0] = ADS1220ReadData(); Это для 0 канала. 
      Пробовал и так:
      ADS1220SetChannel(ADS1220_MUX_0_G); ADS1220SetGain(ADS1220_GAIN_1); temp_[0] = ADS1220ReadData(); Результат аналогичный. Кто что подскажет? Может кто заметит какой косяк в коде? Уже голова дымит ..
    • By maxssau
      Продам адаптеры USB-I2S. 

       
      Возможности:
       
      стерео ввод/вывод PCM 16-32 бита, 44.1-384 кГц. Ввода DSD нет, как и драйверов для ввода DSD.
      вывод DSD в режиме DoP 64-128, в режиме Native 64-256. Native доступен в Linux без "хитрых" драйверов.
      Тактирование от платы ЦАП/АЦП, частоты 512 fs (22.5792/24.576 МГц). Теоретически возможно и 1024fs(скорости 768кГц и DSD512 Native), но это не опробовано.
      Гальваническая изоляция на Si8662/Si8640.
      Питание возможно как Self так и Bus Powered. В режиме Bus Powered необходимо самостоятельно позаботиться о мастерклоке, т.к. возможны сильные глюки при выключенном генераторе мастерклока.
       
      Тема: 
      срок изготовления 3-5 недель (сильно зависит от поставок процессоров).
      На данный момент полностью реализован интерфейс Legacy. Для отладки Native режима пока нет платы ЦАП, в процессе разработки, будет не раньше осени.
      Цена 6000 + пересылка (в среднем 250 р.).
    • By IgnatiusF
      Не удается проинициализировать работу UART2 на скорость 19200 бод.
      Не вызывается прервание совсем, отсылаются постоянно нули на всех скоростях, если ставить System clock switch в 01 (HSE). При работе от RC генератора выдает уже просто не то, что нужно. 
      Кварц рабочий, и вообще все работает, при использовании библиотек HAL.
      SysTick выключил потому, что были подозрения на конлфикт приоритетов.
      Внизу представлена именно та часть кода программы, которая не работает, то есть сам UART.
      Проект скоро сдавать, а использовать готовую библиотеку HAL не хочется совсем, уже несколько дней парюсь и не могу найти проблему. Попробовал разобраться что пишет в регистры HAL, однако не смог т.к. не хватает знаний, значения регистров все такие же, кроме PLL (не используется) и RCC_CR1 (в HAL почему-то полностью равен 0). Проверял передачей данных по UART. Регистр BRR не удалось считать т.к. он только для записи. У меня записано так:
      USART1->BRR = 0x412;  //20MHz/16/19200 = 65,104.
      Где искать следует ошибку?
    • By pryanic
      Доброго времени суток. Понадобилось разобраться с АЦП.  Основной материал использовал Евстифеева (микроконтроллеры семейства мега) и учебный курс Di-Halt.
      На первый раз задача простая - обработать напряжение с переменного резистора и послать по UART в терминал. С терминалом уже кое-что делал, так что тут вряд ли косяк есть.
      Кратко опишу программу: каждую секунду в обработчике прерывания таймера (не совсем точно, прерывание по переполнению Т0) запускаю преобразование АЦП установкой в 1 бита ADSC. 
      В обработчике прерывания АЦП читаю байт ADCH (выравнивание по левому краю ADLAR=1) и шлю по уарт. Но в терминал приходят одни FF независимо от положения движка потенциометра (подключен к PC1 средним контактом, крайними на землю и AVCC)
       
       
      ADC_test.zip
    • By IgnatiusF
      На схеме программатора USBasp заметил подключенные порты RXD и TXD к разъему, и появился вопрос, а для чего они там? Знаю, что при помощи них можно передавать и принимать данные через UART/USART между устройствами, а можно ли используюя USBasp передавать информацию по UART от МК к компьютеру и наоборот? И если можно, то как?
  • Сообщения

    • Да, продолжу исследования. Трассировка суперстандарт, уже делана переделана, проверена можно сказать. Думаю что я налажал именно в части после ТГР.
    • Спасибо, буду знать! точнее под 5,4, но с секционированием как по ссылке. Про толщину провода понял, спасибо. Правильно ли я вас понял, что я изобретаю велосипед? Можно полностью мотать по указанным в ссылке параметрам, соединив параллельно анодные обмотки? а сопротивление первички согласуется в этом случае с КТ-120?  
    • Здравствуйте дорогие господа! Вопрос такой отвалилась кнопка от пылесоса чем можно её заклеить,термоклеем можно или чем нибудь другим,за ранее спасибо
    • Можно еще проще,к радиаторам профиль прикрутить+дно из толстого текстолита 10мм /или иного прочного на изгиб материала/ и большая часть готова. А фасад  уже дело техники. Для пассивного охлаждения большие радиаторы становятся несущей частью корпуса. Внизу буквально 8 винтиков м3 достаточно удержать дно со всем железом,прикрутив заднюю стенку корпус становится достаточно жестким.Остается фасад и верхняя крышка.
    • LDM30 в упаковке 2 шт - 6000 руб за комплект
    • Здравствуй Дима!.. Мне конечно лестно слышать такой отзыв о себе!.. Но всё-же  я не на том уровне знаний,чтобы прислушиваться к моим рекомендациям.Хотя кое какие наработки по тиристорнику имеются.. Ну конечно,я ведь уже говорил раннее, что этот тиристорник делаю просто ради интереса,не ради сварочника,у меня их 3_штуки имеются.На днях подготовлю несколько осциллограмм и опишу своё понимание проблем с глюками тиристоров типа ВТ-152 и ВТ-151.Думаю это будет тебе полезным для начала. В соседней ветке Владимир Ильич...,советует открывать тиристор пилообразным напряжением!?.. Думаю имеет в виду и ток то-же!? пилообразный? Несколько необычно конечно,я меандрой  уже это делал,разницу по заполнению открывающего импульса,особо не заметил!? Примерно с 15% и до 45% заполнения ВТ_ки открывались без проблем! Большее заполнение ТГР не пропускал! На твоём силовом трансформаторе (ромашка), это очень легко организовать! Вот это уже серьёзная проблема,во первых очень большие без токовые паузы имеем! Чтобы компенсировать такой провал и на такой частоте нужен очень мощный сердечник дросселя! И не куда от этого не денешься,хотя есть у меня задумка поделюсь позже.
×
×
  • Create New...