リアルタイムCOVID-19感染者数トラッカー&アラートシステム
必要な部品と材料
| Arduino UNO | ×1 |
| Bolt IoT Bolt WiFiモジュール | ×1 |
| Adafruit RGBバックライトLCD - 16×2 | ×1 |
プロジェクト概要
このプロジェクトは2つの機能を持ちます。1つ目:世界のコロナウイルス総感染者数を表示(パンデミック当時のデータ)。2つ目:10分間で感染者数が500人増加したらブザーを鳴らし、コロナの深刻さを警告。
常に感染者数を表示し、危険性を意識させるのが最善の警戒方法です。
Boltモジュールのセットアップ
ESP8266は有名なWi-Fiモジュールですが、Boltはそのさらに上の簡易化レイヤーです。Arduinoがマイコン制御を簡易化したように、BoltはESP8266をAPIで制御できるようにします。専用言語はなく、JavaScript/HTMLがベースですが、API経由で公式言語のように制御可能。
まずboltiot.comでアカウント作成。ログイン後、Device IDとAPI Keyを取得(APIはEnable必須)。Pythonのboltiotライブラリ(GitHub)をインストール。Google Colabでの実行がおすすめ。
データ取得元:Worldometers。PythonでWebスクレイピング(urllib + BeautifulSoup)して総感染者数を取得。
boltiotライブラリの主な関数:

Pythonコード実行時にAPI KeyとDevice IDを入力。


Arduino側
BoltからUART(Tx/Rxクロス接続)でデータ受信。ArduinoはSerial.read()で受信し変数に格納。LiquidCrystalライブラリでLCD制御。lcd.print()で表示。LCD設定とカーソル位置指定を忘れずに(公式チュートリアル参照)。
これで世界のコロナ総感染者数ライブアップデーター完成。

さらに、10分で100人増加時にブザーを5秒鳴らす機能も搭載(コード内では500人/10分の条件も)。動作は動画で確認可能。
コード
Pythonコード
from bs4 import BeautifulSoup as bf import requests import time from boltiot import Bolt import ssl a = list() #———————-Algorithum to compare the values every 10 min————— def checking1(x,count): a.insert(count,x) if count == 1: print(a) if(a[1]-a[0] > 10): a.clear() return(1) else: a.clear() return(0) #—————————getting the value from website———————— def getting_value(): #getting the value from website y = '' html = requests.get("https://www.worldometers.info/coronavirus/") soup = bp(html.text,'html.parser') tag = soup("span") Effected_people = tag[4].contents[0] for i in range(9): if i==1 or i==5: continue y = y + Effected_people[i] x = int(y) return(x) #———————Execution starts from here———————————— Effected_people = getting_value() apikey = input("Enter API Key") Bolt_id = input("Enter the Bolt_ID") device = Bolt(apikey,Bolt_id) for i in range(1000): print(device.isOnline()) response = device.serialBegin(9600) x = getting_value() z = checking1(x,0) response2 = device.serialWrite(x) print(response2) time.sleep(100) #time.sleep(100) with delay for execution for 100 sec y = getting_value() z = checking1(y,1) response2 = device.serialWrite(y) if(z == 1): device.digitalWrite('0','HIGH') time.sleep(5) device.digitalWrite('0','LOW')
Arduinoコード
#include<LiquidCrystal.h> LiquidCrystal lcd(2,3,4,5,6,7); //Initialising the LCD void setup() { Serial.begin(9600); lcd.begin(16,2); // 16*2 LCD display lcd.home(); Serial.setTimeout(50); lcd.print("Total affected :"); } void loop() { String x; lcd.setCursor(0,2); if(Serial.available()>0) // Reading the data from UART { x = Serial.readString(); } lcd.print(x); //Printing it to the LCD DISPLAY }
回路図
Arduino-LCD接続、Bolt-Arduino接続。

製造プロセス
- GY-91モジュールでRaspberry Pi上に堅牢な温度・センサーAPIを構築
- Raspberry Pi で Motion を使ったライブ IP カメラのセットアップ – ステップバイステップガイド
- ネジとボルトの種類を理解して最適な組み立てを実現する
- ネジとボルトの違い:種類、用途、選び方のポイント
- ボルトヘッドの種類と安全な締結への活用:実践ガイド
- ボックスレンチ(メガネレンチ):構造、使い方、メリット
- マシンボルト完全ガイド:種類、グレード、材質、正しいトルク管理で確実な締結を
- ラッチボルト完全解説:ドアを閉じ続ける最古の機構、クロスバーから現代デッドボルトまで
- Java 9(JDK 9)の主要機能とメリット
- Java 9マルチ解像度イメージAPI:レスポンシブグラフィックスを簡素化
- Java 9 CompletableFuture API改善:遅延・タイムアウト・サブクラス対応・新ファクトリ