HC 06 небольшой казус.

Deepalarm

✩✩✩✩✩✩✩
2 Фев 2023
6
0
https://github.com/deepalarm
Ребята всем привет.

Возник такой вопрос.
Может кто сталкивался.

1. Купил HC 06
2. Кинул его через ch340 в терминал, видимость есть, все нормально,. Общение со мной есть.
3. Запрграммировал на нем скорость 115200, имя точки, пин. Все ОК,
4. Прогнал скетч на друлю мини, скорость аналогичная в скетче 115200
5. Подключаю HC 06 к друле ( подключено все верно). Подключаюсь к HC с телефона, тоже все отично
6. На компе запускаю терминал и терминал на трубке.. Кидаю команды, видимость и общение есть
Но вижу в терминале на трубке ответ в виде - ^G
На терминале компа вопросиительный знак с ромбиком внутри

Может кто сталкивался?
 

Boroda22

★✩✩✩✩✩✩
23 Фев 2022
251
42
сталкивались. нужно очищать буфер после получения команды. на таких скоростях бывают глюки
 

Deepalarm

✩✩✩✩✩✩✩
2 Фев 2023
6
0
https://github.com/deepalarm
@Boroda22,

Да я все грешу на кодировку и на сам этот тошнотный hc06, он же с самого "рождения" как какой то даун, нашёл информацию как перепрошить его в hc05. Вот думаю покодовать с ним.


Ещё заметил такую штуку

Кидаю скетч на друлю nano все вроде растёт, но как и описал с квакозяброй
Далее все симметрично кидаю на rpo micro, он же Leonardo ( сколько не брал плат у разных поставщиков, ни разу не папалась нормальная pro micro) и там вообще ни ответа ни привета


Скетч

C++:
#include <can.h>
#include <mcp2515.h>

#include <CanHacker.h>
#include <CanHackerLineReader.h>
#include <lib.h>

#include <SPI.h>
#include <SoftwareSerial.h>

const int SPI_CS_PIN = 10;
const int INT_PIN = 2;

const int SS_RX_PIN = 3;
const int SS_TX_PIN = 4;

CanHackerLineReader *lineReader = NULL;
CanHacker *canHacker = NULL;

SoftwareSerial softwareSerial(SS_RX_PIN, SS_TX_PIN);

void handleError(const CanHacker::ERROR error);

void setup() {
    Serial.begin(115200);
    while (!Serial);
    SPI.begin();
    softwareSerial.begin(115200);

    Stream *interfaceStream = &Serial;
    Stream *debugStream = &softwareSerial;
   
   
    canHacker = new CanHacker(interfaceStream, debugStream, SPI_CS_PIN);
    canHacker->setClock(MCP_8MHZ);  
    canHacker->enableLoopback(); // remove to disable loopback test mode
    lineReader = new CanHackerLineReader(canHacker);
   
    pinMode(INT_PIN, INPUT);
}

void loop() {
    CanHacker::ERROR error;
   
    if (digitalRead(INT_PIN) == LOW) {
        error = canHacker->processInterrupt();
        handleError(error);
    }
   
    // uncomment that lines for Leonardo, Pro Micro or Esplora
    error = lineReader->process();
    handleError(error);
}

// serialEvent handler not supported by Leonardo, Pro Micro and Esplora
void serialEvent() {
    CanHacker::ERROR error = lineReader->process();
    handleError(error);
}

void handleError(const CanHacker::ERROR error) {

    switch (error) {
        case CanHacker::ERROR_OK:
        case CanHacker::ERROR_UNKNOWN_COMMAND:
        case CanHacker::ERROR_NOT_CONNECTED:
        case CanHacker::ERROR_MCP2515_ERRIF:
        case CanHacker::ERROR_INVALID_COMMAND:
            return;

        default:
            break;
    }

    softwareSerial.print("Failure (code ");
    softwareSerial.print((int)error);
    softwareSerial.println(")");

    while (1) {
        delay(2000);
    } ;
}
 
Изменено:

Deepalarm

