Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Raspbian OS Узнайте, как я сделал этот цифровой светодиодный термометр с Raspberry Pi Zero W, светодиодной лентой, OLED-дисплеем и специальной печатной платой.
Он автоматически перебирает список городов и отображает температуру на OLED-дисплее и на светодиодах. Но вы также можете вручную выбрать город для отображения с помощью кнопок сбоку. Вдобавок к этому он отключит светодиоды и OLED, если он был неактивен в течение нескольких минут, и снова включится, если обнаружит значительное изменение освещения (контролируется LDR).
Запасы
- Raspberry Pi Zero W и SD-карта с ОС Raspbian
- 1,5-дюймовый OLED-модуль от Waveshare
- Блок питания 5V 2.4A для Raspberry Pi
- 5-метровая светодиодная лента WS2812B, 30 светодиодов / м
- Винты, шайбы, болты и стойки.
- Пользовательская печатная плата с кнопками, переключателем, ldr, штыревыми разъемами и т. Д.
- Паяльник и припой
- Горячий клей
- Клей для дерева
- фанера 4мм и 6мм
- белый акрил 3мм
Шаг 1. Данные о погоде
Благодарим StuffWithKirby за его код для чтения данных о погоде в формате JSON на python.
Я бесплатно собираю данные о погоде с OpenWeatherMap.org, где они предоставляют данные о погоде из множества крупных городов во многих странах.
1. Начните с создания БЕСПЛАТНОЙ учетной записи на OpenWeatherMap.org.
2. Затем скопируйте свой API-ключ, чтобы использовать его позже.
3. Теперь загрузите, разархивируйте и откройте файл city.list.json.gz, найдите города, которые вы хотите отобразить, и скопируйте идентификаторы города для дальнейшего использования.
Шаг 2: Настройка RPi и написание кода
Сначала я подключил OLED к Pi и установил необходимые библиотеки для OLED, как описано производителем здесь.
Убедитесь, что RPi подключен к Интернету.
1. Включите функцию I2C и SPI в raspi-config в разделе «Параметры интерфейса». Выходим и перезагружаемся.
2. Запустите это, чтобы обновить:
sudo apt-get update
3. Выполните следующие команды, чтобы установить необходимые библиотеки:
sudo apt-get install python-dev
sudo apt-get install python-smbus sudo apt-get install python-serial sudo apt-get install python-imaging
4. Выполните следующую команду, чтобы открыть файл конфигурации:
Судо нано / и т.д. / модули
Убедитесь, что следующие две строки находятся в файле конфигурации, затем выйдите и перезагрузитесь:
i2c-bcm2708
i2c-dev
5. Теперь запустите это, чтобы клонировать мой репозиторий GitHub:
git clone https: / /github.com/Anders644PI/1.5inch-OLED-with-RPi.git
6. Зайдите в новую папку и разархивируйте RPi_GPIO-0_6_5.zip:
разархивировать RPi_GPIO-0_6_5.zip
Запустите это, чтобы установить библиотеку:
cd RPi_GPIO-0_6_5
sudo python setup.py установить
7. Вернитесь в основную папку, набрав:
cd /home/pi/1.5inch-OLED-with-RPi/
Или
CD..
Затем проделайте то же самое с spidev-3_2.zip.
8. Затем разархивируйте wiringPi.zip:
разархивировать проводку
cd wiringPi
И запустите эти команды:
chmod 777 сборка
./строить
Проверьте установку с помощью:
gpio –v
9. Вернитесь в основную папку и разархивируйте bcm2835-1_45.zip
разархивировать bcm2835-1_45.zip
cd bcm2835-1_45
10. Затем запустите это, чтобы установить библиотеку:
./configure
сделать sudo сделать проверку sudo сделать установку
11. Снова вернитесь в /home/pi/1.5inch-OLED-with-RPi/ и запустите это, чтобы протестировать OLED:
cd / Demo_Code / Python /
sudo python main.py
Затем мне также пришлось установить библиотеки для светодиодной ленты WS2812B, следуя этому руководству.
После этого оставалось только написать код, что заняло около пары месяцев от начала до конца, работая над ним и заканчивая. Мой код можно найти на моем GitHub здесь.
Шаг 3. Настройка Weather API
1. Переведите CD в LED_Thermometer_Code_and_OLED_driver:
cd LED_Thermometer_Code_and_OLED_driver
2. Затем откройте Official_Digital_LED_Thermometer_v1-0.py:
nano Official_Digital_LED_Thermometer_v1-0.py
Затем прокрутите вниз и отредактируйте api-key на свой api-ключ с openweathermap.org, как показано на изображении выше. Также измените идентификаторы городов и названия городов на желаемые местоположения.
Шаг 4: индивидуальная печатная плата
Второй приз в Raspberry Pi Contest 2020