salikhan

Как Подключить Китайские Весы К Комьютеру

26 сообщений в этой теме

salikhan    1

Уважаемые профи! подскажите как подключить простые китайские весы к компьютеру, чтобы можно было выводить данные на экран.

Подскажите! поделитесь схемой. Можно ли с дисплея выводить данные? Я в этом деле человек новый, но решение данной задачи очень нужно.

Вот такие весы!

post-160741-0-74215400-1340858644_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alexeyslav    630

Все очень сильно зависит от начинки весов! Так, по внешнему виду только телепаты смогут угадать ответ на вопрос.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
IMXO    1 323

а у "Вот такие весы!" название есть?

ЗЫ: наличие в весах интерфейса RS232 или RS485 = подключение к ПК ;)

  • Одобряю 3

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
salikhan    1

Увы это китайские весы. И интерфейсов RS232 и RS485 там нет. Вот этот интерфейс я и хочу сделать. ЧТобы можно было по USB или Com подключать их.

Для начало подскажите куда капать ?

  • Не одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alexeyslav    630

Для начала - достать схему весов, или разобрать и изучить на чем они сделаны. Может интерфейс там есть, но он не распаян.

  • Одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
salikhan    1

Тогда другой вопрос.

У этих весов есть ЖК дисплей где показаны стоимость за 1 кг, общий вес, и сумма.\

можно ли считать данные при выходе на дисплей ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

это как динамическая индикация, только наоборот? наверно можно,но как то муторно, вам не кажется?проще уж тогда по новой плату сделать и сразу со связью для компа.

  • Одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
vitol    0

Хочу вернуться к первому посту темы. Типовую схему китайских весов выкладываю. Вопрос тотже - можно ли весы подключить к компьютеру для вывода данных на монитор

post-162405-0-65781100-1344721209_thumb.gif

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alexeyslav    630

Там с контроллера выходят сигналы RX и TX, посмотри осциллографом соответствуют ли они UART-у и на какой скорости идет передача данных. Возможно можно будет взять TX и через оптрон просто подать на COM-порт компа.

  • Одобряю 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
vitol    0

Если можно,для чайника поподробнее, как определить соответствие UART и скорость передачи,схему подключения к COM-порту и какой программой можно наблюдать сигнал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
IMXO    1 323

соответствие и скорость - осциллографом или лог.анализатором...

схема - спросите гугл о МАХ232...

прогу здесь поишите:http://www.microchip.su/showthread.php?t=14249

Изменено пользователем IMXO

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alexeyslav    630

программу - любой терминал, например Hyperterminal который идет в составе виндовс.

А насчет остального - срочно подтягивать теорию по последовательным интерфейсам... она не так уж сложна. Перечень скоростей там фиксированный, поэтому смотришь на осциллограмму на самые короткие интервалы и по нему можно определить МИНИМАЛЬНУЮ возможную скорость передачи, затем перебираешь скорости из перечня вверх до тех пор пока не появятся верные данные. Помимо скорости над угадать количество информационных бит(от 5 до 8 но может быть и 9 но тогда стандартный СОМ-порт отдыхает) биты контроля четности и количество стоп-битов(для приема достаточно указать минимальное их количество, если передающий использует больше - они будут рассматриваться принимающим как пауза между данными).

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

не думаю, что Автор темы сможет понять, что "пошли нужные данные" - что при невреном будет каша из цифр, что при верном...

присылайте весы, прикручу их к компу :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
IMXO    1 323
присылайте весы, прикручу их к компу :)

думаетца не дождетесь :D, в ЗП только на радиорынке три-четыре конторы пихающие и ремонтирующие это китайское гуано , не говоря уже о серьезных фирмах. ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
vitol    0

Спасибо, будем учить матчасть. Хотя, хотелось поучиться на чужих ошибках...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
IMXO    1 323

а схема блока индикации есть , по ней в принципе можно определить протокол...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
vitol    0

ЖК дисплеи обычно собраны на контроллере в виде капли, являющейся аналогом HT1621B

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

обслуживал подоброе оборудование

но ни разу не встречал ЖКИ на таких контроллерах

Чаще 7-сегментники

если батарейное питание, то да. Но там были заказные "капли" - всё в одной м-ме

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alexeyslav    630

