De PDP-contextinstellingen ontbreken in uw code. Vele jaren geleden kwam ik erachter dat deze initialisatiereeks werkt (dat wil zeggen, breid je connectToInternet uit):
//--if autobauding was enabled, send a blank AT
command:='AT';
send_gprs;
//--switch to minimal mode - this is required to reset the SIM card
command:='AT+CFUN=0';
send_gprs;
//--set dce speed
command:='AT+IPR=57600';
send_gprs;
//--turn off command echo
command:='ATE0';
send_gprs;
//--turn off command echo again - sometimes the first command is ignored
command:='ATE0';
send_gprs;
//--turn on extended error messages
command:='AT+CMEE=1';
send_gprs;
//--set module to full function
command:='AT+CFUN=1';
send_gprs;
Dan is het erg belangrijk om uw simkaart te ontgrendelen. De eenvoudigste oplossing is om het PIN-verzoek uit te schakelen (zet uw SIM op een echte telefoon en gebruik de telefoon om dit in te stellen.) Controleer of de module verder kan gaan met SIM-autorisatie:
//--check pin
command:='AT+CPIN?';
send_gprs;
//--right answer is +CPIN: READY
//--wrong answer is +CME ERROR: 772
Stel vervolgens de APN in. Hiermee wordt eigenlijk een asynchroon APN-verzoek gestart en u kunt pas verdergaan als de AT + CSTT OK retourneert:
repeat
//--reset connection
command:='AT+CIPSHUT';
send_gprs;
//--set GPRS APN
command:='AT+CSTT="internet.vodafone.net"';
send_gprs;
until is_ok=1;
En tot slot, open een GPRS-verbinding:
repeat
//--Open gprs connection
command:='AT+CIICR';
send_gprs;
//--Get local address - for some reason this is required
command:='AT+CIFSR';
send_gprs;
//--Suppress "SEND OK" after at+cipsend
command:='AT+CIPSPRT=2';
send_gprs;
until is_ok=1;
(Sorry, deze code is pascaal en niet bijzonder goudkleurig, maar je begrijpt wat de volgorde van de commando's is.)
Twee zeer belangrijke dingen:
- elke opdracht kan mislukken - het is een goed idee om de reactie op een AT-opdracht terug te sturen naar het consolevenster
- AT + CIFSR is slecht. Als u AT + CIFSR niet in de juiste volgorde gebruikt, werkt de communicatie eenvoudigweg niet. Ik gebruikte SIM900D-modules. Hoewel je misschien het gevoel hebt dat het optioneel is om je IP te krijgen, is het eigenlijk om welke reden dan ook helemaal niet optioneel.
Ik gebruikte AT + CIPSEND voor de feitelijke gegevenscommunicatie. HTTP is zo eenvoudig en het is beter om de controle te hebben.