commit 465df94f0714de0972fd6b482352ddaddf6437ad Author: Peregudin Date: Fri Feb 14 19:36:20 2025 +0300 Добавил изначальные файлы diff --git a/sketch_feb14a/sketch_feb14a.ino b/sketch_feb14a/sketch_feb14a.ino new file mode 100644 index 0000000..a8cffaa --- /dev/null +++ b/sketch_feb14a/sketch_feb14a.ino @@ -0,0 +1,29 @@ +#include + + +#define PIN1 7 // Пин для проверки состояния + +// Настройка регистров +#define TOTAL_REGS 1 +uint16_t regs[TOTAL_REGS] = {0}; // Один регистр для хранения статуса + +SimpleModbusSlave slave(1); // Инициализация Slave с ID 1 + +void setup() { + // Настройка пина как вход + pinMode(PIN1, INPUT); + + // Настройка скорости передачи данных + slave.setup(115200); // Установка скорости передачи данных 115200 +} + +void loop() { + // Чтение состояния пина + int pinState = digitalRead(PIN1); + + // Установка регистра в 1, если пин HIGH, иначе 0 + regs[0] = (pinState == HIGH) ? 1 : 0; + + // Запуск цикла Modbus slave + slave.loop(regs, TOTAL_REGS); +} diff --git a/Сервер.py b/Сервер.py new file mode 100644 index 0000000..4332ea2 --- /dev/null +++ b/Сервер.py @@ -0,0 +1,79 @@ +from flask import Flask, jsonify +from pymodbus.client.serial import ModbusSerialClient + +app = Flask(__name__) + +# Настройка Modbus клиента +port_Arduino = 'COM3' # Убедитесь, что это правильный порт для вашего компьютера +baudrate = 115200 + +client = ModbusSerialClient(port=port_Arduino, baudrate=115200, timeout=1, stopbits=1, bytesize=8, parity='N') + +# Попытка подключения к Modbus клиенту +try: + if client.connect(): + print("Подключение успешно!") + else: + print("Не удалось подключиться к порту.") +except PermissionError as e: + print(f'Ошибка доступа к порту: {e}') +except Exception as e: + print(f'Ошибка подключения: {e}') + +STATUS_REGISTER = 0 # Адрес регистра, где хранится статус + +@app.route('/modbus-status', methods=['GET']) +def modbus_status(): + try: + result = client.read_holding_registers(STATUS_REGISTER, 1) + if result.isError(): + return jsonify({'error': 'Не удалось прочитать данные с Arduino'}), 500 + else: + connected = bool(result.registers[0]) + return jsonify({'connected': connected}) + except Exception as e: + return jsonify({'error': str(e)}), 500 + +@app.route('/') +def index(): + return ''' + + + + + + Статус пина + + + +
+ + + + + ''' + +if __name__ == '__main__': + app.run(debug=True, host='0.0.0.0') diff --git a/Снимок.PNG b/Снимок.PNG new file mode 100644 index 0000000..65f84e4 Binary files /dev/null and b/Снимок.PNG differ