Why arduino send data to thingspeak only once?

14 views (last 30 days)
GARAM LEE on 24 Aug 2022
Edited: Christopher Stapels on 10 Nov 2022 at 19:23
Good afternoon.
I want to send mpu6050 data to thingspeak every second. However, data is only sent once now. How can I keep sending data?
(When I searched for it, there is a saying that the data transfer limit of thingspeak is 15 seconds, so is it possible to transfer data one by one in up to 15 seconds?)
And currently, the board and laptop are connected by a usb cable for uploading the code, so can I still send data even if I remove the usb cable and connect the external battery after uploading?
Hardware : mkr1000, mpu6050
#include <SPI.h>
#include <WiFi101.h>
#include <Wire.h>
#include <I2Cdev.h>
#include <WiFiClient.h>
#include "MPU6050.h"
#include "ThingSpeak.h" // always include thingspeak header file after other header files and custom macros
char ssid[] = "abc-2.4G"; // your network SSID (name)
char pass[] = "abcdefgh"; // your network password
// Initialize the Wifi client library
WiFiClient client;
unsigned long myChannelNumber = num;
const char * myWriteAPIKey = "key tiped";
MPU6050 accel1;
int16_t ax1, ay1, az1;
int16_t gx1, gy1, gz1;
unsigned long lastTime = 0;
unsigned long timerDelay = 1000; // sending every second
void setup() {
Serial.begin(115200); // Initialize serial
Wire.begin ( );
WiFi.begin(ssid, pass); // Connect to WPA/WPA2 network.
ThingSpeak.begin(client); // Initialize ThingSpeak
void loop() {
if (millis() - lastTime >= timerDelay) {
accel1.getMotion6(&ax1, &ay1, &az1, &gx1, &gy1, &gz1);
//acceleration full-scale range between +-2 g (16,384LSB/g)
float accX = ((float)ax1) / 16384.0;
float accY = ((float)ay1) / 16384.0;
float accZ = ((float)az1) / 16384.0;
// set the fields with the values
ThingSpeak.setField(1, accX);
ThingSpeak.setField(2, accY);
ThingSpeak.setField(3, accZ);
ThingSpeak.setField(4, gx1);
ThingSpeak.setField(5, gy1);
ThingSpeak.setField(6, gz1);
ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
lastTime = millis(); // Update the last update time
Christopher Stapels
Christopher Stapels on 10 Nov 2022 at 19:23
Edited: Christopher Stapels on 10 Nov 2022 at 19:23
@Vasudeo Feel free to start a new thread and describe your issue, what you have tried, what you see, and what you expect to see.

Sign in to comment.

Answers (1)

Christopher Stapels
Christopher Stapels on 24 Aug 2022
Your device will continue to send data once disconnected from the USB port, as long as it is powered and within the WiFi range.
If you have a free ThingSpeak account, you definitely need to increase the value of timerDelay to at least 15000. If you purchase a paid account, you can get update times up to once per second.
We strongly reccomend using the ThingSpeak library for Arduino.


More Answers in the  ThingSpeak Community


Find more on Write Data to Channel in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!