Tiedote ylläpidolta:

Elektroniikkafoorumi sulkeutuu tietoturva ongelmien takia.
Käyttäjien tietoja (yv:t, sähköpostiosoite ja salasanan hash) on saattanut vuotaa vääriin käsiin.

Foorumi on asettettu vain luku tilaan. Vanhoja keskusteluja voi lukea palvelinsopimuksen päättymiseen asti.
Tietokannasta on poistettu kaikki salasanat, sähköpostiosoitteet ja yksityisviestit.

Jos haluat saada omat yksityisviestisi, lähetä sähköpostia yllapito@elektroniikkafoorumi.com
samasta sähköpostista mikä oli foorumin tiedoissa niin voin kaivella niitä varmuuskopioista.

Mielenkiintoni foorumin ylläpitoon on viime vuosina ollut vähäistä jo muutenkin joten tähän on hyvä lopettaa.
Kiitokset kaikille käyttäjilla ja pahoittelut mahdollisista ongelmista.

Päivitys: Näyttäisi siltä että mahdollinen vuoto koski vanhaa phpBB2 tietokantaa,
joten helmikuuta 2012 uudemmat tiedot pitäisi olla turvassa.

-Lahha
yllapito@elektroniikkafoorumi.com


AT komennot

Keskustelua mikrokontrollereista ja niiden ohjelmoinnista.

Valvoja: Moderaattorit


Kokelas
Kokelas
Viestit: 4
Liittynyt: Ti Syys 21, 2010 7:35
ViestiLähetetty: To Elo 04, 2011 10:06
Minulla on tuollainen Olimexin AVR-GSM kortti ja ajattelin tehdä sellaisen virityksen, joka mittaa lämpötilan ja lähettää sen sitten serverille GPRS- yhteyttä käyttäen tietokantaan. Mitenköhän noita AT-komentoja käytetään ihan niinku käytännössä. Eli missä kohtaa ne koodia pitäisi sijaita tai miten tuosta saa sellaista valmista koodia.

Alla olevassa koodinpätkässä on se mitä olen tähän mennessä saanut aikaiseksi ja koodin lopussa kommentteina nuo AT-komennot, mitä luulen tarvitsevani tuon lähetyksen ohjaamiseen.

Koodi: Valitse kaikki
/************************************************************

Kämpötilan mittaus ja lähetys.
   
   Olimex AVR-GSM kortti, johon napataan lämpötilatieto anturilta ja lähetetään GPRS- yhteydellä
   serverille tietokantaan

   Tekijä:         

   Paikka:         

   Aika:         

   Aihe:         
*/
/************************************************************
             FEATURES
*/

#define SIMULATION 0        // 0: real hardware, 1: simulator
#define BAUD 9600         // Sarjaliikenteen nopeus
#define F_CPU 10000000UL     // 10 MHz CPU Clock frequency

/**********************************************************
             INCLUDED HEADER FILES
 */

#include "stdio.h"
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>



/************************************************************
            LOCAL FUNCTION PROTOTYPES
 *                 (Same order as they are implemented)
 */

void InitAVR(void);      // Kortin alustukset
void init_usart(void);          // Usartin alustus
int main (void);               // Pääohjelmafunktio
void temperature(void);   // Lämpötila-anturin funktio

/************************************************************
 *            GLOBAL FUNCTION PROTOTYPES
 *                 (Same order as they are implemented)
 */

void aika(void);
void send(void);

/************************************************************
 *            GLOBAL VARIABLES
 */

static volatile uint8_t lampotila;

/************************************************************
 *            LOCAL VARIABLES
 */
static volatile uint8_t sec;
static volatile uint8_t min;
static volatile uint8_t hours;
static uint8_t Flag1;
static uint8_t time_Flag;

/************************************************************
            MODULE CODE
 */

/************************************************************
 * @fn      InitAVR
 *
 * @brief   Initialization of Atmel AVR micro-controller
 *
 * @param   void
 *
 * @return  void
 */
