Harsha’s Progress

I am choosing to go with my idea of text to fax where it prints out select text messages. The idea is that these text messages will go in a queue and then when the user puts their hands above the sensor it will print out one of the text messages in the queue. I know there are a couple text brokers out there where you can send text through them and they’ll connect with the wifi board. I am still figuring out the text input but I have started my materials list and the circuit diagram.

Final Idea Materials List

Text to Fax printer

-Thermal Printer (Looks like Adafruit discontinued their thermal printers so here is one from Seeed studio, I read on the forums they are basically equivalent)

-Thermal Paper

1 Motion Sensor

– 1 Led (2 settings–One for printing, One for no new messages)

-Ping Pong ball (or smaller–for diffusion of sensor)

– Adafruit Wifi-Compatible Board

-For the messages to print, I might use Mosquitto as my text broker but still researching on this

Circuit Diagram

Carol’s IoT and Final Project Planning

Bill of Materials (BOM):

Idea1:

Clear Acrylic Sheets 1/8″ Thick 4″ x 6″https://www.amazon.com/gp/product/B0CLHQZJVZ/ref=ox_sc_act_title_1?smid=A37FRF5AURRF9M&psc=1

LED light

Idea4: Stainless Steel Hollow Ball (I want an opaque plastic or acrylic ball, but I don’t know if the thermal conductivity will be good enough): https://www.amazon.com/gp/product/B0BQZRW4VC/ref=ox_sc_act_image_1?smid=A2T37KO80TMWQQ&th=1

Possible temperature sensors:

TMP36 – Analog Temperature sensor – TMP36 https://www.adafruit.com/product/165

reference instruction https://www.instructables.com/TMP36-Temperature-Sensor-Arduino-Tinkercad/

Adafruit PCT2075 Temperature Sensor – STEMMA QT / Qwiic https://www.adafruit.com/product/4369

LED light


Rough draft circuit diagram:

Idea1 (a Playback Counting Board for YouTubers. After the video playback reaches a specific value 1000, the YouTube acrylic panel light on the desktop will be turned on) possible code:

const char *ssid = “YourWiFiSSID”;
const char *password = “YourWiFiPassword”;

const int buttonPin = D2; // Connect the push button to pin D2
const int ledPin = D3; // Connect the LED to pin D3

volatile int playbackCount = 0;

void setup() {
Serial.begin(115200);
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);

connectToWiFi();

attachInterrupt(digitalPinToInterrupt(buttonPin), incrementPlaybackCount, FALLING);
}

void loop() {
if (playbackCount >= 1000) {
digitalWrite(ledPin, HIGH); // Turn on the LED when playback count reaches 1000
} else {
digitalWrite(ledPin, LOW); // Turn off the LED if playback count is less than 1000
}
}

void incrementPlaybackCount() {
playbackCount++;
Serial.println(“Playback Count: ” + String(playbackCount));
}

void connectToWiFi() {
WiFi.begin(ssid, password);
Serial.print(“Connecting to WiFi”);

while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(“.”);
}

Serial.println(“\nConnected to WiFi”);
}

In this code:

  • The button is connected to pin D2 and set up with a pull-up resistor.
  • The LED is connected to pin D3.
  • The playbackCount is a counter that increments when the button is pressed (interrupt triggered).
  • The LED will turn on when the playback count reaches 1000.
  • The ESP8266 connects to the WiFi network using the provided credentials.

Idea4 (a Divinationcrystal ball. When your hand is close to the crystal ball for a period of time, the heat sensor will sense the heat and will light up the built-in LED lights):

Possible code:

const int heatSensorPin = A0; // Connect the heat sensor to analog pin A0
const int ledPin = 13; // Built-in LED on most Arduino boards

const int heatThreshold = 300; // Adjust this value based on your sensor and environment

void setup() {
pinMode(heatSensorPin, INPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}

void loop() {
int heatValue = analogRead(heatSensorPin);
Serial.println(“Heat Value: ” + String(heatValue));

if (heatValue > heatThreshold) {
// If heat is detected, turn on the LED
digitalWrite(ledPin, HIGH);
} else {
// If no heat is detected, turn off the LED
digitalWrite(ledPin, LOW);
}

delay(1000); // Adjust the delay as needed
}

Final Project Planning


Caffeine v Hydration Coaster

Bill of Materials
– Acrylic $15-20
– TBD I would probably need to get a new controller to fit with slender design
– Mini display screen

@Becky, how complicated would it be to create a locking mechanism to lock coffee cup until catch up with water sips?

Dispenser Sensor

Bill of Materials
– 3D printed so lets say around $10
– PIR (motion) sensor
– button

Working on the circuit diagram visual

More coming soon… 😊

Erica’s Final Project Ideas

IDEA 1: Cat-to-Cat is a cat toy pairing. Your cat plays with toy A and your friend‘s cat plays with toy B – and they start whenever the other toy starts! You and your long distance BFF will delight as your cats both share in each other’s fun throughout the day.


IDEA 2: My friends tease me a lot because I have ~100 alarms on my phone, and I use them to usher me along in my day. For instance, if I’m hanging out with a friend getting lunch, and I have to leave to make the train at 2:32pm… I’ll set an alarm for 2:20pm so that I don’t get lost in conversation and forget to leave. I prefer that to feeling like I need to constantly check the time and not be present to my conversation! Or, sometimes I’ll set an alarm to help me know to switch tasks (move from one homework to another).

However, the sound of alarms suck and trigger stress. I also don’t like relying on screen notifications because they’re distracting during socializing or concentrated work.

So, how about a nice bracelet that has an LED “rhinestone” that gently lights up 10 minutes in advance of a scheduled item on my phone? And it could change color as the “deadline” approaches. It could even have a “snooze” color feature.

JIAQI’S final project ideas

1. Just cool, flexible sensor finger sleeves, remote control interaction effects、

————————————————————–

2. Sing as soon as you take a shower

————————————————————–

3. Correct the fitness posture of the camera, easy to fix

————————————————————–

4. Lifebar, just like to punch a BOSS

4.2 Drink water reminder

.

Emma’s Final Project Ideas

  1. Task Completion Button
    More specifically, a medication dispenser that sends notification via text that the person has taken their am/pm dose. This is inspired by taking care of an elderly woman and needing reassurance she has taken her pills. She is not tech savvy so a button that sends automated confirmation to her caregivers would be handy!
  2. Sip Counter
    I know I’m not the only one who 1) drinks a lot of coffee and 2) forgets to balance with water. This sip counter will keep me aware of my caffeine vs. water consumption!
    Design 1: smart coaster
    Design 2: smart scale

Yifan’s Final Project Ideas

Concept 1: Doggie

An ultrasonic sensor will record the activities and upload them to your phone.

If the user interacts less than 10 times, they will receive a warning message.

Concept 2: Desk game

Use the phone to control the soccer ball.

Concept 3: Kick this button

Record the laptop or the phone’s click times and send them to Ax. Ax will “kill” the control button.

11.14 Process

Javascript game combine with physical game

Create a mobile game:

  1. Choose a Game Development Platform:
    • Select a game development platform that suits your skill level and requirements. For example, Unity is a popular and powerful game development engine that supports cross-platform development.
  2. Learn Game Development Basics:
    • Acquire knowledge about basic concepts such as game design, scene creation, and character control.
  3. Create Game Scene:
    • Utilize game development tools to create a simple game scene and implement functionalities for controlling the character.
  4. Design User Interface (UI):
    • Add a virtual joystick, buttons, or other UI elements for control, which will be used for communication with the ESP8266.
  5. Write Game Logic:
    • Develop game logic, including the part that involves communication with the ESP8266. Here, you’ll need to define control commands and their corresponding actions.
  6. Export the Game:
    • Export the game as an application suitable for your target platform (iOS, Android, etc.).

ESP8266 Communication:

  1. Connect ESP8266 to WiFi network:
    • Use the WiFi library of ESP8266 to connect it to a WiFi network. You will need to provide the WiFi SSID and password.
  2. Create WebSocket Server:
    • Utilize the WebSocket library of ESP8266 to create a WebSocket server that listens for control signals from the mobile game.
  3. Write Code to Handle Control Signals:
    • Write code on ESP8266 to handle control signals received from the WebSocket. These signals will instruct the ESP8266 on how to move servos or perform other actions.
  4. Communicate with Mobile Game:
    • In the mobile game, use a WebSocket library or other network libraries to send control signals to the WebSocket server on ESP8266.
  5. Test:
    • Test the entire system, ensuring that control commands from the mobile game are correctly sent to ESP8266, and ESP8266 can accurately interpret and execute the corresponding actions.
  6. Debug and Optimize:
    • If there are any delays or communication issues, debug and perform necessary optimizations.

JavaScript

ESP8266 code

const char *ssid = “WiFiSSID”;
const char *password = “WiFiPassword”;
const int webSocketPort = 81;
const int buttonPin = 2;
const int servoPin = 5;

Servo myServo;
WebSocketsServer webSocketServer = WebSocketsServer(webSocketPort);

void handleWebSocketMessage(uint8_t num, uint8_t *data, size_t length) {
if (length > 0) {
int angle = data[0];
myServo.write(angle);
}
}

void setup() {
Serial.begin(115200);

pinMode(buttonPin, INPUT);
myServo.attach(servoPin);

WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println(“Connecting to WiFi…”);
}
Serial.println(“Connected to WiFi”);

webSocketServer.begin();
webSocketServer.onEvent(handleWebSocketMessage);
}

void loop() {
webSocketServer.loop();

if (digitalRead(buttonPin) == HIGH) {
myServo.write(90);
delay(1000);
} else {
myServo.write(0);
}
}