Mục lục:

Chuông trường cho học sinh từ xa: 6 bước
Chuông trường cho học sinh từ xa: 6 bước

Video: Chuông trường cho học sinh từ xa: 6 bước

Video: Chuông trường cho học sinh từ xa: 6 bước
Video: Đã bao lâu các bạn không được nghe tiếng trống trường?? Đây là hiệu lệnh trống gì 2024, Tháng bảy
Anonim
Chuông trường dành cho học sinh từ xa
Chuông trường dành cho học sinh từ xa

Với đại dịch COVID-19, nhiều trường học dành cho trẻ em đã phải chuyển giao từ xa. Chuông học tại nhà này là một cách thú vị để giữ đúng lịch trình sử dụng Raspberry Pi và loa USB. Bạn có thể làm nó với con bạn và chúng có thể học về lập trình và có thể "rung chuông". Tôi đã xây dựng cái này cho con gái tôi đang học lớp 7 (hiện đang chuyển phát từ xa) và nó đang hoạt động tốt để giúp chúng tôi luôn đúng giờ.

Quân nhu

Đối với dự án này, bạn sẽ cần:

  • Máy tính Raspberry Pi - Nó hoạt động tốt nhất nếu bạn có WiFi, tôi đã sử dụng RPi 3B từ bộ Kano
  • Loa - Tôi đã sử dụng loa USB

Mã có thể dễ dàng chạy trên máy tính linux của học sinh của bạn hoặc thậm chí là một bộ vi điều khiển đang chạy micropython, miễn là bộ vi điều khiển có một số cơ chế để lấy ngày / giờ hiện tại. Ngoài ra, có thể sử dụng bất kỳ loa khuếch đại nào, hoặc thậm chí là bộ làm mát bằng rơ le / chuông analog.

Bước 1: Thiết lập Raspberry Pi của bạn

Thiết lập Raspberry Pi của bạn
Thiết lập Raspberry Pi của bạn

Có một số lượng lớn tài nguyên để thiết lập máy tính Raspberry Pi, vì vậy tôi giới thiệu cho bạn một tài nguyên mà Google tìm thấy. Điều quan trọng là máy tính của bạn có cách lấy ngày giờ chính xác. Hầu hết các máy tính Raspberry Pi hiện đại có hỗ trợ WiFi đều sử dụng giao thức NTP để đặt thời gian từ internet, đó là cách tôi có được thời gian chính xác. Tôi đã thiết lập RPi của mình là "không có đầu", nghĩa là nó không có bàn phím hoặc màn hình, nhưng có thể truy cập bằng trình bao an toàn (SSH) qua internet. Nếu bạn thành thạo RPi, bạn có thể thực hiện thiết lập này mà không cần bàn phím / video / chuột, nhưng sẽ dễ dàng hơn chỉ cần thiết lập pi với các phụ kiện đó.

Lưu ý rằng tôi không cần sử dụng giao diện đồ họa, vì vậy tôi chỉ cần tải xuống "Raspberry Pi OS (32-bit) Lite", nhỏ hơn và nhanh hơn để tải xuống và khởi động nhanh hơn.

Định cấu hình các tùy chọn mạng và giao diện của Raspberry Pi

$ sudo raspi-config

Trong cấu hình, hãy làm như sau:

  • Thay đổi mật khẩu - hãy làm điều này trước, hy vọng trước khi truy cập trực tuyến!
  • Trong "Tùy chọn mạng",

    • Thay đổi tên máy chủ. Tôi đã sử dụng tên máy chủ: "schoolbell".
    • Kết nối với mạng LAN không dây của bạn (nếu bạn chưa làm điều đó trong quá trình thiết lập)
  • Trong "Tùy chọn giao diện", hãy bật quyền truy cập SSH
  • Luôn luôn tốt khi chạy tùy chọn "Cập nhật"

