Telegram Bot написанный AI для взаимодействия микроконтроллера с мессенджером
Что нам понадобится?:
1. Микроконтроллер любой с Wi-Fi ну либо в моём случае ESP32 WROOM DevKit v1
2. USB кабель для загрузки скетча
3. Программный код:
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
const char* ssid = "ИМЯ WI-FI";
const char* password = "ПАРОЛЬ WI-FI";
const char* botToken = "API ТОКЕН";
const int user1 = 448722664;
const int user2 = Второй пользователь на всякий случай;
WiFiClientSecure client;
UniversalTelegramBot bot(botToken, client);
const int buttonPin = 2;
int buttonState = 0;
void setup() { Serial.begin(115200); pinMode(buttonPin, INPUT_PULLUP);
WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } Serial.println("Connected to WiFi");
bot.enableHTTPS(true);
}
void loop() { buttonState = digitalRead(buttonPin);
if (buttonState == LOW) { sendMessage(user1, "Привет, пользователь 1!"); sendMessage(user2, "Привет, пользователь 2!"); delay(1000); }
delay(100);
}
void sendMessage(int chatId, String message) { if (WiFi.status() == WL_CONNECTED) { int messageLength = message.length() + 1; char messageArray[messageLength]; message.toCharArray(messageArray, messageLength);
if (bot.sendMessage(chatId, messageArray, "Markdown")) { Serial.println("Message sent successfully"); } else { Serial.println("Failed to send message"); } } else { Serial.println("WiFi not connected"); }
}
8 комментариев
esptool.py --chip esp32 read_flash 0x00000 0x400000 firmware.bin
esptool.py --chip esp32 write_flash 0x00000 firmware.bin
esptool --chip <chip_type> read_flash <start_address> <size> <output_file>
--chip esp32 указывает тип чипа.
read_flash это операция чтения флэш-памяти.
0x00000 начальный адрес флэш-памяти для чтения.
0x400000 размер данных для чтения в байтах (в данном случае 4 МБ).
firmware.bin имя файла, в который будут записаны данные.
esptool.py v4.7.0
Found 6 serial ports
Serial port COM18
Connecting....
Chip is ESP32-D0WD-V3 (revision v3.1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
WARNING: Detected crystal freq 41.01MHz is quite different to normalized freq 40MHz. Unsupported crystal in use?
Crystal is 40MHz
MAC: a0:b7:65:56:c1:28
Uploading stub...
Running stub...
Stub running...
4194304 (100 %)
4194304 (100 %)
Read 4194304 bytes at 0x00000000 in 382.4 seconds (87.7 kbit/s)...
Hard resetting via RTS pin...
Файл появился здесь C:\Windows\System32\firmware.bin
Размер: 4,00 МБ (4 194 304 байт)
C:\Windows\System32>esptool --chip esp32 read_flash 0x00000 0x400000 firmware.bin
esptool.py v4.7.0
Found 6 serial ports
Serial port COM18
Connecting.......
Chip is ESP32-D0WD-V3 (revision v3.0)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: b0:a7:32:db:8c:90
Uploading stub...
Running stub...
Stub running...
3694592 (88 %)
C:\Windows\System32>esptool --chip esp32 read_flash 0x00000 0x400000 firmware.bin
esptool.py v4.7.0
Found 6 serial ports
Serial port COM18
Connecting....
Chip is ESP32-D0WD-V3 (revision v3.0)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: b0:a7:32:db:8c:90
Uploading stub...
Running stub...
Stub running...
4194304 (100 %)
4194304 (100 %)
Read 4194304 bytes at 0x00000000 in 380.0 seconds (88.3 kbit/s)...
Hard resetting via RTS pin...
C:\Windows\System32>esptool --chip esp32 write_flash 0x00000 firmware.bin
esptool.py v4.7.0
Found 6 serial ports
Serial port COM18
Connecting.....
Chip is ESP32-D0WD-V3 (revision v3.0)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: b0:a7:32:db:8c:90
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Flash will be erased from 0x00000000 to 0x003fffff...
Compressed 4194304 bytes to 1300390...
Wrote 4194304 bytes (1300390 compressed) at 0x00000000 in 122.3 seconds (effective 274.3 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
В вашем случае, если данные начинаются с адреса 0x00001000, вы можете использовать команду:
esptool --chip esp32 read_flash 0x00001000 0x3F0000 firmware.bin
Это прочитает только область памяти, начиная с адреса 0x00001000 и заканчивая предполагаемым концом данных (0x3F0000), и сохранит ее в файл firmware.bin