Чужие ошибки это хорошо, но учится надо на своих обходя чужие.

В любом случае при минимуме информации об исследуемой схеме приходится очень много напрягать соображалку и действовать методом тыка, с каждым тыком сужая круг возможных вариантов.

Попробуй все-таки снять данные с вывода TX, он даже наружу платы выходит. Попрут данные, потом можно будет анализировать их при разных показаниях весов - скорей всего каждому символу-цифре соответствует свой код(в виде битовой маски сегментов которые надо зажечь) и передаются они последовательно для всего индикатора. Более сложный код там не имело бы смысла городить.

Но может(идеальный вариант) данные передаются в виде ASCII-символов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Похожие публикации

    • Автор: LoKeR
      Доброго времени суток, нашел хорошую статью Usart прием и отправка строки. Настроил на порт Usart3 перестал работать, попробовал на Usart2 перекинуть тоже не работает, как правильно переделать подскажите...
      stm32-uart-spl.rar
    • Автор: Тимур1992
      Доброго времени суток.
      Решил пробудить свои скилы по написанию программ под stm32f103. Поигрался с SMT32CUDEMX и HAL, но вернулся к SLP библиотеке.  Начал постепенно наращивать программу по примерам, начиная с GPIO, тактирования и на работе c USART встал. Суть в том что передача по UART идет нормально, а вот прием приводит к "зависанию". Устанавливая бесконечные while с мигалками внутри, я выяснил что по все видимости МК не переходит в прерывания USART1_IRQHandler. Я не могу понять в чем ошибка, раньше с таким не сталкивался, хотя написал несколько программ для stm32f100 .____.
      Среда разработки Atollic TrusStudio 9.0.0.
       
      #include "stm32f10x.h" #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" #include "stm32f10x_usart.h" #include "misc.h" #include <string.h> // тактовый светодиод для индикации #define LED GPIO_Pin_5 #define RX_BUF_SIZE 80 volatile char RX_FLAG_END_LINE = 0; volatile char RXi; volatile char RXc; volatile char RX_BUF[RX_BUF_SIZE] = {'\0'}; volatile char buffer[80] = {'\0'}; void init_GPIO(void); void SetSysClockTo72(void); void init_uart(void); void clear_RXBuffer(void); void USARTSend(const char *pucBuffer); void USART1_IRQHandler(void) { GPIO_ResetBits(GPIOA, LED); //GPIOA->ODR ^= LED; //USART_ITConfig(USART1, USART_IT_RXNE, DISABLE); //if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) { //if ((USART1->SR & USART_FLAG_RXNE) != RESET) { //if ((USART1->SR & USART_SR_RXNE) != (u16)RESET) { if (USART1->SR & USART_SR_RXNE) { // Сбрасываем флаг прерывания USART1->SR &=~ USART_SR_RXNE; //RXc = USART_ReceiveData(USART1); //RX_BUF[RXi] = RXc; //RXi++; //if (RXc != 13) { // if (RXi > RX_BUF_SIZE-1) { // clear_RXBuffer(); // } //} //else { // RX_FLAG_END_LINE = 1; //} //Echo //USARTSend("Interrapt_UART1\r\n"); //USART_SendData(USART1, RXc); } //return } int main(void) { int i; //SetSysClockTo72(); init_GPIO(); init_uart(); USARTSend("Test USART1\r\n"); while (1) { //if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_9) != 0) { /* Toggle LED which connected to PC13*/ GPIOA->ODR ^= LED; // Invert C13 /* delay */ for(i=0;i<0x100000;i++); /* Toggle LED which connected to PC13*/ GPIOA->ODR ^= LED; /* delay */ for(i=0;i<0x100000;i++); USARTSend("Test USART1\r\n"); //} //else { //GPIO_SetBits(GPIOA, LED); //} } } void init_GPIO(void) { // Создаем класс для постепенной настройки параметров и единовременного применени¤ GPIO_InitTypeDef GPIO_InitStructure; //Настрайваем светодиод, включаем тактирование GPIOA RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // Конфигурация для светодиода, режим работы, максимальная скорость GPIO_InitStructure.GPIO_Pin = LED; // GPIO_Mode_Out_OD выход с открытым стоком, GPIO_Mode_Out_PP выход двумя состояниями // GPIO_Mode_AF_OD выход с открытым стоком для альтернативных функций, GPIO_Mode_AF_PP то же самое, но с двумя состояниями GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); // Устанавливаем начальное значение SetBits -> High level ("1"), ResetBits -> Low level ("0") GPIO_ResetBits(GPIOA, LED); // Настрайваем пин 9, регистра B на вход, для отладки, включаем тактирование регистра B RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); // Настрайваем для кнопку, пин, режим, максимальная частота входного сигнала GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; // GPIO_Mode_AIN аналоговый вход, GPIO_Mode_IN_FLOATING вход без подтяжки, болтающийся // GPIO_Mode_IPD вход с подтяжкой к земле, GPIO_Mode_IPU вход с подтяжкой к питанию GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); } void SetSysClockTo72(void) { ErrorStatus HSEStartUpStatus; /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration -----------------------------*/ /* Системный RESET RCC (делать не обязательно, но полезно на этапе отладки) */ RCC_DeInit(); /* Включаем HSE (внешний кварц) */ RCC_HSEConfig( RCC_HSE_ON); /* Ждем пока HSE будет готов */ HSEStartUpStatus = RCC_WaitForHSEStartUp(); /* Если с HSE все в порядке */ if (HSEStartUpStatus == SUCCESS) { /* HCLK = SYSCLK */ /* Смотри на схеме AHB Prescaler. Частота не делится (RCC_SYSCLK_Div1) */ RCC_HCLKConfig( RCC_SYSCLK_Div1); /* PCLK2 = HCLK */ /* Смотри на схеме APB2 Prescaler. Частота не делится (RCC_HCLK_Div1) */ RCC_PCLK2Config( RCC_HCLK_Div1); /* PCLK1 = HCLK/2 */ /* Смотри на схеме APB1 Prescaler. Частота делится на 2 (RCC_HCLK_Div2) потому что на выходе APB1 должно быть не более 36МГц (смотри схему) */ RCC_PCLK1Config( RCC_HCLK_Div2); /* PLLCLK = 8MHz * 9 = 72 MHz */ /* Указываем PLL от куда брать частоту (RCC_PLLSource_HSE_Div1) и на сколько ее умножать (RCC_PLLMul_9) */ /* PLL может брать частоту с кварца как есть (RCC_PLLSource_HSE_Div1) или поделенную на 2 (RCC_PLLSource_HSE_Div2). Смотри схему */ //RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); RCC_PLLConfig(0x00010000, RCC_PLLMul_9); /* Включаем PLL */ RCC_PLLCmd( ENABLE); /* Ждем пока PLL будет готов */ while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) { } /* Переключаем системное тактирование на PLL */ RCC_SYSCLKConfig( RCC_SYSCLKSource_PLLCLK); /* Ждем пока переключиться */ while (RCC_GetSYSCLKSource() != 0x08) { } } else { /* Проблемы с HSE. Тут можно написать свой код, если надо что-то делать когда микроконтроллер не смог перейти на работу с внешним кварцом */ /* Пока тут заглушка - вечный цикл*/ // while (1) { //} } } void init_uart(void) { /* Enable USART1 and GPIOA clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA, ENABLE); /* Configure the GPIOs */ GPIO_InitTypeDef GPIO_InitStructure; /* Configure USART1 Tx (PA.09) as alternate function push-pull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); /* Configure USART1 Rx (PA.10) as input floating */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); /* Configure the USART1 */ USART_InitTypeDef USART_InitStructure; /* USART1 configuration ------------------------------------------------------*/ /* USART1 configured as follow: - BaudRate = 115200 baud - Word Length = 8 Bits - One Stop Bit - No parity - Hardware flow control disabled (RTS and CTS signals) - Receive and transmit enabled - USART Clock disabled - USART CPOL: Clock is active low - USART CPHA: Data is captured on the middle - USART LastBit: The clock pulse of the last data bit is not output to the SCLK pin */ USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1, &USART_InitStructure); /* Enable USART1 */ USART_Cmd(USART1, ENABLE); /* Enable the USART1 Receive interrupt: this interrupt is generated when the USART1 receive data register is not empty */ USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); /* NVIC Configuration */ NVIC_InitTypeDef NVIC_InitStructure; /* Enable the USARTx Interrupt */ NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); //NVIC_EnableIRQ(USART1_IRQn); } void clear_RXBuffer(void) { for (RXi=0; RXi<RX_BUF_SIZE; RXi++) RX_BUF[RXi] = '\0'; RXi = 0; } void USARTSend(const char *pucBuffer) { while (*pucBuffer) { USART_SendData(USART1, *pucBuffer++); while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET) { } } }  
    • Автор: Nitro N
      Здравствуйте! 
      Дано: 
      BLE модуль JDY-10 Гироскоп + Акселерометр модуль GY-521  USB UART CH340G USB bluetooth адаптер Цель:
      передавать сигналы датчика гироскопа и акселерометра через bluetooth модуль на ПК. Мои рассуждения:
      Модуль GY-521 имеет I2C интерфейс, на JDY-10 стоит МК CC2541 который тоже имеет I2C интерфейс. Надо как-то их соединить и заставить отправлять показания на ПК. Как это сделать пока мне не понятно. Иногда приходят мысли что без перепрошивки контроллера не обойтись. 

      Подскажите пожалуйста как это реализовать?

      П.С. В идеале вообще конечно использовать один контроллер для снятия значений и отправки на ПК, но пока так. 
    • Автор: motoalex
      Здравствуйте, написал код для приема данных по UART. Записываю данные в буфер и сравниваю его с массивом. Если все данные совпадают увеличиваю значение j до 13. И вывожу данные j ком порт. Пожалуйста помогите исправить код, а то в UART хлам сыпется. 
      unsigned char Buff[250]; unsigned char BuffIndex; unsigned char src[]= {'+','7','9','1','7','6','3','0','0','0','0','0','0'}; char * pch; int f2=0,i,j=0; void setup() { Serial.begin(9600); memset(Buff, '\0', 250); // Initialize the string BuffIndex=0; } void loop() { while(1) { //BuffIndex=0; // put your main code here, to run repeatedly: if(Serial.available()>0) { Buff[BuffIndex] = Serial.read(); BuffIndex++; if(BuffIndex>250) { BuffIndex=0; } for(i=0;i<=13;i++) { if(Buff[i]==src[i]) { j++; f2=10; } } if(j>13 && f2==10) { Serial.print(j); j=0; f2=0; } } } }  
    • Автор: Илья Юрьевич
      Товарищи, всем доброго времени суток!
      Расскажу ситуацию вкратце: Работаю в фирме, которая отчасти занималась обслуживание банкоматов, ремонтом и продажей запчастей для них. Ещё одно из направлений, это обслуживание кассовой техники и торгового оборудования. Если вкратце, то банкоматами перестали заниматься совсем, а на кассовую технику клиенты обновили парк оборудования. В сязи с этим, на складе пылится валяется куча банкоматского и торгового оборудования. От начальства поступил приказ, до конца года избавиться от всего ненужного. Если с банкоматскими железками я быстро нашёл разговор, подготовил их на сдачу в чермет, то с остальным оборудованием случилась беда. Жаба душит меня и всё, не могу такие вещи выбросить. Дело не в том, чтобы навариться, а в том, что наверняка кому-то что-то да нужно, а черметчики без разбора всё попилят и под пресс.
      По цене пишите, обязательно договоримся. Находится всё добро в Москве, территориально метро Нагатинская.
      Итак, ниже импровизированный список того, что примерно имеется на складе.
      1. Мониторы от банкоматов, 12" . Монитор специфически, по партномеру на фото без труда найдёте полное описание. В наличии наверно штук 20-30. По состоянию, после двух переездов, стали не очень, на многих имеются царапины, различных размеров, но есть и в идеальном состоянии, замотанные в стрейч.

      2. Осциллограф с1-112а . Даже не представляю как у нас очутился.

      3. Источники бесперебойного питания. По работоспособности не уверен, скорее всего нерабочие. По складу думаю штук 10 наковыряю.

      4. Сканер весы NCR. Вприниципе, там ломаться особо нечему, так что должны быть рабочими. На складе достаточное количество.

      5. Сканер штрихкодов стационарный, Даталоджик.

      6. Куча двигателей от банкоматов на 220в.

      7. Денежные ящики от касс.