Touchscreen met gsm shield gebruiken

algemene C code
Berichten: 86
Geregistreerd: 31 Dec 2015, 14:11

Touchscreen met gsm shield gebruiken

Berichtdoor christiaan » 17 Mei 2016, 20:55

Hallo,

Ik heb van enkele mensen gehoord dat het eventueel niet mogelijk is om deze 2 met elkaar te gebruiken.
Het gaat om dit tft touchscreen: https://www.hobbyelectronica.nl/product/2-8-tft-touch-shield/
En dit gsm shield: https://www.hobbyelectronica.nl/product/arduino-gsm-shield-met-geintegreerde-antenne/

De bedoeling is dat je de binnenkomende smsjes kan lezen. Dit allemaal zonder pc.

Als het wel mogelijk is, kan ik hem dan gewoon op de shield zetten (omdat het shield al in de arduino volledig gestoken zit). Of moet ik pinnen opnieuw indelen (zo ja, hoe moet dat dan )

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Touchscreen met gsm shield gebruiken

Berichtdoor nicoverduin » 17 Mei 2016, 21:17

Ik zou voor een Nextion scherm gaan. Daar zit het gehele scherm gebeuren buiten de Arduino. Communicatie loopt via de Serial. Dan kun je gewoon de GSM shield gebruiken op de Arduino. Je zult uiteraard wel eea moeten programmeren. Mocht je zo'n scherm willen kopen. Doe dat dan hier : https://www.itead.cc/nextion-nx3224t024.html
Dat scheelt je een hoop ellende. Er zijn ook TJC typen (dit zijn de NX typen) maar dan moet je wel heel handig zijn in truuken om de problemen te omzeilen en gezien je vragen ben je niet zover. Het is die paar dollar niet waard.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 86
Geregistreerd: 31 Dec 2015, 14:11

Re: Touchscreen met gsm shield gebruiken

Berichtdoor christiaan » 17 Mei 2016, 22:07

Vervelende is, dat ik beide onderdelen al heb (die ik in mijn post genoemd heb) en niet echt de financiële middelen heb om nog een ander scherm te kopen.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Touchscreen met gsm shield gebruiken

Berichtdoor nicoverduin » 18 Mei 2016, 07:24

Tja
Dan heb je een uitdaging vrees ik. Ik zeg het wel vaker... Eerst denken en dan doen.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 86
Geregistreerd: 31 Dec 2015, 14:11

Re: Touchscreen met gsm shield gebruiken

Berichtdoor christiaan » 18 Mei 2016, 15:55

Ik heb al langere tijd deze 2 componenten, maar we hebben als team bedacht wat we willen proberen voor elkaar te krijgen.

