Отправка сообщения с Arduino nano в Телеграм бота

Всем привет! Я пытаюсь написать скетч на отправку сообщения с Arduini nano с подключеным шилдом Microchip’s ENC28J60 ethernet / HR911105A

Молодец! Держите нас в курсе прогресса в этом святом деле!

1 лайк

Написал много вариаций кода через разные библиотеки, каким-то места не хватает чтобы на ардуинку загрузится, какие-то не поддерживаются. Помогите с кодом и библиотеками.

Мы ни одной вариации не видели :frowning:

Какой именно помощи Вы ожидаете?

#include <UIPEthernet.h>
#include <UniversalTelegramBot.h>

const char* botToken = “YOUR_TELEGRAM_BOT_TOKEN”;
const int buttonPin = 2; // Пин, к которому подключена кнопка
const int ledPin = 13; // Пин, к которому подключен светодиод

byte mac = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // Замените на свой MAC-адрес
IPAddress server(api.telegram.org); // IP-адрес сервера Telegram

EthernetClient ethClient;
UniversalTelegramBot bot(botToken, ethClient);

void setup() {
Serial.begin(9600);

// Инициализация Ethernet
if (Ethernet.begin(mac) == 0) {
Serial.println(“Failed to configure Ethernet using DHCP”);
while (true);
}

// Подключение к Telegram
Serial.println(“Connected to Telegram”);

pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
}

void loop() {
if (digitalRead(buttonPin) == LOW) {
Serial.println(“Button pressed!”);

digitalWrite(ledPin, HIGH); // Включаем светодиод

// Отправляем сообщение в Telegram
String chatId = "YOUR_CHAT_ID"; // Замените на ваш Chat ID
String message = "Button pressed!";
bot.sendMessage(chatId, message);

delay(1000); // Задержка для предотвращения дребезга кнопки
digitalWrite(ledPin, LOW); // Выключаем светодиод

}
}

этому коду мало места для загрузки видимо библиотеки тяжёлые

#include <EtherCard.h>
#include <HttpClient.h>

#define TELEGRAM_BOT_TOKEN “6931700304:AAExgnA43qXHBLTFEcIhskt3A9Y-Y8H_BBI”
#define CHAT_ID “605137591”
#define BUTTON_PIN 2

byte mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
char server = “api.telegram.org”;

#define ETHERCARD_BUFFER_SIZE 600
byte etherbuffer[ETHERCARD_BUFFER_SIZE];
EtherCard ether;

#define BUFFER_SIZE 600

Stash stash(BUFFER_SIZE);

int lastButtonState = HIGH;

void setup() {
if (ether.begin(sizeof etherbuffer, mac) == 0)
Serial.println(F(“Failed to access Ethernet controller”));
ether.dhcpSetup();

pinMode(BUTTON_PIN, INPUT);
Serial.begin(9600);
}

void loop() {
ether.packetLoop(ether.packetReceive());

int buttonState = digitalRead(BUTTON_PIN);

if (buttonState == LOW && lastButtonState == HIGH) {
sendTelegramMessage(“Button pressed!”);
delay(5000);
}

lastButtonState = buttonState;
}

void sendTelegramMessage(const char* message) {
char data[256];
sprintf_P(data, PSTR(“/bot%s/sendMessage?chat_id=%s&text=%s”), TELEGRAM_BOT_TOKEN, CHAT_ID, message);

if (ether.clientWaitingGw()) {
char request[256];
sprintf_P(request, PSTR(“GET %s HTTP/1.1\r\nHost: %s\r\nUser-Agent: Arduino\r\nConnection: close\r\n\r\n”), data, server);

// Send HTTP request
ether.client.tcpSend(request, strlen(request));

// Wait for some time for the request to be processed
delay(5000);

}
}

Здесь вылазит ошибка при компиляции
C:\Users\usersupp\Desktop\ \Arduino\TGbot\TGbot.ino: In function ‘void sendTelegramMessage(const char*)’:
C:\Users\usersupp\Desktop\ \Arduino\TGbot\TGbot.ino:52:11: error: ‘class EtherCard’ has no member named ‘client’

exit status 1

Compilation error: ‘class EtherCard’ has no member named ‘client’

Microchip’s ENC28J60 не имеет собственной памяти и TCP/IP стека. Для нее все библиотеки будут “тяжелыми” на Arduino (AVR). За исключением, разве что Mega2560.

Простите, Вы из тех, которые “не читатель”?

В пустом окне сообщения для Вас специально написано как надо вставлять код. То, что Вы вставили - это не код, ужас на крыльях ночи. Код должен выглядеть вот так:

