суббота, 4 августа 2018 г.

DS18B20: оригинальный и с aliexpress.com

Приобрел некоторое время назад "на поиграться" на aliexpress датчики:
5PCS/LOT DALLAS DS18B20 18B20 18S20 TO-92 IC CHIP Thermometer Temperature Sensor Цена: US $2.78 / lot,
т.е. примерно 180 рублей за пять штук.
У меня в городе можно купить 100рублей за штуку - явная выгода.


слева оригинальный датчик, справа китайская подделка. На оригинале маркировка выгравирована,  на подделке краска, и шрифт отличается.


Недавно дошли руки поиграться с ними (https://github.com/rawaaw/spi-1wire).
Цель была на maxII сделать конвертер SPI<>1wire для подключения к железкам типа Orange Pi
(да, я знаю, что для OPi есть драйвер 1wire, но так неинтересно).

S/N из датчика читается, температура тоже читается, но меня смутило то,
что команда READ SCRACHPAD возвращает какие-то странные данные.

READ SCRATHPAD
read data
scratchpad: 500505A07FFFFFFF
scratchpad CRC: 58
calculated CRC: 58
В datasheet написано другое.

И время конверсии подозрительно короткое.
Должно быть по умолчанию около секунды, а тут порядка 100ms.

Ок, купил в ЧипДип оригинальный датчик.
Тут все, как написано в мануале.
READ SCRATHPAD
read data
scratchpad: 840105A01FFF0C10
scratchpad CRC: C2
calculated CRC: C2

В общем, в китайской подделке нет EEPROM, и АЦП скорее всего 8 или 9 разрядный.

Т.е. температуру измерять можно, и результат похож на правильный,
но в качестве полноценной замены использовать нельзя.

воскресенье, 21 января 2018 г.

USB-модем Билайн ZTE MF667. Кастомизация web ui под разных операторов

На разлоченном модеме USB-модем Билайн ZTE MF667 (прошивка WEB_BLERUSMF667V1.0.0B02) с симкартой теле2 захотелось, чтобы работала проверка баланса.

Кастомизация была сделана для людей, которые не хотят запоминать номера ussd запросов.
Ну, и чтобы было удобно для всех.

Ссылка на патчи: https://github.com/rawaaw/zte-mf667-webui

суббота, 2 декабря 2017 г.

УСПД GME920G

Попало в руки несколько железок GME920G.

GME920G - устройства сбора и передачи данных УСПД серии GME920 (далее - УСПД) предназначены для учета энергоресурсов  бла-бла-бла.

На самом деле, linux устройство на AT91RM9200/64Mb RAM + serial порты + модем + 4 IO порта, которое легко можно переделать для различных нужд.

Самое главное, у коллеги была документация (GME920G-UserManual-V1_3.pdf), за что ему огромное спасибо.
В интернете ничего толкового нет (видимо, было когда-то, но исчезло вместе с сайтом производителя)

У меня используется в качестве термометра с передачей данных через SMS.

На https://github.com/rawaaw/GME920G.git выложил документацию, прошивки и кое-что полезное, что обнаружил, пока ковырялся с железкой.



понедельник, 15 мая 2017 г.

x-hdl 4.1.4 и 4.2.5. генерация лицензионного файла

x-hdl - утилита для конвертации VHDL <> Verilog HDL.
Производитель X-Tek Corporation.

Ниже, описана генерация лицензии для x-hdl 4.1.4 и 4.2.5 (для него нужна nodelocled лицензия) в домашних условиях.

============
файл с лицензией имеет вид:

[ece21eddb370f0e7f0b4de65d144cd907413bc2d]
id=1
feature = XHDL
version = 2007.0519
start = 09-May-2007
end = 19-May-2016
count = 1
server1 = d43d7eb9df76
servername1 = home
wan = 0
options = 0
supercedes = 0
nodelocked = 0

или

[e2613d86fc4bab0913c943c595b1b660e045bc40]
id=1
feature = XHDL
version = 2007.0519
start = 09-May-2007
end = 19-May-2016
count = 1
server1 = d43d7eb9df76
servername1 = home
wan = 0
options = 0
supercedes = 0
nodelocked = 1
============

d43d7eb9df76 - mac адрес интерйса на машине (lower case !!!). В 4.1.4 можно посмотреть с помощью xlmhostid.exe
серверов может быть до трех штук (server1-server3).
В строчке для генерации подписи сейчас для server2, server3 пусто :::

============
подпись, и она же номер лицензии - это sha1 от :

02231960072019601023198201041984 и
1:XHDL:2007.0519:19-May-2016:09-May-2007:1:d43d7eb9df76:::false:false:0:0

т.е. делаем файл (одна строка без <cr> !!!)
==
022319600720196010231982010419841:XHDL:2007.0519:19-May-2016:09-May-2007:1:d43d7eb9df76:::false:false:0:0
==

и openssl sha1 файл. 40байтовый хэш вставляем в [...]

==========
пример nodelocled = 1 лицензии:

02231960072019601023198201041984
1:XHDL:2007.0519:19-May-2016:09-May-2007:1:D43D7EB9DF76:::false:true:0:0

654f1c18ace8a621acf060069a4c5c438dfa0e5e

==========

вторник, 11 апреля 2017 г.

stm32, windows, cdc-eem

STM32 в качестве ethernet адаптера.


Некоторое время назад обнаружил на aliexpress дешевые платы на STM32F103C8T6.
Например: STM32-Minimum-System-Development-Board-Module
В качестве игрушки то, что надо: спалить не жалко, писать под stm32 не сложнее, чем под Arduino (CubeMX + uVision + HAL), отлаживаться гораздо проще и удобнее, а производительность и возможности даже сравнивать нельзя.

Для удобства обмена данными давно хотелось видеть контроллер как ip устройство, которое могло бы подключать к хосту с Windows (хотя бы Win10, лучше к Win7-10).

Естественно, сразу возник вопрос, какую модель реализовывать: RNDIS,  CDC-EEM , CDC-ECM, CDC-NCM ?

RNDIS уже делали (например, https://habrahabr.ru/post/274663/ ) - неинтересно;

ECM, NCM - для винды нет драйверов;

Кстати, для NCM (линуксовый хост <> stm32) есть проект https://www.keil.com/pack/doc/mw/USB/html/dev_cdc_ncm.html, но с использованием Keil RTX.

EEM делали, но никакой конкретики (по сути реклама) не описано:  https://habrahabr.ru/company/metrotek/blog/264293/.

EEM в исходниках для контроллеров есть, но не для cortex и не на C (xmos).
Можно подсмотреть как устроены дескрипторы устройства: https://github.com/xcore/sc_usb/blob/master/app_example_usb_eem/src/endpoint0.xc (hiSpdConfDesc).

Что касается хоста, в Win10 обнаружился драйвер usbnet.sys, который, вроде бы, служит для связи с EEM устройством, судя по .inf файлу. У Microsoft никакой конкретики не нашел.
Но, как выяснилось, хотя на дескриптор (class 02/subclass 0c/protocol 07) он устанавливается, получаем статус - "требуется дальнейшая установка устройства" (или что-то подобное).

Сторонние производители драйвера делают, но хотят денег и работают только с конторами-производителями железа. Тоже неинтересно.
Например:
http://www.mcci.com/mcci-v5/hostside/eem_drivers.html
http://www.belcarra.com/2012/01/belcarra-eem-configuration-extension.html
http://www.thesycon.de/eng/prod_usbdevicedriver.shtml

На некоторое время идея была зарошена,
пока на сайте HID global случайно не обнаружился  среди их дистрибутивов драйвер eem:
https://www.hidglobal.com/file/hidglobalusbcdceemdriverv25100zip .

Как оказалось, это драйвер от Thesycon Software Solutions (ссылка выше) с кастомизированным VID/PID.
Так как драйвер для винды нашелся - появился смысл сделать eem-device.
Использовалось:
плата с STM32F103C8T6
драйвера EEM для win7-10
сниффер -  USBlizer и Wireshark c USBpcap
в качестве "рыбы" в CubeMX был сгенерирован пример для CDC-ACM под Keil uVision.

На текущий момент реализовано arp и icmp echo request/reply (т.е. устройство отвечает на ping).
Исходники  https://github.com/rawaaw/cdc-eem-f103
Там же драйвера, извлеченные из msi.

При подключении устройство опознается как ethernet адаптер.

Вручную адаптеру нужно присвоить адрес 10.11.12.1/24.
Контроллер - устройство с адресом 10.11.12.2/24 и mac-адресом 11.12.13.13.14.15.

Устройство видно в arp таблице, и оно отвечает на ping.


пятница, 5 августа 2016 г.

NE40E CPU load measurement OID.

NE40E (X3 LPU=1,2,3)  CPU load measurement OID.

#momentary
1.3.6.1.4.1.2011.6.3.4.1.2.0.< LPU slot number>.0   <slot number> = 1,2,3

1.3.6.1.4.1.2011.6.3.4.1.2.0.133.0  - mpu master
1.3.6.1.4.1.2011.6.3.4.1.2.0.134.0  - mpu slave

#average 1 min
1.3.6.1.4.1.2011.6.3.4.1.3.0.<LPU slot number>.0   <slot number> = 1,2,3

1.3.6.1.4.1.2011.6.3.4.1.3.0.133.0  - mpu master
1.3.6.1.4.1.2011.6.3.4.1.3.0.134.0  - mpu slave

#average 5 min
1.3.6.1.4.1.2011.6.3.4.1.4.0.<LPU slot number>.0   <slot number> = 1,2,3

1.3.6.1.4.1.2011.6.3.4.1.4.0.133.0  - mpu master
1.3.6.1.4.1.2011.6.3.4.1.4.0.134.0  - mpu slave

Result: