Ebenhaëzer Tracking System: verschil tussen versies

Uit EurosWiki
Naar navigatie springen Naar zoeken springen
Hdelange (overleg | bijdragen)
Geen bewerkingssamenvatting
Hdelange (overleg | bijdragen)
Geen bewerkingssamenvatting
Regel 134: Regel 134:


De microcontroller doet dus alleen maar iets aan het begin en aan het eind van een evenement. In de tussentijd wordt deze in de slaapstand gezet om stroomverbruik te beperken. De voeding vanaf de EH dient als interrupt om de uC uit de slaapstand te halen. Om niet bij elke omschakeling naar walstroom de hele ETS opnieuw op te starten moet de massapik er minstens 1 minuut af zijn.<br/>
De microcontroller doet dus alleen maar iets aan het begin en aan het eind van een evenement. In de tussentijd wordt deze in de slaapstand gezet om stroomverbruik te beperken. De voeding vanaf de EH dient als interrupt om de uC uit de slaapstand te halen. Om niet bij elke omschakeling naar walstroom de hele ETS opnieuw op te starten moet de massapik er minstens 1 minuut af zijn.<br/>
Om tijdens het foutzoeken tijdens het ontwerpen en later op de Eh te vergemakkelijken is er een controlle LED geplaatst. De geeft de status van het programma weer dmv van een knipper code.


