Arduino — идеальный безмозглый раб. Дайте ему задание, и он будет выполнять задачу бесконечно, не допуская сбоев даже на наносекунду. С другой стороны, Raspberry Pi, или Raspi, — это компьютер, имеющий собственный мозг. Но он может дать сбой, поскольку в этот момент он занят другой работой. Представьте себе ситуацию, когда Arduino выполняет работу, а Raspberry Pi контролирует ее!
Здесь описан проект индикатора температуры с использованием плат Arduino и Raspi. Датчик температуры, такой как LM35, дает аналоговый выходной сигнал. У Arduino есть аналоговые контакты, а у Raspberry Pi — нет. LM35 подключается непосредственно к аналоговым контактам Arduino, а затем подключается к Raspi. Он отображает температуру на терминале. Давайте посмотрим, как это сделать.
Настройка Arduino
На рынке доступны во многих вариантах платы разработки Arduino. Для этого проекта я использовал плату Arduino Uno. Датчик температуры LM35 легко доступен в Индии. Он вырабатывает аналоговое напряжение, прямо пропорциональное температуре, с выходной мощностью 1 мВ на 0,1°C (10 мВ на градус). Датчик имеет температурный диапазон от -55°C до +150°C.
Рис. 1. Подключение датчика LM35 к ArduinoРис. 2: Последовательный монитор
Подключите датчик LM35 к Arduino, как показано на рис. 1, а затем подключите кабель USB к компьютеру. Откройте Arduino IDE, скомпилируйте и загрузите следующий скетч (программу) arduino_temp.pde в плату UNO:
arduino-temp.pde байт n = 0; const int tpin=0; void setup(){ Serial.begin (9600); pinMode(tpin, INPUT);
if (char(n)==’f’) { Serial.print(far); Serial.print( ":Дег Фаренит"); Serial.println(“”);
else Serial.print(“введите c или f для температура»); delay(1000);
Скетч (программа) преобразует значения AnalogRead в милливольты и делит их на 10, чтобы получить градусы.
Запустите скетч, открыв Serial Monitor в Arduino IDE и написав c, чтобы получить температуру в градусах Цельсия, и f, чтобы получить температуру в градусах Фаренгейта (рис. 2).
Пока всё хорошо!
Настройка Raspberry Pi
У вас должна быть плата Raspi с базовой настройкой и подключением к Интернету. Установите Python, Python-serial и любое программное обеспечение для последовательной связи, например Putty или Minicom. Я предпочитаю коммуникационное программное обеспечение Minicom, поскольку оно очень легкое и быстрое. Чтобы установить их на компьютер Raspi, введите следующую команду:
Теперь, чтобы использовать последовательный порт Raspi, нам нужно отключить getty (программу, отображающую экран входа в систему). Для этого найдите следующую строку в файле /etc/inittab, введя приведенную ниже команду:
$sudo nano /etc/inittab
Появится экран, где вам нужно удалить строку, содержащую getty и 115200. Просто закомментируйте ее, добавив # перед строкой, как показано ниже:
Теперь, когда Raspi загружается, он отправляет данные на последовательные порты. Нам нужно остановить его из файла /boot/cmdline.txt. Это обычный текстовый файл, анализируемый Raspi как текстовый файл. Вам необходимо удалить строку из файла cmdline.text, выполнив следующую команду. (У вас должна быть резервная копия этого файла, поэтому сохраните исходный файл как cmdline_backup.txt.)
Сохранить и выйти. Перезагрузите Raspi, чтобы все вступило в силу.
Конфигурация совмещения
Arduino будет располагаться поверх Raspi, а затем взаимодействовать с датчиком LM35. Arduino передаст данные в последовательный порт Raspi.
GPIO 14 и GPIO 15 (физические контакты 8 и 10) Raspi — это контакты UART TX и RX. Выводы RX и TX Arduino просто войдут в эти GPIO 14 и 15 контакты, а контакт заземления Arduino будет подключен к любому одному заземляющему контакту (физический контакт 6, 9 или 20) Raspi.
Но пока не делайте этого. Ваша плата Raspi будет повреждена и не подлежит ремонту. Уровень напряжения на выходном выводе Arduino составляет примерно 5 В, тогда как у Raspi едва ли составляет 3 В. Нам нужно уменьшить входное/выходное напряжение Arduino до соответствующего уровня напряжения Raspi, используя схему, показанную на рис. 3.
Подключаются только три провода, остальное — питание, которое может быть отдельным или общим. Провода последовательного соединения, TX и RX, будут заменены друг другом с помощью резисторной сети, как показано в таблице, между контактом Arduino TX и контактом Raspi RX (контакт 10).
Тестирование проекта
Рис. 3: Соединение между Arduino и Raspi | Arduino Piggyback
Теперь наша главная цель — сделать Arduino связующим звеном с Raspi — уже в пути. После подключения Arduino и Raspi, как показано в таблице и на рис. 3, switch на питании обеих плат.
Подключите Raspi либо через автономный режим, либо в прямом режиме (я всегда предпочитаю автономный режим), а затем запустите Minicom следующим образом:
В Minicom есть окно справки, доступ к которому можно получить, нажав клавиши Ctrl+a, z, чтобы просмотреть более подробную информацию о Minicom.
Minicom получит аналоговые данные из последовательного порта Raspi и отобразит их в окне терминала. Итак, используя командную строку и Minicom, мы можем соединить платы Arduino и Raspi для нашего приложения. Для этого мы используем программу Python temp1.py для доступа к последовательному порту Raspi.
# temp1.py импортировать серийный номер время импорта ser = серийный.Serial('/dev/ttyAMA0',9600, timeout=10) ser.open() #ser.write(“c”) print ‘Введите свои команды ниже.\r\ nВставьте «выход», чтобы покинуть приложение. input=1 while 1 : # получить ввод с клавиатуры input = raw_input("Введите выбор >> ") # пользователей Python 3 # input = input(“>> “) if input == ‘exit’: ser.close() exit() else: ser.write(input)
out = ‘’ time.sleep(1) while ser.inWaiting() > 0: out += ser.read(1) if out != '': print «Введите выбор >>» + выход
Запустите программу Python, введя следующую команду:
$>sudo python temp1.py
Когда в Raspi откроется последовательная консоль, введите c, чтобы получить температуру в градусах Цельсия или f, чтобы получить температуру в градусах Фаренгейта.
Рис. 4: Показания температуры на терминале
Так вы сможете увидеть данные о температуре, поступающие от LM35, подключенного к Arduino, который подключен к Raspi. Показания температуры на терминале, снятые во время тестирования, показаны на рис. 4.
<час/>
Сомнатх Бера — заядлый пользователь программного обеспечения с открытым исходным кодом. По профессии он является экспертом в области теплоэнергетики и работает дополнительным генеральным директором в NTPC Ltd.
Эта статья была впервые опубликована 1 апреля 2015 г. и обновлена 6 мая 2020 г.
Все ссылки на книги и журналы, представлены на этом сайте, исключительно для ознакомления, авторские права на эти публикации принадлежат авторам книг и издательствам журналов!
Подробно тут! Жалоба