Arduino miljø sensor er teknologier bestående af Python og Arduino.
I dette projekt er der brugt:
MKR1000
KY-028
Afsnit 1: Installation
Hvis det er første gang MKR1000 modulet bliver er i brug på din pc skal der installeres nogle drivere, det plejer Arduino IDE at prompte hvis det er åbent når forbindelsen startes.
Derefter skal der hentes et library fra package manager kaldet “Wifi101”
Afsnit 2: Wifi
Når drivere og library er sat op kan vi nu påbegynde programmerings delen.
MKR1000 bliver forbundet til SKP2.4GHz da informationen fra MKR modulet skal hentes fra en python client:
char pass[] = “SSID password”;
char ssid[] = “Chosen SSID”;
while (WiFi.begin(ssid, pass) != WL_CONNECTED)
{
Serial.println(“reconnecting… “);
delay(2000);
}
Med denne code snippet kan vi registrere om Arduino modulet er forbundet til internettet.
Afsnit 3: Data
For at få fat i KY-028 data skal vi få Arduino modulet til at læse det’s input.
int intNavn analogRead(Pin hvor sensor input er)
Denne linje vil give input fra KY modulet, og så er man klar til at filosofere over problemløsninger.
Projektet som denne tutorial er baseret på:

Arduino kode:
#include <WiFiUdp.h>
#include <SPI.h>
#include <WiFi101.h>
unsigned int localPort = 2396;
int status = WL_IDLE_STATUS;
int sensorPinTemp = A0;
int sensorPinLight = A1;
int sensorValue_temp = 0;
int fixInput = 560;
float i = 0;
float fixtemp = 20.0;
float fixedDegreeValue = 5.5;
char packetBuffer[255];
char pass[] = "SSID password";
char ssid[] = "Chosen SSID";
WiFiUDP Udp;
void setup ()
{
Serial.begin (9600);
pinMode(13, OUTPUT);
}
void loop ()
{
if (WiFi.status() != WL_CONNECTED)
{
digitalWrite(13, LOW);
while (WiFi.begin(ssid, pass) != WL_CONNECTED)
{
Serial.println("reconnecting... ");
delay(2000);
}
Serial.print("Connected to ");
Serial.println(WiFi.SSID());
wifiStatus();
}
sensorValue_temp = analogRead(sensorPinTemp);
int packetSize = Udp.parsePacket();
if (packetSize)
{
Serial.print("From ");
IPAddress remoteIp = Udp.remoteIP();
Serial.print(remoteIp);
Serial.print(", port ");
Serial.println(Udp.remotePort());
int len = Udp.read(packetBuffer, 255);
if (len > 0)
{
packetBuffer[len] = 0;
}
i = fixInput - sensorValue_temp;
i = i /fixedDegreeValue;
Serial.print("Temperature: ");
fixtemp = fixtemp + i;
String tempString = String(fixtemp);
char tempChar[10];
tempString.toCharArray(tempChar, 10);
Serial.print(tempString);
Serial.println();
Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
Udp.write(tempChar);
fixtemp = 20;
Udp.endPacket();
}
delay(1000);
}
void wifiStatus()
{
IPAddress ipv4 = WiFi.localIP();
Serial.print("Arduino IP: ");
Serial.println(ipv4);
Udp.begin(localPort);
digitalWrite(13, HIGH);
}
Python kode:
import sys
import time
import _thread
from socket import *
import tkinter as tk
address = ('192.168.1.69', 2396)
client_socket = socket(AF_INET, SOCK_DGRAM)
client_socket.settimeout(1)
def arduino_conn():
data = "0"
try:
client_socket.sendto(str.encode(data), address)
rec_data, addr = client_socket.recvfrom(2048)
data_recived = str(rec_data)
udp_temp_string = data_recived[data_recived.index('\'') + 1:]
udp_temp_string = udp_temp_string.replace("\'", "")
#print(udp_temp_string + " °C")
return udp_temp_string
except Exception as e:
print(e)
pass
class Application(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.pack()
self.create_widgets()
#self.get_temp()
def create_widgets(self):
self.temp = tk.Label(self, text="00.00°C", fg="red")
self.temp.config(font=("Courier", 70))
self.temp.pack(side="bottom")
_thread.start_new_thread( self.get_temp,())
def get_temp(self):
while 1:
try:
self.temp['text'] = arduino_conn()+ "°C"
time.sleep(3)
except Exception as e:
print(e)
pass
root = tk.Tk()
app = Application(master=root)
app.mainloop()