✩✩✩✩✩✩✩
2 Фев 2023
6
0
https://github.com/deepalarm
@Deepalarm, а delay() зачем в коде? он же тормозит всю работу

Спасибо, за анализ, его можно исправить на 1000, без него не растёт ответ от кан шины, как я понимаю это ожидание для получения ответа
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,263
1,301
Москва
Софт сериал крайне нестабильно работает на таких скоростях:
softwareSerial.begin(115200);
У меня более менее стабильно работало кажется на 38400, точно не выше. А потом я взял мегу, у неё есть еще UART. Даже 2!

Стал искать delay, Нашел только в одном месте - где он вешает плату в случае ошибки.
 

Deepalarm

✩✩✩✩✩✩✩
2 Фев 2023
6
0
https://github.com/deepalarm
Так в леонардо и про микро МК другой. AtMega 32u4.
Я это знаю, а в чем проблема собственно?

На нано обычно ставят atmega168 или atmega328 ( в моём случае плата на 168)

Поэтому решил раскачать сборку на более шустром atmega 32u4 ( ну тобишь леонардо взял из коробки у себя)




Софт сериал крайне нестабильно работает на таких скоростях:
softwareSerial.begin(115200);
У меня более менее стабильно работало кажется на 38400, точно не выше. А потом я взял мегу, у неё есть еще UART. Даже 2!

Стал искать delay, Нашел только в одном месте - где он вешает плату в случае ошибки.

Вот с can шиной и проблема будет на такой низкой скорости. Сборка просто встанет колом и ничего не захочет читать поэтому скорость и накрутил минимум для can

Да вообще я это ради интереса собираю, для кан шины мало друли, она еле вывозит....
Так-же собирается на Stm32 либо на 103 либо на 105, там сразу can шина встроена и по обработке они грыжут пакеты как семочки
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,263
1,301
Москва
Вот с can шиной и проблема будет на такой низкой скорости.
Если пакеты не будут доходить, то до обработки дело вообще не дойдет. Тогда вывод напрашивается такой: не верно выбран МК для этой задачи.
 

PiratFox

★★★★★✩✩
13 Фев 2020
1,706
474
Я это знаю, а в чем проблема собственно?
У 32u4 немного другая архитектура, некоторые библиотеки на нём не работают вообще или работают криво. При этом компилер код проглатывает и не возмущается. Смотрите сами, Вам виднее.
 

Deepalarm

✩✩✩✩✩✩✩
2 Фев 2023
6
0
https://github.com/deepalarm
Если пакеты не будут доходить, то до обработки дело вообще не дойдет. Тогда вывод напрашивается такой: не верно выбран МК для этой задачи.

Ну ребята собирали аналогичное барахло на обычной нане на 168 камне и все относительно нормально живёт, по проводам то все хорошо, в вот имено блютус модуль мозг делает...
Ребята кто собирал, использовали hc05, это я с дуру купил HC06 что то подумал что он модный и свежий раз 06 так он кроме основных команд
AT
AT+VERSION
AT+PIN
AT+NAME

Другие вообще не воспринимает

И версия прошивки на нём
linvor v1. 8

Как мне кажется дело именно в ней
 

Deepalarm

✩✩✩✩✩✩✩
2 Фев 2023
6
0
https://github.com/deepalarm
Я тестировал на атмеге328 и сим800, на скоростях ниже 57 работало долго и стабильно. Выше связь пропадала

Попробую, в пнд перенастрою, скажу что и как.
Спасибо за информацию.


Ещё словил непонимание, достал свои штучки....
Стандартные usb-ttl
Cp, ch, pl, ft....

Все отлично работают, а cp2102 что то молчит, причём работал, я точно помню, я им и не пользовался даже, только после покупки подключил и дровишки подкинул. А тут после спячки, виыкаешь его в порт, индикатор светится, а в компе, в любом ноль.... Ни звука ничего, что что то присоеденили, устройства на уровне cmd молчок.
Прозвонил его на предмет неисправностей, все отлично, дежурки и сопротивления в норме..... Что то не то 🤪
 
Изменено: