Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

eDOT - Jam Presisi dan Stasiun Cuaca Berbasis Arduino

Komponen dan persediaan

Teknologi Microchip ATMEGA 328P-PU
× 1
MAXIM MAX7219
× 6
BOSCH BME280 - papan breakout GY-BMEP
× 1
Adafruit Luckylight 8x8 dot matrix LED display - M1603095
× 6
DS3231
JAM RTC
× 1
Arduino Nano R3
× 1
Arduino UNO
× 1
eDOTcore
× 1

Alat dan mesin yang diperlukan

Flashforge Dreamer

Aplikasi dan layanan online

Arduino IDE

Tentang proyek ini

edOT

adalah jam presisi dan stasiun cuaca berbasis Arduino dengan penerima jarak jauh IR dan penyesuaian kecerahan otomatis.

Perangkat telah dirancang agar mudah diperluas dengan perangkat keras tambahan seperti modul WIFI atau lainnya.

Berkat enam layar 8x8 dot matrix LED dapat digunakan untuk menampilkan berbagai jenis informasi yang datang baik dari sensor internal, pesan bergulir kustom atau nirkabel dari internet (RSS, dll)

Ini memiliki konsumsi daya yang sangat rendah, desain yang sederhana dan elegan yang menggabungkan bagian depan kaca dan bagian bodi yang dicetak 3D.

Proyek ini sedang dalam pengembangan dan saya akan diperbarui.

Unduh bagian 3D di Thingiverse

Dan lihat juga saluran Youtube saya untuk proyek lainnya:

https://www.youtube.com/channel/UCbIomyFKzBiLHqEb2xv9GHQ

B.O.M.

  • N.1 x 3D dicetak setengah badan kiri
  • N.1 x 3D dicetak setengah badan kanan
  • Sampul kiri cetak N.1 x 3D
  • Sampul kanan cetak N.1 x 3D
  • Kaki cetak N.2 x 3D
  • Dukungan tampilan cetak N.12 x 3D
  • N.1 x Kaca mengkilap 240x75x5 (mm)
  • N.1 x Filter oranye
  • N.6 x Adafruit 8x8 dot matrix tipe tampilan Luckylight M1603095 (Putih)
  • Papan pengontrol N.6 x MAX7219
  • N.1 x papan pemutus USB
  • Papan breakout N.1 x BME280
  • Chip N.1 x DS3231
  • N.1 x penerima IR jenis IRM-56384
  • N.1 x jenis fotoresistor LDR-07
  • N.1 x ATMEGA328PU (papan khusus Arduino)
  • Tombol taktil N.6 x OMRON 12mm

eDOTcore PCB

Akhirnya saya mendapatkan prototipe pertama dari papan kontrol untuk eDOT.

BUKA halaman proyek eDOTcore

Kode

  • eDOT:Stasiun cuaca dan jam presisi serbaguna