const char * s1 = "Вот так выглядит код";
const char * s2 = "А не то, что Вы \"набросали\"";
//
const char * s2 = "Хотите, чтобы кто-то читал - вставьте нормально";

И, да, кстати, не вижу ответа на свой вопрос: “Какой именно помощи Вы ожидаете?”.

#include <HttpClient.h>

#define TELEGRAM_BOT_TOKEN "6931700304:AAExgnA43qXHBLTFEcIhskt3A9Y-Y8H_BBI"
#define CHAT_ID "605137591"
#define BUTTON_PIN 2

byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};
char server[] = "api.telegram.org";

#define ETHERCARD_BUFFER_SIZE 600
byte etherbuffer[ETHERCARD_BUFFER_SIZE];
EtherCard ether;

#define BUFFER_SIZE 600

Stash stash(BUFFER_SIZE);

int lastButtonState = HIGH;

void setup() {
  if (ether.begin(sizeof etherbuffer, mac) == 0)
    Serial.println(F("Failed to access Ethernet controller"));
  ether.dhcpSetup();
  
  pinMode(BUTTON_PIN, INPUT);
  Serial.begin(9600);
}

void loop() {
  ether.packetLoop(ether.packetReceive());
  
  int buttonState = digitalRead(BUTTON_PIN);
  
  if (buttonState == LOW && lastButtonState == HIGH) {
    sendTelegramMessage("Button pressed!");
    delay(5000);
  }

  lastButtonState = buttonState;
}

void sendTelegramMessage(const char* message) {
  char data[256];
  sprintf_P(data, PSTR("/bot%s/sendMessage?chat_id=%s&text=%s"), TELEGRAM_BOT_TOKEN, CHAT_ID, message);

  if (ether.clientWaitingGw()) {
    char request[256];
    sprintf_P(request, PSTR("GET %s HTTP/1.1\r\nHost: %s\r\nUser-Agent: Arduino\r\nConnection: close\r\n\r\n"), data, server);
    
    // Send HTTP request
    ether.client.tcpSend(request, strlen(request));
    
    // Wait for some time for the request to be processed
    delay(5000);
  }
}
#include <UniversalTelegramBot.h>

const char* botToken = "YOUR_TELEGRAM_BOT_TOKEN";
const int buttonPin = 2; // Пин, к которому подключена кнопка
const int ledPin = 13; // Пин, к которому подключен светодиод

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // Замените на свой MAC-адрес
IPAddress server(api.telegram.org); // IP-адрес сервера Telegram

EthernetClient ethClient;
UniversalTelegramBot bot(botToken, ethClient);

void setup() {
  Serial.begin(9600);

  // Инициализация Ethernet
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    while (true);
  }

  // Подключение к Telegram
  Serial.println("Connected to Telegram");

  pinMode(buttonPin, INPUT_PULLUP);
  pinMode(ledPin, OUTPUT);
}

void loop() {
  if (digitalRead(buttonPin) == LOW) {
    Serial.println("Button pressed!");

    digitalWrite(ledPin, HIGH); // Включаем светодиод

    // Отправляем сообщение в Telegram
    String chatId = "YOUR_CHAT_ID"; // Замените на ваш Chat ID
    String message = "Button pressed!";
    bot.sendMessage(chatId, message);

    delay(1000); // Задержка для предотвращения дребезга кнопки
    digitalWrite(ledPin, LOW); // Выключаем светодиод
  }
}```

я хочу чтобы мне помогли разобраться что я делаю не так и может быть скинули как надо.

Ну, тогда, читайте сообщение от @sadman41.

А почему когда код с другими библиотеками загружаешь, она запускается но не отрабатывает.
Может я что в коде не так прописываю в задании IP или DHCP?

С какими другими?

#include <EtherCard.h>
#include <HttpClient.h>
с этими к примеру

А это у кого вылезает, у меня?

C:\Users\usersupp\Desktop\ \Arduino\TGbot\TGbot.ino:52:11: error: ‘class EtherCard’ has no member named ‘client’
exit status 1
Compilation error: ‘class EtherCard’ has no member named ‘client’

А почему Вы говорите о каком-то секретном коде и не приводите его? В итоге Ваш вопрос звучит так:

вопрос: почему отрабатывает ХЗ какой код?
ответ: ХЗ!

UIPEthernet.h можно “облегчить” тремя способами - не использовать DHCP, уменьшить кол-во используемых сокетов или отключить UDP (если правильно помню). И то - UIPEthernet нужно определённой версии подбирать, чтобы не подглючивало.

Но, в принципе, для новичка этот чип не очень подходит.