Nu is het zo dat ik na wat rekenen, hier best wel 1 scherm van kan betalen. Maar geen pay pal account heb (en ook niet echt van plan ben deze aan te maken voor 1 keer.

Is er iemand anders hier, die wel een paypal account heeft en dus o'n scherm voor mij wil aanschaffen (alle gemaakte kosten krijg je gelijk terug)

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Touchscreen met gsm shield gebruiken

Berichtdoor nicoverduin » 18 Mei 2016, 16:10

Je hoeft nog helemaal geen scherm te kopen. Ga nu eerst gewoon het programma schrijven en dan via de Serial de output printen. Dan weet je zeker dat je dan geen conflict hebt. Of je nu via de Serial naar een scherm schrijft of via de Serial naar de monitor schrijft maakt vwb de werking niets uit. Stel dat die GSM shield ook nog eens een probleem geeft met de Serial. Ben je nog verder van huis.
Overigens is er met een Paypal account niets mis hoor. 't is meer hoe zorgvuldig jij omgaat met je passwords. Na iets van 15 jaar Paypal durf ik dat wel te zeggen. :mrgreen:
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 86
Geregistreerd: 31 Dec 2015, 14:11

Re: Touchscreen met gsm shield gebruiken

Berichtdoor christiaan » 19 Mei 2016, 14:29

Ik krijg tot nu toe 1 deel niet werkend,

De bedoeling is dat ik het inkomende bericht split per woord, zodat ik zelf kan bepalen hoeveel woorden er op een rij komen te staan. Nu zag ik op internet onderstaand stukje code staan, maar dat werkt niet. Hij blijft errors geven.
Heeft iemand voor mij het duwtje in de rug waarmee ik wel de inkomende string per woord (dus op de spatie split) kan splitten en kan tonen daarna in de serial.println()?

cpp code
Serial.println("Split record1: ");
Serial.println(subStr(message, ' ', 1));
Serial.println(subStr(message, ' ', 2));
Serial.println(subStr(message, ' ', 3));

en dan buiten de loop functie:
char* subStr (char* input_string, char *separator, int segment_number) {
char *act, *sub, *ptr;
static char copy[MAX_STRING_LEN];
int i;

strcpy(copy, input_string);

for (i = 1, act = copy; i <= segment_number; i++, act = NULL) {

sub = strtok_r(act, separator, &ptr);
if (sub == NULL) break;
}
return sub;
}


Dit is puur het stukje code waar het omgaat.

Wat ook kan, is dat ik per regel 50 karakters mag tonen, alleen kon daar ook niks over vinden via google...

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Touchscreen met gsm shield gebruiken

Berichtdoor nicoverduin » 19 Mei 2016, 20:04

Wat voor errors krijg je? In de compilatie? in de uitvoering? Indien de compilatie welke?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 86
Geregistreerd: 31 Dec 2015, 14:11

Re: Touchscreen met gsm shield gebruiken

Berichtdoor christiaan » 20 Mei 2016, 17:19

Weet ik zo niet meer, heb het programma ook perongelijk niet opgeslagen kan het dus ook niet meer testen.

Echter nog een vraag:

Als ik senderNumber wil tonen op een TFTscreen, wil dat niet. Een enkele eerste keer geeft hij het nummer weer. Daarna vult hij de array zelf.

cpp code
/*
SMS receiver

This sketch, for the Arduino GSM shield, waits for a SMS message
and displays it through the Serial port.

Circuit:
* GSM shield attached to and Arduino
* SIM card that can receive SMS messages

created 25 Feb 2012
by Javier Zorzano / TD

This example is in the public domain.

http://www.arduino.cc/en/Tutorial/GSMExamplesReceiveSMS

*/

/* LCD Screen */
#include <TFT.h> // Arduino LCD library
#include <SPI.h>

// pin definition for the Uno
#define cs 10 // 10
#define dc 9 // 9
#define rst 8 // 8
TFT TFTscreen = TFT(cs, dc, rst);

// include the GSM library
#include <GSM.h>

// PIN Number for the SIM
#define PINNUMBER "0000"

// initialize the library instances
GSM gsmAccess;
GSM_SMS sms;

// Array to hold the number a SMS is retreived from
char senderNumber[20];
String smsSender;

char message[7];
int x;

void setup() {
// initialize serial communications and wait for port to open:
Serial.begin(9600);
TFTscreen.begin();
// clear the screen with a black background
TFTscreen.background(0, 0, 0);

// write the static text to the screen
// set the font color to white
TFTscreen.stroke(255, 255, 255);
// set the font size
TFTscreen.setTextSize(3);
// write the text to the top left corner of the screen
TFTscreen.text("Havik", 0, 0);
TFTscreen.text("Scouts", 15, 40);
TFTscreen.text("SMS bom!", 0, 80);

while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}

Serial.println("SMS Messages Receiver");

// connection state
boolean notConnected = true;

// Start GSM connection
while (notConnected) {
if (gsmAccess.begin(PINNUMBER) == GSM_READY) {
notConnected = false;
} else {
Serial.println("Not connected");
delay(1000);
}
}

Serial.println("GSM initialized");
Serial.println("Waiting for messages");
TFTscreen.setTextSize(2);
TFTscreen.background(0, 0, 0);
TFTscreen.text("Waiting for", 0, 0);
TFTscreen.text("messages...", 0, 40);
}

void loop() {
char c;

// If there are any SMSs available()
if (sms.available()) {
Serial.println("Message received from:");

// Get remote number
sms.remoteNumber(senderNumber, 20);
Serial.println(senderNumber);

// An example of message disposal
// Any messages starting with # should be discarded
if (sms.peek() == '#') {
Serial.println("Discarded SMS");
sms.flush();
}

// Read message bytes and print them
uint8_t i = 0;
while (c = sms.read()) {
//Serial.print(c);
message[i] = c; // build the message from the sms.read() function
message[i+1] = '\0';
i++;
//Serial.println(message);
}

TFTscreen.background(0, 0, 0);
TFTscreen.setTextSize(1);
delay(500);
TFTscreen.text(message, 0, 0);
delay(5000);
TFTscreen.background(0, 0, 0);
TFTscreen.setTextSize(2);
TFTscreen.text("Waiting for", 0, 0);
TFTscreen.text("messages...", 0, 40);

// // Read message bytes and print them
// while (c = sms.read()) {
// Serial.print(c);
// TFTscreen.setTextSize(2);
// TFTscreen.text(c, 0, 0);
// }

Serial.println("\nEND OF MESSAGE");

// Delete message from modem memory
sms.flush();
Serial.println("MESSAGE DELETED");
}

delay(1000);

}

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: Touchscreen met gsm shield gebruiken

Berichtdoor nicoverduin » 20 Mei 2016, 18:05

Voor de duidelijkheid als jij een sendernumber definieert als een char[20] en vervolgens 20 tekens binnenhaalt, dan gaat dat gegarandeerd mis. Je MOET ALTIJD voor een char array het AANTAL TEKENS + 1 definieren. char arrays moet je afsluiten met een '\0'. Dat doet jouw functie ook (als het goed is). De compiler controleert hier niet op en ben je dus bezig de variabele die achter jouw senderNumber array te overschrijven.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Volgende

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 8 gasten