Mục lục:

SilverLight: Giám sát môi trường dựa trên Arduino cho phòng máy chủ: 3 bước (có hình ảnh)
SilverLight: Giám sát môi trường dựa trên Arduino cho phòng máy chủ: 3 bước (có hình ảnh)

Video: SilverLight: Giám sát môi trường dựa trên Arduino cho phòng máy chủ: 3 bước (có hình ảnh)

Video: SilverLight: Giám sát môi trường dựa trên Arduino cho phòng máy chủ: 3 bước (có hình ảnh)
Video: Thiết Bị IOT Quan Trắc Môi Trường Dự Trên Công Nghệ LoRa 2024, Tháng bảy
Anonim
SilverLight: Giám sát môi trường dựa trên Arduino cho các phòng máy chủ
SilverLight: Giám sát môi trường dựa trên Arduino cho các phòng máy chủ
SilverLight: Giám sát môi trường dựa trên Arduino cho các phòng máy chủ
SilverLight: Giám sát môi trường dựa trên Arduino cho các phòng máy chủ
SilverLight: Giám sát môi trường dựa trên Arduino cho các phòng máy chủ
SilverLight: Giám sát môi trường dựa trên Arduino cho các phòng máy chủ
SilverLight: Giám sát môi trường dựa trên Arduino cho các phòng máy chủ
SilverLight: Giám sát môi trường dựa trên Arduino cho các phòng máy chủ

Một lần tôi được giao nhiệm vụ tìm kiếm một đầu dò môi trường để theo dõi nhiệt độ trong phòng máy chủ của công ty tôi. Ý tưởng đầu tiên của tôi là: tại sao không chỉ sử dụng Raspberry PI và cảm biến DHT, nó có thể được thiết lập trong vòng chưa đầy một giờ bao gồm cả cài đặt hệ điều hành. Đối với điều này, tôi đã nhận được phản hồi lạnh lùng từ những người hách dịch bị bịt mắt rằng chúng tôi sẽ không làm điều đó vì sẽ tốn nhiều giờ làm việc hơn để thiết lập nó hơn là mua một thiết bị. Phải chấp nhận những người có đầu óc hạn hẹp như thế này trong một phần cuộc đời của tôi là một chuyện và tôi đã đặt hàng một số EATON cấp doanh nghiệp trên Ebay và gọi nó nhưng ngay lúc đó tôi đã quyết định rằng đối với phòng máy chủ của riêng mình, tôi sẽ xây dựng một Arduino Mã nguồn mở hoàn toàn. dựa trên thiết bị sẽ tốt hơn nhiều so với những gì tôi vừa đặt hàng.

Dự án này có tên mã là SilverLight, đừng hỏi tôi lấy những cái tên này từ đâu:) Tôi chỉ nhìn vào hộp nửa acrylic sáng bóng và quyết định với tên này, nó không liên quan gì đến sản phẩm microhoof mà tôi đã tìm hiểu sau đó..

Bước 1: Thiết kế phần cứng

Thiết kế phần cứng
Thiết kế phần cứng
Thiết kế phần cứng
Thiết kế phần cứng
Thiết kế phần cứng
Thiết kế phần cứng

Tổng quan về phần cứng thương mại.

Ok, vì vậy tôi thậm chí không bắt đầu với ý tưởng tuyệt vời của người là đặt một bộ giám sát môi trường bên trong một cửa sổ nâng cấp nhưng rõ ràng là có một thị trường cho nó, vì vậy hãy xem những gì chúng có thể làm:

Thiết bị giám sát môi trường TƯƠNG THÍCH

Mạng 10 / 100Mb-MS, PXGUPS, PXGPDP và PXGMS.

10 / 100Mb ConnectUPS-X, ConnectUPS-BD và ConnectUPS-E với FW V3.01 trở lên. KÍCH THƯỚC (LXWXH)

2,26 x 1,48 x 1,15 (inch) 57,6 x 37,6 x 29,3 (mm) TRỌNG LƯỢNG

