ዝርዝር ሁኔታ:
- ደረጃ 1 የሃርድዌር መገልገያ
- ደረጃ 2 ሞንታጋም ሃርድዌር ያድርጉ
- ደረጃ 3: firmware Atmega328
- ደረጃ 4: Programação Em Python
- ደረጃ 5 Configurando O የድር አገልግሎት
ቪዲዮ: Irrigações Automatizadas Com የድር አገልግሎት Utilizando Python: 5 ደረጃዎች (ከስዕሎች ጋር)
2024 ደራሲ ደራሲ: John Day | [email protected]. ለመጨረሻ ጊዜ የተሻሻለው: 2024-01-30 07:33
Neste projeto iremos desenvolver um sistema de monitoramento para plantações, que irá obter dados de umidade relativa do ar, pressão atmosférica, temperatura do ar, incidência UV, velocidade do vento e condição da planta (ሴካ/ሞልሃዳ)። Alguns desses dados são obtidos localmente, enquanto outros são obtidos por meio de um Web Service conectado à uma estação meteorológica (No caso, estamos utilizando a da Faculdade de Engenharia de Sorocaba)። አፖስ አድኩሪዶስ ፣ ኦስ ዳዶስ ሰርአኦ disponibilizados em uma aplicação web baseada em ThingSpeak።
ደረጃ 1 የሃርድዌር መገልገያ
Foi utilizado para a construção deste projeto:
1x Qualcomm Dragonboard 410c
1x ግሮቭ የተመለከተ ዳሳሽ Mezzanine
1x ውሃ የተመለከተ ዳሳሽ
1x IMU 10OF ግሮቭ ዳሳሽ v1.0
1x የፀሐይ ብርሃን ግሮቭ ዳሳሽ v1.0
1x መዳፊት ዩኤስቢ
1x Teclado USB
1x ማሳያ
1x Cabo HDMI
1x Adaptador HDMI-VGA
Acesso à dados da estação meteorológica FACENS
ደረጃ 2 ሞንታጋም ሃርድዌር ያድርጉ
Após conectar a placa Sensor Mezzanine à dragonboard ፣ አንድ ligação de acordo com o esquemático anterior, sendo:
1: Conexão direta entre o አነፍናፊ ግሩቭ የፀሐይ ብርሃን v1.0.
2: +5V conectado ao Vcc IMU-10DOF ያድርጉ።
3: +5V e Gnd conectados aos pinos correspondentes የውሃ ዳሳሽ።
4: GND IMU-10DOF።
5: SDA/SCL conectado ao pino ዘጋቢ ኢምዩ -10 ያድርጉ።
6: ፒኖ ሲግ do የውሃ ዳሳሽ conectado ao pino 2።
ደረጃ 3: firmware Atmega328
Através da Sensors Mezzanine, é possível acessar um microcontrolador Atmega328, o mesmo utilizado em plataformas Arduíno, e programá-lo diretamente, IDI Arduíno instalada እና DragonBoard ን ይጠቀሙ። በሜዛንኒን እና በ DragonBoard ውስጥ በቪዲዮ ሬሴልታር ለፕሮግራሙ ç o ç ç firmware firmware firmware firmware firmware firmware firmware firmware firmware firmware firmware firmware firmware firmware firmware firmware firmware firmware
እንደ firmware lecuracca re Responsevel እንደ leituras dos sensores ፣ gerenciando os protocolos de comunicação e operação dos mesmos ፣ e após a aquisição dos dados ፣ os encaminha via porta serial para a DragonBoard.
*ምንም አስፈላጊ የጽሑፍ አስፈላጊነት የለም። Elas podem ser encontradas em:
imu-10DOF
የፀሐይ ብርሃን ዳሳሽ
እርስዎ የጽኑ ትዕዛዝ አጠቃቀምን በመጠቀም ኢንኮንቶዶ አኳ ወይም ሌላ -
ደረጃ 4: Programação Em Python
Para o programa criado, foram necessários os seguintes አስመጪዎች ፦ 'urllib2', 'json', 'time', 'serial', 'paho.mqtt.publish', 'psutil' e 'decimal'. Foram definidos duas funções ('comJSON' e 'semJSON') que serão explicadas mais tarde.
ማስመጣት urllib2 ፣ json #para pegar os dados da estacaoimport time #para o time.sleep () serial #para o Arduino import paho.mqtt.pub as as published #para publicar import psutil #para configurar o url import decimal #para converter
O primeiro passo é gravar em uma variável o endereço de onde serão obtidos os dados da Estação Meteorológica (ምንም caso estamos gravando na variável 'url')። ኢሜ ሴጉይዳ ፣ ኢንሲሊዛሞስ ዱአስ ቫሪቫስ ('i' e 'j') ፣ utilizando 'i' para pegar os dados mais atuais do Array que iremos receber በ JSON (como a posição mais recente da Array será a 49, inicializamos 'i' como 49) e 'j' para contar quantas vezes o código já rodou።
url = "https://www.fieldclimate.com/api/CIDIStationData/GetLast?user_name=facens&user_passw=clima&station_name=002035C0" #URL ወይም estação
i = 49 #Para pegar os dados mais atuais da estação
j = 0 #Passo do programa
Entrando no 'while (1)', inicializamos a variável 'jsonurl' como 'No'. አንድ ዩአርኤል JSON ን አርትዕ ያድርጉ ፣ በዚህ ጊዜ ‹እንዲሁም ›ያድርጉ ፣ estamos então resetando ela toda vez que repetirmos o loop. O próximo passo é abrir or URL usando a função 'urllib2.urlopen (url)' ፣ podendo também adicionar um argumento 'timeout = X', sendo X uma quantidade em segundos limite para o URL ser aberto. አንድ የዩአርኤል ዲንቶ ቴምፖም የማብቂያ ጊዜን ፣ ወይም ፕሮግራሙን በ ‹comJSON› mencionada anteriormente ውስጥ ለሚያስደስተው / ለሚያስታውቅ / ለማስተላለፍ። አንድ ዩአርኤል ምንም ጊዜያዊ ኢፒፓላዶ የለም ፣ እንደገና ያዳምጡ ‹semJSON› ን ጠቅ ያድርጉ። አምቦስ እንደ funções são muito parecidas, tendo como diferença os dados da estação ('comJSON' irá mostrar e enviar os dados da estação, enquanto 'semJSON' não)። Como 'semJSON' é uma função derivada de 'comJSON'። አይሪሞስ 'comJSON' ን ያብራራል
(1): jsonurl = ማንም የለም jsonurl ካልሆነ የለም - ‹ዳዶስ atualizados› comJSON (jsonurl) #Se conseguiu abrir o URL ፣ mostra todos os dados በስተቀር: jsonurl ከሌለ የለም። mostra os dados obtidos localmente (አርዱinoኖ ያድርጉ) ማለፍ j += 1 ህትመት '---------------------------------- -------------------------------------------------- -------------------------------------------- / n 'ጊዜ. እንቅልፍ (1)
ና ፕሪሚራ ሊንሃ ዳ função 'comJSON' ፣ ተቀባዮች ሁሉ ኦስ ዳዶስ እና ዩአርኤል ውስጥ የአርቶስ ኑማ variável 'dados'። Esta irá receber um objeto com duas Arrays, das quais iremos somente usar uma ('ReturnDataSet')። Realizada esta operação, iremos então inicializar o Serial do Arduíno e ler as linhas (readline ()) que o Arduíno está imprimindo e jogando as Strings convertidas dentro de variáveis e, então, mostrando esses dados na tela. Recebidos os dados do Arduíno, receberemos os dados da estação, simplesmente acessando os sensores específicos dentro do objeto 'dados' (por exemplo '[' ReturnDataSet '] [' sens_aver_6_5] ') e então mostramos estes novos dados.
def comJSON (jsonurl): #envia todos os dados dados = json.loads (jsonurl.read ()) #carrega os dados JSON da página já aberta #Arduino ard = serial. Serial ('/dev/tty96B0', 115200) # inicializa a variavel que receberá os dados do Arduíno #Recebe os dados do Arduíno ardAgua = int (ard.readline ().rstrip ()) ardTemp = float (ard.readline (). rstrip ()) ardPres = int (ard.readline ().rstrip ()) ardUV = ተንሳፋፊ (ard.readline ().striprip)
«\ n አርዱinoኖ» ን ያትሙ
ardAgua == 1: ሌላ ‹ሞልዶዶ› ን ያትሙ ‹ሴኮ› ህትመት ‹ቴምፕራቱራ› ፣ ardTemp ፣**C ‘print’ Pressao:’፣ ardPres ፣‘Pa’print’ Ultra-Violeta:’፣ ardUV ፣’ lx '
#እስታኮ
አትም '\ nJSON' print 'URL:', jsonurl #Recebe os dados da estação data = dados ['ReturnDataSet'] ['f_date'] vel_vento = dados ['ReturnDataSet'] ['sens_aver_6_5'] umidade = dados ['ReturnDataSet'] ['sens_aver_19_507']
'ውሂብ:' ፣ ውሂብ ያትሙ
አትም 'Velocidade do Vento:', vel_vento, 'm/s' print 'Umidade do ar:', umidade, '%'
#ኮንቨርቴ
vel_vento = decimal. Decimal (vel_vento.rstrip ()) umidade = decimal. Decimal (umidade.rstrip ())
ኦ próximo passo é enviar todos esses dados coletados. ፓራ ኢሶ ፣ precisamos colocar የመታወቂያ ቦይ ፣ ቻቭ ዴ እስክሪታ እና አስተናጋጅ em variáveis ፣ além de configurar o useUnsecuredTCP ፣ useUsecureWebsockets e useSSLWebsockets (usamos እውነት ፣ ሐሰት ፣ ሐሰት)። Criamos mais uma variável que irá guardar o 'caminho' para o canal, e uma outra para guardar, em String, o que será enviado para o servidor (com todas as variáveis convertidas) e então tentar publicar os dados no servidor usando 'ማተም። ነጠላ (ርዕስ ፣ የክፍያ ጭነት = tPayload ፣ የአስተናጋጅ ስም = mqttHost ፣ ወደብ = tPort ፣ tls = tTLS ፣ ትራንስፖርት = tTransport)’። A função então acaba e retorna para o loop ርዕሰ መምህር።
#Envia channelID = "344243" #Canal criado para o grupo apiKey = "1PK9ELK0L4AH8CVP" #Código dado pelo ThingSpeak mqttHost = "mqtt. "tcp" tPort = 1883 tTLS = ጥቅም ላይ ካልዋለ ማንም የለም: tTransport = "websockets" tPort = 80 tTLS = ምንም ከተጠቀመ SSL certificates.crt ", 'tls_version': ssl. PROTOCOL_TLSv1} tPort = 443 ርዕስ =" ሰርጦች/" + channelID +"/ማተም/" + apiKey #Cria variavel com o 'caminho' para o canal tPayload =" field1 = " + str (ardAgua) + "& field2 =" + str (ardTemp) + "& field3 =" + str (ardPres) + "& field4 =" + str (ardUV) + "& field5 =" + str (ውሂብ) + "& field6 =" + str (vel_vento) + "& field7 =" + str (umidade) #Organiza todas as variaveis em uma String para ser enviado 'Enviando dados' try: publish.single (ርዕሰ ጉዳይ ፣ ጭነት / tPayload ፣ የአስተናጋጅ ስም = mqttHost ፣ ወደብ = tPort ፣ tls = tTLS ፣ ትራንስፖርት = tTransport) #Envia os dados time. እንቅልፍ (0.5) ‹ዳሞስ ኤቪዶዶስን› ከማተም በስተቀር ‹Erro ao enviar dados› ን ያትሙ
ደረጃ 5 Configurando O የድር አገልግሎት
ለድር አገልግሎት ፣ ለፕላቶፎርማ ThingSpeak ይጠቀሙ። ለምሳሌ ፣ ጣቢያው ምንም ነገር የለም። Após a criação e login na conta, nos dirigimos ao cabeçalho de menus -> Canais -> Meus Canais e então clicamos no botão “ኖቮ ቦይ”። አዮ ጠቅታ ፣ እስካልሄሞስ ወይም ኖም ዶ ቦይ ፣ escrevemos uma descrição para ele ፣ e então decidimos quantos dos 8 campos possíveis utilizaríamos። Caso የለም ፣ utilizamos 7.
Ao criar um canal, é gerado um ID do Canal, uma Chave de Escrita እና uma Chave de Leitura. O ID do Canal se encontra abaixo do nome do canal e a Chave de Escrita እና aba "Chaves". Para que o código Python envie as informações obtidas para o canal é, necessário configurá-lo ao ID do Canal:
channelID = "Insira o ID do Canal aqui"
E também com a Chave de Escrita:
apiKey = "Insira a Chave de Escrita"
Além da conexão com o canal criado, também são necessárias outras configurações no código em Python app.py:
useUnsecuredTCP = እውነት
useUnsecuredWebsockets = FalseuseSSLWebsockets = ሐሰት mqttHost = "mqtt.thingspeak.com" ከተጠቀመUnsecuredTCP: tTransport = "tcp" tPort = 1883 tTLS = ጥቅም ላይ ካልዋለ ደህንነቱ ያልተጠበቀ ድር: tTransport = "websockets" tPortl websockets "tTLS = {'ca_certs':"/etc/ssl/certs/ca-certificates.crt ", 'tls_version': ssl. PROTOCOL_TLSv1} tPort = 443 ርዕስ =" ሰርጦች/" + channelID +"/ማተም/" + apiKey
Para que a aplicação web realmente receba, por example, or valor Temperatura no campo 2 (campo que escolhemos para ser a a Temperatura), é necessario indicar o "field2 ="+variável_temperatura, como no código a seguir:
tPayload = "field1 =" + str (ardAgua) + "& field2 =" + str (ardTemp) + "& field3 =" + str (ardPres) + "& field4 =" + str (ardUV) + "& field5 =" + str (ውሂብ)) + "& field6 =" + str (vel_vento) + "& field7 =" + str (umidade)
Tendo vinculado todos os dados do Canal à programação em Python, basta executar o código que todos os dados escolhidos são enviados ao የድር አገልግሎት። ምንም ThingSpeak, é possível realizar todo o monitoramento através de gráficos.
የሚመከር:
E.S.DU (የአደጋ ጊዜ አገልግሎት Droid Unit): 7 ደረጃዎች
ኢ.ኤስ.ዲ.ዲ (የአደጋ ጊዜ አገልግሎት ድሮይድ ክፍል) - ዛሬ እኛ የኢ.ኤስ.ዲ.ዲ (የድንገተኛ ጊዜ አገልግሎት ድሮይድ ክፍል) እንገነባለን። የኢ.ኤስ.ዲ.ዩ በ 3 ክፍሎች ተከፋፍሏል - ፖሊስ ፣ እሳት እና ሜዲካል። እነዚህ ሁሉ ገና ሙሉ በሙሉ አልዳበሩም ፣ ግን እንደ ኮም እንደ አንድ ላይ ማሻሻል እና ማሳደግ እንደምንችል ተስፋ አደርጋለሁ
ከ UTSOURCE አገልግሎት ጋር አብራ / አጥፋ ማብሪያን ይንኩ-3 ደረጃዎች
ከ UTSOURCE አገልግሎት ጋር ማብሪያ / ማጥፊያ ንካ-እኛ የ NPN ትራንዚስተር በመጠቀም የንክኪ መቀየሪያን አስቀድመን ፈጥረናል። ግን ያ ማብሪያ / ማጥፊያ ወረዳውን ለማብራት አንድ ተግባር ብቻ ነበረው ነገር ግን ኃይሉን ሳያቋርጡ ወረዳውን የሚያጠፉበት መንገድ የለም። በዚህ ወረዳ ውስጥ የንክኪ መቀየሪያ እንገነባለን
ኒዮፒክስልኤል የሱሺን አገልግሎት ቦርድ ያብሩ - 6 ደረጃዎች (ከስዕሎች ጋር)
ኒዮፒክስልኤል የሱሺን የአገልግሎት ቦርድ ያበራል - ሠሪ መሥራት አለበት። ግን ሰዎች ከሚገቡባቸው ነገሮች አንዱ ሁሉም መብላት አለበት። ” በምግብ ፣ በቴክኖሎጂ እና በረሃብ ዞን መገናኛው ላይ ፣ ይህንን ያበራ የሱሺ ማገልገል ቦርድ እንዲሻሻል ያድርጉ።
ተንቀሳቃሽ ውሃ መቋቋም የሚችል የ LED ሽርሽር ብርድ ልብስ ከከባድ ማዕከል አገልግሎት ወለል ጋር ።: 10 ደረጃዎች (ከስዕሎች ጋር)
ተንቀሳቃሽ ውሃ መቋቋም የሚችል የ LED ሽርሽር ብርድ ልብስ ከከባድ ማእከል አገልግሎት ወለል ጋር! እዚህ እዚህ በሎስ አንጀለስ ውስጥ በሆሊውድ ለዘላለም መቃብር ውስጥ እንደ ሲንስፒያ ያሉ ምሽት ላይ ሽርሽር ለማድረግ እና ከቤት ውጭ ፊልም ለማየት ብዙ ቦታዎች አሉ። ይህ አስፈሪ ይመስላል ፣ ግን በሣር ሜዳ ላይ ለመዘርጋት ፣ ለመልበስ የእራስዎ የቪኒል ሽርሽር ብርድ ልብስ ሲኖርዎት
ATX የተጎላበተ የመኪና ስቴሪዮ ፣ እና 3 መንገድ ተናጋሪዎች (ለቤት አገልግሎት) 10 ደረጃዎች (ከስዕሎች ጋር)
ATX የተጎላበተ የመኪና ስቴሪዮ ፣ እና 3 መንገድ ተናጋሪዎች (ለቤት አገልግሎት) - ያለ 12 ቮልት ባትሪ ያለ መኪና ስቴሪዮ እንዴት እንደሚነሳ ምርምር እያደረግሁ ከሆንኩ በኋላ ቆይቼ እንደገና መሙላት አለብኝ። እንዴት? ደህና …. ምክንያቱም እኔ ሶኒ mp3 ሲዲ ዩኤስቢ ኦክስ አይፖድ-ገመድ አሃድ ፣ 4x52w watts w/sub-out ፣ ሌላ ምን