Khi bạn đã thực hiện xong việc này và khởi động lại, bạn sẽ có thể kết nối với Raspberry Pi từ một máy tính khác trên cùng mạng cục bộ bằng cách sử dụng máy khách SSH. Kết nối với nó bằng cách sử dụng thông tin đăng nhập sau:

tên máy chủ: schoolbell.local

người dùng: mật khẩu pi: whateveryousetitas

Từ một hộp linux, việc này đơn giản như gõ dòng lệnh này tại dấu nhắc $:

$ ssh [email protected]

… Nhập mật khẩu khi được nhắc

Điều đó sẽ giúp bạn đăng nhập và bạn có thể kiểm tra xem thời gian trên Raspberry Pi có chính xác hay không. Tại dòng lệnh, nhập lệnh ngày và kiểm tra phản hồi:

pi @ schoolbell: ~ $ date

Thứ 3, ngày 3 tháng 9, 20:44:34 AKDT 2020

Hy vọng rằng đây là thời điểm hiện tại. Nếu nó không chính xác, hãy google về cách thiết lập NTP trên Raspberry Pi.

Bước 2: Làm cho hệ thống âm thanh của bạn hoạt động

Làm cho hệ thống âm thanh của bạn hoạt động
Làm cho hệ thống âm thanh của bạn hoạt động

Chúng tôi sẽ phát các tệp MP3 cho chuông, vì vậy chúng tôi cần tải xuống phần mềm để giải mã các tệp âm thanh này. Tôi đã nhận được gói mpg321 bằng cách gõ lệnh này:

pi @ schoolbell: ~ $ sudo apt-get install mpg321

Làm theo lời nhắc để cài đặt phần mềm này.

Tôi đã sử dụng một chiếc loa USB cũ, có trình điều khiển lạ và không hoàn toàn tự động định cấu hình làm card âm thanh mặc định, vì vậy tôi thấy mình có thể "hack" loa hoạt động bằng cách sử dụng địa chỉ phần cứng của nó. Sau khi cắm loa, tôi sử dụng lệnh 'aplay -l' để liệt kê các thiết bị âm thanh:

pi @ schoolbell: ~ $ aplay -l

**** Danh sách các thiết bị phần cứng PLAYBACK **** thẻ 0: Tai nghe [Tai nghe bcm2835], thiết bị 0: Tai nghe bcm2835 [Tai nghe bcm2835] Các thiết bị con: Subdevice # 0: subdevice # 0 Subdevice # 1: subdevice # 1 Subdevice # 2: subdevice # 2 Subdevice # 3: subdevice # 3 Subdevice # 4: subdevice # 4 Subdevice # 5: subdevice # 5 Subdevice # 6: subdevice # 6 Subdevice # 7: subdevice # 7 thẻ 1: CODEC [USB Audio CODEC], thiết bị 0: Âm thanh USB [Âm thanh USB] Thiết bị con: Thiết bị con # 0: Thiết bị con # 0

Thiết bị tôi muốn là thiết bị thấp hơn, thẻ 1, thiết bị 0.

Tôi đã kiểm tra loa bằng "speaker-test", sử dụng thiết bị "hw: 1, 0", nghĩa là thẻ phần cứng 1, thiết bị 0

pi @ schoolbell: ~ $ loa-test -D hw: 1, 0

Chương trình này loại bỏ tiếng ồn từ loa. Hãy tận hưởng tiếng ồn, sau đó gõ control-C khi bạn cảm thấy khó chịu. Nếu bạn không nghe thấy tiếng ồn, hãy thử google.

Bây giờ bạn có âm thanh!

Bước 3: Kiểm tra phát lại âm thanh chuông và / hoặc tạo âm thanh mới

Kiểm tra phát lại âm thanh chuông và / hoặc tạo âm thanh mới
Kiểm tra phát lại âm thanh chuông và / hoặc tạo âm thanh mới

Đối với chuông của tôi, tôi đã tải xuống âm thanh "bing-bong" từ "freesound.org". Cảm ơn Benboncan đã cung cấp âm thanh này:

freesound.org/people/Benboncan/sounds/93646/

Bạn có thể phát âm thanh trực tiếp. Tôi có thể tải xuống trực tiếp phiên bản mp3 của tệp này bằng cách nhập lệnh này trên máy tính Raspberry Pi (giả sử nó có trên Wi-Fi):

pi @ schoolbell: ~ $ wget

Sau đó, tôi đã đổi tên tệp này:

pi @ schoolbell: ~ $ mv 93646_634166-hq.mp3 bing-bong-chime-hq.mp3

Sau đó, tôi đã kiểm tra rằng tôi có thể rung chuông bằng lệnh này (hiển thị đầu ra):

pi @ schoolbell: ~ $ mpg321 -a hw: 1, 0 bing-bong-chime-hq.mp3

Trình phát âm thanh MPEG 1.0 / 2.0 / 2.5 Hiệu suất cao cho Lớp 1, 2 và 3. Phiên bản 0.3.2-1 (2012/03/25). Được viết và giữ bản quyền bởi Joe Drew, hiện do Nanakos Chrysostomos và những người khác duy trì. Sử dụng mã từ nhiều người khác nhau. Xem 'README' để biết thêm! PHẦN MỀM NÀY TUYỆT ĐỐI KHÔNG CÓ BẢO HÀNH! SỬ DỤNG CÓ NGUY CƠ CỦA RIÊNG BẠN! Đang phát luồng MPEG từ bing-bong-chime-hq.mp3… MPEG 1.0 lớp III, 128 kbit / s, 44100 Hz mono [0:02] Đã hoàn thành giải mã bing-bong-chime-hq.mp3.

Chúc mừng! Bạn có âm thanh.

Sử dụng mã chỉnh sửa âm thanh "audacity" trên máy tính xách tay của mình, tôi chia tệp thành "bing" và "bong" cho vui hơn. Bạn có thể sử dụng bất kỳ tệp âm thanh mp3 hoặc có thể định dạng khác (tôi chưa thử nghiệm những người khác).

Bước 4: Cài đặt mã và đặt lịch trình của bạn

Cài đặt mã và đặt lịch biểu của bạn
Cài đặt mã và đặt lịch biểu của bạn

Mã là một tập lệnh python lấy ngày / giờ hiện tại và nếu ngày đó là một ngày trong tuần chứ không phải ngày lễ, nó sẽ kiểm tra xem thời gian có khớp với thời gian chuông hay không, nếu cần.

Trước tiên, bạn sẽ làm cho nó hoạt động, sau đó bạn sẽ tự động hóa nó để chạy mỗi phút.

Tải xuống mã từ Github:

gist.github.com/BillSimpson/d7a1a531995c8b63492bb47ef8872618

Tôi thấy thật dễ dàng để thực hiện việc này bằng cách lưu tệp trên máy tính cục bộ sau đó sử dụng bản sao bảo mật (scp) để đưa nó vào Raspberry pi.

Trên máy cục bộ của bạn, sao chép mã từ trình duyệt của bạn, sau đó dán vào tệp văn bản và lưu nó với tên tệp "schoolbell.py". Sau đó lướt qua tệp:

local-machine: ~ $ scp schoolbell.py [email protected]: ~ /

Bạn sẽ được nhắc nhập mật khẩu cho người dùng pi trên schoolbell.local - hãy nhập mật khẩu và tệp được sao chép an toàn. Lệnh này phải được chạy trong cùng một thư mục nơi tập lệnh python đã được lưu và sao chép nó vào thư mục chính của người dùng pi. Bạn có thể chuyển sang schoolbell.local và mã sẽ ở đó:

local-machine: ~ $ ssh [email protected]

Sau đó, trên schoolbell.local, liệt kê các tệp (bạn có thể xem thêm tệp):

pi @ schoolbell: ~ $ ls

bing-bong-chime-hq.mp3 schoolbell.py

