;le programme a pour objet de lire une température (sonde Dallas 18B20) connectée à un picaxe 28X²
;inséré sur un module Axe 401 alimenté en 12 V (accu 7,2 Ah au plomb) le module pilote
; un module Sim 868 comportant une carte SIM avec un N° dédié
; le but du programme est d'utiliser différentes instructions en lien avec les commandes
; AT et les contrôles par "terminal"
;après chargement du programme, sur un portable envoyer un sms (ici vide, sans rien)
;au N° de la carte SIM insérée sur le module Sim 868 et attendre 10 secondes
;le programme récupère le N° appelant (n'importe lequel, donc on peut appeler depuis
;différents portables (c'était le but de la manip!), lit la valeur de la température
;et renvoie celle-ci au N° appelant
init:
hsersetup B9600_4,%001 ; la vitese de 9600 doit être retenue car la seule à permettre
;la lecture sur "terminal" en cours de scan
pause 500
hserout 0,("AT",13,10)
pause 500
main:
debug
setintflags %00100000,%00100000 ;instruction récupérée sur des sites anglo phones
; en lien avec l'instruction "interrupt" voir plus bas
hserout 0,("AT+CMGF=1",13,10); format texte
pause 500
hserout 0,("AT+CNMI=2,1,0,0,0",13,10) ;transfert le sms dans le µ processeur picaxe 28 X²
pause 500
; si le module Sim 868 est éteint pour sauvegarder l'autonomie de la batterie, et qu'un sms
;est envoyé, au "réveil" du module (ex toutes les heures, le sms est lu
hserout 0,("AT+CMGL=",0x22,"ALL",0x22,13,10);lit tous les messages envoyés lors du dernier
; Sms envoyé donc n° et code le tout apparaît sur scratchpad "terminal"pour le suivi
pause 500
readtemp C.2,b23 ; lecture température sur sonde
pause 200
if b23 > 127 then : goto nega ; test for negative
else goto plus
endif
nega:
let b23 = b23 - 128
let b24=1 ;test si b24 =1 température négative
goto moins
plus:
hserout 0,("AT+CMGD=1,4",13,10); efface tous les sms
pause 500
hserout 0,("AT+CMGS=",0x22,b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,0x22,13,10)
debug
pause 500
hserout 0,("température sol =" ," + ",#b23,"C",0x1A,13,10) ;# code ascii
pause 500
debug
let b0=0:b1=0:b2=0:b3=0:b4=0:b5=0:b6=0:b7=0:b8=0:b9=0:b10=0:b11=0:b12=0:b13=0:b14=0
; lecture du scratchpad sur "terminal"
ptr =0 ;pointeur à 0 du scratchpad
for b53=0 to 120 ; jusqu'à 1024
pause 250
sertxd(#b53," ", @ptrinc,13,10) ; efface mémoire scratchpad
next
pause 1000
ptr =0 ;lecture sur le terminal de la mémoire scratchpad
for b53=0 to 120 ; jusqu'à 1024
next
goto main
moins:
hserout 0,("AT+CMGD=1,4",13,10); efface les sms
pause 1000
; appel du N° de tél de l'appelant
hserout 0,("AT+CMGS=",0x22,b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,0x22,13,10); envoi sur n° appelant
debug
pause 500
; message à envoyer
hserout 0,("température sol =" ," - ",#b23,"C",0x1A,13,10) ;# code ascii
pause 500
debug
; QUESTION : je ne sais pas inscrire un caractère ascii sur une variable b0 ... b54
; en particulier : le signe "+" et "-" , donc un test avec 2 procédures d'appel
; peu mieux faire !!
;mise à 0 des variables pour ne pas rappeler le n) de tél
let b0=0:b1=0:b2=0:b3=0:b4=0:b5=0:b6=0:b7=0:b8=0:b9=0:b10=0:b11=0:b12=0:b13=0:b14=0:b24=0 ; efface variables
; lecture du scratchpad sur "terminal" A EFFACER APRES SUIVI
ptr =0 ;pointeur à 0 du scratchpad
for b53=0 to 120 ; jusqu'à 1024
pause 250
sertxd(#b53," ", @ptrinc,13,10) ; efface mémoire scratchpad
next
pause 1000
ptr =0 ;pointeur à 0 du scratchpad
for b53=0 to 120 ; jusqu'à 1024
let @ptrinc=0 ; efface mémoire scratchpad
next
debug
goto main
interrupt:
pause 200
;copie des mémoires du scratchpad sur les variables b0 à b54 visibles sur "debug"
; N° de tél récupéré suite à la lecture du scratchpad sur terminal pointage des mémoires
get 39,b0:get 40,b1:get 41,b2 :get 42,b3:get 43,b4:get 44,b5:get 45,b6:get 46,b7:get 47,b8:get 48,b9
get 49,b10:get 50,b11;
; copie du sms ici code de 3 variables
get 80,b12:get 81,b13:get 82,b14
hserptr=0 ;38
pause 200
hserinflag=0
setintflags %00100000,%00100000
return
; le programme s'est construit petit à petit (j'ai d'autres programmes plus simples ex. envoi de code par module AUREL)
; , envois simples de sms depuis Sim 868, en essayant de transcrire les instructions des programmes ARduino
; j'ai été très surpris par la "facilité" du basic PICAXE en comparaison des instructions
; du langage C que je décrypte à grand peine ! tout ça pour dire que je ne comprends pas l'engouement
;pour Arduino, je précise que je bidouille sur Picaxe depuis plusieurs années n'ayant pas eu le courage
;de me mettre sur la programmation des Pics ! et que je suis agréablement surpris par la ROBUSTESSE
; des composants : mauvaise manip, inversion de polarité ...