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

Руководство для разработчика приложений на базе STM32WB55

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

Читать статью

как минимум

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
                     

DC/DC-преобразователи: принципы работы и уникальные решения Maxim Integrated

Что нового можно сказать про DC/DC? Написаны десятки статей, а самостоятельное изготовление преобразователя мощностью от единиц Вт до нескольких кВт даже в домашних условиях не составляет большого труда. Тем не менее, когда речь идет о микро-, или даже нано-ваттах, проектировщик может столкнуться с рядом трудностей. Разработка устройства с батарейным питанием весьма малой мощности – одна из наиболее актуальных и интересных задач во время всепроникающего интернета вещей. А грамотная схемотехника системы питания не возможна без знания основ работы DC/DC преобразователей. Освежить базовые знания и узнать об особенностях проектирования узлов питания мобильного устройства с оптимальным энергопотреблением можно из следующей статьи

Подробнее

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

на команду 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 от МК к компьютеру и наоборот? И если можно, то как?
  • Сообщения

    • Это вряд ли. Посмотрите, какой максимально-допустимый ток через контакты "галетника". В 86-м году вышло 12 номеров. Читая книжки, обратите внимание, что в электронике ещё нужна точность до педантизма, в том числе в изложении мыслей.
    • Вот такие попались переключателя с ЧПУ, куда можно их применить?   Еще фото Еще фото  Еще фото 
    • В этой схеме - можно. Источник питания - источник тока, всего на 30 мА.   По-моему, что-то на этой схеме не так. Через цепь R7 - ЭКQ2 - R4 - БЭQ1 при разомкнутой кнопке течёт ток примерно 0,5 мА. При замкнутой - порядка 2 мА. В обоих случаях транзистор Q1 открыт...
    • По паре конденсаторов К50-18 4700мкФх80В и 10000х50В, демонтаж: Мне больше нравятся крепления  ... Первые по 50р., вторые по 100р.. На одном 10000мкФ небольшая вмятина: Демонтаж аппарата с консервации, без износа: 1. СР-50-165ФВ: 2.СР-75-166ФВ: 3.СРГ-50-260ФВ: СР-50 и СР-75 по 50р., СРГ по 80р.. Тороидальное железо для намотки трансформаторов... 1. Был сетевой трансформатор от промышленной установки. При отмотке вторичек повредили и первичку, пришлось убрать и её ... Габаритная мощность где-то 270Вт (когда-то считал, но призабыл, можно посмотреть по сечению). Пусть будет 300р.. 2.Железо от ДН-3 генераторов Г3-33, сталь Э330: Если что, по РФ перешлю...  
    • тогда замени транзисторы и включи. ЗЫ перед этим проверь сопротивление между 3 и 25 выводом микры и включай в первый раз на пол секунды, потом пощупай как нагрелись транзисторы, если не нагрелись включишь на секунду, повторишь контроль нагрева... хотя шансы мелкие, скорее всего микра сдохла.
    • Плата разрабатывается с учётом расположения 4 -5 электролитов по 2200мкф,которые соединены между собой и ключом на полевике толстыми (широкими дорожками.Это обеспечивает больший ток в импульсе при открытии ключа и как следствие большую глубину обнаружения предметов.
×
×
  • Create New...