Bonjour,
Je crée actuellement un programme pour Arduino UNO + GPRS Shield V2 + USB Host Shield 2.
En simple, je reçoit des données via ma carte usb host que je doit envoyer via TCP sur le réseau GPRS.
J'arrive parfaitement à lancer les deux examples fournis dans les librairies:
Carte GPRS Shield V2:
-Description: GPRS Shield V2.0 | Seeed Studio Wiki
-Example testé (fonctionne): GPRS_Shield_Suli/GPRS_TCPConnection.ino at master · Seeed-Studio/GPRS_Shield_Suli · GitHub
Carte USB Host V2:
-Description: https://www.circuitsathome.com/products-page/arduino-shields/usb-host-shield-2-0-for-arduino
-Example testé (fonctionne correctement): USB_Host_Shield_2.0/USBFTDILoopback.ino at master · felis/USB_Host_Shield_2.0 · GitHub
Mon problème survient quand j'essaye de combiner les deux, le fait de créer un objet de type FTDI fais planter le GPRS (au niveau de la fonction gprs.join(), puis le arduino reboot. Si je commente juste la déclaration de l'objet FTDI, le GPRS remarche...
Voici mon code, qui pour le moment devrait juste se connecter en DHCP puis afficher l'IP (j'ai mis un commentaire au niveau de la ligne qui fais planter le prog):
#include <adk.h>
#include <cdcftdi.h>
#include "pgmstrings.h"
#include <GPRS_Shield_Arduino.h>
#include <SoftwareSerial.h>
#include <Wire.h>
#include <Suli.h>
#define PIN_TX 7
#define PIN_RX 8
//make sure that the baud rate of SIM900 is 9600!
//you can use the AT Command(AT+IPR=9600) to set it through SerialDebug
#define BAUDRATE 9600
class FTDIAsync :
public FTDIAsyncOper
{
public:
virtual uint8_t OnInit(FTDI *pftdi);
};
uint8_t FTDIAsync::OnInit(FTDI *pftdi)
{
uint8_t rcode = 0;
rcode = pftdi->SetBaudRate(115200);
if (rcode)
{
ErrorMessage<uint8_t>(PSTR("SetBaudRate"), rcode);
return rcode;
}
rcode = pftdi->SetFlowControl(FTDI_SIO_DISABLE_FLOW_CTRL, FTDI_SIO_XON_XOFF_HS);
if (rcode)
ErrorMessage<uint8_t>(PSTR("SetFlowControl"), rcode);
return rcode;
}
char http_cmd[] = "GET /media/uploads/mbed_official/hello.txt HTTP/1.0\r\n\r\n";
char buffer[512];
GPRS gprs(PIN_TX, PIN_RX, BAUDRATE,"m2mdata");
USB Usb;
FTDIAsync FtdiAsync;
FTDI Ftdi(&Usb, &FtdiAsync); //ligne qui fait Bugger le prog
uint32_t next_time;
void setup() {
/* GPRS INITIALIZATION */
Serial.begin(9600);
// use DHCP
Serial.println("DEBUT");
gprs.init();
Serial.println("DEBUT2");
// attempt DHCP
while(false == gprs.join()) {
Serial.println("gprs join network error");
delay(2000);
}
// successful DHCP
Serial.print("IP Address is ");
Serial.println(gprs.getIPAddress());
gprs.close();
gprs.disconnect();
Serial.println("SETUP:OK");
}
void loop() {
}
Je vous remercie par avance.