Bây giờ hãy chỉnh sửa mã để làm cho nó có lịch chuông của bạn bằng cách sử dụng một trình chỉnh sửa như pico:

pi @ schoolbell: ~ $ pico schoolbell.py

Mã này có ba "từ điển" xác định âm chuông để phát, thời gian phát chúng và những ngày nghỉ cần tránh, Chuông vào cuối tuần sẽ tự động bị bỏ qua.

Ví dụ, từ điển belltones là:

belltones = {

'warning': 'bing-bong-chime-hq.mp3', 'start': 'bing-bong-chime-hq.mp3', 'end': 'bing-bong-chime-hq.mp3'}

Điều này xác định ba loại chuông, chuông cảnh báo, bắt đầu lớp học và kết thúc. Bởi vì chúng ta chỉ có một âm chuông, tất cả chúng đều trỏ đến cùng một tệp, nhưng nếu bạn tạo các âm khác nhau, bạn có thể thay đổi chúng. Bạn thậm chí có thể thêm các loại âm chuông khác. Tôi cũng đã chơi với việc sử dụng bộ tổng hợp giọng nói để nói tiếng chuông, nhưng điều đó không được những người khác trong nhà xem thuận lợi.

Từ điển bellschedule cũng tương tự, nhưng "chìa khóa" bây giờ là thời gian cho tiếng chuông. bạn cần sử dụng định dạng HH: MM với các số 0 ở đầu và thời gian 24 giờ (giờ quân sự).

