RS 232
- Войдите на сайт для отправки комментариев
Вс, 24/07/2011 - 16:23
Бодрый дент всем, у меня плата Uno, есть несоклько вопросов новичка:
- Сколько COM портов можно подключить?
- Как их можно подключить, к каким пинам?
- Как к ним можно обратиться? Правильно ли я делаю что юзаю библиотеку NewSoftSerial? Или лучше юзать стандартную SoftSerial?
- Сделал ли я все правильно в коде написав:
NewSoftSerial mySerial(sms.rx, sms.tx); //rx, tx
mySerial.begin(sms.baud);
mySerial.print(sms.command);
if(sms.afterCommandDelay>0) { // ==0 => is a void command
delay(mysms.afterCommandDelay);
if(mySerial.available()>0) {
while(mySerial.available()>0) {
responce+=mySerial.read();
}
mySerial.flush();
}
На чем можно проверить работу кода, когда обращение идет к определенным пинам? А то под рукой нет ни какого раритетного девайса, придется покупать, а что лучше купить, не ясно.
Где можно купить экран, что бы отражать работу? какой нужен? Подойдет ли любой? Что говорить в магазине радиодеталей, что бы меня поняли, какой экран нужен?
Спасибо всем :)
Советую для начала пробежаться тут в описании уно -1 последовательный порт на 0 и 1 пинах
экран любой двух строчный (типа винстар - держит кирилицу)
Девайсы по идее сименсы 35-55 серии должны дружить именно с ком портом, но для согласования желательно max232 а то там уровни могут быть всякие выше 0-5в(хотя глубоко сомневаюсь)
не забудьте земли соеденить
Adessit, спасибо, я это уже прочитал :)
Просветите новичка, у меня старенькая моторола L7, с миниюсб разьемом, нашел его распиновку
http://www.smart-clip.com/micro-usb-pinout.png
как я понимаю, мне надо пустить 0 вывод Уно на 2ой миниюсб (согласно рисунка выше), а 1ый на 3ий? Ну и землю само-собой.
И все? Я что-то не могу понять про эти ком-порты, чтоб работало в телефоне должен быть выход компорта, а не юсб? Например, когда я подключаю эту моторолу к компу, то у меня в устройствах появляется не виртуальный ком-порт, а Запоминающее устройство USB, это значит что в телефоне не ком-портовый интерфейс и по схеме описанной мною выше подключения не получится?
Просветите новичка, у меня старенькая моторола L7, с миниюсб разьемом, нашел его распиновку
http://www.smart-clip.com/micro-usb-pinout.png
как я понимаю, мне надо пустить 0 вывод Уно на 2ой миниюсб (согласно рисунка выше), а 1ый на 3ий? Ну и землю само-собой.
И все? Я что-то не могу понять про эти ком-порты, чтоб работало в телефоне должен быть выход компорта, а не юсб? Например, когда я подключаю эту моторолу к компу, то у меня в устройствах появляется не виртуальный ком-порт, а Запоминающее устройство USB, это значит что в телефоне не ком-портовый интерфейс и по схеме описанной мною выше подключения не получится?
Думаю вы правильно все понимаете - в телефоне не RS-232, а даже если бы и был, подл * не получиться, т.к. сигналы разные: в * TTL, а в сотке стандартный RS-232
А что бы уровнять сигналы, есть классная схема
http://www.hardware.zp.ua/mobile/data-cable-max232.html
собирал два раза, работает отлично.
Спасибо за ответ.
По этой ссылке написано: "К компьютеру кабель подключается через порт COM (он же RS232 или DB9)", правильно ли я понимаю, что в моем случае он подключается не к компьютеру, а к ардуино? И еще, на схеме, кроме Rx и Tx есть еще DCD, этот контакт куда подключать?
Спасибо за ответ.
По этой ссылке написано: "К компьютеру кабель подключается через порт COM (он же RS232 или DB9)", правильно ли я понимаю, что в моем случае он подключается не к компьютеру, а к ардуино?
Правильно
И еще, на схеме, кроме Rx и Tx есть еще DCD, этот контакт куда подключать?
забей, не обращай внимания, в спецификации от RS-232 сказано, что не изменными остаются и должны быть пины 2,3 и 5, остальные могут менять свои назначения на усмотрения юзера. В обчем, юзаются тока 2, 3 и 5.
Все понял, спасибо. Еще не решил что лучше - купить GSM шилд или повозиться с телефонами, шилд вроде как проще, но с телефонами перспективней.
Все понял, спасибо. Еще не решил что лучше - купить GSM шилд или повозиться с телефонами, шилд вроде как проще, но с телефонами перспективней.
если тебе нужна надежная система? бери шилд, а лишние провода и девайсы, лишь еще большая вероятность для глюков
Подскажите пожалуйста как можно решить задачу. Минумум так сказать, что нужно. Есть терминал с RS 232 портом, на него нужно отсылать данные. Схема работы примерно следующая. Нажали кнопку 1, ушли готовые данные( рецепт для весов 1 ). Захотели изменить данные нажали кнопку 2 и готовые данные ушли на терминал по сом порту. Используется для дозировки краски. Есть платформа и терминал. Терминал получает от тензодатчик показания веса и управляет электроклапаном закрытия при достижении определенного веса. Вот эти параметры и хочу попробовать отправить.( разные банки по 10,25,36 кг) Вот только пока незнаю как. Спасибо.
Подскажите пожалуйста с кодом, как можно оптимизировать и главное где подсмотреть решение задачи. При нажатии кнопки( на данный момент без фиксации) послать только один раз команду в сом порт и оставить светодиод включеным. Если я сменю на кнопку с фиксацией, то данные будут идти постоянно, как этого можно избежать ? сейчас три кнопки и два светика. А, вообще нужно три и три. Но это не главное.
int ledPin = 13; // светодиод int ledPin2 = 12; // светодиод int btnPin = 2;// кнопка int btnPin2 = 4;// кнопка int btnPin7 = 7;// кнопка int val = 0; int val2 = 0; int val7 = 0; void setup() { pinMode(ledPin, OUTPUT); // это выход - светодиод pinMode(ledPin2, OUTPUT); pinMode(btnPin, INPUT); // вход - кнопка pinMode(btnPin2, INPUT); //вход - кнопка Serial.begin(9600); // будем записывать в COM-порт } void loop() { val = digitalRead(btnPin); // узнаём состояние кнопки if(val==HIGH) // кнопка нажата { digitalWrite(ledPin, HIGH); // зажигаем светодиод Serial.println("D01KS"); // команда пуск } val2 = digitalRead(btnPin2); // узнаём состояние кнопки if(val2==HIGH) // кнопка нажата { digitalWrite(ledPin, HIGH); // зажигаем светодиод Serial.println("D01KP"); // команда стоп } val7 = digitalRead(btnPin7); // узнаём состояние кнопки if(val7==HIGH) // кнопка нажата { digitalWrite(ledPin2, HIGH); // зажигаем светодиод Serial.println("D01KW"); // команда вес } delay(100); { digitalWrite(ledPin, LOW); digitalWrite(ledPin2, LOW); // гасим светодиод } }дабы неплодить кучу одинаковых тем спрошу тут. скетч
int i; byte buffer[6]; void setup(){ Serial.begin(57600); } void loop(){ if(Serial.available()){ while( Serial.available() > 0) { buffer[i++] = Serial.read(); delay (2); if (i>=6) break; } } Serial.write(buffer[0]); i = 0; }результат:
Может проблема в битности и длинне ожидаемых данных твоего монитора...
int i; byte buffer[6]; void setup(){ Serial.begin(57600); } void loop() { if(Serial.available()) { i = 0; while( Serial.available() > 0) { buffer[i++] = Serial.read(); delay (2); if (i>=5) break; } buffer[i] = 0; Serial.write(buffer); } }Может так хотелось?
можно ли закидывать скетч в ардуино мини без программатора а через ЛПТ- MOSI, MISO подключая к TX, RX ? ;)