Skip to content

Commit

Permalink
Create bbn_m5atomS3_lite_whatsapp.ino
Browse files Browse the repository at this point in the history
  • Loading branch information
mgrouch authored Apr 9, 2024
1 parent 8057460 commit 55cb8c6
Showing 1 changed file with 139 additions and 0 deletions.
139 changes: 139 additions & 0 deletions bbn_m5atomS3_lite_whatsapp/bbn_m5atomS3_lite_whatsapp.ino
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@

#include <M5AtomS3.h>
#include <Arduino.h>
#include <SPI.h>
#include <EthernetLarge.h>
#include <SSLClient.h>
#include <UrlEncode.h>
#include "trust_anchors.h"

#define SERVER "api.callmebot.com"

#define SCK 5
#define MISO 7
#define MOSI 8
#define CS 6

// M5AtomLite
//#define SCK 22
//#define MISO 23
//#define MOSI 33
//#define CS 19

byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0x99};

// Choose the analog pin to get semi-random data from for SSL
// Pick a pin that's not connected or attached to a randomish voltage source
const int rand_pin = 2; // 34 /* atom-lite */;

// Initialize the SSL client library
// We input an EthernetClient, our trust anchors, and the analog pin
EthernetClient base_client;
SSLClient client(base_client, TAs, (size_t)TAs_NUM, rand_pin);

// Variables to measure the speed
unsigned long beginMicros, endMicros;
unsigned long byteCount = 0;
bool printWebData = true; // set to false for better speed measurement

void setup() {
M5.begin();
Serial.begin(115200);

Serial.println("Initializing SPI...");
SPI.begin(SCK, MISO, MOSI, -1);
Serial.println("Initializing ethernet...");
Ethernet.init(CS);

while (Ethernet.begin(mac) != 1) {
Serial.println("Error getting IP address via DHCP, trying again...");
delay(2000);
}

// Check for Ethernet hardware present
if (Ethernet.hardwareStatus() == EthernetNoHardware) {
Serial.println(
"Ethernet shield was not found. Sorry, can't run without "
"hardware. :(");
while (true) {
delay(1); // do nothing, no point running without Ethernet hardware
}
}
if (Ethernet.linkStatus() == LinkOFF) {
Serial.println("Ethernet cable is not connected.");
}
Serial.print("Local IP : ");
Serial.println(Ethernet.localIP());
Serial.print("Subnet Mask : ");
Serial.println(Ethernet.subnetMask());
Serial.print("Gateway IP : ");
Serial.println(Ethernet.gatewayIP());
Serial.print("DNS Server : ");
Serial.println(Ethernet.dnsServerIP());

Serial.println("Ethernet Successfully Initialized");
// if you get a connection, report back via serial:
}

// +international_country_code + phone number
// Portugal +351, example: +351912345678
String phoneNumber = "REPLACE_WITH_YOUR_PHONE_NUMBER"; // TODO:
String apiKey = "REPLACE_WITH_API_KEY"; // TODO:

String message = "Test from ESP32";

void loop() {
M5.update();

if (M5.BtnA.wasPressed()) {
if (client.connect(SERVER, 443)) {
Serial.print("connected to ");
// Make a HTTP request:
client.println(String("GET ") + "/whatsapp.php?phone=" + phoneNumber + "&apikey=" + apiKey + "&text=" + urlEncode(message) + " HTTP/1.1");
client.println("Host: api.callmebot.com");
client.println("Connection: close");
client.println();
} else {
// if you didn't get a connection to the server:
Serial.println("connection failed");
}
beginMicros = micros();
}

if (client.connected()) {
// if there are incoming bytes available
// from the server, read them and print them:
int len;
while (len = client.available()) {
if (len > 0) {
byte buffer[80];
if (len > 80) len = 80;
client.read(buffer, len);
if (printWebData) {
Serial.write(buffer, len); // show in the serial monitor (slows some boards)
}
byteCount = byteCount + len;
}
delay(1);
}
}

// if the server's disconnected, stop the client:
if (!client.connected() && byteCount > 0) {
endMicros = micros();
Serial.println();
Serial.println("disconnecting.");
//client.stop();
Serial.print("Received ");
Serial.print(byteCount);
Serial.print(" bytes in ");
float seconds = (float)(endMicros - beginMicros) / 1000000.0;
Serial.print(seconds, 4);
float rate = (float)byteCount / seconds / 1000.0;
Serial.print(", rate = ");
Serial.print(rate);
Serial.print(" kbytes/second");
Serial.println();
byteCount = 0;
}
}

0 comments on commit 55cb8c6

Please sign in to comment.