We hebben een [http://www.atmel.com/dyn/resources/prod_documents/DOC2543.PDF Atmel attiny2313] uC:<br/>
We hebben een [http://www.atmel.com/dyn/resources/prod_documents/DOC2543.PDF Atmel attiny2313] uC:<br/>
Regel 155: Regel 156:
Om ook de uC wakker te krijgen moeten we een Pin Change Interrupt hebben > dus poorten "PCINTO(n)"<br/>
Om ook de uC wakker te krijgen moeten we een Pin Change Interrupt hebben > dus poorten "PCINTO(n)"<br/>


'''IO om de knoppen aan te sturen:'''<br/>
'''IO:'''<br/>
 
3 poorten om de GSM toetsen aan te sturen
1 uitgang voor de controle/status led
1 uitgang voor de voeding van de buffer IC


Een overzicht van de uC pinbezetting:
Een overzicht van de uC pinbezetting:
Regel 192: Regel 195:
<br/>
<br/>
In de uC hebben we [<link naar onder>[deze]] code geknald.<br/>
In de uC hebben we [<link naar onder>[deze]] code geknald.<br/>
<br/><br/>
<br/>
Uitleg van de status LED:
{| {{prettytable}}
|-
|LED ||Uitleg
|-
| aan || uC is wakker en is aan het wachten of een routine uitvoeren
|-
| uit || uC slaapt
|-
| knippert 1x || ETS gaat worden opgestart
|-
| knippert 2x || ETS gaat worden uitgezet
|-
| knippert 3x || uC gaat in de slaapstand
|-
|}
 
<br/>


=== Voeding ===
=== Voeding ===

Versie van 20 jun 2009 13:12

Het Ebenhaëzer Tracking System (ETS) is een systeem waarmee de actuele positie van de Ebenhaëzer gevolgd kan worden via de ETS website.

Het systeem, gemaakt door Steven, Gart, Willem, Menno T en Helmich is gebaseerd op een Bluetooth GPS, oude mobiele telefoon en een microcontroller. De positie van de Ebenhaëzer wordt iedere halve minuut geregistreerd, indien de boot vaart, en eens per kwartier via GPRS geüpload. Hierna worden alle coördinaten op de server opgeslagen en is het mogelijk om de gevaren route te bekijken. De precieze werking van het systeem wordt hieronder beschreven.

Doel

Het doel van het systeem is periodiek GPS coördinaten van de EH (later eventueel andere boten) te loggen en deze via een telefoon netwerk (GSM/GPRS/UMTS) doorsturen naar een internetserver. Als er geen GSM bereik is, worden de coördinaten tijdelijk opgeslagen tot er weer bereik is. Nadat de coördinaten verstuurt zijn, zal het voor iedereen mogelijk zijn om de positie en gevaren route op te vragen. Omdat we toch euros blijven en natuurlijk niks te makken hebben willen is er getracht de aanschaf en operationele kosten zo laag mogelijk te houden. Verder moet het systeem bij iedere tocht actief zijn, dus moet het automatisch aangaan zodra de massapik er op gaat, anders kan de schipper vergeten het aan te zetten.

Het oorspronkelijke idee was op basis van SMS, maar later bleek GPRS goedkoper te zijn. Alle componenten worden in een 'broodtrommel' geplaatst en deze wordt in de koekoek van de EH bevestigd, zodat we een goede GPS en GSM ontvangst hebben. Voor netjes wegwerken is het GPS huisje een mogelijke optie voor later.

Methode/Principe

Heel basic bestaat het ETS systeem uit de volgende dingen:

  • Bluetooth GPS ontvanger
  • Controller
  • Mobiel internet (GPRS) modem
  • Micro-controller

De GPS ontvangt de coördinaten. De controller verwerkt die en stuurt deze mbv van het modem via het internet naar de thuis server. In ons geval bestaan de controller en GPRS modem uit een apparaat: een GSM
Op de GSM draait onze software die de communicatie tussen de GPS ontvanger en GPRS modem op zich neemt. De huidige (2009) nieuwe gsm's/handhelds kunnen eigenlijk direct al wat wij willen, maar ons budget is daarvoor nog ontoereikend. Het systeem wordt geacht automatisch aan te gaan zodra er mensen op de boot zijn (de stroom gaat dan aan op de boot). Bij het aangaan moet dus de telefoon en de software opgestart worden. Omdat er menselijke handelingen voor nodig waren (gsm toetsen indrukken) om de GSM en software op te starten hebben we een micro-controller gebruikt om die handelingen over te nemen. De thuis server 'luistert' constant of er data van de boot binnenkomt. Zodra de server wat ontvangt wordt dat opgeslagen in een database en verwerkt op de ETS website. Nu kunnen pappie en mammie mooi kijken waar hun kroost zoal uithangt in de weekenden :p .


Aan boord

Hardware

Belangrijkste dingen die er nodig zijn:

  • GPS ontvanger
  • GSM met GPRS en interface naar GPS ontvanger
  • Micro-controller

Binnen de vereniging was er een Nokia 6230i beschikbaar. De kortste slag om deze telefoon met een GPS te laten communiceren is via bluetooth. Een bluetooth gps ontvanger was niet beschikbaar binnen de vereniging dus is er een RoyalTek Bluetooth GPS Receiver, RBT-2001 aangeschaft. Deze heeft als voordeel dat die vanzelf aan gaat als er voedingspanning op gezet wordt (simpelweg omdat er een 'gewone' on/off switch op zit). De micro-controller is er eentje uit de onuitputtelijke voorraad van gart :p . Het bleek een Atmel Attiny2313 te zijn.




GSM

Nokia 6230i:
http://nds1.nokia.com/phones/files/guides/Nokia_6230i_UG_nl.pdf
Firmware: V03.50 13-sept-2005

  • kan geen symbian op
  • draait Java
  • heeft bluetooth (gemakkelijk softwarematig toegankelijk)
  • heeft een soort seriële poort: FBUS (http://en.wikipedia.org/wiki/FBus) (niet gemakkelijk softwarematig toegankelijk)
  • heeft een IR poort (gemakkelijk softwarematig toegankelijk)
  • heeft een USB poort (met een CA-53 of een DKU-2 kabel op de PC aan te sluiten = gewoon kabel)
  • kan via GPRS mobiel het internet bereiken



SIMkaart

Willem heeft een prepaid Simyo simkaart met mobiel internet beschikbaar voor dit doel. https://www.simyo.nl/selfcare/servlet/ServiceMobileInternet?uid=7202 Simyo gebruikt het KPN netwerk. In juni 2009 rekent het simyo prepaid abbonement per dag af voor het dataverkeer in stappen van 1kB. 1 euro /MB.

GPS ontvanger

RoyalTek RBT-2001 specificaties:

  • 20 kanaals (Sirf III/WAAS)
  • Afmetingen: 7,0 x 4,1x 2,5
  • Gewicht (inclusief batterijen): 62 gram
  • Input stroom (intern): 680mAh Lithium-Ion (oplaadbaar)
  • Input voltage (extern)
  • DGPS-gereed
  • Externe antenne mogelijk
  • Op PC aan te sluiten
  • Werkt 6 uur continu op lithium-ion batterij
  • LED voor status-indicatie



Automatisch starten

Om het systeem autoamtisch aan te laten gaan moeten de volgende dingen gebeuren:

  • GSM inschakelen
  • GPS inschakelen
  • Applicatie starten

Om de GSM in te schakelen moet de powerknop 3 seconden ingedrukt worden.
De GPS gaan vanzelf aan als die stroom krijgt.

Het automatisch starten van Java software is nogal lastig. Automatisch programma's op starten bij boot-up was niet mogelijk en opstarten door een externe trigger vereiste altijd aan handmatige bevestiging van de gebruiker. Het automatisch opstarten hebben we nu opgelost door elektronisch schakelaars parallel aan de GSM knoppen te solderen en deze mbv een microcontroller (uC) electrisch aan sturen.

Elektronische aanpassingen aan de GSMknoppen

In de figuur zie je een opengemaakte Nokia 7250i, waarbij het printje met de knoppen te zien is. Na wat prutsen bleek dat de knoppen heel eenvoudig maak contactjes zijn dmv twee ringetjes die met elkaar moeten worden verbonden.

opengewerkte nokia 7250i


Op deze manier zijn er 20 verschillende knoppen op deze telefoon, die in een matrixvorm aangesloten zijn. Het is dus mogelijk om met 5 + 4 = 9 signalen het hele keypad aan te sturen. Het volgende figuur verduidelijkt een en ander. Voor het schakelen van een knop kan heel simpel een optocoupler gebruikt worden, die de twee ringen als het ware kortsluit. De ingang van de optocoupler zit dan aan een microcontroller uitgang. Hier heb ik even mee geëxperimenteerd in dit werkt uitstekend. (PS in eerste instantie gebruikten we transistoren maar dat kan niet omdat er dan een gemeenschappelijke massa gemaakt moet worden)

elektrisch schema achter het keypad van de nokia 7250i. Optcocouplers worden gebruikt om de 2 ringen kort te sluiten waardoor die bewuste toets wordt bedient.

De toetsen waaraan gesoldeerd is kunnen niet meer op de oude manier bediend worden. Om toch ook nog handmatige bediening mogelijk te maken (bijv. voor telefoon instellingen en software updates) is er naast elke optocoupler ook nog een externe druk schakelaar parallel gesoldeerd.

Door gebruik te maken van de snelkeuze functies zijn er 3 knoppen nodig om de ETS te bedienen.

  • GSM power knop
  • Linker keuze knop
  • Select knop

Om op te starten worden deze op de volgende manier aangestuurd:

powerknop 'aan' gedurende 3 seconden(telefoon gaan aan)
Wachten tot de GSM opgestart is.
Keuzetoets 'aan' gedurende 0.1 seconden (snelkeuze opties komen in beeld; 'verzameling' staat boven aan)
Wachten tot de de map geopend is.
Selecttoets 'aan' gedurende 0.1 seconden (map 'verzameling' wordt gekozen)
Wachten tot de de map geopend is.
Selecttoets 'aan' gedurende 0.1 seconden (start eurostrack programma)
Wachten tot netwerktoegang gevraagd wordt
Keuzetoets 'aan' gedurende 0.1 seconden (bevestig netwerktoegang)


Om de ETS uit te zetten wordt gewoon de power knop weer 3 seconden indrukt.

Microcontroller

De microcontroller heeft de volgende taken:

  • De telefoon aan zetten en het ETS programma opstarten zodra de massapik omgezet wordt.
  • De telefoon uitzetten als de massapik er langer dan een bepaalde tijd af is.

Dit is voor een ideale situatie. Maar het gebeurd ook dat de stroom op de EH er heel even af is omdat er naar walstroom geschakeld wordt (tijdens het opstarten van de ETS). Hierdoor kan de uC in de war komen en de GSM uit zetten ipv aan. We moeten dus ook naar de status van de GSM kijken om de juiste actie te ondernemen.

Voor een goede afwerking moeten er dus twee dingen bekend zijn:

  • Massapik status
  • Telefoon status

De microcontroller doet dus alleen maar iets aan het begin en aan het eind van een evenement. In de tussentijd wordt deze in de slaapstand gezet om stroomverbruik te beperken. De voeding vanaf de EH dient als interrupt om de uC uit de slaapstand te halen. Om niet bij elke omschakeling naar walstroom de hele ETS opnieuw op te starten moet de massapik er minstens 1 minuut af zijn.
Om tijdens het foutzoeken tijdens het ontwerpen en later op de Eh te vergemakkelijken is er een controlle LED geplaatst. De geeft de status van het programma weer dmv van een knipper code.

We hebben een Atmel attiny2313 uC:

We hebben een aantal pinnen van de uC nodig:
Voeding:
We voeden de uC vanuit de GSM batterij, dus 3,7 volt.

Telefoonstatus
Het vervelende was dat we op de GSM geen pin konden vinden die een logisch uitkomst gaf overeenkomstig met de GSM status. We hebben een work-around gemaakt:

  • We zetten de achtergrond LED verlichting van de GSM op 'altijd aan' en tappen dit af. Dit werkt alleen als de massapik erop zit
  • Een bepaalde pin (lader??) geeft, als de massapik eraf is, een spanning van 2,7 volt als de GSM aan is en 0 als de GSM uit is. Dit werkt dus alleen als de massapik eraf is.

Beide signalen tappen we via een buffer af en sturen die de uC in. Omdat de buffer niet nodig is als de uC in de slaapstand zit, wordt de voeding van de buffer ook vanuit de uC geregeld. De LED spanning is rond de 3 volt dus die kan als IO dienen. De 2,7 volt van de lader pin is te laag om als IO te dienen dus dat doen we via de intern comperator van de uC.
Opmerking: De interne referentiespanning kan alleen op AIN0 ingesteld worden. Dit betekend dat de GSM op de negatieve AIN1 moet. Hierdoor werkt het bitje geinventeerd. Geen probleem maar wel ff opletten in de software.

Massapik status
IO voor om te kijken of de EH boordspanning aan is, tevens INTERRUPT pin om uit de slaapstand te komen:
De maximale spanning op een IO poort is: Vcc+0,5 Volt. We hebben een spanningsdeler van twee weerstanden gebruikt om de 12 volt voeding vanuit de EH om te zetten naar 3,7 volt. Om ook de uC wakker te krijgen moeten we een Pin Change Interrupt hebben > dus poorten "PCINTO(n)"

IO:
3 poorten om de GSM toetsen aan te sturen 1 uitgang voor de controle/status led 1 uitgang voor de voeding van de buffer IC

Een overzicht van de uC pinbezetting:

Pin Name Function
2 PD0 Uitgang naar controle/status indicatie LED
3 PD1 Uitgang naar voeding naar buffer IC
7 PD3 Uitgang naar selectknop
8 PD4 Uitgang naar keuze knop
9 PD5 Uitgang naar aanuitknop
10 GND massa microcontroller
12 AIN0 positieve ingang comparator; naar interne referentie spanning (1.1 volt)
13 AIN1 negatieve ingang comperator; naar de 'lader connector' (via buffer IC)
14 PB2 ingang vanaf GSM Led (via buffer IC met afvlak condensator), werkt alleen als de massapik erop zit
15 PB3/PCINT3 ingang vanaf spanningsdeler EH voeding
20 Vcc voeding microcontroller vanuit GSM accu


Al met al hebben we het volgende schema:

Electrisch schema om de uC aan te sluiten


In de uC hebben we [<link naar onder>[deze]] code geknald.

Uitleg van de status LED:

LED Uitleg
aan uC is wakker en is aan het wachten of een routine uitvoeren
uit uC slaapt
knippert 1x ETS gaat worden opgestart
knippert 2x ETS gaat worden uitgezet
knippert 3x uC gaat in de slaapstand


Voeding

Het hele ETS systeem wordt met 12 volt gevoed. Dit omdat we dan voor de telefoon en GPS ontvanger al een 12 volt adapter hebben. Voor implementatie op de EH is een korte kabel nodig in de koekoek, daar zitten al ANP stekkers aan de socket van de huidige GPS. Met wat ANP verdeelstekkertjes en evt. een nieuw socket is de ETS te voeden. In de ETS box is de 12 volt verbonden met:

  • Via een diode met de GSM adapter (om te voorkomen dat er stroom vanuit de GSM accu door de lader terug gaat lopen)
  • De GPS ontvanger adapter



Behuizing

De behuizing is een 'tupperware' trommel. Lekker degelijk model die niet bij de eerste torsie al open springt. Met het geluidsisolerende schuim van hans dat in de loods ligt kunnen alle delen 'fixed' in de trommel geplaatst worden. In de behuizing zitten:

  • GSM
  • GPS muis
  • Micorcontroller PCB
  • 2x adapter PCB voor voeding GPS en GSM
  • En een bult pruttel om de loze ruimte op te vullen



Software

Howto software op de GSM installeren

Met de Nokia Suite kun je heel eenvoudig .jar applicaties installeren op je telefoon. Verbind je telefoon met de computer, start Nokia Suite, klik op Toepassingen installeren, selecteer de .jar bestanden en klik op het groene pijltje. Binnen no-time staat ze erop en kun je ze gebruiken via het menu, Toepassing => Verzameling

Nokia Suite op je desktop PC/laptop:
handleiding:
http://nds1.nokia.com/files/support/global/phones/software/Nokia_PC_Suite_UG_dut.pdf
software:
http://europe.nokia.com/get-support-and-software/download-software/nokia-pc-suites/compatibility-and-download#163

Communicatie kan via IR, bluetooth of een kabel. Communicatie gaat best aardig, soms moet je een 2 poging doen met installeren maar de Java applicaties draaien. :)

ETS software

Steven heeft het programma GPS Track aangepast. Er is een extra 'ETS' menu in het options menu waar de boot en log en upload tijden naar de ETS server gekozen kunnen worden.

Bij het installeren mbv NokiaSuite moet er op gelet worden dat het .jad (dat door de compiler aangemaakt wordt) bestand niet in dezelfde map staat als de applicatie (.jar), dan gaat het mis bij het installeren ('ongeldige toepassing'). Verder gaat installeren ook wel eens gewoon mis > gewoon nog een keer proberen. Na het installeren moet er in de GSM bij de opties van het ETS programma toegang connectiviteit nog even op 'altijd toestaan' gezet worden.

Helaas kan de optie 'netwerktoegang'(=gprs) niet op 'altijd toestaan' gezet worden. De uC moet dus ook deze stap bevestigen. Bij het starten van de applicatie versturen we dus direct even data (0kb) zodat er netwerktoegang gevraagd wordt en de uC dit nog even kan bevestigen. Daarna wordt, zolang de toepassing draait, die toegang niet meer gevraagd en kunnen we 'gaan met die banaan'.

Features

  • Bij opstarten direct GPRS verbinden zoeken zodat dit bevestigd kan worden door de uC
  • Zo min mogelijk bevestigen bij opstarten
  • GPS apparaat keuze
  • Bootkeuze optie
  • logtijd variabel
  • upload tijd variabel
  • verplaatsing meenemen
  • tijd meesturen (vaste tijdzone)
  • meetpunten meesturen
  • Bufferen als er geen GPRS netwerk is
  • Bluetooth verbinding opnieuw opzetten als de bluetooth communicatie uitvalt


Gewenst:

  • 1x GPS lokatie loggen bij het aanzetten van de ETS & versturen?? (ligt aan de kosten)
  • niet belangrijke meetpunten uitfilteren (bv: alle tussenliggende punten van een rechte lijn, of alleen als de koers veranderd)



Openstaande vragen

  • Wat gebeurt er als er geen GPS aanwezig is?
    • Waarschijnlijk gaat het verbinden gewoon mis en werkt het systeem niet tot de stroom er opnieuw op gaat.
  • Wat gebeurt er als er geen GPS fix is?
    • Het systeem blijft draaien maar logt geen nieuwe coördinaten.
  • Wat gebeurt er bij geen GPRS netwerk?
    • Waarschijnlijk gaat het verzenden mis, waarna de niet verzonden coördinaten bij de volgende zendpoging worden meegenomen.
  • Buitenlandse netwerken blokken?
    • Waarschijnlijk vaart de EH zo weinig in Duitsland dat dit geen grote kostenpost gaat worden. Mocht ons beltegoed echter te snel opraken, dan kunnen we hier altijd nog naar kijken.
  • Wat gebeurd er als de gsm gebeld wordt?
    • De software draait gewoon door, als je afsluit zie een gemist bericht.


Broncode

Jahaa die zou je wel willen hebben he :p




Op het internet

Features

De data die de GSM upload is dus helemaal gestript. Geen poespas, alleen de bootletter, tijd en lokatie. De server haalt deze data weer uit elkaar en verwerkt het in een database. Gewenst: Uitleg van wat de server in enschede precies doet.

  • Opslaan ontvangen data in database
  • Nieuw tracks definieren na 45 minuten stilstand
  • Interfacing na waterkaart




Ontwerpbeslissingen

Hier zullen de belangrijkste keuzes die gedaan zijn bij het maken van het systeem beschreven worden.

GPRS

Het gebruik van SMS is veel makkelijker dan het gebruik van GPRS, aangezien het vanaf een microcontroller mogelijk is om direct SMS berichten te versturen. Voor GPRS is dat een stuk lastiger. GPRS is echter vele malen goedkoper, omdat we zeer weinig data versturen: 10 bytes per coördinaat. Naar schatting zou SMS rond de 50 euro per jaar kosten, waar we met GPRS aan 1 à 2 euro genoeg zouden moeten hebben voor een vaarseizoen.

Java op de telefoon

Voor het versturen van de data zijn vier verschillende mogelijkheden: door Java op de telefoon, door andere software op de telefoon, door de microcontroller of door een PC.

Microcontroller

Het automatisch starten van Java software is nogal lastig. Sommige telefoons hebben de eigenschap "Nokia-MIDlet-auto-start: yes", het is echter onduidelijk welke telefoons dit ondersteunen. Waarschijnlijk alleen telefoons die meerdere applicaties tegelijk kunnen draaien en dat zijn alleen de nieuwere modellen. Met behulp van de Push Registry is het wel mogelijk om de applicatie te starten bij een inkomende event, bijvoorbeeld een SMS of een vooraf ingesteld alarm. Helaas vraagt de Nokia uit Series 40 platform de gebruiker elke keer om bevestiging voor het programma echt gestart wordt door een Push-actie. Voor ons is dit dus geen handige optie.

Mogelijke andere opties waren:

  1. Altijd aanlaten; maar hiervoor was het stroomverbruik te hoog.
  2. Mechanisch starten door de knoppen in te drukken, maar dat leek een beetje omslachtig
  3. Elektronisch schakelaars aan de knoppen solderen en deze mbv een microcontroller (uC) electrisch aan sturen.

Uiteindelijke bleek de laatste optie het handigst.




Bijlagen

code micro-controller

In de uC hebben we de volgende code geknald:
Let er bij AVR studio op dat je ook daad werkelijk de juiste HEX file upload. Dat moet je nog apart instellen bij de programmer opties.

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/sleep.h>

#define F_CPU 1000000UL  // 1 MHz
#include <util/delay.h>


// PB3/PCINT3 PIN15 = EH voedingssignaal
// PB2/PCINT2 PIN14 = GSM Led, werkt alleen als er voeding is
// PB1/AIN0 PIN13 = GSM lader, werkt alleen als er geen voeding is, via comparator
// Comparator uitgang = (ACSR, ACO)

// PD0 PIN2 = controle led
// PD1 PIN3 = buffer
// PD3 PIN7 = selectknop
// PD4 PIN8 = keuze knop
// PD5 PIN9 = aanuitknop


void init() 					//Initialisatie poorten timer en interrups
{
	DDRD = 0x7f;				// PORTD PD0-PD6 als uitgang
	PORTD = 0;					// Zet alle uitgangen laag (geen pull-up aan)
	
	DDRB = 0; 					// PORTB PB0-PB7 volledig als ingang

	PCMSK = (1 << PCINT3); 		// stel: PCINT3 (PB3) in op pin-change detectie
	GIMSK = (1 << PCIE); 		// schakel pin-change interrupt in

	ACSR = (1 << ACBG);  		//comparator instellen op bandgap
  
	MCUCR = (1 << SM0); 		//slaapmodes instellen op 'power down'
	cli(); 						//globale interrupt uitschakelen

	PORTD |= (1 << PD1);		// buffer aan
	PORTD |= (1 << PD0);		// statusled aan
}


void slapen_gaan()				// commandos om in de slaapstand te gaan
{
	PORTD = 0; 					// alle poorten laag zetten om stroomverbruik te verlagen
	ACSR = (1 << ACD);			// comparator uitschakelen	
	sleep_enable(); 			// slaap modus toegestaan
	sei(); 						// globale interrupts aan, om te zorgen dat de uC uit de slaapstand kan komen
	sleep_cpu();   				// slaapstand
	sleep_disable();  			// slaap modus toestaand uitzetten als de uC weerwakker wordt (voorkomt onverwachts in slaapmodus)
	// na de slaapstand is de uC uitgeweest en begint opnieuw aan het hoofdprogramma
}


void delay_long() 				// Create long delay for 20 sec
{
	_delay_ms(5000); 			// wait 5 sec
	_delay_ms(5000); 			// wait 5 sec
	_delay_ms(5000); 			// wait 5 sec
	_delay_ms(5000); 			// wait 5 sec
	// longest possible delay is: _delay_ms(6553)
}


void gsm_onoff() 				//Push the on-off button of the GSM long enough to turn it on or off, and wait afterwards until the GSM is really on or off.
{
	PORTD |= (1 << PD5);		// Activeer aan/uit knop gedurende 3 sec
	_delay_ms(3000);
	PORTD &= ~(1 << PD5); 		// Deactiveer aan/uit knop
	delay_long(); 				// Wacht tot GSM daadwerkelijk aan of uit is
}


void ets_start() 				//Turn the GSM on and start the program. 
{
	PORTD |= (1 << PD4);		// Activeer keuze knop gedurende 0.1 sec om snelkeuze opties te kiezen
	_delay_ms(100);
	PORTD &= ~(1 << PD4);		
	_delay_ms(1900);			// wacht 2 sec voor openen snelkeuze menu

	PORTD |= (1 << PD3);		// Activeer select knop gedurende 0.1 sec om verzamel map te openen
	_delay_ms(100);
	PORTD &= ~(1 << PD3);		// Deactiveer select knop
	_delay_ms(2900);			// wacht 3 sec voor openen verzamelmap

	PORTD |= (1 << PD3);		// Activeer select knop gedurende 0.1 sec om ets programma te starten
	_delay_ms(100);
	PORTD &= ~(1 << PD3);		// Deactiveer select knop
	_delay_ms(2900);			// wacht 3 sec voor starten programma en tot netwerktoegang gevraagd wordt

	PORTD |= (1 << PD4);		// Activeer keuze knop gedurende 0.1 sec om netwerktoegang te bevestigen
	_delay_ms(100);
	PORTD &= ~(1 << PD4);		// Deactiveer keuze knop
}


void led(int i) {
	for (; i > 0; i--) {
		PORTD &= ~(1 << PD0);
		_delay_ms(500);
		PORTD |= (1 << PD0);
		_delay_ms(500);
	}
	_delay_ms(1000);
}


/*
 * Hoofdprogramma
 */
int main() 
{
	init();

	_delay_ms(6000);		// wacht 6s voor stabilisatie

	// Oneindige loop
	while (1) 
	{
		if (bit_is_clear(PINB, PB3) && bit_is_clear(ACSR, ACO)) // Voeding is uit en GSM lader is aan: GSM uitzetten
		{
			led(1);
			// Wacht voor omzetten walstroom
			for (int i = 0; i < 10; i++) {
				_delay_ms(6000);
			}
			if (bit_is_clear(PINB, PB3) && bit_is_clear(ACSR, ACO)) // Voeding is uit en GSM lader is aan: GSM uitzetten
			{
				gsm_onoff();			// schakel GSM uit
			}
		}
		else if (bit_is_set(PINB, PB3) && bit_is_clear(PINB, PB2))  // Voeding is aan en GSM led is uit: GSM aanzetten
		{
			led(2);
			gsm_onoff();			// schakel GSM in	
			ets_start();			// Start de ETS op	
		}
		else // Alles is in orde, dus ga lekker slapen
		{
			led(3);
			slapen_gaan();			// hop in de slaapstand	
		}
	}

	return 0;
}



Pin bezetting Nokia telefoon

Pinbezetting POP port:

Pin Name Function
1 Vin 5V Input
2 Gnd Ground
3 ACI Auto-Connect-Ignition ( automatic recognition of connected accessories ) (short with pin 2 for handsfree recognition)
4 V Out Connected to pin 3 in DKU-2 usb data cable (U=2.7volt)
5 USB PwrDet USB Power Detection (only used for USB connection)
6 F-Bus Rx Serial data bus (receive)
7 F-Bus Tx Serial data bus (transmit)
8 Gnd Ground
9 X Mic N audio input -
10 X Mic P audio input +
11 HS Ear L N (Headset) left audio output -
12 HS Ear L P (Headset) left audio output +
13 HS Ear R N (Headset) right audio output -
14 HS Ear R P (Headset) right audio output +

Pin 1 is the one with a small distance to the other pins.


Doorontwikkelingsinfo

In dit deel staat nog informatie die wij gewonnen hebben. NIe direct van toepassing op het huidige systeem, maar misschien nog handige voor een opvolger/alternatief.

Wensen

  • Snelheid meenemen in de routes
  • Geen bluetooth maar kabel gebruiken (stroom besparing)





Opties

Mogelijke opties zijn:

  • Krijg een telefoon werkend als GPRS modem vanaf een pc. Als dat werkt, kunnen we daarna kijken of we dat vanaf een microcontroller kunnen draaien.

Dit zou te behalen moeten zijn door bijvoorbeeld een kleine Linux pc met een (USB) gps ontvanger en (USB) GPRS modem te laten draaien. Het probleem is echter dat een complete pc laten draaien nogal lomp is: relatief groot een eet veel stroom. Dus dat willen we eigenlijk niet doen.
Een GPRS modem aansturen vanaf een microcontroller zou wel mogelijk moeten zijn, je moet dan TCP/IP over PPP implementeren en een TCP/IP implementatie hebben we al gevonden, dan is het alleen nog de vraag hoe moeilijk PPP is.


  • Zoek een Open Source telefoon, of eentje met instelmogelijkheden (smartphones etc).

Optie is super, omdat we dan de hele telefoon opnieuw kunnen programmeren, maar voor zover bekend bestaan deze telefoons nog nauwelijks en zijn ze erg duur.


Mogelijke alternatieve GPS opties:

In het GPS tracking programmaatje op de 6230i kan ik een optie 'seriële communicatie' kiezen incl baudrate etc. daarna vraagt de telefoon of ik verbinding via IR wil maken. Ziet er dus naar uit dat een verbinding via IR opgezet kan worden. (Moeten we nog wel ff zorgen dat ik niet steeds hoef te bevestigen (volgens Steven heeft dat met de rechten die Java heeft te maken, maar hij weet niet of dat op alle telefoons in te stellen is, zoek hiervoor een maintenance menu > dat kan bij de optie van de applicatie> "toegang applicatie > communicatie > altijd toestaan)). Op deze site wordt dat beschreven: http://www.trackr.eu/faq/
Relatief veel werk en foutkans. Waarschijnlijk is het stroomverbruik weinig kleiner dan bij bluetooth. Stroom verbruik kan misschien verlaagd worden door een tweak uit te voeren: Maak wel die IR naar TTL converten maar haal de LEDjes er tussen uit en verbind die door. Het signaal gaat nu dus direct vanuit de GSM de converter in, hiervoor zou minder stroom nodig moeten zijn.

Willem heeft een bedrade GPS ontvanger beschikbaar voor dit doel. Uit deze ontvanger komt een NMEA signaal op TTL niveau. Het signaal kan eenvoudig omgezet worden naar RS232 niveau.

taskmanagersoftware draaien op de GSM (dat kan niet op alle GSM's) zodat de tracker automatisch opstart bij bootup

Ander toestel

De Nokia 7250i:

  • kan geen symbian op
  • draait Java
  • heeft IR (gemakkelijk softwarematig toegankelijk)
  • heeft een seriële poort (met een DKU-5 of een CA-42 kabel op de PC aan te sluiten = kabel + serieel>USB converter) (niet gemakkelijk softwarematig toegankelijk)
  • kan via GPRS mobiel het internet bereiken

linkjes naar IR naar TTL/RS232 converters: (belangrijkste is de conversie van IR naar TTL/RS232. De conversie van RS232 naar TTL is alleen een spanningsniveau conversie)
http://www.tildesign.nl/content/downloads/icl3221_datasheet.pdf
http://www.edaboard.com/ftopic84368.html
http://www.maxim-ic.com/appnotes.cfm/an_pk/3024



Gerelateerde linkjes

Info over de telefoons:
http://gathering.tweakers.net/forum/list_messages/1186709///gprs%2Cgsm%2Cals%2Cmodem
http://gathering.tweakers.net/forum/list_messages/1079840?data%5Bfilter_keywords%5D=installeren&data%5Bboolean%5D=AND
http://www.a-netz.de/nokia6230port.en.php
http://pinouts.ru/CellularPhones-Nokia/nokia_pop_pinout.shtml
Pushregistery:


Communicatie via datakabel:
http://www.forum.nokia.com/info/sw.nokia.com/id/2a2ec089-6f2e-47cb-a150-d11a94eb80ad/MIDP_Using_Cable_Connection_In_Nokia_Devices_v1_0.zip.html

Toepasbare software:
http://www.qcontinuum.org/gpstrack/
http://www.trackr.eu/faq/
http://www.trekbuddy.net
http://sportstracker.nokia.com/nts/main/index.do
http://gathering.tweakers.net/forum/list_messages/1115438/0

Kant en klaar alternatief:
http://www.gpsshop.nl/product/56901/snooper-gps-tracker.html
(onbekend wat de operationele kosten zijn)

Info die weg kan

Oude optie zonder microcontroller:

Bestand:GSM OnOff schakeling.JPG
Helmichs bedachte schema voor: Automatisch GSM aan bij power on. Werking nog maar eens even checken :p