Работа с модулем SIM800C на Pine64

    2021-04-07 01:58 | Автор: jekader | Filed under: FedoraMD

    Интернет - штука удобная, но телефонию пока никто не отменял. Поэтому взял поиграться Pi-совместимый GSM модуль SIM800C от Waveshare и в этой статье документирую свой вполне удачный опыт.

    Pine64 + SIM800C
    модуль устанавливается без проблем

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

    Осталось понять, как говорить с этим модулем чтобы использовать его на практике - например для приёма или отправки SMS.

    Согласно инструкции по ссылке выше, общаться с платой надо по UART и делается это например утилитой minicom. Устанавливаем её:

    apt install minicom

    Теперь запускаем согласно инструкции для Raspberry PI:

    minicom -D /dev/ttyS0

    Увы, в моём случае ответа не последовало. Выхожу по Ctrl+A .. Q и начинаю думать и изучать отличия между платами.

    Для уверенности проверил на Raspberry PI 4 - после ритуалов по отключению tty console и активации UART контакт есть, значит плата живая.

    К счастью, имеется таблица соответствия ног на гребёнках Raspberry PI и Pine64. Согласно ей, UART на ногах 6 и 8 соответствующий /dev/ttyS0 на Raspberry PI на плате Pine64 обозначен как UART2, а этот порт по умолчанию не активирован.

    Решается это в Armbian довольно просто - нужно включить соответствующий overlay в загрузчике, а именно - добавить строку overlays=uart2 в файл /boot/armbianEnv.txt и перезагрузиться.

    Теперь подключаемся уже к правильному порту:

    minicom -D /dev/ttyS2

    Для проверки - вводим буквы AT и жмём Enter - должен появиться ответ OK. Есть контакт!

    Зная правильное имя устройства можно общаться с модемом из любого удобного языка программирования, а для примера можно глянуть вот это видео:

    https://www.youtube.com/watch?v=J4QoeTLoL4U

    Разжёвано всё довольно подробно, есть даже пример скрипта на python для получения и отображения SMS:

    https://github.com/Sean-Bradley/SMS-Scripts

    Ещё из полезного для Pine64 - в инструкции производителя упомянут "колдунский скрипт" pi_gpio_init.sh без объяснения его функций. Вкратце - он дёргает GPIO4 (7 нога гребёнки), тем самым включая модем.

    Согласно таблице соответствия, для Pine64 это будет делать GPIO362 и активируется он следующими тремя командами:

    echo "362" > /sys/class/gpio/export
    echo "out" > /sys/class/gpio/gpio362/direction
    echo "0" > /sys/class/gpio/gpio362/value

    Здесь мы активируем GPIO362 в качестве вывода и подаём на него логический ноль. В данном состоянии модем включится. Если отправить единицу - выключится.

    Это можно проверить, подключившись в одном терминале к модулю с помощью minicom, а в другом отправить 1 на GPIO362:

    echo "1" > /sys/class/gpio/gpio362/value

    В консоли модема увидим следующее сообщение:

    NORMAL POWER DOWN

    Одновременно, индикатор статуса перестанет мигать.

    В моём случае модем и так включается, но чтобы уж наверняка модем включался при загрузке три строки вверху можно сохранить в /etc/rc.local и спать спокойно. Перезагрузить модем удалённо можно в любой момент, дёрнув GPIO.

    Ну а дальше уже каждый сам горазд настраивать автоматизацию на основе этого модуля. Он умеет не только SMS но и GPRS и даже Bluetooth, так что применений ему масса.

    Надеюсь, данная заметка окажется полезной и упростит работу с подобными платами расширения людям, не знакомым с работой UART на экзотических одноплатных компьютерах.

    1 Star2 Stars3 Stars4 Stars5 Stars (4 votes, average: 4,00 out of 5)
    Loading...

    Метки: , , ,

    Comments (1) »


    1 комментарий

    1. jekader:

      Для MangoPI MQ-Pro следующие изменения:

      1) высвобождаем порт ttyS0 от системного мусора — убираем console=ttyS0 из загрузчика и отключаем getty на этом порту:

      systemctl stop serial-getty@ttyS0.service
      systemctl disable serial-getty@ttyS0.service

      2) подключаемся через minicom для отладки

      minicom -D /dev/ttyS0

      3) 7 нога гребёнки — это gpio39, соответственно для перезагрузки модуля:

      echo «39» > /sys/class/gpio/export
      echo «out» > /sys/class/gpio/gpio39/direction
      echo «0» > /sys/class/gpio/gpio39/value

    Leave a comment

    *