void InitAVR(void)
{


   //Asetetaan vertailurekisterin OCR1 arvoksi 1249

   OCR1A = 1250 - 1;
   
   //Asetetaan vertailurekisterin OCR0 arvoksi 249

   OCR0 = 249;
   

   //Asetetaan Timer1:n esijakajalle arvo 8 ja otetaan käyttöön CTC mode

   TCCR1B = (1<<WGM12)| (1<<CS11);
   
   // Sallitaan Timer 1:n keskeytykset
   TIMSK |= (1 << OCIE0);

   // Asetetaan Timer0:n esijakaja arvoon 64 ja otetaan käyttöön CTC mode
   TCCR0 = (1 << CS02 ) | ( 1 << WGM01 );
   


 
   //Alustetaan ulkoiset keskeytykset toimimaan laskevalla reunalla

   MCUCR = ( 1 << ISC11 ) | ( 1 << ISC10 );

   //Sallitaan ulkoiset keskeytykset 

   GICR = ( 1 << INT0 )  | ( 1 << INT1 ) | ( 1 << INT2 );

   //Sallitaan globaalit keskeytykset
   sei();
   
   
   

}
/************************************************************
*/
// initialise the USART


/*
 *   USART initialisation routine
 */
void init_usart(void)
{
   // set baud rate registers to 9600bps
   UBRRH = (unsigned char)(BAUD>>8);
   UBRRL = (unsigned char)BAUD;
   
   
   // enable transmitter
      UCSRB = (1<<RXEN)|(1<<TXEN);
   
   //set frame format
      UCSRC = (1<<URSEL) | (0<<USBS) | (3<<UCSZ0);
}
/************************************************************
 * @fn      function
 *
 * @brief   Tietojen lähetys
 *
 * @param   void
 *
 * @return  int
 */

 int main(void)
    {
      if (time_Flag)
      {
         
         TIMSK = (1 << OCIE1A);
      }
         time_Flag = 0;


      if (Flag1)
       {
          aika();
      }
         Flag1 = 0;
   }
 


/************************************************************
* @fn      Timer 1 OCR interrupt function
 *
 * @brief   ...
 *
 * @param   void
 *
 * @return  void
 */
ISR(TIMER1_COMPA_vect)
{


   // aseta lippu
   time_Flag = 1;

   if (++sec == 60)         // Jos sekunnit 60
      {
         sec = 0;         // sekunnit 0 ja minuutit +1
         
         if(++min == 60)   // Jos minuutit 60
         {
            min = 0;      //minuutit 0 ja tunnit +1
            
            if(++hours ==24)   // Jos tunnit 24
            {
               hours = 0;      //tunnit 0 ja minuutit 0 ja sekunnit 0
            }   
         }
      }
}


/************************************************************
 * @fn      Lähetysaika keskeytysaliohjelma
 *
 * @brief   Example about using functions
 *
 * @param   void
 *
 * @return  aika_flag
 *
 */

void aika(void)
{
   Flag1 = 1;

   if (min == 1)
   {
   //   send();
   }
}
/************************************************************
 * @fn      Lämpötila-anturin tulos keskeytysaliohjelma
 *
 * @brief   Example about using functions
 *
 * @param   void
 *
 * @return  aika_flag
 *
 */
/*void temperature(void)
{
   Lämpötilatiedon haku anturilta

}*/
/************************************************************
 * @fn      lähetys aliohjelma
 *
 * @brief   Example about using functions
 *
 * @param   void
 *
 * @return  aika_flag
 *
 */
/*void send(void)
{

AT+CIPSTATUS
STATE: IP INITIAL

OK

AT+CIPSPRT=1

OK

AT+CDNSORIP=0

OK

AT+CIPSRIP=1

OK

AT+CIPHEAD=1

OK

AT+CGDCONT=1,"IP","apn"

OK

AT+CSTT="apn","username","password"

OK

AT+CIICR

OK

AT+CIPSTATUS

STATE: IP GPRSACT

OK

AT+CIFSR

1xx.18.108.49

AT+CIPSTATUS

STATE: IP STATUS

OK

AT+CIPSTART="UDP","xx.xxx.xxx.xxx","xxxx"
CONNECT OK

OK

AT+CIPSEND

> test message

SEND OK


*/
Viimeksi muokannut Monkki päivämäärä To Elo 04, 2011 11:55, muokattu yhteensä 1 kerran

Vanhempi jäsen
Vanhempi jäsen
Viestit: 400
Liittynyt: Pe Maalis 06, 2009 18:23
ViestiLähetetty: To Elo 04, 2011 10:32
Huom, en ole varma tästä, mutta käsittääkseni nuo komennot lähetetään merkki kerrallaan asciina usartin kautta gsm-moduulille.
Olipas köyhä vastaus... :D
Mutta luulisi tuohon löytyvän jostain koodiesimerkkejä?

Kokelas
Kokelas
Viestit: 4
Liittynyt: Ti Syys 21, 2010 7:35
ViestiLähetetty: To Elo 04, 2011 12:03
Muokkasin edellistä viestiä koodin osalta, kun sieltä näkyi puuttuvan osa koodista, mitä minulla jo oli.

En ole löytänyt koodiesimerkkejä ko. tapaukseen liittyen (vai enkö osaa hakea) :). Tekstiviestin lähetykseen ja puheluiden suorittamiseen kyllä jotain on, mutta en oikein osaa tulkita niitä, että miten niitä voisi hyödyntää. Näistä löytämistäni esimerkeistä löysin tasan yhden AT-komennon sellaisena, kuin se on SIM300D AT Command Set pdf dokumentissa.
Kaikkissa muissa jutuissa on vaan lueteltu noita AT-komentoja, kuin ne on tuossa minun koodin lopussa. :? :? :?

Vanhempi jäsen
Vanhempi jäsen
Viestit: 400
Liittynyt: Pe Maalis 06, 2009 18:23
ViestiLähetetty: To Elo 04, 2011 12:27
Noh, suoraan ton kyseisen härvelin kotisivulta löytyy esimerkkikoodi. :wink:
http://www.olimex.com/dev/avr-gsm.html tuossa sivu ja
tästä zipistä löytyy lähdekoodit esim. tekstiviestin lähettämiselle. http://www.olimex.com/dev/soft/avr/AVR-GSM/AVR-GSM-SMS_rev1.1.zip

Kokelas
Kokelas
Viestit: 4
Liittynyt: Ti Syys 21, 2010 7:35
ViestiLähetetty: Pe Elo 05, 2011 11:45
Joo, noita tarkoitinkin, etten osaa tulkita noita kunnolla, mutta kyllä nyt rupeaa pikkuhiljaa systeemi aukeemaan, kun lukee ajatuksen kanssa noita läpi muutamaan kertaan. Täytyy vaan perehtyä tarkemmin.

Kun on vaan värkännyt pelkkien korttien kanssa ilman mitään lisälaitteita (jos LCD-näyttöä ei lasketa), niin näin alussa näyttää hieman vaikealta, mutta eiköhän tämä tästä, jos joskus sais vehkeen toimimaankin :D .

Laitelkaa vaan lisää linkkejä, jos joskus vahingossa silmään sattuu ja vähänkään asian vierestä liippaa.

Vanhempi jäsen
Vanhempi jäsen
Viestit: 400
Liittynyt: Pe Maalis 06, 2009 18:23
ViestiLähetetty: Pe Elo 05, 2011 22:19
Mä en tota avr:ää niin tunne, mut oletan että toi send_usart on joku avr:n oma funktio? Sillä sä pystyt lähettämään niitä AT-komentoja gsm modulille, sen demosoftan mukaan. Ja vastaavasti joku receive_usart tms millä otat vastaan modulilta. Jos joku tarkemmin avr:ää tuntee ni vois kertoo meneekö spekulaatiot oikeeseen. :)

Paluu Mikrokontrollerit ja ohjelmointi

Paikallaolijat

Käyttäjiä lukemassa tätä aluetta: Ei rekisteröityneitä käyttäjiä ja 2 vierailijaa

cron