1,19 oz (34 g)

Đó là thông tin rất hữu ích phải không? Không phải lo lắng vì họ không thể làm được nhiều. Để bắt đầu, UPS của bạn sẽ cần phải có một thẻ bổ trợ đắt tiền khác để kết nối cái này với cảm biến môi trường mà bạn mua riêng, thường là với cáp CAT5 tiêu chuẩn (thậm chí đừng cố cắm bất cứ thứ gì vào cổng đó vì không có tiêu chuẩn nào cả về nó). Họ tuyên bố thiết bị cần 10 phút để "làm ấm" trong thực tế là hàng giờ và khi nó hoạt động thì nó sẽ hiển thị trong giao diện java cập nhật chậm của họ và chúng tôi có nhiệt độ và độ ẩm. Từ thời điểm này, việc thiết lập các điều kiện dựa trên cảnh báo rất dễ dàng nhưng ai quan tâm hãy xây dựng một thứ gì đó tốt hơn.

Dự án này là sự kết hợp của nhiều dự án của tôi: Trạm thời tiết Natalia, Bóng phượng hoàng. Hộp có thể giám sát các hạn chế môi trường sau:

  • Chỉ số nhiệt độ / độ ẩm / nhiệt
  • Nồng độ LPG, Khói, Rượu, Propane, Hydro, Methane và Carbon Monoxide trong không khí (MQ2)
  • Độ nhạy năng lượng mặt trời (đèn trong phòng máy chủ có bật không?)
  • Cảm biến PIR chuyển động (bạn thậm chí có thể tự động bật / tắt đèn từ bây giờ nhờ cảm biến chuyển động khi có người vào phòng)

Tất cả dữ liệu này được hiển thị độc đáo trên màn hình LCD đồng thời được chuyển tiếp đến máy tính (Orange PI Zero) để xử lý và cảnh báo thêm. Mặc dù có thể kết nối trực tiếp các cảm biến kỹ thuật số như DHT và chân kỹ thuật số của MQ2 với OrangePI, nhưng tôi luôn thích sử dụng kính hiển vi chuyên dụng cho các tác vụ này và khi bạn cần cập nhật màn hình LCD cũng như thực hiện các cấp độ thấp khác thứ mà Arduino không thể đánh bại và có thể chạy liên tục trong nhiều năm một cách đáng tin cậy (thực tế là chưa có một Arduino nào chạy 24/7 không thành công với tôi). OrangePI với những thiếu sót của nó (hãy đối mặt với nó là một máy tính 10 đô la) như không sử dụng được cho khối lượng công việc nặng, không hỗ trợ bsd, wifi tích hợp bị phình ra, v.v. có thể dễ dàng xử lý khối lượng công việc nhỏ như lấy các bài đọc cảm biến thông qua nối tiếp (USB) và xử lý chúng.

Đây là một dự án phần cứng khôn ngoan rất đơn giản, đòi hỏi các thành phần sau:

  • Arduino PRO Micro
  • Màn hình LCD 2x16 ký tự RGB
  • Mô-đun chuyển đổi nguồn cách ly AC-DC 220V sang 5V HLK-5M05 (chúng rất tốt cho các dự án Arduino / ESP), đây là phiên bản 5V / 5W!
  • Điện trở 2x300ohm
  • 2xleds (đỏ / xanh lá cây)
  • Cảm biến chuyển động PIR
  • Cảm biến MQ2
  • DHT22
  • LDR
  • Điện trở 2X10Kohm
  • Buzzer
  • Orange PI Zero
  • cáp dữ liệu USB mini

Tôi thậm chí còn không bận tâm đến việc tạo ra một PCB cho bảng mạch chủ thông thường này chỉ được sử dụng vì các thành phần có thể được kết nối đơn giản với Arduino (xem hình ảnh đính kèm):

-DHT22 sẽ yêu cầu kéo 10K lên VCC (kỹ thuật số)

-LDR sẽ yêu cầu kéo xuống 10K thành GND (tương tự)

-MQ2 có thể được kết nối trực tiếp với bất kỳ chân tương tự (analog) nào <thích sử dụng tương tự hơn vì tại sao không khi chúng ta có MCU với các chân tương tự nơi chúng ta có thể nhận được giá trị chính xác thay vì điều chỉnh một số nồi ở mặt sau của thiết bị để đạt mức CAO hoặc THẤP ra khỏi nó, do dán trong thiết kế của tôi mà không thể truy cập được. Kiểm tra:

-PIR có thể được kết nối trực tiếp với bất kỳ chân nào (kỹ thuật số)

-LCD: có thể được điều khiển bằng 4 chân, có thể kết nối với bất kỳ chân nào (kỹ thuật số) sẽ cần +2 RS / E (kỹ thuật số)

-Buzzer: có thể được kết nối trực tiếp với bất kỳ chân Arduino nào (kỹ thuật số)

Sơ đồ chân tôi đã sử dụng có thể được nhìn thấy trong mã. Kết nối tất cả mọi thứ với nhau sau đó khá dễ dàng, bạn cũng có thể thực hiện từng cái một, đảm bảo 1 cảm biến hoạt động hoàn hảo rồi chuyển sang cảm biến tiếp theo, tất cả những gì bạn có thể mắc phải là do nhầm lẫn kết nối dây vào sai vị trí (ví dụ: hoán đổi vcc / gnd cho một cảm biến, cho đến nay điều này chưa bao giờ giết chết bất kỳ thiết bị nào của tôi). Điều tôi cần lưu ý ở đây là có quá nhiều VCC và GND được xếp chồng lên nhau, tôi không thể vắt chúng qua một dải thiết bị đầu cuối nên tôi đã hàn tất cả chúng.

Ngoài ra về các DHT, đừng quên từ các dự án khác của tôi: nếu bạn đặt thư viện DHT trong mã của mình và cảm biến DHT không được kết nối hoặc kết nối sai DHT (ví dụ: 11 được xác định trong mã bạn đang sử dụng 22) có thể dẫn đến chương trình treo mãi mãi khi bắt đầu.

Về cảm biến phát hiện chuyển động PIR, như bạn có thể thấy trên hình của tôi, có rất nhiều hàng giả hàng nhái trong số này, thực tế là tôi thậm chí sẽ khó mua được một cái chính hãng từ Ebay. Hàng giả hoạt động tốt, ngay cả trong thời gian dài nhưng chúng có mạch được nhân đôi khiến các chân + và - bị đảo ngược, cũng có thể dễ dàng nhận ra những điều này: đi kèm với pcb màu xanh lam không phải màu xanh lá cây thông thường, thiếu nhãn cho nồi kế. Mình may mắn tìm được hàng xịn trong hộp của mình nếu không thay đổi vị trí sẽ che mất 2 led cho mình. Tôi đã nhận thấy rằng cả hai chiếc chậu bị quay đến giữa chừng đều phù hợp với tôi. Điều này sẽ cung cấp cho bạn phạm vi đủ dài để cảm nhận cũng như khi có chuyển động, chân kỹ thuật số sẽ được giữ ở vị trí CAO trong khoảng một phút, vì vậy bạn không cần phải bù đắp mã cho việc này. Đối với hàng giả, rất dễ dàng để xác định bên nào là - và + chỉ cần nhìn vào các chân tương ứng của các nắp điện phân được kết nối với các chân.

Để cắt hộp, tôi đã sử dụng đầu dremel kim cương (là một loại quá mức cần thiết nhưng hoạt động tốt) và máy khoan thông thường. Những hộp nối này rất dễ làm việc và mặc dù tôi không thích dán, tôi không có sẵn ốc vít và bu lông khi chế tạo cái này, vì vậy tôi đã mặc cả việc dán các thứ lại với nhau (cũng có thể dễ dàng làm nóng lại và tháo rời sau này bằng cách sử dụng cùng một khẩu súng bắn keo mà không có fillament trong đó).

Bước 2: Thiết kế phần mềm

Thiết kế phần mềm
Thiết kế phần mềm
Thiết kế phần mềm
Thiết kế phần mềm

Mã Arduino cũng đơn giản, về cơ bản nó kéo tất cả các giá trị đọc của cảm biến ở đầu mỗi vòng lặp. Bật đèn LED nếu có chuyển động hoặc khói và cũng phát âm thanh cảnh báo trên còi nếu có khói (đây là mã chặn duy nhất nên tôi đã viết ngắn gọn), sau đó hiển thị dữ liệu trên màn hình LCD và cuối cùng gửi nó qua PC với khoảng thời gian giữ 10 giây, không để làm ngập cổng.

Dự án này sử dụng giao tiếp một chiều từ Arduino-> OrangePI, không có bất kỳ lệnh nào được thực hiện. Mặc dù điều này hoàn toàn có thể làm được như tôi đã làm trong một dự án khác của mình, nơi máy tính có thể gửi LCD_PRINT1 hoặc LCD_PRINT2 để ghi đè lên một dòng của màn hình LCD bằng thông báo của chính nó (ví dụ: địa chỉ ip, thời gian hoạt động, ngày hệ thống, sử dụng cpu), diện tích màn hình quá nhỏ để hiển thị dữ liệu từ 3 cảm biến mà tôi thậm chí còn không bận tâm. Giá trị SOL và SMK đều có thể lên đến 4 chữ số 0000-1023, chiếm 8 ký tự có giá trị trên màn hình.

Với màn hình LCD, bạn có thể nhận thấy một mẹo nhỏ trong mã đó là sau mỗi giá trị đo, một bản in khoảng trắng ("") được áp dụng, sau đó tôi di chuyển con trỏ đến các vị trí cố định để đặt các biểu tượng và dữ liệu mới. Đó là vì màn hình LCD không thông minh để hiểu các con số, nó chỉ vẽ những gì nó nhận được và ví dụ nếu bạn có giá trị năng lượng mặt trời là 525 mà đột ngột giảm xuống 3 thì nó sẽ hiển thị 325 để lại phần rác cũ trên màn hình ở đó.

Mã điều khiển C chạy trên OrangePI và ghi dữ liệu môi trường và gửi cảnh báo qua email khi cần.

OrangePI đang chạy Armbian (tại thời điểm viết bài này dựa trên Debian Stretch). Tôi sẽ bao gồm điều này trong phần phần mềm liên quan đến nó là một vấn đề hw những gì nó đã giải quyết. Dưới đây là mức tiêu thụ điện năng trung bình của thiết bị:

0,17 A - chỉ Arduino + cảm biến

0,5-0,62 A - Khởi động OrangePI

0,31 A - PI màu cam khi không hoạt động

0,29 A - Orange PI đã tắt nguồn (thực sự không thể tắt nó, nó không có ACPI hoặc bất cứ thứ gì tương tự)

0,60 A - Kiểm tra căng thẳng 100% mức sử dụng CPU trên 4 lõi

Tôi đã có OrangePI này trong một hộp từ rất lâu rồi. Với hạt nhân cũ, thiết bị tiêu thụ quá nhiều dòng điện (như đồng hồ cho biết đạt đỉnh khoảng 0,63 A) điều mà PSU của anh ta có thể không thể cung cấp rằng nó chỉ đơn giản là không khởi động được, quá trình khởi động bị kẹt và tôi nhận thấy 2 đèn led ethernet sáng lên liên tục và không làm gì cả.