eDOT:Stasiun cuaca dan jam presisi serbagunaArduino
// eDOT:Stasiun cuaca dan jam presisi serbaguna//HISTORY// 11/12/2105 Menambahkan koefisien kalibrasi pengukuran// 09/06/2016 Menambahkan kecerahan tampilan otomatis// 09/06/2016 Menambahkan penjadwal tugas// 07/08/2016 Menambahkan eDOT splashscreen#include #include #include #include #include #include  #include #include "RTClib.h"#include Adafruit_BME280 bme; // I2CRTC_DS3231 rtc;int pinCS =10; // Lampirkan CS ke pin ini, DIN ke MOSI dan CLK ke SCK (cf http://arduino.cc/en/Reference/SPI )int numberOfHorizontalDisplays =7;int numberOfVerticalDisplays =1;Max72xxPanel matrix =Max72xxPanel(pinCS, numberOfHorizontalDisplays, numberOfVerticalDisplays);#menentukan TEMPERATURE 0#menentukan KELEMBABAN 1#menentukan TEKANAN 2#menentukan WAKTU 3#menentukan HARI 4#menentukan TANGGAL 5float temp;float tempavg;char tempf[8];float hum;float humavg;char humf[8]; float press;float pressavg;char pressf[8];int screen =0; // layar awal sebelumnyaLEDMillis =0; // untuk tampilan LED updatelong LEDInterval =5000; // penundaan antar layar int screenMax =5; // jumlah maksimum screenbool screenChanged =true; // status layarfloat lightsens;float screenBrt =0;float lightsensavg;Rata-rata avetemp(60); //Rata-rata untuk suhu (80 sampel)Rata-rata avehum(60); //Rata-rata untuk kelembaban (80 sampel)Rata-rata avepress(60); //Rata-rata untuk tekanan (80 sampel)Rata-rata avelightsens(40); //Rata-rata untuk tekanan (80 sampel)//Koefisien kalibrasisuhu apung =-1,70;suhu apung =1,0;suhu apung_lin;pengapungan_o =2,45;pengapung hum_s =1,0;pengapung hum_lin;tekan apung_o =0,0;pers apung_s =1,0;float press_lin;//Koreksi sensor kecerahanfloat brt_o =-4;float brt_s =1,35;Tugas Terjadwal1;Tugas Terjadwal2;pengaturan batal() { Tugas1.start(); Tugas2.mulai(); Kawat.mulai(); // Mulai I2C bme.begin(0x76); matrix.setIntensity(screenBrt); // Gunakan nilai antara 0 dan 15 untuk kecerahan// Sesuaikan dengan kebutuhan Anda sendiri// matrix.setPosition(0, 0, 0); // Tampilan pertama di <0, 0>// matrix.setPosition(1, 1, 0); // Tampilan kedua pada <1, 0> matrix.setRotation(0, 1); // Sesuaikan orientasi tampilan matrix.setRotation(1, 1); // Sesuaikan orientasi tampilan matrix.setRotation(2, 1); // Sesuaikan orientasi tampilan matrix.setRotation(3, 1); // Sesuaikan orientasi tampilan matrix.setRotation(4, 1); // Sesuaikan orientasi tampilan matrix.setRotation(5, 1); // Sesuaikan orientasi tampilan matrix.setRotation(6, 1); // Sesuaikan orientasi tampilan matrix.setRotation(7, 1); // Sesuaikan orientasi tampilan/* matrix.setRotation(8, 1); // Sesuaikan orientasi tampilan matrix.setRotation(9, 1); // Sesuaikan orientasi tampilan*/ rtc.begin();// matrix.setRotation(3, 2); // Penangguhan yang sama untuk tampilan terakhir// rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));// rtc.adjust(DateTime(2016, 02, 28, 16, 44, 0)); //Serial.begin(9600);//eDOT SPLASHSCREEN matrix.fillScreen(0); matriks.tulis(); matrix.setCursor(12,0); matrix.print("eDOT"); untuk(screenBrt =0; screenBrt <=15; screenBrt++){delay(25); matrix.setIntensity(screenBrt); // Gunakan nilai antara 0 dan 15 untuk kecerahan matrix.write(); }penundaan (250); untuk(screenBrt =15; screenBrt>=0; screenBrt--){delay(50); matrix.setIntensity(screenBrt); // Gunakan nilai antara 0 dan 15 untuk kecerahan matrix.write(); }tunda(500); matrix.fillScreen(0); matrix.write();delay(1000);}void loop() { Task1.check(acq1.500); Task2.check(acq2,20);} void acq1(){// AKUISISI DATA DAN RATA-RATA temp =bme.readTemperature(); avetemp.push(temp); tempavg =avetemp.mean(); hum =bme.readHumidity(); avehum.push(hum); humavg =avehum.berarti(); tekan =bme.readPressure(); avepress.push(tekan); pressavg =avepress.mean(); DateTime sekarang =rtc.now(); outSec =sekarang.detik(); outMin =sekarang.menit(); outHour =sekarang.jam(); hari luar =sekarang.hari(); bulan keluar =sekarang.bulan(); tahun keluar =sekarang.tahun() - 2000; dow =now.dayOfTheWeek(); } void acq2(){ lightsens =analogRead(A3); avelightsens.push(mencerahkan); lightsensavg =avelightsens.mean(); screenBrt =kendala(((lightsensavg /1023 * 15 ) * brt_s + brt_o), 0 , 15); matrix.setIntensity(screenBrt); // LINEARISASI DATA temp_lin =tempavg * temp_s + temp_o; hum_lin =humavg * hum_s + hum_o; press_lin =pressavg * press_s + press_o; unsigned long currentLEDMillis =milis(); //Serial.println(screenBrt); if(currentLEDMillis - beforeLEDMillis> LEDInterval) // simpan terakhir kali Anda mengubah tampilan { beforeLEDMillis =currentLEDMillis; layar++; if (layar> screenMax) layar =0; // reset ke layar awal setelah siklus selesai screenChanged =true; }// if (screenChanged) // perbarui pengukuran pada perubahan layar// {// screenChanged =false; // reset untuk iterasi berikutnyaswitch(screen){case TEMPERATURE:dtostrf(temp_lin,4, 2, tempf); // format hingga lima digit dengan dua desimal matrix.setCursor(6,0); matrix.setTextSize(1); matrix.setTextColor(255); matrix.print(tempf); // cetak matriks suhu saat ini.drawRect(37,0,2,2,255); // menggambar simbol kelas matrix.setCursor(40,0); matrix.print("C"); matriks.tulis(); // tulis data saat ini untuk menampilkan matrix.fillScreen(0); // hapus displaybreak;case HUMIDITY:dtostrf(hum_lin,4, 2, humf); // format hingga lima digit dengan dua desimal matrix.setCursor(6,0); matrix.setTextSize(1); matrix.setTextColor(255); matrix.print(humf); // cetak matriks suhu saat ini.setCursor(37,0); matrix.print("%"); matriks.tulis(); // tulis data saat ini untuk menampilkan matrix.fillScreen(0); // hapus displaybreak;case TEKANAN:dtostrf(tekan_lin,6, 0, tekanf); // format hingga lima digit dengan dua desimal matrix.setCursor(0,0); matrix.setTextSize(1); matrix.setTextColor(255); matrix.print(tekanf); // cetak matriks suhu saat ini.setCursor(37,0); matrix.print("Pa"); matriks.tulis(); // tulis data saat ini untuk menampilkan matrix.fillScreen(0); // hapus displaybreak;case TIME:// dtostrf(press_lin,6, 0, pressf); // format hingga lima digit dengan dua desimal matrix.setCursor(0,0); matrix.setTextSize(1); matrix.setTextColor(255); if (di luar Jam <10){ matrix.print("0"); } matrix.print(outHour,0); // cetak jam sekarang matrix.print(":"); if (keluarMin <10){ matrix.print("0"); } matrix.print(outMin,0); // mencetak menit saat ini matrix.print(":"); if (keluarSec <10){ matrix.print("0"); } matrix.print(outSec,0); // mencetak detik saat ini matrix.write(); // tulis data saat ini untuk menampilkan matrix.fillScreen(0); // hapus displaybreak;case DATE:// dtostrf(press_lin,6, 0, pressf); // format hingga lima digit dengan dua desimal matrix.setCursor(0,0); matrix.setTextSize(1); matrix.setTextColor(255); if (keluar hari <10){ matrix.print("0"); } matrix.print(keluar hari,0); // cetak jam sekarang matrix.print("/"); if (keluar bulan <10){ matrix.print("0"); } matrix.print(keluar bulan,0); // cetak menit saat ini matrix.print("/"); matrix.print(keluar tahun,0); // mencetak detik saat ini matrix.write(); // tulis data saat ini untuk menampilkan matrix.fillScreen(0); // hapus displaybreak;case DAY:// dtostrf(press_lin,6, 0, pressf); // format hingga lima digit dengan dua desimal matrix.setCursor(15,0); matrix.setTextSize(1); matrix.setTextColor(255); matrix.print(daysOfTheWeek[dow]); matriks.tulis(); // tulis data saat ini untuk menampilkan matrix.fillScreen(0); // hapus jeda tampilan; } }

Proses manufaktur

  1. Stasiun cuaca berdasarkan Raspberry Pi
  2. Stasiun Cuaca Raspberry Pi 2
  3. Stasiun Cuaca V 2.0
  4. Arduino pov vision clock
  5. Jam Master
  6. Suhu Arduino. Monitor Dan Jam Waktu Nyata Dengan Tampilan 3.2
  7. $10 Portable Arduino Weather Station (AWS)
  8. Otomata Seluler berbasis Arduino dan OLED
  9. Stasiun Cuaca ArduinoThingSpeak
  10. Sistem Kehadiran Berbasis Arduino dan Google Spreadsheet