Daftar Isi:
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-13 06:57
Layar OLED keren yang menunjukkan tanggal, waktu, dan suhu dalam Celcius dan Fahrenheit menggunakan Xinabox xChips berdasarkan ESP8266.
Langkah 1: Hal-hal yang Digunakan dalam Proyek Ini
Komponen perangkat keras
- XinaBox IP01 x 1 xChip USB Programmer berdasarkan FT232R Dari FTDI Limited
- XinaBox CW01 x 1 xChip Wi-Fi Core berdasarkan Modul Wi-Fi ESP8266
- XinaBox SW01 x 1 xChip Sensor suhu, kelembaban dan tekanan atmosfer berdasarkan BME280 dari Bosch.
- XinaBox OD01 x 1 xChip 128x64 Pixel Layar OLED
- XinaBox PU01 x 1 xChip USB (Tipe A) Catu Daya
- XinaBox XC10 x 1 xChip Bus Konektor
- Catu Daya USB 5V x 1
Aplikasi perangkat lunak dan layanan online
Arduino IDE
Langkah 2: Cerita
pengantar
Saya membangun proyek ini untuk menampilkan tanggal, waktu dan suhu UCT menggunakan XinaBox xChips yang menggunakan protokol bus I2C. Waktu diambil dari server Google NTP. Suhu sekitar diukur menggunakan SW01 xChip dan ditampilkan pada layar OLED OD01 xChip dalam Celcius dan Fahrenheit. Gambar di bawah ini menunjukkan tampilan OLED.
OLED menampilkan tanggal, waktu dan suhu
Langkah 3: Unduh File yang Diperlukan
Anda akan memerlukan perpustakaan dan perangkat lunak berikut untuk proyek ini.
- Arduino IDE - Pengembangan Perangkat Lunak di mana Anda akan membuat kode
- xSW01 - Pustaka sensor suhu
- xCore - Pustaka inti untuk XinaBox xChips
- xOD01 - Pustaka Tampilan OLED.
- Zona Waktu - Perpustakaan untuk memilih zona waktu Anda
- Waktu - Untuk menggunakan fungsi waktu
- NTPClient - Memungkinkan Anda mendapatkan waktu dari server
- Anda juga perlu mengunduh papan ESP8266 dan mengikuti instruksi yang menyertainya agar papan terpasang
Setelah diunduh, Anda akan menginstal IDE dan pustakanya. Ini cukup lurus ke depan jika Anda mengikuti instruksi.
Langkah 4: Merakit
XChip utama Anda yang akan mengeksekusi dan memproses program adalah CW01. Ini didasarkan pada Modul WiFi ESP8266 dan menggunakan protokol bus I2C. Untuk memprogram ke CW01, Anda memerlukan xChip pemrograman. IP01 memungkinkan kita untuk memprogram CW01 melalui port USB di komputer kita hanya dengan mengklik bersama dua xChips menggunakan konektor bus XC10 dan memasukkannya ke dalam port USB. Tidak ada kabel dan tidak ada solder diperlukan. Satu hal yang perlu diperhatikan adalah orientasi nama identifikasi xChip. Mereka semua harus berorientasi pada arah yang sama. Anda sekarang harus memiliki pengaturan berikut.
Klik bersama CW01 dan IP01 dan masukkan ke port USB di komputer Anda
Jika Anda sudah familiar dengan xChips Anda dapat menghubungkan setiap xChip bersama-sama menggunakan konektor bus XC10 yang ingin Anda gunakan untuk proyek Anda dan kemudian masukkan ke port USB. Kami akan menggunakan sensor suhu SW01 dan layar OLED OD01.
Anda dapat menghubungkan semua chip Anda bersama-sama dan kemudian memasukkannya ke port USB Anda
Langkah 5: Program
Unduh atau salin dan tempel kode di bawah ini ke Arduino IDE Anda. Jika Anda tidak membuat perubahan apa pun pada kode, cukup masukkan detail WiFi Anda di bidangnya masing-masing seperti yang ditunjukkan di bawah ini. Masukkan juga server waktu NTP yang andal. Saya telah menggunakan server waktu Google untuk proyek ini.
Detail WiFi dan server waktu NTP
Sekarang kompilasi dan unggah. Pastikan Anda telah memilih port dan papan COM yang benar di bawah menu alat di Arduino IDE. Setelah diunggah, waktu, tanggal, dan suhu akan ditampilkan seperti di bawah ini.
Setelah mengunggah, Anda akan melihat yang berikut:
Langkah 6: Jadikan Portabel
Anda sekarang dapat melepas unit dari port USB Anda dan memisahkan setiap xChip hanya dengan menariknya terpisah. Sejak pemrograman selesai, IP01 tidak lagi diperlukan. Anda sekarang dapat menghubungkan proyek Anda dengan cara apa pun yang Anda inginkan selama nama identifikasi semuanya berorientasi pada arah yang sama. Untuk memberi daya pada unit kami, kami akan menggunakan PU01. Ini memungkinkan kita untuk menyalakannya dari bank daya normal atau catu daya USB 5V apa pun. Saya telah menghubungkan milik saya seperti yang ditunjukkan di bawah ini.
Perakitan akhir. xChips dapat dihubungkan dengan cara apa pun yang Anda inginkan.
Langkah 7: Kesimpulan
Proyek ini akan memakan waktu 20 menit untuk diselesaikan. Jika Anda ingin waktu di lokasi Anda, pertimbangkan untuk melihat kode contoh di perpustakaan Zona Waktu atau lakukan aritmatika dengan waktu UTC. Tidak ada kabel yang digunakan dan tidak diperlukan penyolderan.
Langkah 8: Kode
Date_Time_Temp.ino Arduino Cukup masukkan detail WiFi Anda di bidangnya masing-masing dan unggah ke papan Anda.
#include // sertakan pustaka inti untuk XinaBox xCHIPS
#include // sertakan perpustakaan tampilan OLED #include // sertakan perpustakaan sensor suhu #include // sertakan fungsionalitas ESP8266WiFi #include // sertakan perpustakaan waktu #include #include #include #include #include xSW01 SW01; // tentukan properti NTP #define ntpOffset 60 * 60 // dalam detik #define ntpInterval 60 * 1000 // dalam milidetik // masukkan server waktu ntp yang andal di antara tanda kutip ganda // di sini saya telah menggunakan server waktu ntp google # define ntpAddress "time1.google.com" // mengatur klien NTP UDP WiFiUDP ntpUDP; NTPClient timeClient(ntpUDP, ntpAddress, ntpOffset, ntpInterval); // variabel suhu float tempC; // suhu float celsius; // fahrenheit // detail wifi anda const char* wifi_ssid = "XinaBox"; // wifi ssid const char* wifi_pass = "RapidIoT"; // kata sandi wifi Anda // variabel tanggal dan waktu String tanggal; String waktu klk; // variabel yang berisi hari dan bulan const char * days = {"Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"}; const char * bulan = {"Jan", "Feb", "Mar", "Apr", "Mei", "Juni", "July", "Aug", "Sep", "Oct", "Nov ", "Des"}; const char * ampm = {"AM", "PM"}; void setup () { tempC = tempF = 0; // inisialisasi suhu ke nol timeClient.begin(); // memulai klien NTP UDP // memulai komunikasi serial Serial.begin(115200); // mulai komunikasi i2c dan setel pin Wire.begin(2, 14); // mulai sensor suhu SW01.begin(); // mulai tampilan OLED OLED.begin(); // hapus tampilan OLED OD01.clear(); // buat koneksi wifi wifi_connect(); penundaan (1000); } void loop() { // dijalankan jika koneksi wifi dibuat jika (WiFi.status() == WL_CONNECTED) { SW01.poll(); // baca suhu tempC = SW01.getTempC(); // simpan suhu dalam celcius tempF = SW01.getTempF(); // simpan suhu dalam fahrenheit tanggal = ""; // hapus variabel tanggal clktime = ""; // hapus variabel waktu // perbarui klien ntp dan dapatkan stempel waktu unix utc timeClient.update(); unsigned long epochTime = timeClient.getEpochTime(); // mengonversi cap waktu yang diterima menjadi objek time_t time_t utc; utc = epochWaktu; // utc time TimeChangeRule utcRule = {"UTC", Terakhir, Matahari, Mar, 1, 0}; Zona waktu UTC(utcRule, utcRule); // format variabel waktu tanggal += hari[hari kerja(utc) - 1]; tanggal += ", "; tanggal += bulan[bulan(utc) - 1]; tanggal += " "; tanggal += hari(utc); tanggal += ", "; tanggal += tahun(utc); // format waktu ke format 12-jam dengan AM/PM dan tanpa detik clktime += hourFormat12(utc); clktime += ":"; jika (menit(utc)