bellschedule = {

'09: 00 ':' bắt đầu ', # chuông' Xe buýt 'để sẵn sàng '09: 28': 'cảnh báo',….. '13: 58': 'cảnh báo', # cho khoảng thời gian 4 '14: 00 ':' start ', '15: 00': 'end'}

Giá trị trong khóa này: cặp giá trị là loại âm chuông để sử dụng và cần khớp với một trong các âm chuông được xác định ở trên.

Cuối cùng, từ điển ngày lễ liệt kê các ngày lễ. Định dạng là YYYY-mm-dd, với các số 0 ở đầu như được hiển thị.

ngày lễ = {

'2020-09-07', …. '2021-03-11', '2021-03-12' }

Sau khi chỉnh sửa xong, hãy lưu tệp bằng cách thoát khỏi trình chỉnh sửa của bạn, nhập ctrl-X nếu bạn đang sử dụng pico.

Làm cho mã python có thể thực thi bằng cách:

pi @ schoolbell: ~ $ chmod a + x schoolbell.py

Điều này cho phép tất cả người dùng thực thi mã, "a" cho tất cả, "+" để thêm quyền và "x" để thực thi.

Bây giờ hãy chạy thử mã và quan sát đầu ra. Lưu ý rằng bạn có thể chạy tệp bằng cách nhập tên tệp nhưng cần xác định rằng nó nằm trong thư mục hiện tại bằng cách nhập "./" trước tên tệp:

pi @ schoolbell: ~ $./schoolbell.py

Bây giờ là một ngày học, kiểm tra thời gian 21:35

Mã sẽ cho bạn biết liệu đó có phải là ngày đi học (ví dụ: không phải là ngày lễ hay cuối tuần) và xem thời gian có khớp với thời gian chuông báo hay không. Trong trường hợp này, nó không phải là thời gian chuông, vì vậy nó chỉ thoát ra một cách sạch sẽ. Nếu đó là thời gian đổ chuông, nó sẽ rung.

Để kiểm tra xem mã của bạn có thể phát chuông hay không, hãy sử dụng tùy chọn dòng lệnh của tệp để phát. Chúng tôi sẽ sử dụng tệp bing-bong của chúng tôi:

pi @ schoolbell: ~ / schoolbell $./schoolbell.py bing-bong-chime-hq.mp3

Đang là ngày học, giờ kiểm tra 21:38 Trình phát âm thanh MPEG 1.0 / 2.0 / 2.5 Hiệu suất cao cho Lớp 1, 2 và 3. Phiên bản 0.3.2-1 (2012/03/25). Được viết và giữ bản quyền bởi Joe Drew, hiện do Nanakos Chrysostomos và những người khác duy trì. …. nhiều đầu ra….

Bạn nên nghe thấy tiếng chuông.

Bây giờ hãy kiểm tra mã bằng cách sử dụng thời gian làm đối số. Hãy nhớ nhập thời gian bằng các số 0 ở đầu. Ví dụ: để kiểm tra chuông "xe buýt trường học" của tôi lúc 9 giờ sáng, tôi nhập:

pi @ schoolbell: ~ $./schoolbell.py 09:00

Điều này sẽ làm cho chuông của bạn đổ chuông! Bạn cũng có thể kiểm tra xem nó không đổ chuông vào những thời điểm không có chuông.

Bước 5: Tự động hóa quá trình chạy với Crond

Tự động hóa quá trình chạy với Crond
Tự động hóa quá trình chạy với Crond

Cron 'daemon' là một bộ lập lịch chạy các tác vụ lặp đi lặp lại trên hệ thống linux. Nó kiểm tra xem ngày / giờ có khớp với một mẫu trong bảng cron (crontab) hay không và sau đó chạy mã nếu có. Bạn có thể chỉnh sửa nó bằng lệnh "crontab -e":

pi @ schoolbell: ~ $ crontab -e

Thao tác này sẽ mở trình chỉnh sửa tệp và ở cuối tệp này, bạn sẽ thêm dòng sau:

* * * * * python3 /home/pi/schoolbell.py

Lệnh này yêu cầu cron chạy python3 thực thi tập lệnh của bạn trong thư mục chính bình thường (/ home / pi). Năm * nói rằng điều này sẽ chạy mỗi phút (đầu tiên *), mỗi giờ (tiếp theo *…), mỗi ngày trong tháng, mỗi tháng và mỗi ngày trong tuần.

Bây giờ, tập lệnh schoolbell.py sẽ chạy mỗi phút. Trong hầu hết các phút, mã sẽ chạy và thấy nó sẽ thoát ra mà không kêu vang, nhưng nếu nó xuất hiện trong một thời gian chuông, nó sẽ kêu vang.

Lưu ý rằng vì cron chỉ chạy mỗi phút, bạn không thể làm cho chuông chi tiết hơn theo phút. Tôi nghĩ về mặt lý thuyết có thể xảy ra trường hợp nếu hệ thống của bạn bị sa lầy, cron có thể không chạy trong vài giây sau khi kết thúc phút, khiến chuông báo trễ. Nếu bằng cách nào đó cron không chạy trong một phút đầy đủ, chuông sẽ bị bỏ lỡ.

Mẹo: Đối với các kỳ nghỉ kéo dài (ví dụ: mùa hè), bạn có thể thêm thẻ bắt đầu bằng # (#) vào ký tự đầu tiên của dòng này, thẻ này sẽ biến nó thành một nhận xét và do đó bỏ qua việc chạy nó. Khi trường học hoạt động trở lại, chỉ cần xóa dấu # và nó sẽ bắt đầu chạy lại.

Bước 6: Tùy chỉnh và tận hưởng

Bây giờ, bạn nên có một hệ thống chuông trường học tại nhà hoạt động và học sinh của bạn không bao giờ được đến lớp muộn.

Bạn có thể tùy chỉnh dự án này bằng cách thay đổi âm chuông.

  • Bạn có thể làm cho nó đổ chuông Big Ben, với chuông hàng quý và chuông báo giờ.
  • Bạn có thể thử phong cách tự do của rapper yêu thích của bạn.
  • Bạn có thể đưa ra những thông điệp cao siêu để tập trung vào việc học.

Giữ an toàn trong thời gian COVID này.

Hình ảnh
Hình ảnh
Hình ảnh
Hình ảnh

Về nhì trong cuộc thi dành cho gia đình "Không thể chạm vào" này

Đề xuất: