These days, the novel coronavirus (COVID-19) is causing turmoil both domestically and internationally. A large number of confirmed cases have emerged in Korea, and thermal cameras are being installed in many places, including airports and hospitals. However, in many locations, staff must be stationed next to the cameras to monitor them constantly.
As an IT developer, I wanted to create a service that could judge and notify more conveniently, quickly, and accurately using my knowledge.

Thermal camera
Higher pixel count and better cameras are expensive, especially since they need to be shipped from China, so I bought a thermal camera with an 8x8 resolution available immediately.
Adafruit AMG8833 IR Thermal Camera Breakout

Sample code made with python + pygame.
Raspberry pi
Initially, AWS Deeplens was considered, but the thermal cameras received information through GPIO, so we had to find another alternative. So I chose the Raspberry Pi which was in the desk drawer.
Fortunately, the Raspberry Pi case was compatible with Lego, so the Raspberry camera and thermal camera could be installed on the Lego blocks.

I installed a python program on my Raspberry Pi and gave it permission to upload photos to the Amazon S3.
For more code, please refer to here.
Slack App
In order to receive notifications from Slack, or to save usernames in Slack, Slack App was created according to Settings.

Lambda Backend
When the photo is uploaded to Amazon S3 Bucket, AWS Lambda Function should be called by Trigger.
The Lambda function performs facial recognition with Amazon Rekognition and stores them in Amazon DynamoDB for each person.
This time, I developed and deployed using Serverless framework.
For more code, please refer to here.
Amplify Frontend
Names and photos stored in DynamoDB are served through the web. This app was developed and distributed using AWS Amplify.
Frontend used Javascript and React.
Then, I used the Rest API to query DynamoDB created in Backend, which was also created with AWS Lambda Function.
People who were recognized but whose names were unknown were saved as Unknown. Authentication for the name input form was handled using Amazon Cognito. Amplify made it easy to apply login and signup pages without coding them directly.

For more code, please refer to here.
Architecture

Thanks for reading.