- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 16

Thema: KAP(Luftbildfotografie)-Steuerung per XBee realisieren

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied Avatar von da_miez3
    Registriert seit
    24.02.2012
    Ort
    Ilmenau
    Alter
    37
    Beiträge
    198
    Hey spelli. So sollte es eig gehen:

    Dim Dollarzeicheneingang As Byte 'Beginn des Datenstrings mit Dollarzeichen
    Dim Teildaten(14) As String * 12 ' Array mit den extrahierten Daten
    Dim Anzahl As Byte
    Dim Datenstring As String * 98
    Dim Datenkopf As String * 6







    Do
    Dollarzeicheneingang = Inkey()
    If Dollarzeicheneingang = 36 Then Input Datenstring Noecho '36 ist das Dollarzeichen
    Datenkopf = Mid(datenstring , 1 , 5)

    If Datenkopf = "Ground" Then
    Cls
    Anzahl = Split(datenstring , Teildaten(1) , "#") '# Trennzeichen der Daten
    Datenstring = ""



    'Dann kann man sich die extrahierten Datenstücke einzeln anzeigen lassen

    ' Beispiel:
    Locate 2 , 1
    Lcd Teildaten(3)



    End If
    Loop
    End

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    03.09.2011
    Beiträge
    72
    Hallo da_miez3,

    danke für deine Hilfe!

    den teilstring(3) konnte ich mir nicht anzeigen lassen, dafür konnte ich mir per lcd dollarzeicheneingang die "36" anzeigen lassen
    -> $ Zeichen kommt schon mal an... Allerdings hat er alle anderen zeichen angezeigt, soweit ja nicht schlimm, da alles per Inkey kommt.

    auch mit lcd datentring kommt nichts...

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied Avatar von da_miez3
    Registriert seit
    24.02.2012
    Ort
    Ilmenau
    Alter
    37
    Beiträge
    198
    Probiers mal damit, war wohl fehlerhaft:

    $regfile = "m32def.dat"
    $crystal = 1000000
    $baud = 4800 'serial ing
    Config Serialin = Buffered , Size = 100 ' konfig serial in
    Enable Interrupts

    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
    Config Lcd = 20 * 4
    Cls
    Cursor Off

    Dim Gelesen As Byte 'dollarzeichen einlesen

    Dim Teilstring(14) As String * 12
    Dim Anzahl As Byte

    Dim Datenstring As String * 98
    Dim Header As String * 6
    Dim Tempstring As String * 2






    Do
    Gelesen = Inkey()
    If Gelesen = 36 Then Input Datenstring Noecho
    Header = Mid(datenstring , 1 , 6)

    If Header = "GROUND" Then
    Cls
    Anzahl = Split(datenstring , Teilstring(1) , "#")
    Datenstring = ""



    'Test
    Locate 3 , 1
    Lcd Teilstring(2)


    Wait 2
    End If
    Loop
    End

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    03.09.2011
    Beiträge
    72
    Hallo,

    also über ein print gehd das hier raus:

    $ground#quit-test#7.1#24.6#gpshigh
    Zeige ich mir "gelesen" auf dem LCD an, so wird dort immer wieder neu "028" angezeigt...

    aber kein teilstring...

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    03.09.2011
    Beiträge
    72
    Zum Verständnis der Code des Sende-Atmega8:

    Gesendet wird am Ende sub XBee:

    '--------------------------------------------------------------------------
    ' Compilerinstruktionen und Compilerdirektiven
    '--------------------------------------------------------------------------

    $regfile = "m8def.dat"
    $crystal = 7372800 ' 7,3728 Mhz Quarzoszillator an PB6 / XTAL 1
    $hwstack = 64
    $swstack = 64
    $framesize = 64

    $baud = 9600


    '--------------------------------------------------------------------------
    ' Definition von Ressourcen
    '--------------------------------------------------------------------------

    Pwr_all Alias Portd.2 'Abschaltung der Servos und LM2675 (5V für GPS, Video 5,8 GHz Tx)
    Pwr_gps Alias Portd.3
    Pwr_video Alias Portd.4

    Led_rot Alias Portc.5

    Pan1 Alias Portb.0 ' für L293 D
    Pan2 Alias Portd.7



    '--------------------------------------------------------------------------
    ' Definition von Konstanten
    '--------------------------------------------------------------------------

    Const Adc_multi = 0.0048828125 ' = 5.0 / 1024.0 -> ADC auflösen



    '--------------------------------------------------------------------------
    ' Definition von Variablen und Datentypen
    '--------------------------------------------------------------------------

    '---- Betriebsspannung messen ----
    Dim Spannung As Word
    Dim Zellspannung_orig As Single
    Dim Zellspannung As String * 5

    '---- Commands ----
    Dim Quittierung As String * 21
    Dim Gpshoehe As String * 10

    '---- Command empfangen ----
    Dim Cmd As Byte

    '---- GPS-String einlesen ----
    Dim Gps_zeichen As Byte
    Dim Gpsdaten As String * 98
    Dim Gps_header As String * 6
    Dim Gps_anzahl As Byte
    Dim Gps_teilstring(14) As String * 12
    Dim Gps_hoehenteilstring(2) As String * 8

    '---- Commands einlesen ----
    Dim Befehls_zeichen As Byte
    Dim Befehlsdaten As String * 101
    Dim Befehls_header As String * 6
    Dim Befehls_anzahl As Byte
    Dim Befehls_teilstring(5) As String * 21

    '---- Temperaturmessung ----
    Dim Temp(9) As Byte
    Dim X As Byte
    Dim Celsius As Integer
    Dim T As Single
    Dim Temperatur As String * 5

    '---- PWM für A293D ----
    Dim A As Byte



    '--------------------------------------------------------------------------
    ' Konfiguration und Basiseinstellungen
    '--------------------------------------------------------------------------

    '---- CONFIG ----

    ' RS232 Hardware
    'Config Com1 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
    'Config Serialin = Buffered , Size = 128
    'Open "com1:" For Binary As #1
    'Open "COMB.7:9600,8,N,1" For Input As #2 'PB.7 = RxD SoftUART / GPS

    ' ADC
    Config Adc = Single , Prescaler = Auto , Reference = Avcc 'ADC Wandler definieren

    ' Timer für PWM
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 8

    ' schaltbare Ausgänge
    Config Pwr_all = Output ' GPS- und Video-Modul sowie 5 Volt Versorgung hierfür abschalten
    Config Pwr_gps = Output
    Config Pwr_video = Output

    ' Status-LED rot
    Config Led_rot = Output

    ' L293D für Servo als Motor
    Config Portb.1 = Output
    Config Pan1 = Output 'LD293
    Config Pan2 = Output

    '1wire für Temp.-Messung
    Config 1wire = Portc.0 ' Pin für 1wire Schnittstelle festlegen, Schnittstelle wird von Bascom durch Software realisiert

    'Interrupts
    Enable Interrupts
    Enable Timer1

    ' sonstige
    Start Adc
    Declare Sub Xbee ' Senderoutine, um $GROUND#... permanent zu senden



    '--------------------------------------------------------------------------
    ' Init
    '--------------------------------------------------------------------------

    Pwr_all = 0 ' bei Systemstart Peripherie auf OFF
    Pwr_video = 0
    Pwr_gps = 0

    Led_rot = 1 ' Led_rot OFF

    Pan1 = 0 'L293D OFF
    Pan2 = 0

    'LED blinken lassen
    Led_rot = 1
    Waitms 100
    Led_rot = 0
    Waitms 100
    Led_rot = 1
    Waitms 100
    Led_rot = 0


    'nach einer Sek. Pwr_all ON
    Wait 1
    Pwr_all = 1

    'nach einer weiteren Sek. Pwr_gps ON
    Wait 1
    Pwr_gps = 1

    'nach zweit weiteren Sek. Pwr_video ON
    Wait 2
    Pwr_video = 1
    Wait 5 ' und nach 5 Sekunden Pwr_video wieder OFF
    Pwr_video = 0


    ' Begrüßung




    '--------------------------------------------------------------------------
    ' Hauptprogramm
    '--------------------------------------------------------------------------

    Do

    '========== hier laufen Tests ab ==========================================

    Quittierung = "quit-test"
    Gpshoehe = "gpshigh"

    '==========Temperaturmessung mit DS18B20Z 1Wire============================

    1wreset
    1wwrite &HCC
    1wwrite &H44
    Waitms 800

    1wreset
    1wwrite &HCC
    1wwrite &HBE


    For X = 1 To 9
    Temp(x) = 1wread()
    Next


    Celsius = Makeint(temp(1) , Temp(2))

    T = Celsius / 16

    Temperatur = Fusing(t , "##.#")


    '==========Spannung LiPo 2S messen========================================

    Spannung = Getadc(3) ' Zelle messen und berechnen
    Zellspannung_orig = Spannung * Adc_multi
    Zellspannung_orig = Zellspannung_orig * 2
    Zellspannung = Fusing(zellspannung_orig , "#.#")

    If Zellspannung_orig <= 6.4 Then ' Zellspannung unter/gleich 6,4 Volt (2x 3,2 Volt) dann...
    Gosub Lipo_saver_off
    End If


    '==========Rx Prüfen auf Befehlseingänge==================================




    '==========GPS-Auswertung (NL-504ETT)=====================================




    '(

    Inputbin cmd


    Select Case Cmd

    Case 50
    Cmd = ""
    Led_rot = 1
    Wait 1
    Led_rot = 0
    Wait 1


    End Select
    ')


    Call Xbee ' kontinuierliches Senden der Parameter


    Loop



    End


    '----------------Befehlsbibliothek "Commands"-----------------------------------

    Commands:
    Select Case Befehls_teilstring(2)

    Case "50" ' Teilstring(2) auswerten auf "TAKEPHOTO"

    Led_rot = 1
    Wait 2
    Led_rot = 0



    End Select


    Return



    '----------------LiPo-Saver/Abschaltung "Lipo_saver"----------------------------

    Lipo_saver_off:
    Quittierung = "LiPo-Saver!" ' Quittierung an Bodenstation
    'Print #1 , "LiPo-Saver!"
    Quittierung = "" 'Quittierung löschen
    Waitms 500

    Pwr_all = 0 ' testweise Ausgabe PWR_all = 0 --> hier: LED an!

    Disable Interrupts



    Powersave ' sleep

    Return


    '----------------Sonstiges------------------------------------------------------


    Sub Xbee

    Print "$ground" ; "#" ; Quittierung ; "#" ; Zellspannung ; "#" ; Temperatur ; "#" ; Gpshoehe


    End Sub


    und zum Empfangen:

    '--------------------------------------------------------------------------
    ' Compilerinstruktionen und Compilerdirektiven
    '--------------------------------------------------------------------------

    $regfile = "m16def.dat"
    $crystal = 7372800 ' 7,3728 Mhz Quarzoszillator an PB6 / XTAL 1
    $hwstack = 64
    $swstack = 64
    $framesize = 64

    $baud = 9600


    '--------------------------------------------------------------------------
    ' Definition von Ressourcen
    '--------------------------------------------------------------------------

    Led_gruen Alias Portb.0
    Led_lcd Alias Portb.1

    Taster Alias Pind.6


    '--------------------------------------------------------------------------
    ' Definition von Konstanten
    '--------------------------------------------------------------------------

    'Const Adc_multi = 0.0048828125 ' = 5.0 / 1024.0 -> ADC auflösen



    '--------------------------------------------------------------------------
    ' Definition von Variablen und Datentypen
    '--------------------------------------------------------------------------

    '---- Commands einlesen ----


    Dim Quittierung As String * 21

    '---- Command senden ----
    Dim Cmd As Byte

    '---- Betriebsspannung messen ----
    Dim Spannung As Word
    Dim Zellspannung_orig As Single
    Dim Zellspannung As String * 5





    'Dim für lesen
    Dim Gelesen As Byte 'dollarzeichen einlesen

    Dim Teilstring(14) As String * 12
    Dim Anzahl As Byte

    Dim Datenstring As String * 80
    Dim Header As String * 6
    Dim Tempstring As String * 2





    '--------------------------------------------------------------------------
    ' Konfiguration und Basiseinstellungen
    '--------------------------------------------------------------------------

    '---- CONFIG ----

    ' RS232 Hardware
    Config Serialin = Buffered , Size = 100 ' konfig serial in

    ' ADC
    Config Adc = Single , Prescaler = Auto , Reference = Avcc 'ADC Wandler definieren

    ' LEDs
    Config Led_gruen = Output
    Config Led_lcd = Output

    ' Taster
    Config Taster = Input

    ' LCD
    Config Lcd = 20 * 4
    Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.3 , Rs = Portc.2

    Deflcdchar 0 , 32 , 32 , 21 , 14 , 4 , 4 , 4 , 4 ' replace [x] with number (0-7)

    'Interrupts
    Enable Interrupts

    ' sonstige
    Start Adc
    Declare Sub Xbee ' Senderoutine, um $KAPRIG#... permanent zu senden



    '--------------------------------------------------------------------------
    ' Init
    '--------------------------------------------------------------------------

    Led_gruen = 1 ' Led-grün OFF
    Led_lcd = 0 ' LCD-Beleuchtung ON




    ' Begrüßung
    Wait 1

    Cls
    Cursor Off
    Locate 1 , 1
    Lcd "KaprigControlRxZ1"
    Locate 2 , 1
    Lcd "KaprigControlRxZ2"
    Locate 3 , 1
    Lcd "KaprigControlRxZ3"
    Locate 4 , 1
    Lcd "KaprigControlRxZ4"


    Led_lcd = 1
    Waitms 200
    Led_lcd = 0


    Led_gruen = 0
    Wait 1
    Led_gruen = 1
    Wait 1
    Led_gruen = 0
    Wait 1
    Led_gruen = 1
    Wait 1
    Led_gruen = 0
    Cls


    '--------------------------------------------------------------------------
    ' Hauptprogramm
    '--------------------------------------------------------------------------



    Do
    Gelesen = Inkey() ' $ground#quit-test#7.1#24.6#gpshigh

    Locate 1 , 1
    Lcd Gelesen

    If Gelesen = 36 Then Input Datenstring Noecho

    Header = Mid(datenstring , 1 , 6)

    If Header = "GROUND" Then

    Cls
    Anzahl = Split(datenstring , Teilstring(1) , "#")
    Datenstring = ""

    'Test
    Locate 3 , 1
    Lcd Teilstring(2)


    Wait 1
    End If





    Locate 4 , 1
    Lcd Chr(0)




    If Taster = 0 Then
    Cls
    Led_gruen = 1
    Led_lcd = 1
    Powerdown
    End If


    Loop
    End







    '----------------Befehlsbibliothek "Commands"-----------------------------------

    Commands:




    Return



    '----------------LiPo-Saver/Abschaltung "Lipo_saver"----------------------------

    Lipo_saver_off:

    Return


    '----------------Sonstiges------------------------------------------------------



    Sub Xbee




    End Sub

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    03.09.2011
    Beiträge
    72
    Ich habe alles noch mal überprüft und auch noch einen Max232 zweischengesetzt, aber es läuft nicht.

    Ich hatte auch einmal kurz Teile hiervon ausprobiert: http://www.krasser-mann.com/projects/gps-tracker/,
    und da konnte ich auch Teilstrings anzeigen... so ganz verstehe ich den Code aber nicht.

    Beide AVR laufen mit 7,3728 MHz. Es werden definitiv Daten gesendet, allerdings gibt das Inkey nicht die 36 für $ aus, sondern eine dreistellige Ziffer, die augenscheinlich schnell von 0 nach oben hochläuft...

    Wo kann der Bock hängen?

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    03.09.2011
    Beiträge
    72
    Hallo,

    es lag am Quarzoszillator ... also das Teil mit vier Beinchen... sorry

    Was wähle ich beim http://www.engbedded.com/fusecalc Fusecalculator aus, wenn ich einen o. g. Quarzoscillator nehmen will!?

    Danke

Ähnliche Themen

  1. XBEE beschaltung
    Von Thalhammer im Forum Elektronik
    Antworten: 9
    Letzter Beitrag: 15.01.2012, 12:18
  2. [ERLEDIGT] Probleme xbee
    Von Ratzfatz78 im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 5
    Letzter Beitrag: 18.04.2011, 09:24
  3. XBee Pro und X-CTU
    Von Robo2004 im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 10
    Letzter Beitrag: 14.02.2011, 18:55
  4. Xbee von Reichelt
    Von shedepe im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 3
    Letzter Beitrag: 12.06.2010, 21:47
  5. Xbee
    Von RobbyFan im Forum Robby RP6
    Antworten: 21
    Letzter Beitrag: 15.04.2010, 15:04

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests