Что же, пора провести несколько опытов над нашим модулем. Начнем с повторения результатов цитируемой ранее статьи: посмотрим через терминал, что можно добыть из MR1132. Нам потребуется программа Terminal v1.9b и переходник PL2303, используемый нами ранее. Соединение MR1132 с ним мы уже освоили в прошлой заметке, а дополнительным бонусом является то, что ногу RST для нашего случая трогать вообще не нужно.
Запустив терминал, сделаем следующие настройки.
Нажав кнопку «Connect» — соединимся с модулем. Заготовим следующий код:
clear_all_cell$03 // Очистить все ячейки. А мы что-то заполняли?
clear_one_cell_01$03 // Очистить ячейку 01. Потребуется!
bind_mode_cell_01$03 // Забиндить ячейку 01. С этого и начнем.
bind_mode_off$03 // Хватит биндить! Этим завершим.
Дальше объяснять долго, смотрим на картинку и повторяем. В данном случае биндим ячейку 4.
Повторяем команду bind_mode_cell_ для всех имеющихся устройств после чего мониторе наблюдаем группы цифр:
где 55 — стартовые байты, а АА — стоповые. Теперь у нас есть забинденный и проверенный MR1132.
Итак, мы убедились в работоспособности модуля, пора его присоединять… К Ардуино его уже присоединяли для посмотреть в монитор порта, мы тоже в монитор порта смотрели. К ESP8266 я его присоединял — не присоединился по недостатку питания. Что же еще?
А вот что! Продолжим политику импортозамещения и поддержим отечественного производителя во второй раз (первый — nooLite)! Обратим взор на монстрячую плату IskraJS, что произвела на свет компания Амперка. Изучите, не спеша, ее характеристики — они впечатляют. Абсолютно убежден, что в каждом умном доме (где не проживают фанатичные сектанты от Ардуино) — must have. Потому как к ней можно прикрутить и оба UART модуля от nooLite, ESP8266, какую-нибудь пару 433 МГц приемник/передатчик и NRF24 одновременно!
У вас еще нет такой платы? Жаль! Тогда, может быть у вас есть в загашнике что-то из этого? Оно тоже сгодится, но в амперкиной плате есть Serial6, толерантный к сигналу 5 вольт.
В общем, не чего на меня дуться за то, что не присоединил MR1132 прямиком к Малине — все претензии к nooLite.
Итак, связываем:
На сайте производителя есть огромный справочный раздел как работать с IskraJS. Если его мало — поглядим и на первоисточник. Да, времени на это может уйти некоторое количество, но пройдет оно с пользой. В результате, вы загрузите в Искру следующий код:
var cmd="";
var message = [];
Serial6.setup(9600);
Serial6.on('data', function (data) {
print(data.charCodeAt(0)); // Напечатать пришедший код
cmd+=data; // Формировать стринг
if(cmd == "OK\r\n") { // Сравнить с ответом ОК
print("Got OK!"); // Оповестить о сравнении
cmd = ""; // Очистить стринг
}
var idx = cmd.indexOf("\xAA"); // Найти стоп-байт
while (idx>=0) { // Как нашли
print("cmd.length = "+cmd.length); // Напечатали длину стринга
sendTo(cmd); // Отправили в переработку
cmd = ""; // Очистили стринг
idx = cmd.indexOf("\xAA"); // Обминусовали idx
}
});
// Переработка принятой команды
var sendTo = function(mydata) {
print("Got Data"); // Теперь знаем о команде
var counter = 0; // Счетчик байтов
var summ = 0; // Будет контрольная сумма
while (counter < 11) { // Пишем/считаем
message[counter] = mydata.charCodeAt(counter);
print("message["+counter+"] = "+message[counter]);
if(counter < 9) {
summ = summ + message[counter];
print("summ = "+summ);
}
counter++;
}
summ = summ & 0xFF; // Выделяем младший байт суммы
print("summ & 0xFF = "+summ); // Узнаем его
if(message[9] == summ+1){ // Сравниваем с десятым байтом
print("Summ is Good!"); // Радуемся
}
};
/* Эти команды можно/нужно отправлять в терминальном режиме из IDE
(набираем в черном окошке руками), чтобы биндить MR1132.
Пока в терминальном, потом будем через mqtt.
Serial6.write("bind_mode_off\003\n"); // Выйти из биндинга
Serial6.write("bind_mode_cell_04\003\n"); // Забиндить ячейку 4
Serial6.write("clear_one_cell_04\003\n"); // Очистить ячейку 4
Это на память:
85 = 55 hex
170 = AA hex
*/
В результате, вам надо увидеть такое поведение терминала:
Полагаю, на сегодня достаточно. В следующий раз будем программировать ESP8266, доделывать код IskraJS и отправлять данные на OpenHab.
хотя меня это и не касается, поскольку что толку — все равно ничего не понимаю в этом,
но название этой части не нравится. Очень!
то ли дело первая была — такая ах…
НравитсяНравится