Bây giờ điều này khá khó chịu vì HLK-5M05 tuyên bố nó có thể làm 5W trên 5V khiến nó có thể cung cấp 1 Amp nhưng với những thiết bị này đến từ Trung Quốc mà bạn chưa bao giờ biết, mức cao nhất 0,63 A thấp hơn nhiều so với mức tối đa được đánh giá giá trị. Vì vậy, tôi đã chạy các thử nghiệm khởi động lại đơn giản, từ 10 lần khởi động lại, OrangePI sẽ chỉ khởi động thành công hai lần, điều này gần như khiến tôi loại bỏ nó khỏi dự án vì tôi không thích hành vi không nhất quán lỗi trong mạch. Vì vậy, tôi bắt đầu tìm kiếm xung quanh có thể có một cách để giảm mức tiêu thụ điện năng tại thời điểm khởi động từ phần mềm (vì lúc đó nó chỉ là một vấn đề) và tìm thấy một số bài báo nói về việc tinh chỉnh script.bin nhưng nó dành cho PC Orange PI và các tệp bị thiếu trong bộ nhớ, vì vậy, bất kể là phương sách cuối cùng, tôi đã thực hiện "nâng cấp apt" kỳ diệu để nâng cấp phần sụn, hạt nhân và mọi thứ khác, hy vọng rằng nó sẽ tiêu hao ít hơn và thiết bị có thể khởi động vào và:

Linux silverlight 4.14.18-sunxi # 24 SMP Thứ Sáu, ngày 9 tháng 2 16:24:32 CET 2018 armv7l GNU / Linux

Linux silverlight 4.19.62-sunxi # 5.92 SMP Thứ Tư ngày 31 tháng 7 22:07:23 CEST 2019 armv7l GNU / Linux

Nó đã làm việc! Việc ném phần cứng cho một vấn đề phần mềm thường là các nhà phát triển java lười biếng nhưng trong trường hợp này, chúng tôi đã giải quyết một vấn đề phần cứng với phần mềm, quả là một thành công lớn. Tôi đã thực hiện thêm 20 lần kiểm tra khởi động lại nữa, thiết bị đã khởi động được mọi trường hợp. Tôi vẫn sẽ lưu ý rằng mức tăng điện từ việc bật Opi (kết nối / ngắt kết nối) quá lớn đến mức nó sẽ đặt lại Arduino bất kỳ lúc nào (khởi động lại đơn giản sẽ chỉ nhấp nháy màn hình LCD nhưng không gây ra vấn đề gì thêm), nhưng vấn đề này vẫn còn ẩn vì cả hai sẽ được khởi động cùng nhau.

Tôi cũng đã xem xét các mô-đun hạt nhân:

usb_f_acm u_serial g_serial libcomposite xradio_wlan mac80211 lima sun8i_codec_analog snd_soc_simple_card gpu_sched sun8i_adda_pr_regmap sun4i_i2s snd_soc_simple_card_utils ttm sun4i_gpadc_iio snd_soc_core cfg80211 snd_pcm_dmaengine industrialio snd_pcm snd_timer snd sun8i_ths soundcore cpufreq_dt uio_pdrv_genirq UIO thermal_sys pwrseq_simple

Chúng ta thực sự cần gì từ những thứ này? Ok, pwr và nhiệt có thể hữu ích nhưng âm thanh, cổng nối tiếp, wifi (đã bị hỏng hw rồi) chúng ta không cần tất cả những thứ này có thể bị đưa vào danh sách đen. Tôi cũng sẽ tạo một nhân tùy chỉnh chỉ với các mô-đun cần thiết sau này.

Những gì chúng tôi cần và nó không được tải theo mặc định là CDC ACM để giao tiếp với Arduino, kích hoạt nó với:

echo "cdc-acm" >> / etc / modules

Sau đó, bạn đã có thể kiểm tra kết nối với:

screen / dev / ttyACM0 9600

Bạn sẽ thấy dữ liệu trạng thái được gửi sau mỗi 10 giây.

Cảnh báo và giám sát

Đối với các cảnh báo, tôi chỉ đặt các lệnh gọi hệ thống () trong mã điều khiển C nhận dữ liệu từ nối tiếp nên không cần công cụ bên ngoài. Một số cảnh báo ví dụ:

- Nhiệt độ trên 30 C

- Độ ẩm vượt quá 70% (không tốt cho máy chủ)

- Phát hiện chuyển động trong phòng (điều này có thể gây khó chịu nếu bạn tiếp tục vào phòng máy chủ của mình)

- Phát hiện khói hoặc khí (có thể thực hiện nghiêm túc các cảnh báo trên 100, tôi đã thử với cảm biến này và nó bật cho nhiều thứ, ví dụ như tạo khói bên cạnh cảm biến bằng mỏ hàn dẫn đến hơi trên 50 khi hút thuốc lá tiếp theo o nó đã tăng vọt lên đến 500, nó thậm chí còn phát hiện ra khí từ chất khử mùi thông thường từ rất xa)

Để lưu giữ dữ liệu lịch sử, tôi không bận tâm đến việc phát triển một công cụ vì tại sao phải phát minh lại bánh xe khi chúng tôi có các khung giám sát tuyệt vời. Tôi sẽ đưa ra một ví dụ về cách tích hợp điều này vào trang yêu thích cá nhân của tôi, Zabbix:

apt-get cài đặt zabbix-agent

Thêm vào cuối: /etc/zabbix/zabbix_agentd.conf

UserParameter = silverlight.hum, head -1 /dev/shm/silverlight-zbx.log | awk -F "," '{print $ 1}'

UserParameter = silverlight.tmp, head -1 /dev/shm/silverlight-zbx.log | awk -F "," '{print $ 2}' UserParameter = silverlight.sol, head -1 /dev/shm/silverlight-zbx.log | awk -F "," '{print $ 4}' UserParameter = silverlight.mot, head -1 /dev/shm/silverlight-zbx.log | awk -F "," '{print $ 5}' UserParameter = silverlight.smk, head -1 /dev/shm/silverlight-zbx.log | awk -F "," '{print $ 6}'

Chạy zabbix_agentd -p bây giờ sẽ trả về các giá trị thích hợp:

silverlight.hum [t | 41]

silverlight.tmp [t | 23] silverlight.sol [t | 144] silverlight.mot [t | 0] silverlight.smk [t | 19]

Chỉ số nhiệt, tôi có thu thập nó nhưng không thấy bất kỳ công dụng thực tế của nó nên nó chỉ được ghi lại. Trong mã điều khiển C, tôi đã triển khai 2 chức năng ghi nhật ký, chức năng đầu tiên sẽ ghi lại tất cả dữ liệu ở định dạng thân thiện với người dùng:

[SILVERLIGHT] Dữ liệu nhận được lúc 2019-09-10 23:36:08 => Độ ẩm: 44, Nhiệt độ: 22, Hi: 25, Năng lượng mặt trời: 0, Chuyển động: 0, Khói: 21

[SILVERLIGHT] Dữ liệu nhận được vào lúc 2019-09-10 23:36:18 => Độ ẩm: 44, Nhiệt độ: 22, Hi: 25, Năng lượng mặt trời: 0, Chuyển động: 0, Khói: 21 [SILVERLIGHT] Dữ liệu nhận được vào 2019-09 -10 23:36:29 => Độ ẩm: 44, Nhiệt độ: 22, Hi: 25, Năng lượng mặt trời: 0, Chuyển động: 0, Khói: 22 [SILVERLIGHT] Dữ liệu nhận được lúc 2019-09-10 23:36:39 => Độ ẩm: 44, Nhiệt độ: 22, Hi: 25, Năng lượng mặt trời: 0, Chuyển động: 0, Khói: 21

Cái thứ hai:

void logger2 (char * text) {

FILE * f = fopen ("/ dev / shm / silverlight-zbx.log", "w"); if (f == NULL) {printf ("Lỗi khi mở tệp nhật ký bộ nhớ! / n"); trở lại; } fprintf (f, "% s", text); fclose (f); trở lại; }

Thao tác này sẽ đặt 1 nhật ký lót vào bộ nhớ (loại bỏ các thao tác rw không cần thiết trên sdcard) sẽ luôn bị ghi đè vào lần sau. Nhật ký này sẽ chỉ chứa 6 cột dữ liệu và không có dấu thời gian, nó có thể dễ dàng đọc được đối với Zabbix.

Phần thưởng cuối cùng: cách lập trình Arduino trực tiếp từ OrangePI để bạn không phải đi đến thiết bị mỗi lần và cắm vào máy tính xách tay của mình.

Có 2 cách:

-Cách dễ dàng: Cài đặt đầy đủ Arduino IDE và các thư viện sử dụng một số máy tính để bàn từ xa như X11 với chuyển tiếp, Xrdp, Xvnc, Nxserver, v.v.

-Cách nghe: Cài đặt Arduino IDE và sử dụng dòng lệnh

Chúng tôi sẽ làm theo cách khó khăn lần này vì tôi không thích cài đặt X11 trên các máy chủ. Đối với điều này, bạn sẽ cần 6 thành phần:

1, Arduino IDE cho ARM 32 bit ->

2, Python serial -> apt-get install python-serial

3, Dự án Arduino Makefile -> git clone

4, thư viện DHT

5, định nghĩa bảng Sparkfun

6, SilverLight.ino, mã chính

Để dễ dàng hơn, tôi đã nhóm các tệp cần thiết cho 4 điểm cuối cùng (sketchbook.tgz), vì vậy bạn sẽ chỉ cần 2 điểm đầu tiên

Đầu tiên, cách tốt nhất là tạo một người dùng thông thường có quyền truy cập rw vào cổng USB:

adduser bạc

usermod -a -G quay số bạc

SCP the sketchbook.tgz vào thiết bị trong thư mục chính của người dùng mới được tạo và giải nén nó ngay tại đó:

cd / home / bạc

tar xvzf sketchbook.tgz

Để hiểu một chút điều gì đang diễn ra khi bạn đang sử dụng IDE đồ họa:

Quy trình xây dựng bản phác thảo Arduino khi sử dụng Arduino IDE được mô tả trên trang web Arduino https://www.arduino.cc/en/Hacking/BuildProcess và chi tiết hơn tại đây: https://www.arduino.cc/ vi / Hacking / BuildProcess

Nói chung, quy trình xây dựng Arduino tiêu chuẩn là:

Kết hợp các tệp.ino vào tệp phác thảo chính. Chuyển đổi tệp phác thảo chính: thêm câu lệnh #include; tạo khai báo hàm (nguyên mẫu) của tất cả các hàm trong tệp phác thảo chính; nối nội dung của tệp main.cxx của đích vào tệp phác thảo chính. Biên dịch mã thành các tệp đối tượng. Liên kết các tệp đối tượng để tạo ra tệp.hex sẵn sàng để tải nó lên Arduino.

Có một số khác biệt nhỏ giữa quy trình xây dựng tiêu chuẩn Arduino và quy trình xây dựng sử dụng Arduino-Makefile:

Chỉ một tệp.ino được hỗ trợ. Khai báo hàm không được tạo tự động trong tệp.ino. Người dùng phải quan tâm đến việc tạo các khai báo chức năng chính xác.

Trung tâm của quá trình xây dựng là Makefile. Đừng lo lắng, mọi thứ đã được chuẩn bị cho bạn, sẽ phức tạp hơn một chút khi biên dịch theo cách này cho các bảng không tiêu chuẩn như dòng SparkFun.

BOARD_TAG = promicro

ALTERNATE_CORE = SparkFun BOARD_SUB = 16MHzatmega32U4 ARDUINO_PORT = / dev / ttyACM0 USER_LIB_PATH = / home / silver / sketchbook / Library ARDUINO_DIR = /opt/arduino-1.8.9 bao gồm /home/silver/sketchMakefile/ArdkArd-rduino

Và tất cả những gì bạn cần nhập là: make upload (sẽ tạo các tệp.hex trước tiên sau đó sử dụng avrdude để tải chúng lên), nó sẽ kết thúc bằng một cái gì đó như:

mkdir -p build-promicro-16MHzatmega32U4

make reset make [1]: Vào thư mục '/ home / silver / sketchbook' / home / silver / sketchbook / Arduino-Makefile / bin / ard-reset-arduino --caterina / dev / ttyACM0 make [1]: Rời khỏi thư mục ' / home / silver / sketchbook 'make do_upload make [1]: Nhập thư mục' / home / silver / sketchbook '/opt/arduino-1.8.9/hardware/tools/avr/bin/avrdude -q -V -p atmega32u4 - C /opt/arduino-1.8.9/hardware/tools/avr/etc/avrdude.conf -D -c avr109 -b 57600 -P / dev / ttyACM0 / -U flash: w: build-promicro-16MHzatmega32U4 / sketchbook. hex: i Đang kết nối với lập trình viên:. Lập trình viên được tìm thấy: Id = "CATERIN"; type = S Phiên bản phần mềm = 1.0; Không có phiên bản phần cứng nào được cung cấp. Lập trình viên hỗ trợ tăng thêm trình tự động. Bộ lập trình hỗ trợ truy cập bộ nhớ đệm với kích thước bộ đệm = 128 byte. Bộ lập trình hỗ trợ các thiết bị sau: Mã thiết bị: 0x44 avrdude: Thiết bị AVR được khởi tạo và sẵn sàng chấp nhận hướng dẫn avrdude: Device signature = 0x1e9587 (có thể là m32u4) avrdude: đọc tệp đầu vào "build-promicro-16MHzatmega32U4 / sketchbook.hex" avrdude: viết flash (11580 byte): avrdude: 11580 byte flash ghi avrdude: safemode: Fuses OK (E: CB, H: D8, L: FF) avrdude xong. Cảm ơn bạn.

Cảm ơn bạn, và bây giờ Arduino của chúng tôi đã được đặt lại và lập trình với mã mới, những gì bạn có thể chỉnh sửa với vi hoặc trình chỉnh sửa yêu thích của bạn cục bộ, không cần bất kỳ IDE nào. Tôi lưu ý rằng bạn nên đóng cả chương trình điều khiển C, màn hình hoặc bất kỳ thứ gì khác truy cập vào arduino trong khi tải lên, nếu không cổng sẽ quay trở lại dưới dạng / dev / ttyACM1 sau khi thiết lập lại.

Bước 3: Đóng cửa và danh sách công việc

Danh sách đóng cửa và công việc
Danh sách đóng cửa và công việc
Danh sách đóng cửa và công việc
Danh sách đóng cửa và công việc
Danh sách đóng cửa và công việc
Danh sách đóng cửa và công việc

Mặc dù tôi đã tạo hộp cảm biến môi trường này cho phòng máy chủ nhưng bạn có thể sử dụng nó cho phòng thí nghiệm hóa học / điện tử, nhà kho, phòng thông thường và bất cứ thứ gì khác. Và đúng vì nó sử dụng TCP / IP, nó là một thiết bị IoT, G Tôi cũng nên đặt nó vào tiêu đề để làm cho nó táo bạo hơn:)

Bạn có thể dễ dàng sửa đổi cả phần cứng và phần mềm để có thể tự động bật đèn trong phòng. Hãy xem dự án khác của tôi: Shadow of Phoenix hoạt động như thế nào để điều khiển ánh sáng, bạn có tất cả phần cứng trong tay để làm điều tương tự (nó sử dụng bộ hẹn giờ giữ để giữ đèn sáng miễn là có chuyển động được phát hiện trong khoảng thời gian, nếu có chuyển động một lần nữa, một bộ đếm thời gian sẽ được tăng lên).

Với việc OrangePI chạy một ngăn xếp đầy đủ Armbian, khả năng là vô hạn, bạn có thể tạo giao diện web cục bộ được viết từ đầu bằng php để hiển thị dữ liệu lịch sử trên đồ thị. Điều này không phải là đã tốt hơn khi bạn có một thiết bị Mã nguồn mở hoàn toàn giám sát phòng máy chủ của bạn những gì bạn có thể tự hào về việc xây dựng, nếu bạn nghĩ vậy tự xây dựng nó!

Đề xuất: