Fez Panda 2 чтение IButton

    Добрый день.
    Извиняюсь если не в тот топик поместил, но вроде показался этот подходящим, да и кармы для других не хватает.
    Давненько приобрел для себя Fez Panda 2 (заказывал на dfrobot)
    Название
    Модель
    Цена
    2A Dual Motor Controller
    DRI0002
    $17.00
    FEZ Panda II- A .NET Micro Framework Controller
    DFR0142
    $39.90
    Bluetooth Bee
    TEL0023
    $26.00
    IO Expansion Shield For Arduino(V5)
    DFR0088
    $18.00
    HKBRAM — без страховки (вес 235.00 г):
    $7.00
    Итого:
    $107.90

    Побаловался и забросил. Вчера вечером попался сей девайс на глаза, а рядом ключи с «таблеткой» от домофона. Вот и решил попробовать считать данные из него. Работает он по интерфейсу 1-Wire (который согласно описанию панды «available on any IO»)

    Расписывать его работу не буду, кому интересно можно прочесть здесь
    Для работы нам понадобится спаять/скрутить вот такую схемку:

    подтягивающий резистор



    пруф

    Код приложения выглядит так:
    using System;
    using System.Threading;

    using Microsoft.SPOT;
    using Microsoft.SPOT.Hardware;

    using GHIElectronics.NETMF.FEZ;
    using GHIElectronics.NETMF.Hardware;

    namespace iButton
    {
      public class Program
      {
        static OneWire ow = new OneWire((Cpu.Pin)FEZ_Pin.Digital.Di4);
        static OutputPort led = new OutputPort((Cpu.Pin)FEZ_Pin.Digital.LED, false);

        public static void Main()
        {
          bool ledState = false;

          while (true)
          {
            byte[] readall = new byte[8];

            if (ow.Search_GetNextDevice(readall))
            {
              string hex = ByteArrayToString(readall);
              Debug.Print("========================");
              if (readall[0] != 0x01)
              {
                Debug.Print("Device is not a DS1990A family device.");
              }
              Debug.Print(hex);

              for (int i = 0; i < 6; i++)
              {
                Thread.Sleep(200);
                ledState = !ledState;
                led.Write(ledState);
              }
            }
          }
        }

        public static string ByteArrayToString(byte[] ba)
        {
          string hex = string.Empty;
          for (int i = ba.Length - 1; i >= 0; i--)
          {
            hex += " " + ByteToHex(ba[i]);
          }

          return hex;
        }

        public static string ByteToHex(byte b)
        {
          const string hex = "0123456789ABCDEF";
          int lowNibble = b & 0x0F;
          int highNibble = (b & 0x0F0) >> 4;
          string s = new string(new char[] { hex[highNibble], hex[lowNibble] });

          return s;
        }
      }
    }

    * This source code was highlighted with Source Code Highlighter.



    Если в ближайшее время куплю пустой ключ то попробую его запрограммировать имеющимися данными.

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 26

      +1
      DS1990A не бывают пустыми. расскажите подробнее что и куда вы собрались запрограммировать?
        0
        Если не прав, поправьте, но как тогда пишут на болванки и делают копии ключей?
            0
            ну да, но это совсем другая микросхема. у нее тоже есть уникальный идентификатор, но в придачу к нему ещё и 64к перезаписываемой памяти. в ключах от домофана оно, как правило, не используется
              0
              Этот ключ предназначен, в основном, для сохранения данных из памяти контроллера — записанных ключей, паролей, разрешений, прочих настроек домофона или standalone контроллера. Что, собственно, не мешает хранить в нем любые данные.
          +1
          А что получилось считать?
            +2

            Это инвертированный массив (читался в обратном порядке)
            1-й блок CRC
            2-й сам ключ (часто используют только 4 байта для экономии памяти домофона)
            3-й идентификатор iButton Dallas
            0
            Я всегда думал что в этих ключах как раз зашит ключ, который потом запоминается устройством к которому он будет применяться, а не наоборот.
              0
              Но таких таблеток же копии делают.
                +1
                делают, но их копии это совсем другие микросхемы, и перезаписываются они по другим протоколам, а затем эмулируют поведение DSов
              +1
              Кстати, на многих таблетках ключ выгравирован прямо на поверхности, его даже считывать не надо :)

              www.google.ru/search?q=DS1990A&tbm=isch
                +1
                более того, на всех.
                то на чем он не выгравирован — это не Dallas микросхемы )
                  0
                  считывал ключ у коллеги с оригинала (с гравировкой) и с нескольких левых, идентификатор все показывают Dallas)
                    +2
                    image

                    если вы имеете ввиду идентификатор 0x01, тот который у вас в комментарии выше подчеркнут синим, то это идентификатор микросхемы. для ds1990A он 0x01, а например для DS18b20 он 0x28.
                    по нему определяют какая микросхема подключена и какие команды она умеет выполнять.

                    опять же в оригинальных микросхемах от далласа весь этот блок изменить нет ни какой возможности, он уникален для каждой микросхемы. в этом и прелесть 1-wire.

                    теперь про не оригинальные копии ключей: — это совершенно другие микросхемы, которые программируются по совершенно другим протоколам, а при работе выдают себя за даллас (эмулируют их). да у них можно изменять этот блок, но мало кто знает как ;).
                    также рекомендую посмотреть общую информацию по 1-wire. например:
                    habrahabr.ru/post/101954/
                    robocraft.ru/blog/communication/117.html
                    да хотябы и тут robocraft.ru/blog/communication/117.html
                      +1
                      простите опечатался, последняя сыллка не вставилась
                      должна была быть www.maxim-ic.com/products/1-wire/
                        0
                        да у них можно изменять этот блок, но мало кто знает как ;).
                        Тем интереснее )
                  0
                  Расскажите про эту панду — какая среда разработки, где есть сообщество?
                    0
                    Присоединяюсь к просьбам рассказать об этой панде. Есть ли среды разработки под линукс. Поддерживают ли эти среды нормальные ЯП.
                    Довольно заманчивая штука для использования в качестве master-контроллера. Правда, стоит, конечно, дороговато…
                      0
                      Описание на русском.
                      Home
                      Куча примеров
                      Да и так в инете можно найти чужие наработки.

                      От себя скажу: девайс понравился, достаточно шустрый ( 72МГц, 32-bit ARM7 процессор, 512КБ Flash (148КБ доступно), 96 КБ RAM (62КБ доступно)) имеет встроенный кард ридер, usb (может работать в режиме хоста), куча портов, совместима с Arduino шилдами. Разработка ведется в MS Visual Studio (поэтому по Windows) на C# с использованием MicroFramework и GHI библиотек, по моему мнению — удобно и легко (но .net немного порезан).
                        0
                        А как насчет linux + C?
                        // не покупать же только ради одной (к тому же еще и дорогой) железяки дополнительный компьютер + венду + Visual Studio + учиться новому ЯП?
                          0
                          нет нельзя
                            0
                            Жаль.
                          0
                          расскажите больше .net microframework,
                          я вот все тоже пытаюсь с ним разобраться но у меня не получается. я правда пытаюсь его запустить на lpc1343.

                          но как вобще с ним работать? как его подключить не к отладочной плате, а к своей, саморазведеной?
                          +1
                          512КБ Flash (148КБ доступно)
                          тоесть 300к идет только под сам фрймворк? нифигасебе…
                          –1
                          да вот еще примерчик баловства
                          Летом когда жена поедет к маме буду трикоптер на ней собирать )

                        Only users with full accounts can post comments. Log in, please.