Мазмуну:
- 1 -кадам: Hardware Utilizado
- 2 -кадам: Montagem Do Hardware
- 3 -кадам: Firmware Atmega328
- 4 -кадам: Python программасы
- 5 -кадам: Configurando O Web кызматы
Video: Irrigações Automatizadas Com Web Service Utilizando Python: 5 кадам (Сүрөттөр менен)
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:42
Бул жерде планшеттердин системасы жана системасы көзөмөлгө алынат, бул жерде атмосфера, температура, ар кандай абанын температурасы, ультрафиолет ультрафиолет, вело венто жана кондиция да планта (сека/мольгада). Alguns Desses dados são obtidos localmente, enquanto outros são obtidos on meio de um Web Service conectado à uma estacaão meteorológica (No caso, estamos utilizando a da Faculdade de Engenharia de Sorocaba). Тигил же бул ThingSpeak веб -сервистеринин жардамы менен.
1 -кадам: Hardware Utilizado
Төмөнкү долбоорлорду ишке ашыруу үчүн:
1x Qualcomm Dragonboard 410c
1x Grove Seeed Sensor Mezzanine
1x Суу көрүүчү сенсор
1x IMU 10OF Grove Sensor v1.0
1x Sunlight Grove Sensor v1.0
1x Чычкан USB
1x Teclado USB
1x Монитор
1x Cabo HDMI
1x Adaptador HDMI-VGA
Acesso à dados da estação meteorológica FACENS
2 -кадам: Montagem Do Hardware
Dragonboard сенсорунун тандоосу боюнча, сиз компьютериңизди алдыңкы бөлүктө иштете аласыз:
1: Covexao сенсор Groove Sunlight v1.0.
2: +5V туташуусу же IMU-10DOF.
3: +5V Gnd байланыштары суу сенсорунун кабарчыларынан турат.
4: GND IMU-10DOF.
5: SDA/SCL IMU-10 менен байланышкан.
6: Pino Sig do Суу сенсору туташуу 2.
3 -кадам: Firmware Atmega328
Атригаздар Mezzanine, мүмкүн болушунча Atmega328 микроконтроллору, ошондой эле платформалар жана программалар, ошондой эле DragonBoard орнотулган IDE программасы. Дисциплинасы DragonBoard менен Mezzanine жана микроконтроллору жок программалык камсыздоону иштетүү үчүн зарыл болгон шарттарды түзөт.
Тиешелүү программалар эмбарколорду ишке ашыруу үчүн, сенсорлорду, протоколдорду жана оперативдүү операцияларды, ошондой эле DragonBoard порталынын сериялары аркылуу башкарууну камсыз кылат.
*Библиотекалар камтылган программалык камсыздоону колдонууга милдеттүү. Колдонуу шарттары:
imu-10DOF
Күн нуру сенсору
О программалык камсыздоону колдонуңуз:
4 -кадам: Python программасы
Төмөнкү программалар боюнча, импорттун зарылчылыктары: 'urllib2', 'json', 'time', 'serial', 'paho.mqtt.publish', 'psutil' e 'decimal'. Функцияларды аныктоо ('comJSON' e 'semJSON'), бул жерде сиз түшүндүрө аласыз.
импорт urllib2, json #para pegar os dados da estacaoimport time #para o time.sleep () импорттук серия #пара же Arduino импорттоо paho.mqtt.публикациялоо катары жарыялоо #пара публикалык импорт псутил #пара конфигурациясы же url импорт ондук #пара конвертер
Эң башкысы, сиз өзүңүздү эстето аласыз, бирок сиз дагы метеорологикага киресиз (эч кандай шартта 'url' жок). Дагы башка варианттар ('i' e 'j'), 'i' параграфтары JSON аркылуу кат алышуу үчүн каттоодон өтөт (49 -жылдагы, акыркы мезгилдеги каттар). 49) e 'j' para contar quantes quadigo 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 atos mais atuais da estação
j = 0 #Программаны жасаңыз
Кирүү жок 'while (1)', 'jsonurl' como 'None' деген вариантты киргизиңиз. URL даректери JSON менен алмаштырылганда, "эч качан" эч кандай инициативалар жокко чыгарылбайт, ал эми кайра калыбына келтирилет. Жөнөкөй сөз менен айтканда, URL'дер "urllib2.urlopen (url)", "талаш -тартыш убактысы = X" деген аталышта, URL даректери менен чектелет. Төмөнкү убакыттын өтүшү менен, URL дароо ылдамдыкты кыскартуу керек, жана сиз "comJSON" программасын ишке ашыра албайсыз. Бир URL дароо жок болуп, "semJSON" функциясын аткарыңыз. Амбос функциясы башкача айтканда, "ата -энелердин достугу", "эң башкысы" деген аталыштагы "jJSON" дегенди түшүндүрөт). Como 'semJSON' e uma função derivada de 'comJSON'. Iremos "comJSON" дегенди түшүндүрөт
while (1): jsonurl = None #Inicializa a varivavel como Эч нерсе басып чыгарбаңыз: "Passo:", j print "Atualizando dados" аракет: jsonurl = urllib2.urlopen (url, timeout = 5) #tenta abrir o url em no máximo 5 segundos эгерде jsonurl None эмес болсо: print 'Dados atualizados' comJSON (jsonurl) #Se conseguiu abrir o URL, other todos os dados except: if jsonurl None: print 'Erro ao atualizar dados' semJSON () #Se não abriu o URL, mostra os dados obtidos localmente (do Arduino) pass j += 1 print '---------------------------------- -------------------------------------------------- -------------------------------------------- / n 'убакыт.уйку (1)
Бул жерде "comJSON", "URL" жана "адепсиз" деген аталыштар бар. Каалоочулар сиздер үчүн массивдер жана башка нерселерди колдонсоңуз болот ('ReturnDataSet'). Түзмөктөрдүн оперативдүү жана расмий түрдө иштөөсү, Сериялар Ардуинонун линиялары (окуу сызыгы ()) же Strings түрүнө которулган стрингдер сыяктуу эле, стрингдер жана котормолор. Recebidos os dados do Arduíno, resepememos os dados da estação, simplesmente acessando os sensores específicos dentos do do objeto 'dados' (exemplo '' 'ReturnDataSet'] ['sens_aver_6_5]') телекөрсөтүү жана жаңылыктар.
def comJSON (jsonurl): #envia todos os dados dados = json.loads (jsonurl.read ()) #carrega os dados JSON да página já aberta #Arduino ard = serial. Serial ('/dev/tty96B0', 115200) # Ардуинонун ар кандай түрлөрүн алуу үчүн #Recebe os dados do Arduíno ardAgua = int (ard.readline (). rstrip ()) ardTemp = float (ard.readline (). rstrip ()) ardPres = int (ard.readline) ().rstrip ()) ardUV = float (ard.readline (). rstrip ())
басып чыгаруу "\ nArduino"
if ardAgua == 1: print 'Molhado' else: print 'Seco' print 'Temperatura:', ardTemp, '*C' print 'Pressao:', ardPres, 'Pa' print 'Ultra-Violeta:', ardUV, ' lx '
#Эстакао
print '\ 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' басып чыгаруу 'Umidade do ar:', umidade, '%'
#Конвертте
vel_vento = ондук. Ондук (vel_vento.rstrip ()) umidade = ондук. Ондук (umidade.rstrip ())
O próximo passo é enviar todos esses dados coletados. Тактап айтканда, каналдын идентификатору, ал хосттун варианттары, конфигурациясы UseUnsecuredTCP, useUnsecuredWebsockets жана useSSLWebsockets (usamos True, False, False). Criamos mais uma variável que irá guardar o 'caminho' para o channel, e uma outra para guardar, em String, or que enviado para servidor (com todas as variáveis convertidas) e tão tentar publicar os os dosos no servidor usando 'жарыялоо. жалгыз (тема, жүк = tPayload, хосттун аты = mqttHost, порт = tPort, tls = tTLS, транспорт = tTransport) '. A função então acaba e retorna para lop main.
#Envia channelID = "344243" #Canal ы п о Grupo apiKey = "1PK9ELK0L4AH8CVP" # Код Dado айтылган ThingSpeak mqttHost = "mqtt.thingspeak.com" # configurações де comunicação useUnsecuredTCP = True useUnsecuredWebsockets = False useSSLWebsockets = False useUnsecuredTCP болсо: tTransport = "tcp" tPort = 1883 tTLS = UseUnsecuredWebsockets болсо, эч ким: tTransport = "websockets" tPort = 80 tTLS = UseSSLWebsockets болсо эч ким: import ssl tTransport = "websockets" tTLS = {'ca_certs'://etc/ cert.crt ", 'tls_version': ssl. PROTOCOL_TLSv1} tPort = 443 topic =" channels/" + channelID +"/publish/" + apiKey #Cria variavel com o 'caminho' para o channel tPayload =" field1 = " + str (ardAgua) + "& field2 =" + str (ardTemp) + "& field3 =" + str (ardPres) + "& field4 =" + str (ardUV) + "& field5 =" + str (data) + "& field6 =" + str ", port = tPort, tls = tTLS, transport = tTransport) #Envia os dados time.sleep (0.5) print 'Dados enviados' тышкары: print 'Erro ao enviar dados'
5 -кадам: Configurando O Web кызматы
ThingSpeak веб -сервистеринин эң чоң мүмкүнчүлүктөрү болуп саналат. Эч нерсе жок, сайттар нерселер.com сайтына жазылыңыз. Кирүү же кирүү үчүн, меню -> Canais -> Meus Canais электрондук почтасы "Ново каналы" менен эч кандай байланышы жок. Каналга кирүү үчүн эсколемолор, эскревемолордун мааниси төмөндөгүдөй болуп саналат: 8 эсе көп мүмкүнчүлүктөр бар. Caso жок, utilizamos 7.
Каналдын идентификациялык каналы, ID ID Canal, Chave de Escrita e uma Chave de Leitura. O ID do Canal se encontra abaixo do no do do no kanal and a Chave de Escrita "Chaves". Python каналыңыздын информациясын колдонуп, Каналды конфигурациялоо керек:
channelID = "Каналга кирүү ID ID"
Chave de Escrita комбинациясы:
apiKey = "Инсира жана Чаве де Эскрита"
Python app.py файлдарын конфигурациялоо үчүн, конфигурация жасаңыз.
useUnsecuredTCP = Чын
useUnsecuredWebsockets = FalseuseSSLWebsockets = False mqttHost = "mqtt.thingspeak.com" if useUnsecuredTCP: tTransport = "tcp" tPort = 1883 tTLS = None if useUnsecuredWebsockets: tTranstSortSortSortSports "=" WebNock Nock " websockets "tTLS = {'ca_certs':"/etc/ssl/certs/ca-sertifikatlar.crt ", 'tls_version': ssl. PROTOCOL_TLSv1} tPort = 443 topic =" channels/" + channelID +"/publish/" + apiKey
Төмөнкү веб -сайтты ачуу үчүн, мисал үчүн, эч кандай каматуу жок Температура 2 (камполдун эсколемосу үчүн бир температура), жана "талаа2 ="+варианты_температурасы, эч кандай тиешеси жок:
tPayload = "field1 =" + str (ardAgua) + "& field2 =" + str (ardTemp) + "& field3 =" + str (ardPres) + "& field4 =" + str (ardUV) + "& field5 =" + str (data) + "& field6 =" + str (vel_vento) + "& field7 =" + str (үмүтсүз)
Python каналынын программасы боюнча эң чоң программалар, веб -сервистер же энциклопедиялар менен иштөө. ThingSpeak жок, бул мүмкүн болгон бардык мүмкүнчүлүктөрдү көзөмөлдөө үчүн.
Сунушталууда:
Python жана Raspberry Piнин GPIO пиндери менен бир нече LEDди башкаруу: 4 кадам (сүрөттөр менен)
Python жана Raspberry Piнин GPIO казыктары менен бир нече светодиоддорду көзөмөлдөө: Бул Нускамада RaspberryPiдеги 4 светодиодду иштетүү үчүн бир нече GPIO төөнөгүчтөрүн кантип башкарууну көрсөтөт. Ал ошондой эле Pythonдогу параметрлер жана шарттуу билдирүүлөр менен тааныштырат
Python менен баштоо: 7 кадам (сүрөттөр менен)
Python менен баштаңыз: Программалоо укмуш! Бул чыгармачыл, кызыктуу жана мээңизге психикалык машыгуу берет. Көбүбүз программалоо жөнүндө билгибиз келет, бирок андай кыла албайбыз деп өзүбүздү ишендиребиз. Балким, анда математика өтө көп, балким, жаргон ыргондор коркуп кетет
MySQL, PHP5 жана Python менен Arduino YÚN жеткиликтүүлүгүн көзөмөлдөө: 11 кадам (сүрөттөр менен)
MySQL, PHP5 жана Python менен Arduino YÚN жеткиликтүүлүгүн көзөмөлдөңүз: Салам достор! Белгилүү болгондой, сентябрда Arduino, Arduino YUNдун жаңы премьерасы Бул кичинекей досубузда Linux камтылган системасы бар, анын жардамы менен биз сиз ойлогондун баарын иштете алабыз (жок дегенде азырынча). Маалымат аз болсо да
Secret Knock, IR Sensor жана Web App менен магниттик Smart Lock: 7 кадам (Сүрөттөр менен)
Secret Knock, IR Sensor, & Web App менен магниттик Smart Lock: Эгерде сиз бул долбоорду жактырсаңыз, мени Instagram жана YouTubeдан ээрчиңиз. Бул проектте мен үй офисиме магниттик кулпуну курайын деп жатам. жашыруун тыкылдатуу. Ох … жана анын дагы бир нече амалдары болот.Магнит
QuizzPi, Python менен Raspberry Pi Trivia оюну: 7 кадам (сүрөттөр менен)
QuizzPi, Raspberry Pi Trivia оюну Python менен: QuizzPi - бул аркада түрүндөгү тривиа оюну. QuizzPi менин кызыма көңүл ачуу керек болгондуктан төрөлгөн. Ал 7 жашта жана ал жаңы технологияларды колдонууну талап кылат, идеясы кызыктуу жана билимдүү нерсени жаратуу болчу